「调整了一个与治疗无关的变量,优势比为什么会变?」——非可折叠性:OR 最反直觉的性质
【锚点】只钉一个判断:在没有任何混杂、没有任何选择偏差的情况下,把优势比(OR)调整一个与治疗独立、但能强烈预测结局的变量 Z,OR 的数值会变——这不是 bug,是 OR 的【非可折叠性】。它意味着「边际 OR」和「条件 OR」是两个不同的因果量,不能互相替代。
一、一个干净的反例(没有混杂!)
设想一个随机试验,治疗 A 随机分配,所以 A 与任何基线变量都独立。设 Z 是强预后因素(如年龄),A 与 Z 完全独立——Z 不是混杂、不是媒介、不是对撞。人群中 Z=1 与 Z=0 各占一半。
在每个 Z 层内,A 对 Y 的条件优势比都恰好 = 4:
Z=1 层(每组 100 人): - A=1:80 结局 / 20 无 → 风险 0.80 - A=0:50 结局 / 50 无 → 风险 0.50 - 层内 OR = (80×50)/(20×50) = 4.0
Z=0 层(每组 100 人): - A=1:50 结局 / 50 无 → 风险 0.50 - A=0:20 结局 / 80 无 → 风险 0.20 - 层内 OR = (50×80)/(50×20) = 4.0
合并(边际): - A=1:130 结局 / 70 无 - A=0:70 结局 / 130 无 - 边际 OR = (130×130)/(70×70) = 3.45
层内 OR 是 4.0,边际 OR 是 3.45。Z 与 A 独立,没有混杂,没有偏差——但两个数不一样。
二、机制:为什么
OR 不是风险差,它【不可折叠】。风险差(RD)和风险比(RR)在无混杂时是可折叠的:层内 RD 相同,合并后的边际 RD 就等于它。但 OR 的分母里有「非事件」的比值,合并不同基线风险的人群时,加权发生在【logit 尺度】而非【风险尺度】,于是边际 OR 被系统性地拉向 1。
【流程节点链路】:每个 Z 层的条件 OR=4 → 合并人群时 logit 按基线风险加权 → 边际 logit 差 < 层内 logit 差 → 边际 OR=3.45(更靠近 1)。终点:非可折叠性,不是偏差。
三、三个后果
-
【隐式】「粗 OR 有偏、调整后才对」是错的。无混杂时,粗 OR 无偏地估计【边际因果 OR】,调整 OR 无偏地估计【条件因果 OR】。它们是两个不同目标量,都「对」,只是回答不同问题。混为一谈,会把非可折叠性误诊成残余混杂。
-
【细微】标准化(g-computation / 直接标准化)给边际效应;条件模型(logistic 回归系数)给条件效应。对 OR 而言两者天然不同。这正是流行病学里「adjusted OR」与「marginal OR」永远对不上的根源——不是谁算错。
-
【极难发现】只有 OR 有这麻烦;RD 和 RR 在无混杂时可折叠。所以看到论文写「调整后 OR 变小」,你不能直接推断「混杂被去掉了」——也可能是非可折叠性在起作用。诊断混杂要靠 DAG 与设计,不能靠「OR 变没变」。
四、一个值得辩论的问题
如果边际 OR(3.45)和条件 OR(4.0)都无偏、都「对」,但数值不同——一个临床试验、一个公共卫生决策,到底该报哪个?边际效应对「给整个人群用药」的政策问题更相关;条件效应对「给某个具体风险层的人用药」更相关。但期刊默认只报一个 adjusted OR,从不说明它是条件还是边际。
你会要求作者报哪一个?还是两个都报?(参考:Hernán & Robins, Causal Inference: What If, 非可折叠性章节)







0 Comments