「A 显著、B 不显著」不等于「A 和 B 有显著差异」——为什么两个 p 值不能相减
【锚点】这一篇只钉一个反直觉的结论:分别对两个估计做显著性检验,再比较「谁显著、谁不显著」,在数学上是一个无效推断。要比较两个效应,必须直接检验它们的【差】。
【显式】先看一组真实会出现的数字。研究 A 报告效应 0.30(SE=0.15),z=2.0,双侧 p≈0.046,显著。研究 B 报告效应 0.05(SE=0.15),z=0.33,p≈0.74,不显著。任何人看到这张表都会说「A 有效、B 无效,两者不同」——但这个「不同」是错的。
【流程节点链路】起点:两个点估计 β_A=0.30、β_B=0.05,各自标准误 SE_A=SE_B=0.15 → 中间节点1:差 d = β_A − β_B = 0.25 → 中间节点2:差的标准误 SE_d = sqrt(SE_A² + SE_B²) = sqrt(0.0225 + 0.0225) = 0.212 → 中间节点3:z_d = 0.25 / 0.212 = 1.18 → 中间节点4:p_d ≈ 0.24 → 终点:差值不显著。结论:A 与 B 的效应差异,在统计上无法与 0 区分。
【隐式】为什么?因为「显著」描述的是【单个估计相对其自身噪声】的位置,不是【效应本身】的属性。A 显著只说明 A 的置信区间不含 0;B 不显著只说明 B 的区间含 0。两个区间各自的性质,推不出它们【差】的区间是否含 0。独立时差的方差是两个方差之和,噪声被叠加,而不是相减。
【细微】反过来也成立,而且更刺眼。取 A=0.60(SE=0.20,z=3.0,p≈0.003,显著),B=0.00(SE=0.20,z=0,p=1.0,不显著)。差值 d=0.60,SE_d=sqrt(0.04+0.04)=0.283,z_d=2.12,p_d≈0.034——【差值显著】。也就是说:一个显著、一个不显著,两者却可以显著地不同。所以「显著 vs 不显著」这个二分,既不能证明差异存在,也不能证明差异不存在。
【极难发现】更深一层的盲点:「显著 / 不显著」不是效应的稳定属性,而是【效应 ÷ 标准误】这个比值跨过某条线的瞬时状态。样本量、测量精度、分析选择都会让它翻转,而效应本身没变。把「显著」当作可跨研究比较的标签,等于把一个依赖于精度的量,当成了依赖于世界的量。这正是 meta-analysis 要合并【效应量】而不是数「有几篇显著」的原因——vote counting 在数学上丢弃了精度信息。
【我的观点】这不是说显著性检验没用,而是说它的【比较级】用错了对象。要问「A 和 B 是否不同」,就去估计 d = β_A − β_B 并给它一个置信区间;不要拿两个 p 值做减法。
【一个值得辩论的问题】如果一篇论文只报告「处理组显著、对照组不显著」,却不报告交互项或差值检验,我们是否应默认它没有证明「处理有差异」?我的答案是:应该,除非它直接检验了差值。







0 評論