1,超几何分布检验常用来对venn图两个圈overlap的显著性进行检验,费歇尔精确检验常用来对2x2的列联表进行检验。
2,假设有如下的统计数据:
smoke | non-smoke | |
---|---|---|
lung cancer | 10 | 6 |
normal | 1 | 12 |
现在对其进行费歇尔精确检验,有两种提零假设的方法:
2.1 对比抽烟组和非抽烟组
H0:抽烟组得肺癌的概率p1和非抽烟组得肺癌的概率p2相同; H1: p1和p2不同(可以分为双侧检验p1 不等于 p2,或者单侧检验p1>p2 or p1<p2)。
其中p1=10/(10+1),p2=6/(6+12)。
对于上述2x2表,穷尽所有可能为:
对每一种可能,根据超几何分布,可以计算概率为
P1=choose(16, 11)*choose(13,0)/choose(29, 11)=0.00013
P2=choose(16, 10)*choose(13,1)/choose(29, 11)=0.0030
P3=choose(16, 9)*choose(13,2)/choose(29, 11)=0.026
P4=choose(16, 8)*choose(13,3)/choose(29, 11)=0.11
P5=choose(16, 7)*choose(13,4)/choose(29, 11)=0.24
P6=choose(16, 6)*choose(13,5)/choose(29, 11)=0.30
P7=choose(16, 5)*choose(13,6)/choose(29, 11)=0.22
P8=choose(16, 4)*choose(13,7)/choose(29, 11)=0.090
P9=choose(16, 3)*choose(13,8)/choose(29, 11)=0.021
P10=choose(16, 2)*choose(13,9)/choose(29, 11)=0.0025
P11=choose(16, 1)*choose(13,10)/choose(29, 11)=0.00013
p12=choose(16, 0)*choose(13,11)/choose(29, 11)=2.25e-06
很明显对于我们的数据,处在P2的位置,
2.11 则对于双侧检验(H1为
p
1
≠
p
2
p1 \neq p2
p1=p2),
p-value=2*(P1+P2)=0.00626
2.12 对于单侧检验(H1为
p
1
<
p
2
p1 < p2
p1<p2),
p-value=P2+P3+…+P12=0.99987
2.13 对于单侧检验(H1为
p
1
>
p
2
p1 > p2
p1>p2),
p-value=P1+P2=0.00313
2.2 对比肺癌患者和正常人
H0:肺癌患者中抽烟的概率p1和正常人抽烟的概率p2相同; H1: p1和p2不同(可以分为双侧检验p1 不等于 p2,或者单侧检验p1>p2 or p1<p2)。
其中p1=10/(10+6),p2=1/(1+12)。
此时数据服从的超几何分布和2.1中一样,
2.21 则对于双侧检验(H1为
p
1
≠
p
2
p1 \neq p2
p1=p2),
p-value=2*(P1+P2)=0.00626
2.22 对于单侧检验(H1为
p
1
>
p
2
p1 > p2
p1>p2),
p-value=P1+P2=0.00313
2.12 对于单侧检验(H1为
p
1
<
p
2
p1 < p2
p1<p2),
p-value=P2+P3+…+P12=0.99987
用R语言对上述结果的计算命令为
fisher.test(matrix(c(10,1,6,12),nrow=2))
Fisher's Exact Test for Count Data
data: matrix(c(10, 1, 6, 12), nrow = 2)
p-value = 0.00575
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
1.820063 932.303503
sample estimates:
odds ratio
17.83676
可以看出R的计算结果跟我们并不一样,这是因为R的零假设和备择假设跟我们不一样,R的H0和H1分别为
H0: true odds ratio is equal to 1;
H1: true odds ratio is not equal to 1.
它的详细计算过程见:R的stats包中fisher.test()计算过程详解。
3,用超几何分布检验对上述结果进行检验
3.1 设总共有29个人,其中11个吸烟者,18个非吸烟者,现从中随机抽取16个样本(在此实验中对应着肺癌病人),有10个是吸烟者,这样的事件是否显著?用venn图表示为
(左边的圈为抽样出来的16个样本,可以分为两类:吸烟者和非吸烟者)
用R语言计算:
p-value=phyper(10-1, 11, 18, 16, lower.tail=F)=0.003135274
可以看出此结果跟我们在2中手动算出来的结果相同,为单侧检验。
3.2 设总共有29个人,其中16个癌症患者,13个正常人,现从中随机选出11个人(对应着所有抽烟的人),有10个是癌症患者,这样的事件是否显著?用venn图表示为
(左边的圈为抽样出来的11个样本,可以分为两类:癌症患者和非癌症患者)
p-value=phyper(10-1, 16, 13, 11, lower.tail=F)=0.003135274
结果与上述都相符。