医学统计-精确检验
Fisher精确检验
在期望频数过小的列联表上,用超几何(或 Freeman-Halton)精确概率判断两个定类变量是否关联。
这篇能回答什么
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 · 上传表格
打开工作台,将 Excel / CSV / JSON 拖入上传区。本案例使用学生问卷 xlsx,确认工作表为「有效样本数据」。单文件不超过 20 MB。
步骤 2 · 查看画像与质量
确认「就读年级」「学校办学性质」「作业完成行为」「学生性别」为定类。先在交叉里数格子:五年级或某一行为档人数很少时,准备改看精确 p。不要把数学学习兴趣当行列。
步骤 3 · 选择「Fisher精确检验」
在算法目录搜索 Fisher 或「精确」。格子已经很饱、只是想做常规独立性检验时,应选卡方检验,不要因为「精确」听起来更严就一律 Fisher。
步骤 4 · 指定行列并运行
行变量指定就读年级,列变量指定学校办学性质。若要演示更稀的表,先按作业完成行为筛一层再运行。点击运行分析。
步骤 5 · 阅读结果
先核对 N 与每个格子的观测,手算或对照 E_{ij}。有 E<5 就以精确 p 为主;2×2 再看 OR 的方向。不要只抄边缘三类百分比。




如何阅读输出
下表是一侧边缘。类别 A 53(26.11%),类别 B 40(19.7%),类别 C 110(54.19%),合计 N=203。边缘不能告诉你关联:关联藏在交叉格子里。把 40=40 这一档再按办学性质切开,单格很容易掉到十几人。
| 项目 | 类别 | 统计量 | 取值 |
|---|---|---|---|
| Fisher精确检验 | 类别 A | 频数 | 53 |
| Fisher精确检验 | 类别 B | 频数 | 40 |
| Fisher精确检验 | 类别 C | 频数 | 110 |
| Fisher精确检验 | 合计 | 有效样本 N | 203 |
| Fisher精确检验 | 类别 A | 占比(%) | 26.11 |
| Fisher精确检验 | 类别 B | 占比(%) | 19.7 |
| Fisher精确检验 | 类别 C | 占比(%) | 54.19 |
左右滑动可查看完整表格
教学示例表在 StatsX 工作台中的计算结果口径。


【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]. 中国人民大学出版社.