假设检验的学习和理解
本文目的
最近在Coursera上学习Data Analysis,结合前一阵子阅读的《Head First Statistics》,发现好多计算方法都涉及了假设检验(Hypothesis Test,又称“显著性检验”,Significance Test),用于检验模型的显著性。如回归分析,检测估计量的系数;卡方检验(运用卡方分布)检验模型的优度拟合和变量独立性。所以,决定梳理一下相关知识,作为备忘。
原理&方法
个人理解,假设检验就是利用反证法和小概率事件对原假设(Null Hypothesis)和备选假设(Alternative Hypothesis)进行选择。首先,假设原假设成立,那么就可以利用原假设的一些条件,如统计量的概率分布。然后,选定显著性水平α和对应的拒绝域(一个区间),一般选择α = 5%或α = 1%。接下来,根据样本和假设的统计量,计算P值(P Value)。如果P值对应的统计量在显著性水平以内,那么就拒原假设。直观的理解,因为α比较小,属于小概率事件,一般不可能发生,但是现在却发生了,那么原假设有问题,所以拒绝原假设,接受备选假设。
需要指出的是,无论是否拒绝原假设,都不能保证100%正确,只能在一定程度上估计这件事情可能性。而且检验结果很大程度上取决于样本,所以一旦样本出现偏倚(Biased),会直接影响检验结果。
假设检验,形式化的可以总结为以下6步:
- 确定原假设H0和备选假设H1
- 根据H0,确定统计量的概率分布和相关参数
- 确定显著性水平α和拒绝域
- 根据步骤2的参数,求出P值
- 查看P值是否位于拒绝域以内
- 做出判断,如果P值在拒绝域以内,那么拒绝H0接受H1。否则接受H0拒绝H1
检验结果
H0正确 |
H0错误 |
|
接收 |
PASS |
第二类错误 (False Discovery) |
拒绝 |
第一类错误 (False Positive) |
PASS |
上面提到,假设检验不会100%确保检验结果正确,会出现上面的两类错误:
- 第一类错误:错误的拒绝原假设。原假设正确,但是却错误的拒绝了,发生此事件的概率为α,也就是显著性水平。所以显著性水平越高,越容易发生。
- 第二类错误:错误的接受原假设。原假设错误,但是却接受了原假设。发生此事件的概率需要根据统计量的分布,和被选项假设具有具体值来确定,这里先略过(《Head First Statistics》假设检验这一章中举了一个例子描述如何求解其概率)。
如何选择显著性水平α
显著性水平α一般为0.05,但是根据需要可以设为0.1或者0.01。当α较大时,第一类错误的概率增大,第二类错误的概率减少;α较小时,则相反。下面举几个例子:
例1 一个汽车制造商正在考核新零件,该零件对车辆安全至关重要。目前正在抽样检测,你觉得α应该如何指定。
解答H0:新配件与原始配件的安全性能相同。H1:新配件比原始配件更安全。由于此配件关系用户声明安全,所以需要尽量使用较安全的配件,拒绝假设H0,那么可以设将α设置高一点,比如 0.1。
例2 一个机器中,有一个配件,替换成本十分高,但是如果该配件损坏了,对机器影响不大,请问显著性水平应该如何选取。
解答 H0:配件正常工作。H1:配件损坏。由于替换成本较高,所以需要确保零配件的确损坏才能替换,可以将α设置较小,比如0.01。
多重测试(Multiple-testing)
上面提到了假设检验可能出现问题,一个形象的例子可以参见这个漫画。主要意思是这样的,一妹纸问一技术宅:“吃软心豆粒糖会长痘痘吗?”为了回答妹子问题,技术宅就做了一次假设检验,P值大于0.05,所以回答妹子:“软心豆粒糖不会引起痘痘!”妹子又说:“好像吃了某种颜色的软心豆粒糖会长痘痘。”技术宅只好一边一边的将不同颜色的糖果进行显著性检验,最终发现在一次实验中,绿色的糖果的P值小于0.05,所以得出结论“吃绿色的软心豆粒糖会长痘痘”。
这个故事说明了,显著性检验进行许多次后,出现错误的可能性会增大。特别的,第一类错误至少出现一次的的概率是P (第一类错误的次数>=1)= 1 – (1-α)m。这意味着,随着m的增大,P (第一类错误的次数>=1)会无限接近1。
这个问题很严重,容易导致假设检验的滥用,所以需要多重测试修正这类问题。具体的方法,可以参见这里。
参考资料
- 百度百科上关于假设检验的说明:http://baike.baidu.com/view/1445854.htm
- 《Head First Statistics》:假设检验相关章节,例子比较形象。
- Data Analysis in Coursera: Week 8, Lecture Multiple Testing
- OpenIntro Statistics : http://www.openintro.org/stat/textbook.php