双重稳健估计与 AIPW

结果模型与处理模型互相兜底,只要一个对,估计就一致。手动实现 AIPW,理解三部分的协作与双重稳健性背后的乘积偏差。

本章要回答的

理解单一模型依赖的系统性风险,掌握 AIPW 估计量的三个组成部分及其数学形式,用具体数字理解双重稳健性的交叉消除机制,在 RHC 数据上手动实现 AIPW 并与 G 计算、IPW 做横向对比。

上一章用倾向得分做了匹配和加权。无论是 PSM 还是 IPW,核心逻辑都是绕开结果模型,用处理模型去平衡协变量分布,然后在平衡后的伪总体中直接比较结局。第 4 章的 G 计算走的是另一条路:依赖结果模型预测反事实,完全不碰处理模型。两种策略各自依赖一个模型正确,这个模型对则估计一致,错则偏差无法消除,样本量再大也没用。

在真实数据中,没有人能确定自己的模型是对的。结果模型可能遗漏了交互项或非线性关系,处理模型的 logistic 回归也可能没有捕捉到医生决策的全部逻辑。本章介绍的增强逆概率加权,英文称 Augmented Inverse Probability Weighting,简称 AIPW,同时建两个模型,让它们互相补位。只要其中一个对,最终估计就是一致的。这个性质叫双重稳健性,英文称 double robustness。G 计算只依赖结局模型,IPW 只依赖处理模型,AIPW 同时用上两个模型,只要有一个设定正确,估计就一致。

6.1 单一模型的系统性风险

回顾前两章的核心结论。G 计算在 RHC 数据上给出的边际风险差是 0.052,意思是如果所有 5735 名患者都接受 RHC,180 天死亡率比都不接受高 5.2 个百分点。这个数字的可靠性完全取决于结果模型 E[YA,L]E[Y \mid A, L] 的设定。如果 APACHE 评分对死亡率的影响存在阈值效应而我们只放了线性项,G 计算的预测就会系统性偏离真实值,风险差的估计也随之偏移。

IPW 走了相反的路线。它不关心结局怎么建模,只关心倾向得分模型 e(L)=P(A=1L)e(L) = P(A=1 \mid L) 是否正确。上一章的 IPW 估计给出风险差约 0.055,标准误比 G 计算大,原因是倾向得分接近 0 或 1 的个体权重很大,把方差拽高了。更严重的问题是,如果倾向得分模型遗漏了某个关键的混杂变量或者函数形式写错了,加权后的伪总体并没有真正平衡协变量,估计仍然有偏。

两种方法面临的困境相同:研究者必须依赖两个模型中的一个,却无法确认所依赖的那个是否正确。AIPW 的设计动机就是绕开这个困境。

6.2 AIPW 估计量的三个组成部分

AIPW 的估计量看起来比 G 计算和 IPW 都复杂,但拆开来看,它就是把两种方法用一个特定的公式组合在一起。在给出公式之前,先明确记号:m^1(Li)\hat{m}_1(L_i) 是结果模型预测的”如果第 ii 个人接受处理,死亡概率是多少”,m^0(Li)\hat{m}_0(L_i) 是”如果不接受处理,死亡概率是多少”,e^(Li)\hat{e}(L_i) 是倾向得分。

AIPW 的想法很简单:先用结果模型做一个粗略预测,然后用倾向得分来纠正这个预测的偏差。假设结果模型预测某位患者的死亡概率是 60%,但他实际死了,这意味着结果模型漏掉了 40% 的残差。倾向得分决定了纠正这个残差的”力度”:如果这位患者接受处理的概率是 0.5,残差就要乘以 1/0.5=21/0.5 = 2,放大两倍;如果接受处理的概率是 0.8,残差只需乘以 1/0.8=1.251/0.8 = 1.25,放大幅度更小。结果模型越准,需要纠正的残差越小;倾向得分越准,纠正的方向和力度越对。两者配合,就是 AIPW 的核心机制。

这个公式有三个部分,下面分别说明每一项为什么存在。

6.2.1 部分 A:结果模型的主估计

部分 A 即 m^1(Li)m^0(Li)\hat{m}_1(L_i) - \hat{m}_0(L_i) 就是 G 计算的点估计:用结果模型预测每个人在两种反事实状态下的结局,取差值。它存在的理由是提供一个基础答案。如果结果模型完全正确,A 本身就足以给出无偏的 ATE 估计,B 和 C 的期望值为零,不起作用。

