概率统计组队学习 之 常见分布与假设验证

一、常见分布

1. 离散型随机变量
分布
名称
满足
条件
概率质量
函数(PMF)
例子 图表
二项分布
(Binomial Distribution)
1. 试验次数是固定的
2. 每次试验都是独立的
3. 对于每次试验成功的概率都是一样的
P(X=x)= C_n^x p^x q^{n-x}
Expectation: np
Variance: np(1-p))
1. 销售电话成功的次数
2. 一批产品中有缺陷的产品数量
3. 掷硬币正面朝上的次数
4. 在一袋糖果中取糖果吃,拿到红色包装的次数
泊松分布
(Poisson Distribution)
1. 试验次数n趋向于无穷大
2. 单次事件发生的概率p趋向于0
3. np是一个有限的数值
P\lbrace X = i \rbrace = e^{-λ} \frac{λ^i}{i!}
Expectation: \lambda
Variance: \lambda
1. 一定时间段内,某航空公司接到的订票电话数
2. 一定时间内,到车站等候公交汽车的人数
3. 一匹布上发现的瑕疵点的个数
4. 一定页数的书刊上出现的错别字个数
几何分布
(Geometric Distribution)
1. 进行一系列互相独立的试验
2. 每一次试验都既有成功的可能,也有失败的可能,且单次试验成功的概率相同
3. 主要感兴趣取得第一次成功需要进行多少次试验
P\lbrace X= n \rbrace = {(1-p)}^{n-1} p
Expectation: \frac{1}{p}
Variance: \frac{1-p}{p^2}
1. 打枪打中的概率
2. 滑雪滑到底不出事故的概率
第一次成功所需的试验次数(p=0.2)
负二项分布
(Negative Binomial Distribution)
1. 实验包含一系列独立的实验
2. 每个实验都有成功、失败两种结果
3. 成功概率恒定
4. 实验持续到r次失败,r可以为任意正数
P\lbrace X= n \rbrace = C_{n-1}^{r-1} p^r {(1-p)}^{n-r}
Expectation:\frac{r(1-p)}{p}
Variance: \frac{r(1-p)}{p^2}
1. 一台设备在故障前运行,正常记为成功,故障记为失败
2. 动作员尝试射门得分前的尝试次数,每次不成功的尝试记为成功,得分记为失败
超几何分布
(Hypergeometric Distribution)
1. 从有限N个物件(其中包含M个指定种类的物件)中抽出n个物件,不放回
2. 成功抽出该指定种类物件的次数
P\lbrace X= n \rbrace = \frac {C_{k}^{x} C_{N-k}^{n-x}} {C_{N}^{n}}
Expectation: \frac{KM}{N}
Variance:\frac{KM}{N}\frac{(N-M)(N-K)}{N(N-1)}
已知某事件的发生概率,判断从中取出一个小样本(不放回),该事件以某一个机率出现的概率问题
2. 连续型随机变量
分布
名称
概率密度
函数(PDF)
累计分布
函数(CDF)
举例 图表
均匀分布
(Uniform Distribution)

在定义域内
概率密度函数
处处相等
的统计分布
f(x)=\begin{cases}\frac {1} {b-a} , & a \leq x \leq b \\0, &others\end{cases}

Expectation:\frac{(a+b)}{2}
F(x)=\begin{cases}0 , & x< a \\(x-a)/(b-a), & a \leq x \leq b \\1, & x>b\end{cases}

Variance:\frac{(b-a)^2}{12}
1. 一个理想的
随机数生成器
2. 一个理想的
圆盘以
一定力度
旋转后静止时
的角度
正态分布
(Normal Distribution)

一种对称的分布,
概率密度
呈现钟摆的形状。一般正态分布
可以通过
公式变换
将其转变为
标准正态分布
Z=\frac {X-μ} {σ}
Z~N(0, 1)
f(x)=\frac{1}{\sqrt{2π}\sigma}e^{\frac{-(x-u)^2}{2\sigma^2}}

Expectation: \mu

Variance: \sigma^2
1. 成人的身高
2. 不同方向的
气体分子
的运动速度
3. 测量物体
质量时
的误差

中心极限定理:一组独立同
分布的随机样本
的平均值
近似为正态分布,无论总体
符合何种分布
指数分布
(Exponential Distribution)

描述一个特定事件发生
所需要的时间。
指数分布中,有着
很少的大数值和非常多的小数值
f(x)=\begin{cases}λe^{-λx} , & x \geq 0 \\0, & x < 0\end{cases}

Expectation: \theta
F(a) = P\{X \leq a\} = 1-e^{-λa}, a\geq 0

