跳到主要内容

医学统计-精确检验

Fisher精确检验

在期望频数过小的列联表上,用超几何(或 Freeman-Halton)精确概率判断两个定类变量是否关联。

更新日期 2026-08-29 组间差异

这篇能回答什么

Fisher 精确检验回答的仍是「两个定类变量是否独立」,但 p 值不是靠 χ² 的大样本近似,而是在固定行列合计的条件下,枚举一切与观测表同样边际的表,把概率小于等于观测表的那些表加起来。2×2 表用超几何分布;更大的 r×c 表用 Freeman-Halton 推广。

适合:罕见病四格表、分层后格子变稀、五年级这类本就人数少的交叉。本教学示例用「就读年级」×「学校办学性质」(再按作业完成行为等切薄后)演示稀疏表:有效 N=203,一侧边缘 53 / 40 / 110,热力图里多次出现 13。全样本、格子都很饱时,Pearson 卡方通常更合适,不必为了「精确」两个字强行 Fisher。

什么时候不该用

同一人前后两次阴阳性是配对四格表,应改用配对卡方(McNemar),Fisher 会把两次测量当成独立行列。只想看人数与组内百分比,用列联表即可。要按第三变量合并关联,用分层卡方。

如何选择方法

先做交叉表,算出每个格子的期望 E_{ij}=行合计×列合计/N。经验规则:2×2 里只要有一个 E<5(更严的说法是 E<1 或超过 20% 的格子 E<5),Pearson 的 χ² 近似变差,主报告改 Fisher;所有 E 都够大,用 Pearson,并附 Cramer’s V。配对设计走 McNemar。自动按稀疏程度切换的过程见卡方自动求解器,但论文仍应写明最终用的是哪一种 p。

  • Fisher 精确检验:稀疏 r×c,尤其 2×2 且 E<5;输出精确 p,2×2 可附 OR。

  • Pearson 卡方:格子期望充足的独立性检验。

  • 列联(交叉)分析:先把人数看清楚,不做推断。

  • McNemar:配对二分类,不是独立交叉表。

输入、输出与限制

输入

两个定类变量构成交叉表。本案例行变量用就读年级,列变量用学校办学性质;若还要看行为结构,可把作业完成行为当作另一张表的列。学生性别是二元,适合做 2×c。定量成绩列不能直接当行列,除非先按研究计划分箱。

  • 行变量:1 个定类,例如就读年级。

  • 列变量:1 个定类,例如学校办学性质。

输出

结果表给出一侧边缘的三类频数与占比,以及有效 N。热力图给出完整交叉格子(教学图为 3×3,多个 13)。主推断是精确 p;2×2 时还可报告优势比 OR=ad/bc。Pearson χ² 可以并列对照,但 E<5 时不要把它当主 p。

产品限制

  • 按两列同时非缺失计 N;本例 203,不是全表 500。

  • r×c 很大且 N 很大时,精确枚举变慢,期望充足应回到 Pearson。

  • 零格子会让 OR 的一侧变成 0 或无穷,需在文中说明。

  • 热力图与边缘表的口径若来自不同切面,以交叉格子读期望,以合计行读 N。

案例

研究问题。 在人数被切薄的子表上,就读年级与学校办学性质是否还独立?全样本卡方页里五年级合计只有 48 人,再按办学性质或作业完成行为切开,很容易出现 E<5。此时把 Pearson p 写成「显著 / 不显著」会夸大近似精度。

教学示例来自学生问卷,工作表「有效样本数据」。本页交叉有效 203。边缘三类 53(26.11%)、40(19.7%)、110(54.19%)。热力图格子含多个 13:以 13 为观测、若对应行合计与列合计都不算大,E=行合计×列合计/203 很容易低于 5。下载后指定就读年级与学校办学性质(必要时再筛一层作业完成行为)可复现稀疏表的读法。

下载教学示例表(学生问卷)

在 StatsX 中操作

  1. 步骤 1 · 上传表格

    打开工作台,将 Excel / CSV / JSON 拖入上传区。本案例使用学生问卷 xlsx,确认工作表为「有效样本数据」。单文件不超过 20 MB。

  2. 步骤 2 · 查看画像与质量

    确认「就读年级」「学校办学性质」「作业完成行为」「学生性别」为定类。先在交叉里数格子:五年级或某一行为档人数很少时,准备改看精确 p。不要把数学学习兴趣当行列。

  3. 步骤 3 · 选择「Fisher精确检验」

    在算法目录搜索 Fisher 或「精确」。格子已经很饱、只是想做常规独立性检验时,应选卡方检验,不要因为「精确」听起来更严就一律 Fisher。

  4. 步骤 4 · 指定行列并运行

    行变量指定就读年级,列变量指定学校办学性质。若要演示更稀的表,先按作业完成行为筛一层再运行。点击运行分析。

  5. 步骤 5 · 阅读结果

    先核对 N 与每个格子的观测,手算或对照 E_{ij}。有 E<5 就以精确 p 为主;2×2 再看 OR 的方向。不要只抄边缘三类百分比。