用一个具体患者来理解:某位 APACHE 评分 60 的患者,结果模型预测他接受 RHC 后死亡概率 0.75,不接受时 0.65。A 项对这位患者的贡献就是 0.750.65=0.100.75 - 0.65 = 0.10。如果结果模型的预测是准确的,这个 0.10 就是他的个体处理效应估计,不需要任何校正。

6.2.2 部分 B:处理组的残差校正

部分 B 即 Aie^(Li)[Yim^1(Li)]\frac{A_i}{\hat{e}(L_i)}[Y_i - \hat{m}_1(L_i)] 只对处理组的个体有值,它存在的理由是修补结果模型在处理组方向上的预测偏差。Ai=1A_i = 1 时,它计算的是”这个人的实际结局 YiY_i 与结果模型预测值 m^1(Li)\hat{m}_1(L_i) 之间的残差”,再除以倾向得分 e^(Li)\hat{e}(L_i)。残差的含义是结果模型预测偏了多少。如果结果模型完美,残差期望为零,B 项不贡献任何东西。如果结果模型偏了,B 项就利用倾向得分权重来校正这个偏差。

继续上面那位患者的例子。假设他实际接受了 RHC 并且死了,Yi=1Y_i = 1,但结果模型只预测了 0.75 的死亡概率,残差为 10.75=0.251 - 0.75 = 0.25。如果他的倾向得分是 0.5,B 项就是 0.25/0.5=0.500.25 / 0.5 = 0.50,把这 0.25 的预测偏差放大后补回去。倾向得分越低,说明这位患者接受 RHC 的概率越小,他作为处理组成员的”代表性”越强,校正力度就越大。

6.2.3 部分 C:对照组的残差校正

部分 C 即 1Ai1e^(Li)[Yim^0(Li)]\frac{1-A_i}{1-\hat{e}(L_i)}[Y_i - \hat{m}_0(L_i)] 的逻辑与 B 对称,它存在的理由是修补结果模型在对照组方向上的预测偏差。Ai=0A_i = 0 时,它用对照组的实际结局与 m^0(Li)\hat{m}_0(L_i) 的残差,除以 1e^(Li)1 - \hat{e}(L_i),校正结果模型在对照组方向上的偏差。

假设另一位患者没有接受 RHC,实际存活了,Yi=0Y_i = 0,结果模型预测不接受时死亡概率 0.65,残差为 00.65=0.650 - 0.65 = -0.65。如果倾向得分是 0.5,C 项就是 0.65/0.5=1.30-0.65 / 0.5 = -1.30。负号表示结果模型高估了对照组的死亡概率,校正方向是往下拉。

6.2.4 三部分的协作

把三部分合在一起看:A 是结果模型的主估计,B 和 C 是 IPW 风格的残差校正项。如果结果模型对,B 和 C 的期望为零,不干扰 A;如果结果模型错但倾向得分对,B 和 C 恰好能把 A 的偏差抵消掉。这就是双重稳健性的直觉来源。

6.3 双重稳健性:交叉消除的数学机制

双重稳健性背后有清晰的数学逻辑。先用一个数字例子来看。假设结果模型偏了 2%,处理模型偏了 3%。如果偏差是加法叠加的,总偏差就是 2%+3%=5%2\% + 3\% = 5\%。但 AIPW 的偏差大约是 2%×3%=0.06%2\% \times 3\% = 0.06\%,远小于单独用任何一个模型。乘积结构带来的效果是:只要其中一个模型的偏差接近零,乘积就接近零。

核心在于 AIPW 估计量的偏差项正是两个模型误差的乘积。用符号写出来:AIPW 的偏差正比于

E[(e^(L)e(L))(m^(L)m(L))],E\bigl[\bigl(\hat{e}(L) - e(L)\bigr) \cdot \bigl(\hat{m}(L) - m(L)\bigr)\bigr],

其中 e(L)e(L)m(L)m(L) 分别是真实的倾向得分和真实的结果条件期望。如果倾向得分模型正确,e^(L)e(L)=0\hat{e}(L) - e(L) = 0,乘积为零,偏差消失,无论结果模型偏了多少。反过来,如果结果模型正确,m^(L)m(L)=0\hat{m}(L) - m(L) = 0,乘积同样为零。只有两个模型同时错误,偏差才会存活。

