「低出生体重儿里,吸烟母亲的孩子反而更少死亡」——分层不是控制,是把对撞因子变成了混杂因子
先给一条会让人不舒服的事实:在 1970–2000 年代的多个围产期队列里,限制在出生体重 < 2500g 的婴儿中,吸烟母亲的新生儿死亡率低于非吸烟母亲。这个「保护效应」在数据集之间稳健复现,不是某一次抽样事故。Wilcox 1971 记录过它,Hernández-Díaz、Schisterman、Hernán 2006 在 Am J Epidemiol 上把它彻底拆开。它是【对撞分层偏倚】(collider stratification bias)最干净的标本。
【机制,四行 DAG】 S = 母亲吸烟,B = 出生体重,U = 未测量的母体/胎盘/遗传因素,Y = 新生儿死亡。 S → B(负),U → B(正),U → Y(正),S → Y(正,直接危害)。 B 是 S 与 U 的【对撞因子】:S → B ← U。 在整个人群里 S ⊥ U。但一旦条件于 B = 低出生体重,S 与 U 之间被诱导出负相关:一个吸烟的母亲还能生出 LBW 儿,说明她在 U 上大概率「更好」——因为吸烟已经把体重往下拉了,要落到 2500g 以下,需要 U 足够好来补偿。于是 LBW 层内,吸烟组在 U 上系统性优于非吸烟组,U 带来的生存优势压过了吸烟的直接危害。
【这不是数据打架,是两个估计目标】 总人群里 RR ≈ 1.5–2(有害);LBW 层内 RR < 1(表观保护)。两个数字都「对」,但它们回答的是两个不同的问题:一个是 ATE,一个是「条件于 B 的关联」。把后者当成前者,是偏倚;把两者并列在同一张表里,是范畴错误。
【图钉分级:从显式爬到极难发现】 【显式】「调整更多协变量更安全」是错的。这句话一眼可见,但几乎每篇观察性论文的 Methods 都在犯。 【隐式】调整集由【估计目标】+【DAG】决定,不由「变量可得性」决定。 【细微】同一个多变量模型里,不同系数对应不同的调整集——Westreich & Greenland 2013 的【Table 2 fallacy】:一张表并排放年龄、吸烟、BMI 的 OR,读者默认它们都是「总效应」,其实每一个都需要自己的 DAG、自己的条件集、自己的识别假设。 【极难发现】「控制出生体重看吸烟的直接效应」这句话,在干预主义框架下不是「更精确」,而是换了一个需要额外强假设的估计目标:把直接效应写成反事实,需要 cross-world 假设(nested counterfactual),这些假设不可检验、也不对应任何可实现干预。你以为你在「去掉混杂」,其实你在「引入一个不可识别的量」。
【流程节点链路】(完整写出) 【写下估计目标:总效应 ATE】→【画 DAG,把 U 显式画出,不许留白】→【识别对撞因子 B(S→B←U)】→【总效应:不调整 B】→【若改问直接效应:调整 B,但需 cross-world 假设 + 无 S–B 交互的强约束】→【结论:两个数字都对,但回答的是两个不同问题】
【元分析里的放大器】 这是我真正想钉的点:如果一批原始研究报告「条件于 B」的估计,另一批报告边际估计,把它们汇进同一张森林图,异质性 I² 会很高;meta 回归会去找「人群、剂量、随访时长」来解释它,通常找不到——因为真正的调节变量是【估计目标】,不是研究特征。而元分析的数据提取表几乎从不编码「调整集 / 估计目标」。这是【极难发现】的盲点:你以为你在合并效应量,其实你在合并不同的问题。
结尾问题:一篇观察性论文报告了「调整了 17 个协变量」的估计。你在三分钟内怎么判断它调整的是对撞因子还是混杂因子?我的答案是:看它有没有画 DAG、有没有明说估计目标;两者都没有,就默认它不知道自己在估什么——而「调整了 17 个」这个数字,恰好是最不该让你放心的那种证据。







0 評論