「控制变量」不是美德:同一张回归表里,每个系数回答的是不同的问题
【锚点】这一篇只钉一个判断:在多元回归里,「控制了更多变量」不是更严谨,而是回答了另一个问题。同一张表里的每个系数各自对应一个不同的 estimand;把它们都当成「效应」来读,就是 Table 2 Fallacy。
【显式】Westreich & Greenland(2013, Am J Epidemiol 177:292–298)给这个错误起了名字:Table 2 Fallacy——论文的「表2」通常是暴露 + 一堆协变量的多变量模型,作者和读者把每个系数都读成「该变量对结局的效应」。这错了,因为:(1) 暴露系数 = 暴露的效应(在调整了那些协变量的前提下);(2) 某个协变量的系数 = 该协变量在「同时调整了暴露和其他协变量」后的效应——这通常不是它的总效应。
【隐式】为什么不是总效应?如果这个协变量通过暴露影响结局(暴露是它的下游),调整暴露就切断了那条通路,剩下的只是直接效应。如果这个协变量是暴露与结局之间的中介(mediator),把它放进模型,暴露系数就从「总效应」变成「直接效应」——数字变了,问题也变了。
【细微】更隐蔽的一层:调整一个 collider 会凭空制造关联(Berkson / collider bias)。经典案例是「出生体重悖论」(Wilcox 2001;Hernán, Schisterman & Hernández-Díaz 2004):在低出生体重儿中,吸烟母亲的孩子死亡率反而更低——因为出生体重是吸烟与死亡之间的 collider(吸烟→低体重←其他因素→死亡),条件化在低体重上就诱导出虚假的「保护效应」。所以「控制变量」有时是在制造偏倚,而不是消除偏倚。
【极难发现】真正的盲点是:estimand 在建模之前就已经被 DAG 决定了,而不是被软件决定。你跑 Y ~ X + C1 + C2 + M 之前,必须已经决定「我要估的是总效应还是直接效应」——这两个问题需要不同的调整集。很多人先跑模型、再看系数、最后才想「这系数是啥意思」,顺序反了。
【流程节点链路】起点:写下因果问题(X 对 Y 的总效应?直接效应?)→ 中间节点①:画 DAG,给每个变量贴角色标签(confounder / mediator / collider / instrument / neutral)→ 中间节点②:按后门准则选调整集(估总效应:调整 confounder,不调整 mediator;估直接效应:额外调整 mediator,但要警惕 collider)→ 中间节点③:跑模型,并明确每个系数各自的 estimand → 终点:在表里逐系数标注「这是哪个问题的答案」,而不是笼统写「effect」。
一个可操作的检验:拿到任何一张「表2」,问三个问题——(a) 这个模型的暴露是谁?(b) 每个协变量在 DAG 里是什么角色?(c) 作者有没有为每个系数单独声明 estimand?三个里有一个答不上来,这张表的因果解读就不可信。
文献综述里的用法:当你在综述里比较 N 篇「控制变量」不同的研究时,不要把它们当成「对同一问题的不同估计」——它们很可能在估不同的 estimand。把它们按「调整集 → estimand」分组,比按「样本量/年份」分组更有解释力。这正好接上那条「文献综述是考古现场」的判断:引用层不是主题层,estimand 层也不是「控制变量个数」层。
值得辩论的问题:如果一张表里的系数本来就不该被当成效应,期刊为什么还要求「表2」必须放全模型?我们是不是在用「看起来控制了更多」来替代「想清楚了要估什么」?







0 評論