前言
假设检验是统计学中非常重要的工具,可以说占据了数理统计的半壁江山。正所谓“学统计不学假设检验,就像看四大名著不看红楼梦,证明这个人的统计造诣有限,只能度过一个相对失败的人生”(手动doge)。
不仅如此,其在实际业务中也有非常普遍的应用,例如我们在数理统计的教材中都会见到的许多关于实际生产的例子,以及现在的互联网产品中常常用到的A/B测试,其理论基础正是假设检验。
本系列文章主要介绍假设检验的思想与原理,而不只是停留在知道假设检验的步骤与各种统计量。在本文中,我们会介绍假设检验的基础,重点关注最常用到的显著性检验,分析具体步骤并给出常用的假设检验,如u检验,t检验等。
假设检验基础
假设检验的思想
假设检验的基本思想是小概率反证法思想,举例来说,假设现在有一个人声称其可以准确的知道每次抛硬币是正面还是反面,我们该如何验证他说的话呢?我们可以做出一对相斥的假设
- 假设1:这个人无法准确的知道每次抛硬币是正面还是反面
- 假设2:这个人可以准确的知道每次抛硬币是正面还是反面
一般记假设1为H0,称为原假设,记假设2为H1,称为备择假设。
接着我们抛10次硬币,让这个人判断正反面,而这个人10次都判断正确。在原假设下,这个人无法准确的知道每次抛硬币是正面还是反面,所以他只能靠随机猜测,则连续10次猜对的概率为(1/2)10,这是一个小概率事件。现在这个小概率事件发生了,因此我们可以认为原假设是错的,而拒绝原假设。这就是假设检验的基本思想,建立一个假设,并在这个假设的基础上找到一个小概率事件,如果这个小概率事件发生了,就推翻这个假设。
当然我们会发现这是有问题的,那就是通过这种方法下判断是会有概率出现错误的,万一真的发生了小概率事件呢?这都是我们需要解决的问题。
假设检验的基本概念
我们可以发现,假设的范围是非常广的。形如上述的抛硬币问题,或者检验一个分布是否为正态分布这种问题,其假设无法用具体的参数来表示,这种问题被称为非参数检验,这并不是本文关注的重点。而形如一个新策略对销量的影响这种问题,可以表达为新策略执行后,销量的平均值是否高于原策略执行时的平均值,这种可以用参数来表达的问题被称为参数检验,本文主要关注参数检验。
对于参数检验问题,一个基本的假设就是其服从的分布,所谓参数估计其实就是对分布中的参数进行估计,以上述问题为例,假设销量服从正态分布N(μ,σ2)。假设方差不变,记原策略执行时的平均值为μ1,这是一个定值(怎么确定的这里我们先不管,现在是理想情况下讨论),也就是说原策略的销量服从分布N(μ1,σ2)。记新策略执行后,销量的实际平均值为N(μ2,σ2),这个**μ2我们是不知道的**,我们就是想知道这个μ2到底有没有比μ1大。我们就可以做一对假设
H0:μ2≤μ1vsH1:μ2>μ1
这就是一个假设检验问题理论上的基本形式。
假设检验的基本步骤
下面我们从一个例子来看看假设检验是如何进行的,主要目的是为了讲明白一些假设检验的基本概念,以及每一步是怎么来的,为什么要这样做,而不是只是背过了假设检验的计算步骤,会用来算题。
假设某工厂生产的金属,其强度标准为平均强度要大于110Pa,现在我们要检查其生产的合金强度是否达标。首先,很自然的想法就是抽样求平均值。但是这会存在一个问题,我们的抽样终归是有限的,在现有条件下,我们要下这个判断,并且要使得犯错的概率尽可能的低,这就是假设检验要解决的问题。
建立假设
假设金属强度服从正态分布N(θ,16),这里方差已知是为了方便,实际使用中当然是方差未知的情况居多。上述过程其实就是在这个正态分布中进行抽样,这里我们假设抽取25个样本,然后根据抽取的样本的均值,判断θ是否大于110。这里我们可以将θ的参数空间(也就是可能的取值)划分为两个不相交的集合,记为
Θ0={θ:θ≥110},Θ1={θ:θ<110}
于是我们可以建立一对假设,写为
H0:θ∈Θ0={θ:θ⩾110}vsH1:θ∈Θ1={θ:θ<110}
一般简写为
H0:θ⩾110vsH1:θ<110
选择统计量并确定拒绝域形式
接着,我们需要划分均值的取值空间,也就是均值在什么范围内就选择拒绝H0,根据上面的情景,自然是均值小于某个值的时候,我们才会选择拒绝H0,因此,我们设这个值为c,具体数值待定,可以定义拒绝域W
W={(x1,x2,⋯,xn):x≤c}={x≤c}
相对的会存在一个接受域W={x>c}
注:在数学上,我们不能通过一个例子证明一个命题,但是可以通过一个例子推翻一个命题,所以,根据样本统计量,我们可以拒绝原假设,但是当统计量不在拒绝域中时,严格来讲,我们只能说没有理由拒绝原假设。但是从实际使用的角度,我们习惯于认为拒绝原假设就是接受备择假设,因此这里只是做一个补充说明。
显著性水平
现在整个假设检验就剩最后一步,那就是确定拒绝域中参数c的具体数值,在此之前我们需要先做一些理论铺垫。
由于样本的随机性,当我们做出判断时,一定会有判断错误的概率,进行判断时会出现的情况有四种,如下表
|
原假设为真 |
备择假设为真 |
拒绝原假设 |
第一类错误 |
判断正确 |
接受原假设 |
判断正确 |
第二类错误 |
这里就引出了假设检验两类错误的概率,而这犯这两类错误的概率都是关于参数θ的函数,分别记为α(θ)与β(θ),具体为
α(θ)=Pθ{X∈W},θ∈Θ0β(θ)=Pθ{X∈W},θ∈Θ1
这里不太好理解,我们来看一个例子。假设真实的参数θ为111,则α(θ)就是从正态分布N(111,16)中抽取25个样本,其均值落在拒绝域的概率。随着θ的变化这个概率是会变化的,可以理解吧。
我们可以将α(θ)与β(θ)合并写为一个函数g(θ),定义为
g(θ)={α(θ)1−β(θ)θ∈Θ0θ∈Θ1
这被成为该检验的势函数,其意义为落在拒绝域中的概率。
代入本例的具体数值可以计算得
g(θ)=Pθ(x≤c)=Pθ(4/5x−θ≤4/5c−θ)=Φ(4/5c−θ)
注:x∼N(θ,16/25),通过标准化可以将其转化为标准正态分布的分布函数的形式
可以注意到,g(θ)关于θ递减,其大致图像如下

这也很好理解,θ越大,抽样样本的均值的期望就越大,拒绝原假设的概率自然越大。
在上图中,g(θ)在Θ0与Θ1交界处的取值记为α,称为显著性水平,其意义为犯第一类错误的最大概率。这很好理解,既然是第一类错误,那首先是要在Θ0中,然后计算落入拒绝域的概率,也就是g(θ)的取值,很显然可以看出g(θ)的取值是小于α的。
可以看到g(θ)还有一个参数c,我们可以通过改变c的值来改变显著性水平α,同理也可以通过显著性水平α来确定c的取值,这也就是确定拒绝域的方法。
确定拒绝域
我们当然希望一个假设检验犯错误的概率尽可能的低,但是这是不可能完全做到的,因为犯两类错误的概率是此消彼长的,也就是说,我们降低犯一类错误的概率时,必然会提高犯二类错误的概率。因此,我们在做假设检验时,一般会把我们希望是正确的结论设定为备择假设,例如,在上述例子中,我们希望工厂的生产质量是达标的,那我们就要把θ⩾110设为备择假设。又或者,一个新的销售策略是否提升了销量,我们希望这个策略是有效的,那我们就可以把销量大于原策略销量设为备择假设。这样,我们就可以通过降低犯第一类错误的概率,来提高拒绝原假设的可信度,这也就提高了整个假设检验的可信度。
现在,我们就可以来确定拒绝域了,首先给出我们希望的显著性水平,一般会设定为α=0.05,然后反向推导出c的取值,也就是
g(110)=Φ(45(c−110))=α
通过标准正态分布的分位数,可以写为
45(c−110)=uα
得到c=110+0.8uα,拒绝域为W={x≤110+0.8uα},也可以写为W={u≤uα}。其中u=σ0/nx−μ0,最后根据具体抽样得到的样本,计算统计量ux,得到检验结果即可。
P值
现在让我们换一个角度来看,上面的方法是从α出发求出uα,再通过比较ux与uα下判断。这里我们反过来,通过ux求出p,再通过比较p与α下判断。
那么这个p是什么呢?p值的意义是利用样本观测值能够做出拒绝原假设的最小显著性水平。
如何求出p值呢?设p值对应的标准正态分布分位数为up(等同于α对应uα),并且我们可以知道ux=up,故
ux=up⇒Φ(ux)=Φ(up)=p
如果说,p值小于我们设定的显著性水平α,那我们就可以拒绝原假设,反之接受原假设。有了p值的存在,我们就不需要提前确定显著性水平α,而是通过p值大小直接下判断。
注:这里Φ中的部分也被称为统计量,这是一种习惯性的叫法,例如,这个例子中是一个正态分布,方差已知,检验均值的问题,这类问题被称为U检验,对于这类检验问题,都需要计算
u=σ0/nx−μ0
其中x是样本均值,μ0是假设中出现的固定数值(在这个例子里就是110),σ0是已知的方差,n是样本数。可以跟上面的计算对应一下。
将u代入分布函数中,就可以得到p值,这个假设检验问题也就结束了。因此,形如这样的一个统计量可以代表一种假设检验方法。
小结
现在我们来顺一顺假设检验的步骤
- 根据问题建立假设,一般将我们希望为真的命题设为备择假设
- 根据假设中涉及的参数,选择统计量
- 计算样本统计量并得到p值
- 根据p值下判断
单个正态总体假设检验
在经过上述铺垫之后,我们只需要根据具体问题所涉及的分布及其参数,确定其使用何种统计量即可,下面我们来看几种常用的检验
U检验(Z检验)
U检验,又叫Z检验,用于正态分布,方差已知的情况下,检验均值差异。也就是上述工厂的例子用到的方法。其统计量为
u=σ0/nx−μ0
假设检验的三种形式
U检验可能的假设检验形式有三种
H0:μ≥μ0H0:μ≤μ0H0:μ=μ0vsvsvsH1:μ<μ0H1:μ>μ0H1:μ=μ0
其中,前两种称为单侧检验,最后一种称为双侧检验。
第一种检验就是我们上述的例子见过的那种,其拒绝域为
W={x≤c}={σ/nx−μ0≤σ/nc−μ0}={u≤u0}
在显著性水平为α的情况下,满足
P(u≤u0)=α
当μ=μ0时,而u服从标准正态分布,从图像上来看,就是正态分布曲线左端的α%部分,如下图

因此u0取正态分布函数的α分位数uα。
样本求出的统计量记为ux=σ/nx−μ0,且ux=up,p值可以写为
ux=up⇒Φ(ux)=Φ(up)=p⇒p=Φ(ux)
同理,第二种检验的拒绝域为
W={x≥c}={σ/nx−μ0≥σ/nc−μ0}={u≥u0}
在显著性水平为α的情况下,满足
P(u≥u0)=α
也就是正态分布曲线右端的α%部分,如下图

因此u0取正态分布函数的1−α分位数u1−α。
样本求出的统计量记为ux=σ/nx−μ0,且ux=u1−p,p值可以写为
ux=u1−p⇒Φ(ux)=Φ(u1−p)=1−p⇒p=1−Φ(ux)
最后就是比较特殊的双侧检验情况,自然的想法是样本均值距离μ0越远,拒绝原假设的概率越高,由于正态分布对称,因此拒绝域可以写为
W={∣x∣≥c}={∣∣∣∣∣σ/nx−μ0∣∣∣∣∣≥σ/nc−μ0}={∣u∣≥u0}
在显著性水平为α的情况下,满足
P(∣u∣≥u0)=α
从图像上来看就是正态分布曲线的两端,由于两端总共占α%,因此每一端各占α/2%,如下图

因此u0取正态分布函数的1−α/2分位数u1−α/2。
样本求出的统计量记为∣ux∣=σ/n∣x−μ0∣,且∣ux∣=u1−p/2,由于统计量分布对称,p值可以写为
∣ux∣=u1−p/2⇒Φ(∣ux∣)=Φ(u1−p/2)=1−p/2⇒p=2(1−Φ(∣ux∣))
综上,我们来总结一下u检验各情况的拒绝域与p值

假设 |
拒绝域 |
p值 |
H0:μ≥μ0vsH1:μ<μ0 |
{u≤uα} |
Φ(ux) |
H0:μ≤μ0vsH1:μ>μ0 |
{u≥u1−α} |
1−Φ(ux) |
H0:μ=μ0vsH1:μ=μ0 |
${ |
u |
t检验
t检验,用于正态分布,方差未知的情况下,检验均值差异。此时我们用样本标准差s来替代u统计量中的σ0
t=s/nx−μ0
当μ=μ0时,t统计量服从自由度为n−1的t分布。由于t分布也为对称分布,故其拒绝域与p值与u检验类似。
假设检验的三种形式
依旧沿用上述的三种检验形式,对于第一种检验,其拒绝域为
W={x≤c}={s/nx−μ0≤s/nc−μ0}={t≤t0(n−1)}
满足
P(t≤t0(n−1))=α
故t0(n−1)取tα(n−1),也就是拒绝域为W={t≤tα(n−1)}
样本求出的统计量记为tx=s/nx−μ0,且tx=tp,p值可以写为
ux=up⇒t(ux)=t(up)=p⇒p=t(ux)
同理,对于第二种检验,拒绝域为W={t≥t1−α(n−1)},p值为p=1−t(ux)。
对于第三种检验,拒绝域为W={t≥t1−α/2(n−1)},p值为p=2(1−t(∣ux∣))。

假设 |
拒绝域 |
p值 |
H0:μ≥μ0vsH1:μ<μ0 |
{t≤tα(n−1)} |
t(ux) |
H0:μ≤μ0vsH1:μ>μ0 |
{t≥t1−α(n−1)} |
1−t(ux) |
H0:μ=μ0vsH1:μ=μ0 |
${ |
t |
两个正态总体假设检验
在实际业务中,最常用的就是两个正态总体的假设检验,这也是A/B测试所使用的假设检验方法。因为在实际业务中,我们是不可能知道任何总体分布的真正参数的,而单个总体的检验就只能用于与一个定值做比较的情况,如上述的工厂生产标准。形如测试新策略,新功能的效果一类的需求,本质上都是比较两个总体的参数是否有差异。例如,游戏场景下,现在要检验新活动对用户活跃时间是否有显著影响,这就可以转化为,没有出新活动之前的用户活跃时间是一个正态总体,出新活动后的用户活跃时间是一个正态总体,比较这两个正态总体的均值是否有显著差异的问题。
那么,两个正态总体的假设要怎么写呢?还是分三种假设情况,以检验均值为例,分别是
情况1:检验总体1的均值是否小于总体2的均值
情况2:检验总体1的均值是否大于总体2的均值
情况3:检验总体1的均值是否与总体2的均值有差异
记两个总体为N(μ1,σ12)与N(μ2,σ22),则三种假设可以写为
H0:μ1≥μ2H0:μ1≤μ2H0:μ1=μ2vsvsvsH1:μ1<μ2H1:μ1>μ2H1:μ1=μ2
由于上面我们已经给出了单总体的假设检验,我们可以将双总体的假设转化为单总体的假设,将所有右边的项移项到左边,即
H0:μ1−μ2≥0H0:μ1−μ2≤0H0:μ1−μ2=0vsvsvsH1:μ1−μ2<0H1:μ1−μ2>0H1:μ1−μ2=0
下面我们就以上述假设为基础来看看双总体的拒绝域与p值。
双样本u检验
双样本u检验,也叫双样本z检验,用于两个正态总体的方差均已知,比较均值的情况。记两个总体为N(μ1,σ12)与N(μ2,σ22),其中σ1与σ2为已知量,抽取两个正态总体的样本数分别为m与n,样本均值分别记为x与y。
我们来回顾一下单总体时的统计量是如何确定的,就是将样本均值x标准化为u,使其符合标准正态分布。正态总体为N(μ0,σ02),样本量为n,因此样本均值的分布为x∼N(μ0,nσ02),将其进行标准化,得到统计量u为
u=σ0/nx−μ0
同理,样本均值的分布为x∼N(μ1,mσ12)与y∼N(μ2,nσ22),可以得到
x−y∼N(μ1−μ2,mσ12+nσ22)
将x−y进行标准化,得到统计量u为
u=mσ12+nσ22(x−y)−(μ1−μ2)=mσ12+nσ22x−y
后续,三种情况的拒绝域与p值同单总体u检验,如下

假设 |
拒绝域 |
p值 |
H0:μ1−μ2≥0vsH1:μ1−μ2<0 |
{u≤uα} |
Φ(ux) |
H0:μ1−μ2≤0vsH1:μ1−μ2>0 |
{u≥u1−α} |
1−Φ(ux) |
H0:μ1−μ2=0vsH1:μ1−μ2=0 |
${ |
u |
大样本u检验与近似t检验
将上述情况改为方差未知,也就是两个正态总体的方差均已知,比较均值的情况。记样本方差为s1与s2,按照单总体时的做法,用样本方差替代总体方差,也就是统计量为
u=t=ms12+ns22(x−y)−(μ1−μ2)=ms12+ns22x−y
当样本量m与n足够大时,根据中心极限定理,统计量u近似服从标准正态分布,因此可以用u检验的那套,这就是大样本u检验。
而当样本量m与n不够大时,统计量t服从自由度为l的t分布,其中l的计算公式为
l=m2(m−1)s14+n2(n−1)s24(ms12+ns22)2
一般l不为整数,常常取最近的整数代替,因此可以用t检验那套,这就是近似t检验。
总结下来就是,在样本量充足的情况下,使用大样本u检验,其拒绝域与p值如下

假设 |
拒绝域 |
p值 |
H0:μ1−μ2≥0vsH1:μ1−μ2<0 |
{u≤uα} |
Φ(ux) |
H0:μ1−μ2≤0vsH1:μ1−μ2>0 |
{u≥u1−α} |
1−Φ(ux) |
H0:μ1−μ2=0vsH1:μ1−μ2=0 |
${ |
u |
在样本量有限的情况下,使用近似t,其拒绝域与p值如下

假设 |
拒绝域 |
p值 |
H0:μ1−μ2≥0vsH1:μ1−μ2<0 |
{t≤tα(l)} |
t(ux) |
H0:μ1−μ2≤0vsH1:μ1−μ2>0 |
{t≥t1−α(l)} |
1−t(ux) |
H0:μ1−μ2=0vsH1:μ1−μ2=0 |
${ |
t |
注1:统计学上,常常以30作为样本是否足够大的分界线
注2:大样本u检验是实际场景中最常用的检验,因为实际场景中,30往往是一个很容易满足的样本数。再者,实际场景中的样本总体可能服从各种奇怪的分布,但是,不管需要检验的样本总体服从什么分布,根据中心极限定理,在样本量充足的情况下,其样本均值都会服从正态分布,因此可以使用大样本u检验。在A/B test中,几乎可以只使用大样本u检验。
非正态总体的假设检验
对于非正态总体的假设检验,其推导流程与正态总体是类似的,这里我们以两点分布b(1,p)为例。在实际场景中这也很常见,也就是对比例类的指标进行检验,如检验点击率,次日留存率等指标,都是服从两点分布的,参数p就是所谓的xx率。要检验p与定值p0的关系,三种假设可以写为
H0:p≥p0H0:p≤p0H0:p=p0vsvsvsH1:p<p0H1:p>p0H1:p=p0
其统计量自然是进行n次实验,发生记为1的事件的总次数,其服从二项分布b(n,p)(这里就跟选择均值为统计量,然后均值服从正态分布是一样的)。以第一种假设为例,记次数为x,可以得到拒绝域形式为
W={x≤c}
在显著性水平为的情况下,满足
P(x≤c)=i=0∑c(ni)p0i(1−p0)n−i=α
但是这里会有个问题,就是这是个离散分布,所以c只能取整数,因此一般会找到一个整数c0,使得
i=0∑c0+1(ni)p0i(1−p0)n−i>α>i=0∑c0(ni)p0i(1−p0)n−i
取c=c0,确定拒绝域。
而求其p值则会方便许多,记样本求出的统计量为x0,p值可以写为
p=P(x≤x0)=P(x≤[x0])=i=0∑[x0](ni)p0i(1−p0)n−i
其中,[x0]为不大于x0的最大整数。
同理,第二种假设检验的拒绝域为
W={x≥c}
满足
P(x≥c)=i=c∑n(ni)p0i(1−p0)n−i=α
p值为
p=P(x≥x0)=P(x≥[x0]+1)=i=0∑[x0]+1(ni)p0i(1−p0)n−i
第三种检验的拒绝域为
W={∣x∣≥c}={x≥x0orx≤x0}
满足
P(x≤c)=i=0∑c(ni)p0i(1−p0)n−i=α/2P(x≥c)=i=c∑n(ni)p0i(1−p0)n−i=α/2
p值为
p=min{P(x≥x0),P(x≤x0)}=min{P(x≥[x0]+1),P(x≤[x0])}=min⎩⎪⎨⎪⎧i=0∑[x0]+1(ni)p0i(1−p0)n−i,i=0∑[x0](ni)p0i(1−p0)n−i⎭⎪⎬⎪⎫
大样本假设检验
单总体
上面我们提到过,根据中心极限定理,当样本量足够大时,样本均值服从正态分布。因此,对于总体不服从正态分布的情况,我们也可以构造u统计量,并使用u检验来进行假设检验。我们继续用上述两点分布的例子,x∼b(1,p),均值为p,方差为p(1−p),设样本量为n,则当n足够大时,我们可以认为x∼N(p,p(1−p)),因此我们可以构造统计量
u=p(1−p)/nx−p
而后,拒绝域与p值均与u检验相同。
双总体
对于双总体的情况,也可以使用大样本u检验,假设x∼b(1,p1),y∼b(1,p2),样本量分别为m与n,则当n足够大时,我们可以认为x∼N(p1,p1(1−p1)/m),y∼N(p2,p2(1−p2)/n),因此我们可以构造统计量
u=mp1(1−p1)+np2(1−p2)(x−y)−(p1−p2)=mp1(1−p1)+np2(1−p2)x−y
同理,当方差未知时可以使用样本方差来进行估计,也就是
u=ms12+ns22x−y=mx(1−x)+ny(1−y)x−y
而后,拒绝域与p值均与大样本u检验相同。
总结
本文介绍了假设检验的基本思想与原理,分析了假设检验的步骤,并给出了常用假设检验的统计量,拒绝域及p值,并且介绍了在实际场景中最泛用的大样本检验。