StatsX 工作台上传学生问卷
将教学示例表拖入工作台上传区。
列画像确认定类行列
确认就读年级与学校办学性质是定类,并留意五年级人数偏少。
在目录中选择 Fisher 精确检验
在算法目录中选定「Fisher精确检验」。
为 Fisher 指定行变量与列变量
行变量选就读年级,列变量选学校办学性质后运行。

如何阅读输出

下表是一侧边缘。类别 A 53(26.11%),类别 B 40(19.7%),类别 C 110(54.19%),合计 N=203。边缘不能告诉你关联:关联藏在交叉格子里。把 40=40 这一档再按办学性质切开,单格很容易掉到十几人。

Fisher精确检验结果表
项目类别统计量取值
Fisher精确检验类别 A频数53
Fisher精确检验类别 B频数40
Fisher精确检验类别 C频数110
Fisher精确检验合计有效样本 N203
Fisher精确检验类别 A占比(%)26.11
Fisher精确检验类别 B占比(%)19.7
Fisher精确检验类别 C占比(%)54.19

左右滑动可查看完整表格

教学示例表在 StatsX 工作台中的计算结果口径。

Fisher精确检验结果表
工作台中的边缘频数与有效 N,应与上表一致。
3×3 交叉频数热力图
3×3 格子含多个 13。先算期望再决定主 p 用 Fisher 还是 Pearson。

【Fisher精确·稀疏交叉】有效 N=203。一侧边缘三类为 53(26.11%)、40(19.7%)、110(54.19%)。热力图若干格子只有 13,期望频数很容易跌破 5,应报告精确 P,而不是把 Pearson χ² 的渐近 p 写成主结论。

解读顺序:N → 每格 O_{ij} → E_{ij} 是否有 <5 → 精确 p(及 2×2 的 OR)→ 效应方向。热力图最深的格子只说明人多,不说明「显著」。Pearson χ² 在 E 充足时与 Fisher 通常同向;E 很小且 χ² p 贴着 0.05 时,两者可能一个显著一个不显著——此时以精确 p 为准,并在方法里写清规则。Yates 连续性校正会把 2×2 的 χ² 往保守推,仍是近似,不是 Fisher 的替代。

理论与公式

2×2 表记为 a,b; c,d,n=a+b+c+d。在独立且行列合计固定时,观测表的概率是超几何:

双侧精确 p 把所有「概率不超过观测表」的表的 P 加总(也有按 |OR| 更极端的定义,软件实现可能不同,核对时要看同一规则)。优势比 OR=ad/bc。r×c 的期望仍是

Pearson 统计量 χ²=∑(O_{ij}−E_{ij})²/E_{ij} 在所有 E 都偏大时近似 χ²_{(r−1)(c−1)}。E 太小则近似偏,p 不可靠——这就是改用 Fisher / Freeman-Halton 的理由。分层后要的是公共 OR,应走 Mantel-Haenszel,而不是把各层小表的 Fisher p 简单平均。本例热力里的 13 配合中等边际,E 常会落到 5 以下,适合把精确 p 写进结果。

注意事项

  • 「精确」指条件于边际的枚举,不是「没有抽样误差」或「一定更显著」。

  • 大样本、E 都 >5 时 Fisher 与 Pearson 几乎同向,主报告用 Pearson 更常见、也更好核对。

  • 零格子让 OR 无法有限估计,应合并类别或改用惩罚似然,而不是硬解释无穷 OR。

  • 显著只拒绝独立,推不出「办学性质导致年级」。

  • 同一人两次诊断结果不是本过程,那是 McNemar 的不一致对。

常见问题

参考文献

  • Fisher, R. A. Statistical Methods for Research Workers. Oliver and Boyd.

  • Freeman, G. H., Halton, J. H. Note on an exact treatment of contingency, goodness of fit and other problems of significance. Biometrika, 1951, 38(1-2): 141–149.

  • Agresti, A. Categorical Data Analysis. Wiley.

  • 贾俊平. 统计学[M]. 中国人民大学出版社.