随机化之后,调整一个『非混杂』变量,OR 为什么还是会变?——非可折叠性这头房间里的大象
【锚点】:【OR 和 HR 是非可折叠(non-collapsible)的;RR 是可折叠的】。推论很刺人:即便你完美随机化、被调整的变量 Z 与处理完全独立(根本不是混杂),把 Z 放进模型也会改变你的 OR。很多人把「调整后 OR 变了」当成「存在混杂」的证据——这在数学上就是错的。
【显式】先看一组干净的数字。完全随机化,处理 A 与预后因子 Z 独立,Z 在两组都 50/50,且 Z 是强预后因子。我让两个层内 OR 都恰好 = 2: Z=1(高危):对照 60% 事件、处理 75% 事件 → OR=(0.75/0.25)/(0.60/0.40)=3/1.5=2 Z=0(低危):对照 20% 事件、处理 33.3% 事件 → OR=(0.333/0.667)/(0.20/0.80)=0.5/0.25=2 合并(每层处理/对照各 50 人,共 200 人): 对照:30+10=40 事件/100 → odds=0.667 处理:37.5+16.67=54.17 事件/100 → odds=1.183 【边际 OR】=1.183/0.667≈1.78。 层内 OR=2,边际 OR=1.78。Z 不是混杂(随机化保证),可 OR 还是被拉向 1 了。这就是【非可折叠性】。
【隐式】机制在哪?OR 是「比值之比」,合并时对照 odds 被 Z 的分布重新加权。当 Z 同时影响基线风险,合并就「混合」了不同基线风险的人群,而 OR 对基线风险的水平敏感——这是 OR 的数学性质,不是偏倚。对照:RR 是可折叠的。本例边际 RR=1.354,正好等于按对照事件数加权的层内 RR 加权平均(0.75×1.25+0.25×1.667=1.354)。所以「可折叠性」是【效应度量】的属性,不是数据的属性。
【流程节点链路】:【处理 A 随机化】→【Z 与 A 独立,无混杂】→【但 Z 是强预后因子,改变基线风险】→【OR 合并时按 Z 重新加权基线 odds】→【边际 OR ≠ 层内 OR,向 1 收缩】→【结论:调整前后 OR 不同 ≠ 有混杂】。
【细微】这直接击穿流行病学里被滥用的「change-in-estimate」启发式:调整某变量后估计漂移 >10% 就把它当混杂留下。对 OR/HR 而言,这个标准会把纯预后因子(甚至对撞子下游变量)误判成混杂,因为非可折叠性保证了估计一定会变。选混杂应基于 DAG 和因果假设,而不是系数是否漂移。
【极难发现】更反直觉的一层:即便在完美 RCT 里,crude OR 和 adjusted OR 也必然不同,而且 adjusted OR 才是「条件于 Z」的因果效应;crude OR 不是任何单一因果效应的一致估计(它是人群上个体效应 OR 的某种加权,权重依赖基线风险分布)。所以「报告 crude 还是 adjusted」不是风格问题,是「你在估计哪个 target」的问题。HR 同理——Cox 的 HR 非可折叠,这也是为什么不同研究即便同质,合并 HR 也要格外小心。
留一个值得辩论的问题:既然 OR/HR 非可折叠、而 RR/RD 可折叠,那么在跨研究合并或向新人群外推时,我们该不该把「可折叠」当成效应度量选择的一条硬标准?还是说,条件效应(conditional effect)在个体化决策里反而更该被保留,哪怕它不可折叠?







0 Comments