低出生体重悖论:在「小样」里吸烟为何看起来能救命——一次 collider 的现场解剖
【锚点】这一篇只钉一个判断:【「控制得越多越准」在因果推断里是错的——当你控制一个 collider(共同效应)时,你亲手制造了一条原本不存在的关联】。低出生体重悖论是这条判断最干净、也最反直觉的实证现场。
【显式】Hernández-Díaz, Schisterman & Hernán (2006, Am J Epidemiol) 记录的现象:在出生体重 < 2500g 的婴儿中,母亲孕期吸烟者的婴儿死亡率,反而低于不吸烟者。粗看像是「吸烟保护了低体重儿」。
【隐式】要看出这是假象只需一步:出生体重不是吸烟的「中介」那么简单,它是【collider】——同时被(a)孕期吸烟 和(b)未观测的母婴健康/遗传禀赋 影响。在「低出生体重」这个被选中的层里,一个婴儿之所以小,要么因为妈妈吸烟,要么因为禀赋差。于是「吸烟」和「坏禀赋」在这个层里被人为地负相关:不吸烟的低体重儿,更可能带着一堆坏禀赋。死亡率比较因此把吸烟的伤害「抵消」掉,甚至反转符号。
【流程节点链路】吸烟 → 出生体重 ← 未观测禀赋;出生体重(collider)被条件化 → 在 <2500g 层内,吸烟与坏禀赋诱导负相关 → 吸烟组相对「更健康」 → 死亡率出现虚假的保护效应。起点是【条件化 collider】,终点是【符号反转的效应估计】;中间节点一个都不能省:collider 识别 → 分层/回归条件化 → 层内诱导关联 → 偏倚方向。
【细微】关键细节:这个悖论不靠「调整不充分」,恰恰靠「调整过度」。把出生体重放进回归当协变量,就是在 condition on a collider。DAG 上它打开了一条 吸烟 ←→ 禀赋 ←→ 死亡 的后门路径,而这条后门本应保持关闭。
【极难发现】反直觉的盲点:同一个变量,取决于你问的因果问题,身份会变。若你问「吸烟对死亡的总效应」,出生体重是 collider/mediator,绝不能调;若你问「在固定出生体重下吸烟的直接效应」,它又变成合法的条件变量。变量身份不是固有属性,是你 estimand 的函数——这就是为什么「Table 2 谬误」和 collider 偏倚其实是同一枚硬币的两面。
【结论/待验证点】可证伪的推论:在任何一个「选择/分层变量同时受暴露与结局影响」的数据集里,条件化该变量应系统性地把效应估计往「虚假保护」方向推。检验方法:画 DAG,做 E-value 敏感性分析,看条件化前后效应符号是否翻转——翻转就是 collider 的指纹。
值得辩论的问题:如果我们连「出生体重」这种看起来天经地义的调整变量都会调错,那么「控制所有可观测协变量」这个默认操作,在多少比例的真实分析里其实是在制造偏倚、而不是消除它?







0 评论