用一个具体的数字例子来看。假设有一个 APACHE 评分为 60 的患者,真实的条件死亡概率是 0.80,而我们的结果模型预测为 0.70,偏了 0.10。如果这个患者的真实倾向得分是 0.50 而我们的处理模型也估成了 0.50,那么 B 项中的 IPW 权重 1/e^=21/\hat{e} = 2 恰好把残差 (Yi0.70)(Y_i - 0.70) 按正确的比例放大,校正了结果模型 0.10 的偏差。

倾向得分对了,权重分配就对了,即使结果模型的预测有系统性偏差,加权校正后的估计仍然是无偏的。

反过来,假设倾向得分模型估偏了,把 0.50 估成了 0.30,但结果模型完美预测了 0.80。此时 B 项中的残差 Yim^1=Yi0.80Y_i - \hat{m}_1 = Y_i - 0.80 的条件期望为零,无论 IPW 权重是 1/0.301/0.30 还是 1/0.501/0.50,乘上一个期望为零的残差,结果还是零。A 项本身就给出正确答案,B 和 C 只是在加减零。

渐近无偏用通俗的话说就是:当样本量足够大时,AIPW 的估计会越来越接近真实的 ATE,不会系统性地偏高或偏低。这个保证只需要两个模型中有一个是对的。在 RHC 数据中,即使我们的 logistic 回归结果模型遗漏了某些交互项,只要倾向得分模型对医生决策逻辑的近似是合理的,AIPW 的估计仍然会随着样本量增大而逼近真值。

当两个模型同时正确时,AIPW 还有一个额外的好处:它达到半参数效率界,即在所有正则的渐近线性估计量中方差最小。在只有一个模型正确的情况下,AIPW 的方差不一定是最小的,但它至少保证了一致性。当两个模型都对时,AIPW 不仅无偏,而且方差达到了理论下界,比单独的 G 计算或 IPW 更精确。AIPW 在两个模型都对时不牺牲效率,在只有一个对时仍保证一致性。

6.4 手动实现:在 RHC 数据上构造 AIPW

本章继续使用第 1 章介绍的 RHC 数据集 n=5735n = 5735。下面的代码从头开始,分四步完成 AIPW 的手动实现:拟合结果模型、拟合倾向得分模型、预测反事实、组装 AIPW 估计量。手动实现的目的是让读者看清 AIPW 公式里每一项对应的代码操作,后续章节会用 R 包简化这个过程。

R
set.seed(2026)
library(tidyverse)

d <- read_csv(here::here("data", "rhc.csv"), show_col_types = FALSE) |>
  mutate(death180_bin = if_else(death180 == "Yes", 1L, 0L),
         sex_bin      = if_else(sex == "Male", 1L, 0L),
         cancer_bin   = if_else(cancer == "No", 0L, 1L))

covs <- c("age", "sex_bin", "cancer_bin", "cardiovascular",
          "congestive_hf", "dementia", "psychiatric", "pulmonary",
          "renal", "hepatic", "gi_bleed", "tumor",
          "immunosupperssion", "transfer_hx", "mi",
          "apache_score", "glasgow_coma_score", "blood_pressure",
          "heart_rate", "respiratory_rate", "temperature",
          "albumin", "creatinine", "bilirubin", "wbc",
          "hematocrit", "das_index", "weight")

# 第一根绳:结果模型——预测 Y 在 A 和 L 条件下的期望
out_mod <- glm(death180_bin ~ rhc + .,
               data = d |> select(death180_bin, rhc, all_of(covs)),
               family = binomial)

# 第二根绳:处理模型——预测谁更可能接受 RHC
ps_mod <- glm(rhc ~ .,
              data = d |> select(rhc, all_of(covs)),
              family = binomial)
d$ps <- predict(ps_mod, type = "response")

# 反事实预测:让每个人分别"接受"和"不接受" RHC
d1 <- d0 <- d
d1$rhc <- 1; d0$rhc <- 0
d$m1 <- predict(out_mod, newdata = d1, type = "response")
d$m0 <- predict(out_mod, newdata = d0, type = "response")

# 组装 AIPW:三个部分逐项计算
d$aipw_score <- with(d, {
  (m1 - m0) +                                  # A: G 计算部分
    rhc / ps * (death180_bin - m1) -            # B: 处理组校正
    (1 - rhc) / (1 - ps) * (death180_bin - m0)  # C: 对照组校正
})

