卡方检验与 Fisher 精确检验在线计算(含 OR / RR)
列联表的独立性检验:Pearson 卡方、Yates 连续性校正与 Fisher 精确检验, 2×2 表另给出优势比 OR 与相对危险度 RR 及其 95% 置信区间。 支持任意 R×C 表(卡方部分)。
三种方法可能给出相反结论
这是本页最想说的一件事。用 [[12, 8], [5, 15]] 这张表:
| 方法 | p 值 | 在 α=0.05 下 |
|---|---|---|
| Pearson 卡方 | 0.0252 | 显著 |
| Yates 连续性校正 | 0.0550 | 不显著 |
| Fisher 精确检验 | 0.0536 | 不显著 |
同一份数据,三个结论。 所以「用哪种方法」不是可以事后挑的—— 应当在看到数据之前就定好,否则就是挑一个自己想要的答案。
一般的取舍是:样本量充足(所有格子期望频数 ≥ 5)时用 Pearson 卡方; 有格子期望频数 < 5 时用 Fisher 精确检验。 Yates 校正是在计算机普及之前用来近似 Fisher 的手算办法, 今天已经可以直接算 Fisher,多数统计学者不再推荐 Yates—— 它往往过度保守。本页仍然给出它,是因为很多期刊和教材还在用。
期望频数为什么要紧
卡方统计量的分布近似成卡方分布,这个近似依赖每格有足够的期望计数。 期望频数太小时近似失效,p 值不可信。本页会算出每格的期望频数并标出最小值, 低于 5 时给出提示。
注意是期望频数不是实际观测数。 观测到 0 不一定有问题, 期望值小才是问题。
OR 与 RR 的区别
优势比 OR = (a/b) / (c/d),比较的是「发生比」的比值。 病例对照研究只能算 OR,因为它按结局抽样,算不出真实发病率。
相对危险度 RR = (a/(a+b)) / (c/(c+d)),比较的是发生率的比值, 更直观,但只有在队列研究或随机试验里才有意义。
罕见结局时 OR ≈ RR,结局常见时 OR 会明显夸大 RR。 把病例对照研究的 OR 当成 RR 来解读是流行病学里最常见的错误之一。
置信区间用 Woolf 对数法算:先在 log 尺度上算区间,再指数回来, 所以区间关于 1 是不对称的。
这个检验不能回答什么
卡方检验只说明「两个变量不独立」,不说明谁导致谁,也不说明关联有多强。 样本量足够大时,微弱到没有实际意义的关联也会显著。 要看强度请看 OR/RR 或效应量,不要只看 p 值。
常见问题
卡方、Yates、Fisher 该用哪个?
所有格子期望频数 ≥ 5 时用 Pearson 卡方;有格子期望 < 5 时用 Fisher 精确检验。Yates 校正是计算机普及前用来手算近似 Fisher 的办法,今天可以直接算 Fisher,多数统计学者不再推荐 Yates,因为它往往过度保守。本页仍给出它是因为不少期刊和教材还在用。关键是:方法要在看到数据之前定好。
期望频数 < 5 到底有多要紧?
卡方统计量近似服从卡方分布,这个近似依赖每格有足够的期望计数。期望太小时近似失效,p 值不可信。注意判断依据是期望频数不是观测数——观测到 0 不一定有问题,期望值小才是问题。
OR 和 RR 有什么区别,什么时候不能混用?
OR 比较的是发生比 (a/b)/(c/d),RR 比较的是发生率 (a/(a+b))/(c/(c+d))。病例对照研究按结局抽样,算不出真实发病率,只能报 OR。罕见结局时 OR ≈ RR,结局常见时 OR 会明显夸大 RR——把病例对照的 OR 当 RR 解读是流行病学里最常见的错误之一。
为什么置信区间关于 1 不对称?
因为区间是在对数尺度上算的(Woolf 法):先算 log(OR) ± z×SE,再指数回来。指数变换把对称区间变成不对称的,这是正确行为,不是计算错误。
卡方显著能说明有因果关系吗?
不能。它只说明两个变量不独立。关联可能来自混杂、选择偏倚或反向因果。而且样本量足够大时,微弱到没有实际意义的关联也会显著——要看强度请看 OR/RR 及其区间,不要只看 p 值。