本章目录
本章目录
理解单一模型依赖的系统性风险,掌握 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 个百分点。这个数字的可靠性完全取决于结果模型 的设定。如果 APACHE 评分对死亡率的影响存在阈值效应而我们只放了线性项,G 计算的预测就会系统性偏离真实值,风险差的估计也随之偏移。
IPW 走了相反的路线。它不关心结局怎么建模,只关心倾向得分模型 是否正确。上一章的 IPW 估计给出风险差约 0.055,标准误比 G 计算大,原因是倾向得分接近 0 或 1 的个体权重很大,把方差拽高了。更严重的问题是,如果倾向得分模型遗漏了某个关键的混杂变量或者函数形式写错了,加权后的伪总体并没有真正平衡协变量,估计仍然有偏。
两种方法面临的困境相同:研究者必须依赖两个模型中的一个,却无法确认所依赖的那个是否正确。AIPW 的设计动机就是绕开这个困境。
6.2 AIPW 估计量的三个组成部分
AIPW 的估计量看起来比 G 计算和 IPW 都复杂,但拆开来看,它就是把两种方法用一个特定的公式组合在一起。在给出公式之前,先明确记号: 是结果模型预测的”如果第 个人接受处理,死亡概率是多少”, 是”如果不接受处理,死亡概率是多少”, 是倾向得分。
AIPW 的想法很简单:先用结果模型做一个粗略预测,然后用倾向得分来纠正这个预测的偏差。假设结果模型预测某位患者的死亡概率是 60%,但他实际死了,这意味着结果模型漏掉了 40% 的残差。倾向得分决定了纠正这个残差的”力度”:如果这位患者接受处理的概率是 0.5,残差就要乘以 ,放大两倍;如果接受处理的概率是 0.8,残差只需乘以 ,放大幅度更小。结果模型越准,需要纠正的残差越小;倾向得分越准,纠正的方向和力度越对。两者配合,就是 AIPW 的核心机制。
这个公式有三个部分,下面分别说明每一项为什么存在。
6.2.1 部分 A:结果模型的主估计
部分 A 即 就是 G 计算的点估计:用结果模型预测每个人在两种反事实状态下的结局,取差值。它存在的理由是提供一个基础答案。如果结果模型完全正确,A 本身就足以给出无偏的 ATE 估计,B 和 C 的期望值为零,不起作用。
用一个具体患者来理解:某位 APACHE 评分 60 的患者,结果模型预测他接受 RHC 后死亡概率 0.75,不接受时 0.65。A 项对这位患者的贡献就是 。如果结果模型的预测是准确的,这个 0.10 就是他的个体处理效应估计,不需要任何校正。
6.2.2 部分 B:处理组的残差校正
部分 B 即 只对处理组的个体有值,它存在的理由是修补结果模型在处理组方向上的预测偏差。 时,它计算的是”这个人的实际结局 与结果模型预测值 之间的残差”,再除以倾向得分 。残差的含义是结果模型预测偏了多少。如果结果模型完美,残差期望为零,B 项不贡献任何东西。如果结果模型偏了,B 项就利用倾向得分权重来校正这个偏差。
继续上面那位患者的例子。假设他实际接受了 RHC 并且死了,,但结果模型只预测了 0.75 的死亡概率,残差为 。如果他的倾向得分是 0.5,B 项就是 ,把这 0.25 的预测偏差放大后补回去。倾向得分越低,说明这位患者接受 RHC 的概率越小,他作为处理组成员的”代表性”越强,校正力度就越大。
6.2.3 部分 C:对照组的残差校正
部分 C 即 的逻辑与 B 对称,它存在的理由是修补结果模型在对照组方向上的预测偏差。 时,它用对照组的实际结局与 的残差,除以 ,校正结果模型在对照组方向上的偏差。
假设另一位患者没有接受 RHC,实际存活了,,结果模型预测不接受时死亡概率 0.65,残差为 。如果倾向得分是 0.5,C 项就是 。负号表示结果模型高估了对照组的死亡概率,校正方向是往下拉。
6.2.4 三部分的协作
把三部分合在一起看:A 是结果模型的主估计,B 和 C 是 IPW 风格的残差校正项。如果结果模型对,B 和 C 的期望为零,不干扰 A;如果结果模型错但倾向得分对,B 和 C 恰好能把 A 的偏差抵消掉。这就是双重稳健性的直觉来源。
6.3 双重稳健性:交叉消除的数学机制
双重稳健性背后有清晰的数学逻辑。先用一个数字例子来看。假设结果模型偏了 2%,处理模型偏了 3%。如果偏差是加法叠加的,总偏差就是 。但 AIPW 的偏差大约是 ,远小于单独用任何一个模型。乘积结构带来的效果是:只要其中一个模型的偏差接近零,乘积就接近零。
核心在于 AIPW 估计量的偏差项正是两个模型误差的乘积。用符号写出来:AIPW 的偏差正比于
其中 和 分别是真实的倾向得分和真实的结果条件期望。如果倾向得分模型正确,,乘积为零,偏差消失,无论结果模型偏了多少。反过来,如果结果模型正确,,乘积同样为零。只有两个模型同时错误,偏差才会存活。
用一个具体的数字例子来看。假设有一个 APACHE 评分为 60 的患者,真实的条件死亡概率是 0.80,而我们的结果模型预测为 0.70,偏了 0.10。如果这个患者的真实倾向得分是 0.50 而我们的处理模型也估成了 0.50,那么 B 项中的 IPW 权重 恰好把残差 按正确的比例放大,校正了结果模型 0.10 的偏差。
倾向得分对了,权重分配就对了,即使结果模型的预测有系统性偏差,加权校正后的估计仍然是无偏的。
反过来,假设倾向得分模型估偏了,把 0.50 估成了 0.30,但结果模型完美预测了 0.80。此时 B 项中的残差 的条件期望为零,无论 IPW 权重是 还是 ,乘上一个期望为零的残差,结果还是零。A 项本身就给出正确答案,B 和 C 只是在加减零。
渐近无偏用通俗的话说就是:当样本量足够大时,AIPW 的估计会越来越接近真实的 ATE,不会系统性地偏高或偏低。这个保证只需要两个模型中有一个是对的。在 RHC 数据中,即使我们的 logistic 回归结果模型遗漏了某些交互项,只要倾向得分模型对医生决策逻辑的近似是合理的,AIPW 的估计仍然会随着样本量增大而逼近真值。
当两个模型同时正确时,AIPW 还有一个额外的好处:它达到半参数效率界,即在所有正则的渐近线性估计量中方差最小。在只有一个模型正确的情况下,AIPW 的方差不一定是最小的,但它至少保证了一致性。当两个模型都对时,AIPW 不仅无偏,而且方差达到了理论下界,比单独的 G 计算或 IPW 更精确。AIPW 在两个模型都对时不牺牲效率,在只有一个对时仍保证一致性。
6.4 手动实现:在 RHC 数据上构造 AIPW
本章继续使用第 1 章介绍的 RHC 数据集 。下面的代码从头开始,分四步完成 AIPW 的手动实现:拟合结果模型、拟合倾向得分模型、预测反事实、组装 AIPW 估计量。手动实现的目的是让读者看清 AIPW 公式里每一项对应的代码操作,后续章节会用 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 为 。置信区间不包含零,,表明在控制了 28 个协变量之后,接受 RHC 的患者 180 天死亡率仍然比不接受者高约 4.4 个百分点。
把 AIPW 的三个组成部分拆开来看:A 项,即 G 计算部分,贡献了 0.052 的风险差,这和第 4 章单独用 G 计算得到的结果一致。B 项,处理组的 IPW 校正,贡献了 ,方向为负,意味着结果模型对处理组的死亡概率略有高估,IPW 校正把估计往下拉了一点。C 项,对照组的 IPW 校正,几乎为零。三项加起来 。
AIPW 的标准误 0.014 比 IPW 略小,比 G 计算的 bootstrap 标准误也更窄。这正是双重稳健估计量在两个模型都大致正确时的效率优势。
下图展示了 5735 名患者各自的 AIPW 得分分布。每个人的 AIPW 得分就是公式中求和号内的那个值,它可以看作”这个人对整体 ATE 估计的贡献”。ATE 就是所有人得分的均值。
6.5 三种方法的横向对比
现在我们有了三种方法在同一份数据上的估计,可以放在一起比较了。
| 方法 | RD | 95% CI | 核心依赖 |
|---|---|---|---|
| G 计算 | 0.052 | [0.027, 0.082] | 结果模型设定正确 |
| IPW | 0.032 | [0.005, 0.064] | 倾向得分模型设定正确 |
| AIPW | 0.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 区间更精确。下图直观展示了这个比较。
AIPW 的理论基础可以追溯到 Robins、Rotnitzky 和 Zhao 1994 年关于半参数效率理论的开创性工作。他们系统研究了”如果一个估计量依赖辅助模型,当辅助模型错误时会发生什么”的问题,并发现了一类具有双重稳健性的估计量。但 AIPW 的理论优势在当时很难体现,因为 1990 年代的因果分析几乎全部使用参数模型。如果结果模型用逻辑回归、处理模型也用逻辑回归,两个模型同时设错的概率和只设错一个差不多,双重稳健的”保险”价值有限。
AIPW 真正获得广泛关注要等到两个转折点。Bang 和 Robins 在 2005 年用 Monte Carlo 模拟清楚地展示了双重稳健性在有限样本中的表现,让实务工作者看到了它的实际收益。而 2010 年代机器学习进入因果推断之后,结果模型和处理模型可以分别用随机森林、Lasso、神经网络等灵活方法来拟合,“至少一个对”的概率比两个 logistic 回归的组合大幅提高。AIPW 在 Funk 等人 2011 年的流行病学实操指南中被推荐为标准方法之后,逐渐成为临床和公共卫生领域观察性研究的默认选择。
6.6 AIPW 何时失灵
双重稳健性给了 AIPW 额外的保护层,但它有自己的失效边界。
最明显的失效场景是两个模型同时错误。如果结果模型遗漏了关键的交互项,同时倾向得分模型也遗漏了相同方向的混杂变量,AIPW 的偏差项 不再为零。更严重的是,两个模型的误差如果在同一方向上相关,偏差可能比单独使用任一方法更大。双重稳健保证的是”只要一个对就一致”,它不保证两个都错时估计仍然无偏。
极端倾向得分是 AIPW 的另一个薄弱环节。虽然 AIPW 对极端权重的敏感性低于纯 IPW,因为 B 和 C 项乘的是残差而非原始结局,但当 非常接近 0 或 1 时,权重 或 仍然会放大个别观测的残差,让方差膨胀。在 RHC 数据中,最小的倾向得分为 0.024,对应的权重约为 42,这意味着一个对照组个体的残差被放大了 42 倍。虽然只有 29 个样本的倾向得分低于 0.05,但它们对整体标准误的贡献不可忽略。常见的处理方式是对倾向得分做截断,把低于 0.025 或高于 0.975 的值拉回边界,代价是引入少量偏差但换来方差的显著下降。
AIPW 在有限样本中的另一个问题是它可能给出超出参数空间的估计。比如二分类结局的风险差理论上应该在 之间,但 AIPW 的线性组合没有内置这个约束。在样本量小或倾向得分极端的数据中,AIPW 可能估出 或 这样不合理的值。第 7 章介绍的 TMLE 通过目标化的最大似然更新步骤解决了这个问题,把估计拉回到合规空间内。
6.7 方法卡与累积对比表
| 方法 | ATE 估计 | 95% CI | 核心假设 |
|---|---|---|---|
| 回归调整 | OR = 1.34 | [1.18, 1.52] | 模型设定正确 + 可交换性 + 正值性 |
| G 计算 | RD = 0.052 | [0.027, 0.082] | 结果模型设定正确 + 可交换性 + 正值性 |
| IPW | RD = 0.032 | [0.005, 0.064] | 倾向得分模型正确 + 可交换性 + 正值性 |
| AIPW | RD = 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 的失效 | 两个模型同时错误或严重的正值性违反 | 双重稳健 = 万无一失 | 双重稳健的前提是至少一个模型设定正确,两个都错就没有保护 |