一张回归表里没有两个因果效应:Table 2 fallacy 与「调整了一切」的幻觉
【锚点】只钉一个判断:一张多变量回归表里的每一个系数,回答的是不同的问题——有的系数是总效应,有的是直接效应,有的被对撞因子(collider)污染。把它们都读成「调整后的效应」,是因果推断里最常见的一次范畴错误。这个错误有个名字:【Table 2 fallacy】(Westreich & Greenland, 2013, Am J Epidemiol)。
【显式】先给一个能亲手算出来的例子。真实数据生成过程(DAG):Z → X → Y,且 Z 对 Y 没有直接作用。数值:Z ~ N(0,1);X = 1.0·Z + εx;Y = 1.0·X + εy。于是 Z 对 Y 的【总效应】= 1.0×1.0 = 1.0。现在跑一个为估计 X 效应而建的模型 Y ~ X + Z,把系数表贴出来(Table 2 风格):X 的系数 ≈ 1.0;Z 的系数 ≈ 0.0(不显著)。如果你把这张表读成「Z 对 Y 没有影响」,你就错了——Z 的总因果效应是 1.0,只是它全部通过 X 传递。表里那个 0.0 是【直接效应】(net of X),不是总效应。这就是 Table 2 fallacy:模型是为 X 建的,顺手报出的 Z 系数在因果上回答的是另一个问题。
【隐式】机制一句话:回归系数是「在其他变量固定时」的条件关联。同一个「+ Z」在不同 DAG 下含义完全相反——若 Z 是 X 的【原因】(confounder),调整是对的;若 Z 是 X 的【结果】(mediator),调整 Z 就把 X 的总效应切成直接效应;若 Z 是 X 与 Y 共同的【结果】(collider),调整 Z 会打开一条本来关闭的后门路径(Berkson 悖论 / collider bias)。而三种情况的系数表长得一模一样。
【细微】真正要命的是:这三件事在数值上无法从一张表里区分。你看到「Z 的系数 = 0.0」,但 0.0 可能是(a)Z 确实无总效应;(b)Z 有总效应但全被中介吸收;(c)Z 有总效应但被 collider 偏倚抵消。要区分,必须为每个暴露单独画 DAG,而不是只画一张「所有变量都指向 Y」的图。
【极难发现】反直觉的推论:一张「调整了一切」的回归表,恰恰是因果信息最少的地方。因为「调整一切」意味着你同时调整了 confounder、mediator、collider——前两个需要调整,第三个绝不能调整,而模型不知道区别。Westreich & Greenland 的处方是:为每一个你声称有因果解释的系数,单独画一张 DAG、单独决定调整集。一张表,N 个系数,就需要 N 个因果问题。
【流程节点链路】(一个真实总效应是怎么从数据里被抹掉的):原始 DAG(Z→X→Y)→ 研究者建一个 Y~X+Z 模型 → 软件输出系数表(X≈1.0, Z≈0.0)→ 论文 Table 2 把 Z 的 0.0 写成「Z 与 Y 无关」→ 后续研究引用这句「无关」作为背景 → 新研究不再检验 Z→Y 的总效应 → 一个真实的总效应 1.0 在文献里被系统性抹掉。起点是 DAG,终点是文献里的「共识」——中间每一步单看都合法,合起来是一次集体误读。
【我的观点】这不是统计软件的错,也不是研究者的疏忽,而是「一张模型回答所有问题」这个默认工作流的结构性缺陷。因果推断的核心从来不是「调整更多变量」,而是「先声明你问的是哪个因果问题」。
【值得辩论】如果期刊要求:Table 2 里每一个带因果解释的系数都必须附一张该系数自己的 DAG——这会净化文献,还是会让绝大多数观察性研究无法发表?换句话说:我们该要求「每个系数一张 DAG」,还是干脆禁止从多变量模型里读出任何非主暴露的「效应」?







0 評論