ARTICLE

Fisher精确检验

Fisher精确检验 (Fisher's Exact Test) Fisher精确检验 (Fisher's Exact Test),又称Fisher精确概率法,是由英国统计学家Ronald Fisher于1935年提出的一种假设检验方法。它专门用于分析列联表(Contingency Table)中两个分类变量之间的关联性,尤其适用于小样本情境。与卡方检验(C

浏览 4 更新 2025-10-26

Fisher精确检验 (Fisher's Exact Test)

Fisher精确检验 (Fisher's Exact Test),又称Fisher精确概率法,是由英国统计学家Ronald Fisher于1935年提出的一种假设检验方法。它专门用于分析列联表(Contingency Table)中两个分类变量之间的关联性,尤其适用于小样本情境。与卡方检验(Chi-squared Test)不同,Fisher精确检验不依赖大样本近似,而是直接通过超几何分布(Hypergeometric Distribution)计算精确的p值,因此被称为"精确"检验。该检验的提出源于Fisher对孟德尔遗传学实验设计的研究,是数理统计在小样本推断领域的重要里程碑。

适用场景与核心问题

Fisher精确检验最常见的应用场景是分析2×2列联表,即两个二分类变量(每个变量只有两个水平)构成的四格表。例如:研究某种药物是否与治疗效果相关,将病人分为"服药组/安慰剂组"和"有效/无效"四类。当样本量较小(例如任一格子的期望频数小于5)时,卡方检验的近似效果不佳,此时Fisher精确检验成为首选。该检验也适用于更一般的r×c r \times c 列联表,但计算复杂度随之大幅上升。

该检验的零假设H0 H_0 )为:行变量与列变量之间相互独立,即两个分类变量不存在关联。备择假设H1 H_1 )为:两变量之间存在关联。与大多数统计检验一样,研究者根据p值是否小于预先设定的显著性水平(通常为0.05或0.01)做出判断。

超几何分布与精确p值的计算

Fisher精确检验的核心数学基础是超几何分布。对于一个2×2列联表:

| | 成功 | 失败 | 合计 | |-------|------|------|------| | 组A | a a | b b | a+b a+b | | 组B | c c | d d | c+d c+d | | 合计 | a+c a+c | b+d b+d | n n |

在行合计和列合计都固定的条件下,表中左上角的值 a a 服从超几何分布。观察到特定 a a 值的概率由下式给出:

P(X=a)=(a+ba)(c+dc)(na+c)=(a+b)!(c+d)!(a+c)!(b+d)!a!b!c!d!n!P(X = a) = \frac{\binom{a+b}{a} \binom{c+d}{c}}{\binom{n}{a+c}} = \frac{(a+b)!(c+d)!(a+c)!(b+d)!}{a! b! c! d! n!}

Fisher的思想是:在边际合计固定的前提下,所有可能的列联表构成一个概率空间。p值等于在当前数据以及所有更极端(更偏离零假设)的列联表下,对应概率之和。若p值小于显著性水平(通常取0.05),则拒绝零假设,认为两变量存在显著关联。这一逻辑与似然比检验(Likelihood Ratio Test)有相通之处,都是通过比较观测结果与零假设下预期结果的偏离程度来做出推断。

单侧检验与双侧检验

Fisher精确检验既可以做单侧检验(One-tailed test),也可以做双侧检验(Two-tailed test)。

单侧检验的p值计算方式为:将当前表中格子a a 的值记为a0 a_0 ,将所有小于等于a0 a_0 (或大于等于a0 a_0 ,取决于方向)的表格概率累加。例如,若备择假设是"组A的成功率高于组B",则仅计算aa0 a \geq a_0 的概率。单侧检验统计功效更强,但要求研究者事先明确关联方向。

双侧检验更常见且更保守,其p值定义为:所有概率小于或等于当前表格概率的表格的概率之和。即:

p=P(X)P(a0)P(X)p = \sum_{P(X) \leq P(a_0)} P(X)

这一方法被称为"概率叠加法",它不要求对称性,适用于任意2×2列联表。双侧检验的p值通常约为单侧检验的两倍,但并非严格如此,因为超几何分布不一定对称。

计算示例

考虑一个经典案例:某新药临床试验中,治疗组5人中有4人痊愈,对照组5人中仅有1人痊愈。列联表如下:

| | 痊愈 | 未愈 | 合计 | |-------|------|------|------| | 治疗组 | 4 | 1 | 5 | | 对照组 | 1 | 4 | 5 | | 合计 | 5 | 5 | 10 |

在边际合计(5, 5, 5, 5)固定的条件下,左上角a a 的可能取值为0到5。当前表格a=4 a=4 的概率为:

P(a=4)=5!5!5!5!4!1!1!4!10!=252520.0992P(a=4) = \frac{5!5!5!5!}{4!1!1!4!10!} = \frac{25}{252} \approx 0.0992

更极端的情况是a=5 a=5 ,其概率为:

P(a=5)=5!5!5!5!5!0!0!5!10!=12520.00397P(a=5) = \frac{5!5!5!5!}{5!0!0!5!10!} = \frac{1}{252} \approx 0.00397

因此,单侧检验(治疗组更优方向)的p值为 P(a=4)+P(a=5)0.1032 P(a=4) + P(a=5) \approx 0.1032 。若取显著性水平0.05,则不能拒绝零假设,即没有足够证据表明该药物显著有效。这一结果直观反映了小样本下统计检验的局限性——即使效应看起来很大,样本量过小仍可能导致结果不显著。若将样本扩大至每组20人且保持相同比例,结果很可能变为显著。

与卡方检验的比较

Fisher精确检验与卡方检验的核心区别在于方法论。卡方检验基于χ²统计量在大样本下近似服从χ²分布的渐近性质,而Fisher精确检验直接枚举所有可能情况并计算精确概率。当样本量较小时,卡方检验的近似效果差,容易产生第一类错误(错误拒绝零假设)的偏差;Fisher精确检验则无此问题,因此在小样本条件下更为可靠。

然而,Fisher精确检验的主要代价是计算复杂度。对于2×2表,手动计算尚可接受;但对于更大的列联表(如3×3、4×4),枚举所有可能表格的组合数呈指数级增长,早期只能局限于2×2表。随着计算机性能的提升,现代统计软件(如R语言Python(SciPy)、SPSS等)已能高效地执行Fisher精确检验,甚至推广到r×c r \times c 列联表,称为Freeman-Halton扩展。此外,蒙特卡洛模拟(Monte Carlo Simulation)方法也被用于近似计算更复杂表格的精确p值。

历史背景

Fisher精确检验最早由Ronald Fisher在其1935年著作《实验设计》(The Design of Experiments)中提出。Fisher以著名的"品茶女士"(Lady Tasting Tea)实验为例阐述了这一方法:一位女士声称能够辨别奶茶是先加茶还是先加牛奶的顺序,Fisher设计了8杯茶(4杯先茶后奶、4杯先奶后茶)来检验她的能力。这一经典案例不仅展示了Fisher精确检验的用法,也奠定了现代随机化实验(Randomized Experiment)的理论基础。

局限性

尽管名为"精确检验",Fisher精确检验也有其局限性。第一,它假定行合计和列合计均为固定值,这一假设在部分研究设计中并不自然,例如观察性研究(Observational Study)中边际合计往往并非事先固定;第二,对于大样本数据,计算量巨大,此时卡方检验是更高效的选择;第三,该方法倾向于保守性(Conservative),即实际的显著性水平往往低于名义水平,这可能导致检验功效(Power)降低;第四,对于2×2列联表,存在更优越的中性无偏检验(如Mid-p检验)可作为替代。

应用领域

Fisher精确检验广泛应用于生物统计学医学研究遗传学社会科学以及自然语言处理等领域。凡是涉及小样本分类数据分析的场景,Fisher精确检验都是不可或缺的标准工具。在生物信息学中,Fisher精确检验常被用于基因表达数据的富集分析(Enrichment Analysis),以判断特定基因集是否在某生物通路中显著富集。在机器学习的特征选择任务中,它也用于评估分类变量与目标变量之间的独立性。