当你面对 3组及以上 的医学数据时,最常见错误是: “先做 ANOVA,再把每两组都做一次 t 检验”。这会显著增加假阳性风险。 正确流程是:先做总体检验,再按研究目的选择合适的事后比较方法。
1. 多组比较的决策流程
步骤 1
明确结局变量类型与研究目的(探索性 or 验证性)
步骤 2
先做总体检验:ANOVA 或 Kruskal-Wallis
步骤 3
总体显著后,再做合适的两两比较(Tukey / Dunnett / LSD 等)
核心原则:“先总体、后局部”。如果总体检验不显著,通常不建议继续做大量两两比较。
2. 为什么不能直接反复做 t 检验?
若有 3 组数据并进行 3 次两两 t 检验,在每次 α=0.05 的情况下,至少一次犯 I 类错误的概率会升高到:
α' = 1 - (1 - α)m = 1 - 0.953 = 0.1426
也就是 14.26%,明显高于可接受的 5%。
| 组数 | 两两比较次数 m | 家族错误率 α'(α=0.05) |
|---|---|---|
| 3组 | 3 | 14.26% |
| 4组 | 6 | 26.49% |
| 5组 | 10 | 40.13% |
3. 总体检验怎么选?
| 条件 | 推荐总体检验 | 说明 |
|---|---|---|
| 近似正态 + 方差齐 | 单因素 ANOVA | 参数检验,统计效能通常更高 |
| 非正态或分布偏态明显 | Kruskal-Wallis | 非参数检验,对分布假设更宽松 |
| 正态但方差不齐 | Welch ANOVA | 对异方差更稳健 |
# R: 总体检验的常见写法 # 方差分析 fit_anova <- aov(y ~ group, data = df) summary(fit_anova) # 非参数总体检验 kruskal.test(y ~ group, data = df) # 正态性与方差齐性辅助判断 shapiro.test(df$y) bartlett.test(y ~ group, data = df)
4. 两两比较方法怎么选?
| 方法 | 适用场景 | 特点 |
|---|---|---|
| Tukey | 探索性研究,多组两两都要比 | 控制多重比较错误率,稳健 |
| Dunnett | 多个处理组只与对照组比较 | 功效高于“全两两比较” |
| LSD | 预先计划好的少量比较 | 检出率高,但更易假阳性 |
| SNK | 传统教材常见 | 比较次数很多时假阳性风险偏高 |
| Bonferroni/Holm | 需要严格控制I类错误 | 保守,显著性更难达到 |
建议:探索性分析优先 `Tukey/Holm`,验证性且有明确对照组时优先 `Dunnett`。
# R: 常见事后比较 # Tukey TukeyHSD(fit_anova) # 计划性比较(需配合研究设计解释) pairwise.t.test(df$y, df$group, p.adjust.method = "holm") # 非参数场景下的两两比较 pairwise.wilcox.test(df$y, df$group, p.adjust.method = "BH")
5. 两个高频补充:I类/II类错误 与 z/t 检验
I类错误(假阳性)
原假设真实却被拒绝。多重比较次数越多,I类错误累积越明显。
II类错误(假阴性)
原假设错误却未拒绝。常见于样本量不足、效应量小的研究。
| 检验 | 常见使用场景 | 备注 |
|---|---|---|
| z 检验 | 大样本且总体方差已知(理论条件) | 实际医学研究中不常满足 |
| t 检验 | 总体方差未知(最常见) | 即便样本量较大,实践中也常优先 t 检验 |
✅ 论文写作可直接套用的统计流程描述
“连续变量先进行正态性与方差齐性检验。满足条件时采用单因素方差分析(ANOVA)进行总体比较; 不满足条件时采用 Kruskal-Wallis 检验。总体检验显著后,根据研究目的进行事后两两比较: 多组探索性比较采用 Tukey(或 Holm 校正),对照组比较采用 Dunnett。双侧检验,P<0.05 为差异有统计学意义。”