ate_aipw <- mean(d$aipw_score)
se_aipw  <- sd(d$aipw_score) / sqrt(nrow(d))
cat("ATE:", round(ate_aipw, 4),
    " SE:", round(se_aipw, 4),
    " 95% CI: [", round(ate_aipw - 1.96*se_aipw, 4),
    ",", round(ate_aipw + 1.96*se_aipw, 4), "]\n")

完整代码见 code/chap06.R 。AIPW 估计的边际风险差为 0.044,标准误 0.014,95% CI 为 [0.017,0.072][0.017, 0.072]。置信区间不包含零,p<0.05p < 0.05,表明在控制了 28 个协变量之后,接受 RHC 的患者 180 天死亡率仍然比不接受者高约 4.4 个百分点。

把 AIPW 的三个组成部分拆开来看:A 项,即 G 计算部分,贡献了 0.052 的风险差,这和第 4 章单独用 G 计算得到的结果一致。B 项,处理组的 IPW 校正,贡献了 0.008-0.008,方向为负,意味着结果模型对处理组的死亡概率略有高估,IPW 校正把估计往下拉了一点。C 项,对照组的 IPW 校正,几乎为零。三项加起来 0.052+(0.008)0.000=0.0440.052 + (-0.008) - 0.000 = 0.044

AIPW 的标准误 0.014 比 IPW 略小,比 G 计算的 bootstrap 标准误也更窄。这正是双重稳健估计量在两个模型都大致正确时的效率优势。

下图展示了 5735 名患者各自的 AIPW 得分分布。每个人的 AIPW 得分就是公式中求和号内的那个值,它可以看作”这个人对整体 ATE 估计的贡献”。ATE 就是所有人得分的均值。

5735 名患者的 AIPW 个体得分分布。红色实线为 ATE = 0.044,灰色虚线为零。分布以零附近为中心,但整体略偏右,对应正的处理效应。左尾的少数极端值来自倾向得分接近边界的个体。

6.5 三种方法的横向对比

现在我们有了三种方法在同一份数据上的估计,可以放在一起比较了。

方法RD95% CI核心依赖
G 计算0.052[0.027, 0.082]结果模型设定正确
IPW0.032[0.005, 0.064]倾向得分模型设定正确
AIPW0.044[0.017, 0.072]两个模型至少一个正确

三个估计的方向一致:RHC 增加了 180 天死亡率,风险差在 3—5 个百分点之间。但它们之间的差异包含有用的诊断信息。G 计算给出的 0.052 最高,IPW 的 0.032 最低,AIPW 的 0.044 落在两者之间。这个模式是有道理的:AIPW 本质上是用 IPW 校正项去修正 G 计算的初始估计,B 项为负说明 G 计算略有高估,AIPW 把它往下拉了约 0.008 个百分点。

IPW 的置信区间最宽,下界几乎触及零,这是因为倾向得分接近 0 或 1 的个体放大了方差。AIPW 的置信区间比 IPW 窄了三分之一,同时也比 G 计算的 bootstrap 区间更精确。下图直观展示了这个比较。

三种方法的 ATE 估计及 95% CI 对比。AIPW 的点估计位于 G 计算和 IPW 之间,置信区间宽度介于两者之间。虚线为零参考线。

AIPW 的理论基础可以追溯到 Robins、Rotnitzky 和 Zhao 1994 年关于半参数效率理论的开创性工作。他们系统研究了”如果一个估计量依赖辅助模型,当辅助模型错误时会发生什么”的问题,并发现了一类具有双重稳健性的估计量。但 AIPW 的理论优势在当时很难体现,因为 1990 年代的因果分析几乎全部使用参数模型。如果结果模型用逻辑回归、处理模型也用逻辑回归,两个模型同时设错的概率和只设错一个差不多,双重稳健的”保险”价值有限。

AIPW 真正获得广泛关注要等到两个转折点。Bang 和 Robins 在 2005 年用 Monte Carlo 模拟清楚地展示了双重稳健性在有限样本中的表现,让实务工作者看到了它的实际收益。而 2010 年代机器学习进入因果推断之后,结果模型和处理模型可以分别用随机森林、Lasso、神经网络等灵活方法来拟合,“至少一个对”的概率比两个 logistic 回归的组合大幅提高。AIPW 在 Funk 等人 2011 年的流行病学实操指南中被推荐为标准方法之后,逐渐成为临床和公共卫生领域观察性研究的默认选择。

6.6 AIPW 何时失灵

双重稳健性给了 AIPW 额外的保护层,但它有自己的失效边界。