Variance: \theta
1. 顾客到达
一家店铺的
时间间隔
2. 从现在开始
到发生地震
的时间间隔
3. 在产线上收
到一个问题产
品的时间间隔

其他连续型分布:威布尔分布(Weibull Distribution),伽玛分布(Gamma Distribution)

3. 补充:二项分布、泊松分布和正态分布关系

    i.n很大,p很小时,如n≥ 100 and np≤10时,二项分布可以
     近似为泊松分布。
    ii.\lambda很大时,如\lambda≥1000时,泊松分布可以近似为正态分布。
    iii:n很大时,npn(1-p)都足够大时,如n≥100 ,
     np≥10,n(1-p) ≥10时,二项分布可以近似为正态分布。

    🍭 一些python代码实现

'''
产生特定分布的随机数,用到Numpy库
'''
import numpy as np

# 生成大小为1000的符合b(10,0.5)二项分布的样本集
s = np.random.binomial(n=10,p=0.5,size=1000)

# 生成大小为1000的符合P(1)的泊松分布的样本集
s = np.random.poisson(lam=1,size=1000)

# 生成大小为1000的符合U(0,1)均匀分布的样本集,边界值为左闭右开区间
s = np.random.uniform(low=0,high=1,size=1000)

# 生成大小为1000的符合N(0,1)正态分布的样本集
s = np.random.normal(loc=0,scale=1,size=1000)
s = np.random.standard_normal(size=1000)

# 生成大小为1000的符合E(1/2)指数分布的样本集,参数为指数分布参数λ的倒数
s = np.random.exponential(scale=2,size=1000)


'''
计算统计分布(PMF & PDF),使用 Scipy库
'''
from scipy import stats

# 计算二项分布B(10,0.5)的PMF
x=range(11)
p=stats.binom.pmf(x, n=10, p=0.5)

# 计算泊松分布P(1)的PMF
x=range(11)
p=stats.poisson.pmf(x, mu=1)

# 计算均匀分布U(0,1)的PDF
x = numpy.linspace(0,1,100)
p= stats.uniform.pdf(x,loc=0, scale=1)

# 计算正态分布N(0,1)的PDF
x = numpy.linspace(-3,3,1000)
p= stats.norm.pdf(x,loc=0, scale=1)

# 计算指数分布E(1)的PDF
x = numpy.linspace(0,10,1000)
p= stats.expon.pdf(x,loc=0,scale=1)


'''
计算CDF(以正态分布为例)
'''
# 计算正态分布N(0,1)的CDF
x = numpy.linspace(-3,3,1000)
p = stats.norm.cdf(x,loc=0, scale=1)


'''
统计分布可视化(以泊松分布为例)
'''
# 比较λ=2的泊松分布的真实概率质量和10000次随机抽样的结果
from scipy import stats
import matplotlib.pyplot as plt
import seaborn as sns
x=range(11)
t= stats.poisson.rvs(2,size=10000)
p=stats.poisson.pmf(x, 2)

fig, ax = plt.subplots(1, 1)
sns.distplot(t,bins=10,hist_kws={'density':True}, kde=False,label = 'Distplot from 10000 samples')
sns.scatterplot(x,p,color='purple')
sns.lineplot(x,p,color='purple',label='True mass density')
plt.title('Poisson distribution')
plt.legend()
plt.show()

# 比较不同参数λ对应的概率质量函数
# 可以验证随着参数增大,泊松分布逐渐对称,趋近于正态分布
x=range(50)
fig, ax = plt.subplots()
for  lam in [1,2,5,10,20] :
        p=stats.poisson.pmf(x, lam)
        sns.lineplot(x,p,label='lamda= '+ str(lam))
plt.title('Poisson distribution')
plt.legend()
plt.show()
poisson2.png

二、假设检验

1. 基本概念

     在总体的分布函数完全未知或不知其参数的情况,为了推断总体的某些
     未知特性,提出某些关于总体的假设,称为假设检验。

2. 基本步骤

     1. 陈述研究假设,包含原假设 (null hypothesis) 和备择假设
      (alternate hypothesis)。通常会把原假设设为变量之间不存在某种差异
      或关联,备择假设则是存在某种差异或关联。
     2. 为验证假设收集数据。
      🍗 注意抽样的数据要具有代表性,考虑各种可能的影响因素。
     3. 构造合适的统计测试量并测试。
      所有的统计检验都是基于组内方差和组间方差的比较,如果组间方差
      足够大,使得不同组之间几乎没有重叠,那么统计量会反映出一个
      非常小的p值,意味着不同组之间的差异不可能是由偶然性导致的。
     4. 决定是接受还是拒绝原假设。
       通常单侧检验情况下,以p=0.05作为临界值 。
     5. 展示结论

