上一章用倾向得分做了匹配和加权。无论是 PSM 还是 IPW,核心逻辑都是绕开结果模型,用处理模型去平衡协变量分布,然后在平衡后的伪总体中直接比较结局。第 4 章的 G 计算走的是另一条路:依赖结果模型预测反事实,完全不碰处理模型。两种策略各赌一个模型正确。G 计算赌结果模型,IPW 赌处理模型。赌对了,估计一致;赌错了,偏差无法消除,样本量再大也没用。
在真实数据中,没有人能确定自己的模型是对的。结果模型可能遗漏了交互项或非线性关系,处理模型的 logistic 回归也可能没有捕捉到医生决策的全部逻辑。本章介绍的增强逆概率加权,英文称 Augmented Inverse Probability Weighting,简称 AIPW,做的事情是同时建两个模型,让它们互相兜底。只要其中一个对,最终估计就是一致的。这个性质叫双重稳健性,英文称 double robustness。一根保险绳是 G 计算,一根保险绳是 IPW;AIPW 把两根绳都拴上了,只要一根不断就安全。
单一模型的系统性风险
回顾前两章的核心结论。G 计算在 RHC 数据上给出的边际风险差是 0.052,意思是如果所有 5,735 名患者都接受 RHC,180 天死亡率比都不接受高 5.2 个百分点。这个数字的可靠性完全取决于结果模型 的设定。如果 APACHE 评分对死亡率的影响存在阈值效应而我们只放了线性项,G 计算的预测就会系统性偏离真实值,风险差的估计也随之偏移。
IPW 走了相反的路线。它不关心结局怎么建模,只关心倾向得分模型 是否正确。上一章的 IPW 估计给出风险差约 0.032,标准误比 G 计算大了将近 50%,原因是倾向得分接近 0 或 1 的个体权重很大,把方差拽高了。更严重的问题是,如果倾向得分模型遗漏了某个关键的混杂变量或者函数形式写错了,加权后的伪总体并没有真正平衡协变量,估计仍然有偏。
两种方法面临的困境可以归结为一句话:研究者必须在两个模型之间押注,而且不知道自己押的是对还是错。AIPW 的设计动机就是从这个困境中解脱出来。
AIPW 估计量的三个组成部分
AIPW 的估计量看起来比 G 计算和 IPW 都复杂,但拆开来看,它就是把两种方法用一个特定的公式组合在一起。在给出公式之前,先明确记号: 是结果模型预测的"如果第 个人接受处理,死亡概率是多少", 是"如果不接受处理,死亡概率是多少", 是倾向得分。
AIPW 的想法很简单:先用结果模型做一个粗略预测,然后用倾向得分来纠正这个预测的偏差。假设结果模型预测某位患者的死亡概率是 60%,但他实际死了,这意味着结果模型漏掉了 40% 的残差。倾向得分决定了纠正这个残差的"力度":如果这位患者接受处理的概率是 0.5,残差就要乘以 ,放大两倍;如果接受处理的概率是 0.8,残差只需乘以 ,放大幅度更小。结果模型越准,需要纠正的残差越小;倾向得分越准,纠正的方向和力度越对。两者配合,就是 AIPW 的核心机制。
AIPW 对平均处理效应的估计为
其中 是处理指示变量, 是观测结局。
(Robins, Rotnitzky & Zhao 1994)
这个公式有三个部分,理解它们各自存在的理由是掌握 AIPW 的关键。
部分 A:结果模型的主估计
部分 A 就是 G 计算的点估计:用结果模型预测每个人在两种反事实状态下的结局,取差值。它存在的理由是提供一个基础答案。如果结果模型完全正确,A 本身就足以给出无偏的 ATE 估计,B 和 C 的期望值为零,不起作用。
用一个具体患者来理解:某位 APACHE 评分 60 的患者,结果模型预测他接受 RHC 后死亡概率 0.75,不接受时 0.65。A 项对这位患者的贡献就是 。如果结果模型的预测是准确的,这个 0.10 就是他的个体处理效应估计,不需要任何校正。
部分 B:处理组的残差校正
部分 B 只对处理组的个体有值,它存在的理由是修补结果模型在处理组方向上的预测偏差。 时,它计算的是"这个人的实际结局 与结果模型预测值 之间的残差",再除以倾向得分 。残差的含义是结果模型预测偏了多少。如果结果模型完美,残差期望为零,B 项不贡献任何东西。如果结果模型偏了,B 项就利用倾向得分权重来校正这个偏差。
继续上面那位患者的例子。假设他实际接受了 RHC 并且死了,,但结果模型只预测了 0.75 的死亡概率,残差为 。如果他的倾向得分是 0.5,B 项就是 ,把这 0.25 的预测偏差放大后补回去。倾向得分越低,说明这位患者接受 RHC 的概率越小,他作为处理组成员的"代表性"越强,校正力度就越大。
部分 C:对照组的残差校正
部分 C 的逻辑与 B 对称,它存在的理由是修补结果模型在对照组方向上的预测偏差。 时,它用对照组的实际结局与 的残差,除以 ,校正结果模型在对照组方向上的偏差。
假设另一位患者没有接受 RHC,实际存活了,,结果模型预测不接受时死亡概率 0.65,残差为 。如果倾向得分是 0.5,C 项就是 。负号表示结果模型高估了对照组的死亡概率,校正方向是往下拉。
三部分的协作
把三部分合在一起看:A 是结果模型的主估计,B 和 C 是 IPW 风格的残差校正项。如果结果模型对,B 和 C 的期望为零,不干扰 A;如果结果模型错但倾向得分对,B 和 C 恰好能把 A 的偏差抵消掉。这就是双重稳健性的直觉来源。
停下来想一想。 在上面那位 APACHE 评分 60 的患者例子中,A 项贡献了 0.10,B 项贡献了 0.50。如果结果模型是完美的,B 项会变成多少?如果倾向得分不是 0.5 而是 0.9,B 项又会变成多少?用这两个问题检验自己是否真正理解了三部分的协作逻辑。
双重稳健性:交叉消除的数学机制
双重稳健性听起来像魔术,但背后有清晰的数学逻辑。先用一个数字例子建立直觉。假设结果模型偏了 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 估计量就是渐近无偏的:条件一,结果模型 一致地估计了 ,;条件二,倾向得分模型 一致地估计了 。
(Bang & Robins 2005)
渐近无偏用白话说就是:当样本量足够大时,AIPW 的估计会越来越接近真实的 ATE,不会系统性地偏高或偏低。这个保证只需要两个模型中有一个是对的。在 RHC 数据中,即使 logistic 回归结果模型遗漏了某些交互项,只要倾向得分模型对医生决策逻辑的近似是合理的,AIPW 的估计仍然会随着样本量增大而逼近真值。
当两个模型同时正确时,AIPW 还有一个额外的好处:它达到半参数效率界,即在所有正则的渐近线性估计量中方差最小。效率界这个性质值得展开。在只有一个模型正确的情况下,AIPW 的方差不一定是最小的,但它至少保证了一致性。当两个模型都对时,AIPW 不仅无偏,而且方差达到了理论下界,比单独的 G 计算或 IPW 更精确。这意味着 AIPW 在最优情况下不牺牲效率,在次优情况下仍然保底,是一个"进可攻退可守"的估计量。
手动实现:在 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")
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 的 0.022 小了 36%,比 G 计算的 bootstrap 标准误也更窄。这正是双重稳健估计量在两个模型都大致正确时的效率优势。
5,735 名患者各自的 AIPW 得分是公式中求和号内的那个值,可以看作"这个人对整体 ATE 估计的贡献"。ATE 就是所有人得分的均值。分布以零附近为中心,但整体略偏右,对应正的处理效应。左尾的少数极端值来自倾向得分接近边界的个体。完整得分分布图见 PDF 全文。
三种方法的横向对比
现在有了三种方法在同一份数据上的估计,可以放在一起比较了。
表 6·1 G 计算、IPW 与 AIPW 在 RHC 数据上的估计对比
| 方法 | 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 关于半参数效率理论的开创性工作。Robins 和 Rotnitzky 在 1990 年代初系统研究了"如果一个估计量依赖辅助模型,当辅助模型错误时会发生什么"的问题,并发现了一类具有双重稳健性的估计量。但 AIPW 的理论优势在当时很难体现,因为 1990 年代的因果分析几乎全部使用参数模型。如果结果模型用逻辑回归、处理模型也用逻辑回归,两个模型同时设错的概率和只设错一个差不多,双重稳健的"保险"价值有限。
AIPW 真正获得广泛关注要等到两个转折点。Bang & Robins 2005 用 Monte Carlo 模拟清楚地展示了双重稳健性在有限样本中的表现,让实务工作者看到了它的实际收益。而 2010 年代机器学习进入因果推断之后,结果模型和处理模型可以分别用随机森林、Lasso、神经网络等灵活方法来拟合,"至少一个对"的概率比两个 logistic 回归的组合大幅提高。AIPW 在 Funk 等人 2011 的流行病学实操指南中被推荐为标准方法之后,逐渐成为临床和公共卫生领域观察性研究的默认选择。
AIPW 何时失灵
双重稳健性给了 AIPW 额外的保护层,但它有自己的失效边界。
最明显的失效场景是两个模型同时错误。如果结果模型遗漏了关键的交互项,同时倾向得分模型也遗漏了相同方向的混杂变量,AIPW 的偏差项 不再为零。更严重的是,两个模型的误差如果在同一方向上相关,偏差可能比单独使用任一方法更大。双重稳健保证的是"只要一个对就行",它不保证"两个都错时还能救"。
双重稳健性的"双保险"有一个前提条件:两个模型中至少有一个对数据生成过程的近似是足够好的。在实际操作中,研究者无法验证任一模型是否正确,因为真实的数据生成过程是未知的。当两个模型都用同一批协变量、同一种参数形式建立时,它们犯的错误往往高度相关,双重稳健性提供的保护就会大打折扣。解决思路是让两个模型的设定尽量不同:比如结果模型用非参数方法,处理模型用参数方法,或者反过来。第 7 章引入的 Super Learner 和 TMLE 可以进一步降低模型设定错误的风险。
极端倾向得分是 AIPW 的另一个薄弱环节。虽然 AIPW 对极端权重的敏感性低于纯 IPW,因为 B 和 C 项乘的是残差而非原始结局,但当 非常接近 0 或 1 时,权重 或 仍然会放大个别观测的残差,让方差膨胀。在 RHC 数据中,最小的倾向得分为 0.024,对应的权重约为 42,这意味着一个对照组个体的残差被放大了 42 倍。虽然只有 29 个样本的倾向得分低于 0.05,但它们对整体标准误的贡献不可忽略。常见的处理方式是对倾向得分做截断,把低于 0.025 或高于 0.975 的值拉回边界,代价是引入少量偏差但换来方差的显著下降。
AIPW 在有限样本中的另一个问题是它可能给出超出参数空间的估计。比如二分类结局的风险差理论上应该在 之间,但 AIPW 的线性组合没有内置这个约束。在样本量小或倾向得分极端的数据中,AIPW 可能估出 或 这样不合理的值。第 7 章介绍的 TMLE 通过目标化的最大似然更新步骤解决了这个问题,把估计拉回到合规空间内。
在上面的 AIPW 实现中,将倾向得分截断为 ,重新计算 ATE 及 95% CI。比较截断前后的点估计差异和标准误变化,判断极端倾向得分对本数据的影响程度。
# 倾向得分截断——牺牲少量偏差换取方差稳定
d$ps_trim <- pmax(0.025, pmin(0.975, d$ps))
d$aipw_trim <- with(d, {
(m1 - m0) +
rhc / ps_trim * (death180_bin - m1) -
(1 - rhc) / (1 - ps_trim) * (death180_bin - m0)
})
ate_trim <- mean(d$aipw_trim)
se_trim <- sd(d$aipw_trim) / sqrt(nrow(d))
cat("Trimmed ATE:", round(ate_trim, 4),
" SE:", round(se_trim, 4), "\n")
由于 RHC 数据中极端倾向得分的样本量较少,截断前后的点估计差异通常不超过 0.002,标准误的变化也很小。这说明在本数据集中,正值性的违反程度不严重。但在其他数据集中,特别是处理概率高度不平衡的情况下,截断的影响可能显著得多。
估计目标:边际风险差 ,即 ATE。
核心公式:。
核心假设:可交换性 + 正值性 + 一致性;双重稳健额外要求两个模型至少一个设定正确。
R 实现:手动组装或 AIPW 包。配合 SuperLearner 可用机器学习拟合两个子模型。
适用场景:研究者对单一模型没有充分信心;需要同时利用结果模型和处理模型的信息;追求半参数效率最优。
失效场景:两个模型同时错误;极端倾向得分导致方差膨胀;有限样本中估计可能超出参数空间。
累积对比表
表 6·2 方法演进对比表,截至第 6 章
| 方法 | 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·3 第 6 章核心概念与常见误解
| 核心概念 | 核心内容 | 常见误解 | 为什么错 |
|---|---|---|---|
| AIPW 估计量 | 结果模型主估计 + IPW 残差校正项,三部分组合 | AIPW 就是 G 计算和 IPW 的简单平均 | AIPW 通过特定的数学形式让偏差项变成两个模型误差的乘积,简单平均做不到 |
| 双重稳健性 | 两个模型至少一个正确时估计一致 | 双重稳健意味着随便怎么建模都行 | 两个模型同时错误时 AIPW 也会有偏,"至少一个对"的前提仍需研究者努力保证 |
| 半参数效率界 | 两个模型都对时 AIPW 达到最小方差 | AIPW 的方差总是最小的 | 只有一个模型对时 AIPW 保证一致性但方差未必最小 |
| IPW 校正项 | B 和 C 用倾向得分加权的残差修正结果模型的偏差 | 校正项只影响方差不影响偏差 | 当结果模型有偏时,校正项的期望值非零,正是它在消除偏差 |
| 极端倾向得分 | AIPW 对极端权重的敏感性低于纯 IPW 但仍然存在 | AIPW 完全不受极端倾向得分影响 | 极端权重放大残差,方差仍会膨胀,需要截断或 overlap weight |
| AIPW 的失效 | 两个模型同时错误或严重的正值性违反 | 双重稳健 = 万无一失 | 双保险的前提是至少一根绳子是好的,两根都断了就没有保护 |