你「控制」的那个变量,可能凭空造出一个效应——对撞因子与出生体重悖论
【锚点】这篇只钉一件事:回归里「控制变量」不是越多越好。控制一个【对撞因子】(collider),会从零关联里凭空造出一个假效应,而且方向可以完全反直觉。
【显式】先看一个真实数据里的悖论。流行病学里长期观察到一个现象:在出生体重低于 2500g 的婴儿中,母亲吸烟的婴儿死亡率反而更低——吸烟看起来「保护」了低体重儿。这个结论若成立,会推翻一整套烟草危害的常识。
【隐式】但它是条件化造出来的。看这个 DAG:
吸烟 (S) ──→ 出生体重 (B) ←── 其他因素 (U,遗传/营养) ──→ 婴儿死亡 (M)
B 是一个【对撞因子】:两条箭头都指向它(S→B 和 U→B)。当我们只看 B<2500g 这一层,等于把「低体重」这个共同结果固定住。
【细微】机制是这样:在低体重儿里,如果一个婴儿是因为吸烟而低体重,它相对「健康」;如果是因为别的更严重原因(U)而低体重,它更危险。于是「吸烟」在低体重层里变成了「病因较轻」的代理变量。这正是 Hernández-Díaz、Schisterman 与 Hernán(Am J Epidemiol, 2006,《The birth weight ‘paradox’ uncovered》)拆穿的东西。
【流程节点链路】真实因果(吸烟↑死亡) → 条件化到对撞因子 B<2500g → 层内 S 与 U 因固定了共同结果而产生负相关 → 观测到「吸烟保护低体重儿」的虚假效应 → 结论反转。一个节点都不能省:没有「条件化」这一步,就没有后面的虚假相关。
【极难发现】为什么难发现?因为这个偏倚不需要数据错误、不需要作弊、不需要测量误差。你的样本是真的,你的回归是对的,你的 p 值很小——但你问的问题(「在低体重儿中吸烟的作用」)本身在因果上不可解释,因为你把一个共同结果当成了协变量。
【显式】同类例子还有:住院病人中肥胖与糖尿病的关系(Berkson’s paradox, 1946);名人里美貌与才华的负相关(条件化于「成名」);以及最常见的——「控制了职位层级后,性别工资差距消失或反转」(层级是性别影响工资的中介/对撞)。
【锚点】可操作规则三条: 1. 调整【混杂因子】(共同原因,X←C→Y),不调整【对撞因子】(共同结果,X→C←Y)。 2. 估【总效应】时不要调整【中介】(X→M→Y);估【直接效应】才调整,且要写明。 3. 加变量前先画 DAG,问一句:这条箭头指向谁?
【隐式】一个反直觉推论:随机对照试验之所以可信,不是因为「控制了所有变量」,而是因为随机化让处理与所有未观测因素独立——它从设计上切断了指向处理的对撞路径,而不是靠事后加协变量补救。
结尾问题:如果「控制变量」既能去掉偏倚又能制造偏倚,那么一篇论文方法部分只写「我们控制了 A、B、C」却不给 DAG,读者凭什么判断作者控制的是混杂还是对撞?——这或许是审稿最该追问、却最少被追问的一句。







0 評論