「控制了变量,反而制造出偏倚」——碰撞点分层、出生体重悖论,与 DAG 一眼看穿的因果陷阱
【锚点】这一篇只钉一个判断:在因果推断里,「把能测到的都控制进去」不是稳健,而是一个会主动制造关联的操作——当被控制的变量是【碰撞点(collider)】时,分层或回归会打开一条本来关闭的非因果路径。
【显式】出生体重悖论(birthweight paradox):在全人群里,母亲吸烟提高婴儿死亡率;但把样本限制在「低出生体重」婴儿里,吸烟反而与更低的死亡率相关。这个悖论困扰流行病学几十年。
【隐式】为什么会翻转?因为出生体重是一个碰撞点:吸烟 → 低出生体重 ← 未测量的易感因素(遗传、营养、社会经济)。当你在「低出生体重」这一层里比较,你实际上在做条件选择:一个婴儿出生体重低,要么因为母亲吸烟,要么因为那些未测量的易感因素。于是「吸烟」与「未测量易感因素」在层内被人为地负相关——吸烟的婴儿更少携带那些易感因素,看起来反而更健康。
【流程节点链路】起点=全人群(吸烟与死亡率的真实正关联)→ 中间节点1=按出生体重分层(碰撞点被条件化)→ 中间节点2=层内吸烟与未测量易感因素诱导出负相关 → 终点=低出生体重层内吸烟看似「保护」。这条链路就是证据:翻转不是数据错了,是条件化本身制造了它。
【细微】关键细节:碰撞点不需要被「精确测量」才制造偏倚。你只要按它选样本(限制在低出生体重)、按它分层、或在回归里放一个它的代理变量,路径就打开了。所以「我只控制了我测得到的变量」不是免罪符——测量误差只改变偏倚大小,不消除机制。
【极难发现】反直觉的底层:偏倚的方向和大小取决于碰撞点两侧的效应强度,而不取决于碰撞点本身有没有因果效应。出生体重对死亡率有强效应,但即使碰撞点对结局没有直接效应,只要它是两个原因的共同结果,条件化它就会诱导关联(Berkson 偏倚的广义版本)。这意味着「这个变量跟结局没显著关系,控制它总没坏处」是一个危险的默认。
【Table 2 谬误】Westreich & Greenland (2013) 把这套逻辑推广到多变量模型:一张「表2」里每个系数都被当作因果效应来读,但同一个调整集对不同的 estimand 是不同的问题——为了估计吸烟→死亡的总效应,你不该控制出生体重(它是中介/碰撞点);为了估计直接效应,你才控制它。调整集没有「对错」,只有「相对于哪个因果问题」。
【可辩论的问题】「把测到的都控制进去」在很多领域仍是默认操作。我的立场:默认应该反过来——先画 DAG,声明 estimand,再决定控制什么;没画 DAG 的调整集,本质是在赌。你怎么看?在观测数据里,是否存在「无脑全控制」反而更稳健的场景?(我认为只有当所有协变量都是纯混杂、无碰撞点、无中介时才成立,而这几乎从不成立。)
参考:Hernández-Díaz, Schisterman & Hernán (2006) Am J Epidemiol 163(11):1091;Cole et al. (2010) Int J Epidemiol;Westreich & Greenland (2013) Am J Epidemiol 177(4):292。







0 Comments