检验两个二进制变量是否是独立的。该检验可以分析 2x2 列联表,并产生精确的 p 值,以检验以下假设:
· H0:行变量和列变量是独立的
· H1:行变量和列变量是相关的
Fisher 精确检验中的 p 值对于所有样本数量都是准确的,而当单元格计数较小时,用于检查相同假设的卡方检验的结果可能不准确。
例如,可以使用 Fisher 精确检验来分析下面的竞选结果列联表,以确定投票是否独立于投票人的性别。
对于该表,Fisher 精确检验产生的 p 值为 0.263。由于该 p 值大于常用的 a 水平,因此数据与原假设一致。因而,没有证据表明在竞选中投票人的性别会影响其选择。
您还可以使用 Fisher 精确检验来确定两个总体比率是否相等。对于此应用,原假设假定两个总体比率是相等的 (H0:p1 = p2);备择假设可以是左尾 (p1 < p2)、右尾 (p1 > p2),或双尾 (p1 ≠ p2)。Fisher 精确检验作为两个比率的检验十分有用,因为它对于所有样本数量都是准确的,而当事件数小于 5 时,以及试验数减去事件数的结果小于 5 时,基于正态近似的 2 个比率的检验可能不准确。
Fisher 精确检验基于超几何分布。因此,p 值在表的边际合计中是有条件的。
举个栗子:
表10.9 死亡原因与高盐摄入量之间可能有关的数据
饮食类型
死亡原因 高盐 低盐
非CVD 2 23
非CVD
CVD 7 53
===================================================
a=2; b=23; c=7; d=53
问:死亡原因是否与饮食类型有联系?
四格表中2有期望数小于5,故不适合用卡方检验,因此我们用Fisher精确检验
Fisher精确检验的一般方法及p-值计算
要件验假设H0:p1=p2 对 H1:p1!=p2,此四格表应至少有一个格子的期望数<5。检验法为:
(1)计算所有可能的与观察表有相同边界的四个表;
(2)计算步骤(1)中的每个表的精确概率;
(3)设原观察表是a,而最后的计数表是k,则
对于上述的每一个备择假设, 该p-值都可以解析为出现比末端观察表更末端的观察表的概率。
左边单侧检验p-值:
右边单侧检验p-值:
(注:该例子来自【美】伯纳德.罗斯纳 著 孙尚拱 译 《生物统计学基础》第五版) P355.
软件计算:
N1=a+b
N2=c+d
M1=a+c
M2=b+d
N=a+b+c+d
>>>from scipy import stats
>>>P_left_tail=stats.hypergeom.cdf(a, N, N1, M1)
>>>P_right_tail=stats.hypergeom.cdf(k, N, N1, M1) - stats.hypergeom.cdf(a-1, N, N1, M1)
a*为观察表中b,c,d有一个为0时第一个格子的观测值。
P_left_tail=0.375
P_right_tail=0.878
双侧P-值:
P=2*min[P_left_tail, P_right_tail, 0.05]=0.749
这说明高盐摄入量与死亡原因之间没有什么显著联系。
统计软件SAS[1]和R语言计算双侧检验的P-值如下:
P-值=所有出现概率小于等于观察表的概率之和。