最明显的失效场景是两个模型同时错误。如果结果模型遗漏了关键的交互项,同时倾向得分模型也遗漏了相同方向的混杂变量,AIPW 的偏差项 E[(e^e)(m^m)]E[(\hat{e} - e)(\hat{m} - m)] 不再为零。更严重的是,两个模型的误差如果在同一方向上相关,偏差可能比单独使用任一方法更大。双重稳健保证的是”只要一个对就一致”,它不保证两个都错时估计仍然无偏。

极端倾向得分是 AIPW 的另一个薄弱环节。虽然 AIPW 对极端权重的敏感性低于纯 IPW,因为 B 和 C 项乘的是残差而非原始结局,但当 e^(L)\hat{e}(L) 非常接近 0 或 1 时,权重 1/e^1/\hat{e}1/(1e^)1/(1-\hat{e}) 仍然会放大个别观测的残差,让方差膨胀。在 RHC 数据中,最小的倾向得分为 0.024,对应的权重约为 42,这意味着一个对照组个体的残差被放大了 42 倍。虽然只有 29 个样本的倾向得分低于 0.05,但它们对整体标准误的贡献不可忽略。常见的处理方式是对倾向得分做截断,把低于 0.025 或高于 0.975 的值拉回边界,代价是引入少量偏差但换来方差的显著下降。

AIPW 在有限样本中的另一个问题是它可能给出超出参数空间的估计。比如二分类结局的风险差理论上应该在 [1,1][-1, 1] 之间,但 AIPW 的线性组合没有内置这个约束。在样本量小或倾向得分极端的数据中,AIPW 可能估出 1.2-1.21.31.3 这样不合理的值。第 7 章介绍的 TMLE 通过目标化的最大似然更新步骤解决了这个问题,把估计拉回到合规空间内。


6.7 方法卡与累积对比表

方法ATE 估计95% CI核心假设
回归调整OR = 1.34[1.18, 1.52]模型设定正确 + 可交换性 + 正值性
G 计算RD = 0.052[0.027, 0.082]结果模型设定正确 + 可交换性 + 正值性
IPWRD = 0.032[0.005, 0.064]倾向得分模型正确 + 可交换性 + 正值性
AIPWRD = 0.044[0.017, 0.072]两个模型至少一个正确 + 可交换性 + 正值性

四种方法在方向上完全一致:RHC 增加了 ICU 患者的 180 天死亡率。回归调整报告的是 OR 尺度,与后续方法的风险差尺度不直接可比,但 OR > 1 和 RD > 0 传递的结论相同。G 计算、IPW 和 AIPW 三个风险差估计都落在 3—5 个百分点之间。AIPW 的估计位于 G 计算和 IPW 之间,置信区间最为紧凑。这种跨方法的一致性增强了我们对因果结论的信心:RHC 的不利效应不太可能是某种特定方法的假象。

下一章将引入机器学习来增强 AIPW 的两个子模型。用 Super Learner 集成多种算法拟合结果模型和倾向得分模型,可以降低函数形式错误的风险,让双重稳健性的”保险”更加可靠。同时还会介绍 TMLE 和 DML,它们是 AIPW 在不同学术传统下的延伸和改进。


6.8 本章知识地图

核心概念核心内容常见误解为什么错
AIPW 估计量结果模型主估计 + IPW 残差校正项,三部分组合AIPW 就是 G 计算和 IPW 的简单平均AIPW 通过特定数学形式让偏差项变成两个模型误差的乘积,简单平均做不到
双重稳健性两个模型至少一个正确时估计一致双重稳健意味着随便怎么建模都行两个模型同时错误时 AIPW 也会有偏,“至少一个对”仍需研究者努力保证
半参数效率界两个模型都对时 AIPW 达到最小方差AIPW 的方差总是最小的只有一个模型对时 AIPW 保证一致性但方差未必最小
IPW 校正项B 和 C 用倾向得分加权的残差修正结果模型的偏差校正项只影响方差不影响偏差结果模型有偏时校正项的期望值非零,正是它在消除偏差
极端倾向得分AIPW 对极端权重的敏感性低于纯 IPW 但仍然存在AIPW 完全不受极端倾向得分影响极端权重放大残差,方差仍会膨胀,需要截断或重叠权重
AIPW 的失效两个模型同时错误或严重的正值性违反双重稳健 = 万无一失双重稳健的前提是至少一个模型设定正确,两个都错就没有保护

参考文献