3. 统计量的选择

     i. 回归检验 (regression test)
       回归检验适用于预测变量是数值型的情况,根据预测变量的数量和
       结果变量的类型分为:

名称 预测变量(x) 特征 结果变量(y)特征
简单线性回归 单个连续数值 连续数值
多重线性回归 多个连续数值 连续数值
Logistic回归 连续数值 二元类别(是或否)

     ii. 比较检验 (comparison test)
       比较检验适用于预测变量是类别型,结果变量是数值型的情况:

名称 预测变量(x) 特征 结果变量(y)特征
Paired t-test 两组类别 组来自同一总体,数值
Independent t-test 两组类别 组来自不同总体,数值
ANOVA 两组及以上类别 单个数值
MANOVA 两组及以上类别 两个及以上数值

     iii. 关联检验(correlation test)
       常用的是卡方检验,适用于预测变量和结果变量均为类别型。

     iv. 非参数检验

       当以上参数条件不满足的时候,可以用非参数检验来代替。

非参数检验 用于替代的参数检验
Spearman 回归和关联检验
Sign test T-test
Kruskal–Wallis ANOVA
ANOSIM MANOVA
Wilcoxon Rank-Sum test Independent t-test
Wilcoxon Signed-rank test Paired t-test
4. 两类错误

       进行假设检验时可能有两类错误:一类错误(type I error)和
       二类错误(type II error)。
       一类错误:拒绝真的原假设
            一类错误可以通过 α(显著性水平)来控制。以95%的
            置信水平为例,a=0.05,这意味着我们拒绝一个真的
            原假设的可能性是5%。
        二类错误:接受错误的原假设
             二类错误通常是由小样本或高样本方差导致的,可以
             用β来表示。对于二类错误,可以从功效的角度来估
             计,首先进行功效分析(power analysis)计算出功效
             值1-β,进而得到二类错误的估计值β。

    🍭 一些python代码实现

'''
正态检验
'''
import numpy as np
from scipy.stats import shapiro
data_nonnormal = np.random.exponential(size=100)
data_normal = np.random.normal(size=100)

def normal_judge(data):
    stat, p = shapiro(data)
    if p > 0.05:
        return 'stat={:.3f}, p = {:.3f}, probably gaussian'.format(stat,p)
    else:
        return 'stat={:.3f}, p = {:.3f}, probably not gaussian'.format(stat,p)

# output
normal_judge(data_nonnormal)
# 'stat=0.850, p = 0.000, probably not gaussian'
normal_judge(data_normal)
# 'stat=0.987, p = 0.415, probably gaussian'


'''
卡方检验
'''
from scipy.stats import chi2_contingency
table = [[10, 20, 30],[6,  9,  17]]
stat, p, dof, expected = chi2_contingency(table)
print('stat=%.3f, p=%.3f' % (stat, p))
if p > 0.05:
    print('Probably independent')
else:
    print('Probably dependent')

# output
#stat=0.272, p=0.873
#Probably independent


'''
T-Test
'''
from scipy.stats import ttest_ind
import numpy as np
data1 = np.random.normal(size=10)
data2 = np.random.normal(size=10)
stat, p = ttest_ind(data1, data2)
print('stat=%.3f, p=%.3f' % (stat, p))
if p > 0.05:
    print('Probably the same distribution')
else:
    print('Probably different distributions')
    
# output
# stat=-1.382, p=0.184
# Probably the same distribution


'''
ANOVA
'''
from scipy.stats import f_oneway
import numpy as np
data1 = np.random.normal(size=10)
data2 = np.random.normal(size=10)
data3 = np.random.normal(size=10)
stat, p = f_oneway(data1, data2, data3)
print('stat=%.3f, p=%.3f' % (stat, p))
if p > 0.05:
    print('Probably the same distribution')
else:
    print('Probably different distributions')
 
# output
# stat=0.189, p=0.829
# Probably the same distribution


'''
Mann-Whitney U Test
'''
from scipy.stats import mannwhitneyu
data1 = [0.873, 2.817, 0.121, -0.945, -0.055, -1.436, 0.360, -1.478, -1.637, -1.869]
data2 = [1.142, -0.432, -0.938, -0.729, -0.846, -0.157, 0.500, 1.183, -1.075, -0.169]
stat, p = mannwhitneyu(data1, data2)
print('stat=%.3f, p=%.3f' % (stat, p))
if p > 0.05:
    print('Probably the same distribution')
else:
    print('Probably different distributions')

# output
# stat=40.000, p=0.236
# Probably the same distribution

Credit:
笔记整理自:Datawhale 概率统计组队学习

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352