前面七章用了多种方法回答同一个问题,结论一致:RHC 增加了 180 天死亡率,风险差在 3–5 个百分点之间。这个一致性让人安心,但它建立在一个共同前提上:控制的 28 个协变量足以消除处理组和对照组之间的系统性差异。换句话说,所有方法都假设不存在未测量的混杂变量。
这个假设合理吗?医生决定是否插 RHC 时,除了 APACHE 评分、血压、肌酐这些数据里有的指标,还会参考床旁即时反应、家属意愿、设备空闲情况。这些因素都没有记录。如果其中某个因素同时影响了医生的决策和患者的存活,所有估计都会偏移。本章不产出新的 ATE 估计,它做的事情是压力测试:前面得到的结论有多经得起"万一还有没控制住的混杂"这个质疑?
不可检验的假设:可交换性
第 2 章引入了因果推断的三大识别假设:可交换性、正值性、一致性。正值性可以通过检查倾向得分分布来诊断,一致性是对处理定义的逻辑约束,这两者都有经验层面的检验手段。可交换性是个例外。
比如在 APACHE 评分都是 70 分的病人中,上导管和不上导管的人,后来死不死应该和他们是否上了导管没有关系,因为 APACHE 70 这一组里的分配已经"近似随机"了。
给定协变量集合 ,如果潜在结果 与处理指派 条件独立,即
则称在 条件下处理与结局满足可交换性。
(Rosenbaum 2002)
这个假设说的是:在协变量 的每一层内,处理组和对照组的潜在结果分布相同。它之所以无法检验,是因为永远只能观测到一个人在实际处理状态下的结局,看不到他在另一种处理状态下会怎样。要验证可交换性,需要比较"处理组的 "和"对照组的 ",但处理组的 是反事实,数据里不存在。
在 RCT 中,随机化保证了可交换性。观察性研究没有这个保障,研究者只能尽量把想得到的混杂变量都放进 ,但" 是否足够全面"无法从数据中证实。这就是敏感性分析的出发点:既然无法证明可交换性成立,那就换一个问题——如果可交换性被违反了,违反需要多严重才能推翻结论?
敏感性分析的思路
敏感性分析的核心逻辑是反向思考。传统分析假设没有未测量混杂,直接估计 ATE。敏感性分析反过来问:假设存在一个未测量混杂 , 需要和处理与结局各有多强的关联,才能把 ATE 估计拉到零?如果答案是" 需要非常强才能翻盘",结论就比较稳健。这个思路由 Rosenbaum 2002 系统化,本章介绍两种更现代的工具:E-value 和 sensemakr。
E-value:需要多强的混杂才能翻盘
E-value 由 VanderWeele & Ding 2017 提出,它把"未测量混杂需要多强"翻译成一个相对风险的尺度。
先用一个具体例子建立直觉。假设估计出 RHC 增加死亡率 RR = 1.34。E-value 回答的问题是:一个没有测量到的混杂变量,需要多强才能把这个 1.34 完全解释掉?答案是 E-value = 1.42。意思是这个混杂变量需要同时和 RHC 使用、180 天死亡分别有至少 1.42 倍的关联。如果找不到这么强的遗漏因素,1.34 的效应就不太可能全靠混杂偏差来解释。
下面是 E-value 的正式定义。
对于一个观测到的相对风险 ,其 E-value 定义为
E-value 表示的是:未测量混杂 与处理的关联以及 与结局的关联至少都要达到这个 RR 值,才能把观测到的效应完全归因于混杂。
(VanderWeele & Ding 2017)
公式里的 是调整了已知混杂之后的相对风险。E-value 告诉我们,未测量因素 与 RHC 使用和 180 天死亡的关联强度至少要多大,才能让观测到的不利效应完全消失。E-value 越大,翻盘需要的混杂越强,结论越稳健。
在 RHC 数据上计算 E-value
本章继续使用第 1 章介绍的 RHC 数据集 。AIPW 在第 6 章给出的风险差估计为 0.044,95% CI 为 。要计算 E-value,需要把风险差转换为相对风险的尺度。对照组的 180 天死亡率为 0.465,据此可得调整后的近似 。
set.seed(2026)
library(tidyverse)
library(EValue)
d <- read_csv(here::here("data", "rhc.csv"), show_col_types = FALSE) |>
mutate(death180_bin = if_else(death180 == "Yes", 1L, 0L))
# 对照组基线死亡率
r0 <- mean(d$death180_bin[d$rhc == 0])
# AIPW 估计的风险差和 95% CI(来自第 6 章)
ate <- 0.0442
se <- 0.0139
ci_lo <- ate - 1.96 * se
ci_hi <- ate + 1.96 * se
# 转换为相对风险尺度——E-value 需要 RR 作为输入
rr_point <- (r0 + ate) / r0
rr_lo <- (r0 + ci_lo) / r0
rr_hi <- (r0 + ci_hi) / r0
# 计算 E-value:点估计和置信区间下界各一个
ev <- evalues.RR(rr_point, lo = rr_lo, hi = rr_hi)
print(ev)
点估计的 E-value 为 1.42,置信区间下界的 E-value 为 1.23。
点估计 E-value = 1.42 的含义是:一个未测量的混杂因素 ,需要与 RHC 使用和 180 天死亡各自的关联强度都达到 RR = 1.42 以上,才能把 AIPW 观测到的风险差 0.044 完全解释为混杂偏差。置信区间下界的 E-value = 1.23 更为关键,它意味着 只需要与两端各达到 RR = 1.23,就能让效应的统计显著性消失。
在 ICU 里,能和死亡率产生 1.42 倍关联的变量是什么量级?APACHE 评分与死亡率的关联在 RR = 2–3 之间,血压和肌酐在 RR = 1.5–2.5 之间。这些变量都已经控制了。一个残余的、没被这 28 个变量捕捉到的因素,要同时和 RHC 使用及死亡率各达到 RR = 1.42,在临床上并非不可能,但需要一个相当有影响力的遗漏因素。
E-value 的领域锚定
1.42 孤立地看没有意义,E-value 的价值在于和领域内已知混杂因素的强度做对比。Connors 等人 1996 报告了 APACHE 评分与 RHC 使用的关联约为 RR = 2.0,与 180 天死亡率的关联更强,高评分组死亡风险是低评分组的 2–3 倍。血压、肌酐等协变量与两端的关联在 RR = 1.5–2.5 之间。
我们已经控制了 APACHE 评分、血压、肌酐等 28 个变量,一个残余的未测量混杂要同时在两端都达到 RR = 1.42 的关联强度,可能性并不高但也不能排除。如果 E-value 达到 3 或 4,结论通常被认为非常稳健;1.42 处于中等偏低的位置,保护有限。
到这里有了第一个工具 E-value。它给出了一个数字门槛。接下来要介绍的 sensemakr 会进一步用已观测的协变量作为参照物,让这个门槛更加具体。
同样的 E-value 在不同研究领域意味着完全不同的事情。在药物临床试验中,已知混杂因素的 RR 通常在 1.2–1.5 之间,E-value = 1.42 已经接近上限,结论比较安全。在社会科学中,未测量混杂 RR 可达 3–5,同样的 E-value 几乎提供不了保护。ICU 医学介于两者之间:已知的强混杂如疾病严重程度 RR 可达 2–3,但已被控制。残余混杂要达到 1.42 需要一个相当有影响力的遗漏因素。
E-value 最常见的误用是把它当作一个通用的"稳健性评分",脱离领域知识直接下结论。比如看到 E-value = 2.5 就说"结论很稳健",看到 1.3 就说"结论脆弱"。这样做的问题在于,E-value 衡量的是未测量混杂需要多强,而"多强算强"取决于具体研究领域。在一个变量关联普遍较弱的领域,1.3 已经很难达到;在一个混杂无处不在的领域,2.5 可能轻而易举。正确的做法是:计算 E-value 之后,列出本研究领域中已知混杂因素与处理和结局的关联强度,用这些数字作为参照系来判断 E-value 的含义。没有领域锚定的 E-value 解读是空洞的。
sensemakr:遗漏变量偏差的等高线
Cinelli & Hazlett 2020 提出的 sensemakr 框架用偏 来刻画未测量混杂解释处理变异和结局变异的比例,并允许研究者用已观测的协变量作为基准校准"多强算强"。sensemakr 的核心概念是稳健值,英文称 Robustness Value,简称 RV。
RV 假设的是一个最坏情况的混杂:它和我们已经测量的 28 个变量都不相关,是一个全新的、完全没有捕捉到的因素。这比"已有变量遗漏了某些信息"更极端,因为如果新混杂和已有变量有相关性,已有变量多少能帮我们控制一部分。RV 不给这个好处,它直接问:在最坏的情况下,这个全新因素需要解释处理和结局残差方差的多大比例,才能把效应估计拉到零?
稳健值 RV 回答的问题是:一个未测量混杂需要多强,才能把估计到的效应拉低到可以忽略的程度?RV 越大,需要的混杂越强,结论越稳健。
具体而言,RV 用偏 来衡量混杂的强度,即未测量混杂对处理和结局残差方差各自的解释比例。 是使效应估计降至零所需的最小偏 。 代表效应缩减的比例, 意味着完全归零。 则是使效应估计的置信区间包含零所需的最小强度,这个阈值更低,因为只需让显著性消失即可。
(Cinelli & Hazlett 2020)
sensemakr 还提供了基准校准功能:选择一个已观测的协变量作为参照,问"如果未测量混杂的强度是 APACHE 评分的 倍,效应估计会变成多少"。研究者通常对"比 APACHE 评分强两倍的混杂因素是否存在"有直觉判断,这比纯数字输出更贴近实务决策。
sensemakr 在 RHC 数据上的应用
sensemakr 需要线性模型作为输入。线性概率模型在这个样本量下的系数估计与 logistic 回归的边际效应接近,且偏 分解在线性框架下有严格保证。
set.seed(2026)
library(tidyverse)
library(sensemakr)
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")
# 线性概率模型——sensemakr 需要 lm 对象
lin_mod <- lm(death180_bin ~ rhc + .,
data = d |> select(death180_bin, rhc, all_of(covs)))
# 以 APACHE 评分为基准,分别看 1 倍、2 倍、3 倍强度的混杂
sens <- sensemakr(model = lin_mod,
treatment = "rhc",
benchmark_covariates = "apache_score",
kd = c(1, 2, 3))
summary(sens)
线性模型中 RHC 的系数为 0.053,标准误 0.014,,。处理变量对结局的偏 仅为 0.26%,说明在控制了 28 个协变量之后,RHC 对死亡率解释的独立变异很小。
稳健值 :一个与已控制协变量正交的未测量混杂,需要同时解释处理和结局残差方差的至少 5.0%,才能把效应估计拉到零。:同样的混杂只需解释 2.5% 的残差方差,就能让置信区间包含零,统计显著性消失。
以 APACHE 评分为基准的校准结果特别有信息量。APACHE 评分对 RHC 使用的偏 为 2.0%,对死亡率的偏 为 1.0%。如果未测量混杂的强度和 APACHE 评分相当,即 apache_score,调整后的效应估计从 0.053 下降到 0.038,仍然显著。如果未测量混杂有 APACHE 评分的 2 倍强度,效应降到 0.023,置信区间的下界接近零。到了 3 倍 APACHE 评分的强度,效应仅剩 0.008,已经不再显著。
在 ICU 里,比 APACHE 评分还强两三倍的遗漏变量意味着什么?APACHE 评分本身已经综合了生理参数、年龄和慢性健康状况,是 ICU 预后预测中解释力最强的单一变量之一。一个强度达到 APACHE 两倍的遗漏因素在临床上很难想象。但让显著性消失的阈值只需要 2 倍,而医生的主观判断、床旁快速恶化程度这类未记录因素并非不可能达到这个水平。
sensemakr 把这些数字关系可视化在等高线图上:横轴是未测量混杂对处理的偏 ,纵轴是对结局的偏 ,红色虚线是零等高线。三个红色菱形分别标记了 1 倍、2 倍、3 倍 APACHE 评分强度的位置,3 倍的菱形已经非常接近零等高线。完整等高线图见 PDF 全文。
两种方法的对照解读
E-value 和 sensemakr 从不同角度量化了同一个问题。E-value = 1.42 说的是未测量混杂与处理和结局的关联各需达到 RR = 1.42 才能翻盘。sensemakr 的基准校准则更具体:3 倍 APACHE 评分强度的混杂才能让效应消失,2 倍就能让显著性消失。两种工具给出的图景是一致的:翻盘需要一个不算弱但也谈不上极强的遗漏因素。
综合来看,RHC 增加死亡率的结论对未测量混杂有一定抵抗力,但保护程度中等。效应本身不大,RR 约为 1.10,小效应天然更容易被残余混杂解释掉。这也是 Connors 等人 1996 原文发表后引发持续争论的原因之一。
E-value 适合快速报告:只需要点估计和置信区间就能计算,结果是一个直观的 RR 数字,适合写在论文摘要里。它的局限是缺乏内部校准,需要研究者自行提供领域参照。sensemakr 适合深入探索:它用已观测协变量的解释力作为基准,输出等高线图和分阶梯的调整后估计,让读者直观看到"混杂强到什么程度结论才翻转"。它的局限是需要线性模型作为输入,且偏 对非线性关系的捕捉能力有限。实际操作中,两者配合使用效果最好:E-value 给出汇总判断,sensemakr 给出细节和可视化。
敏感性分析不能证明"没有未测量混杂"。它做的事情是量化"未测量混杂需要多强才能推翻结论",本质上是一种压力测试。有时研究者在论文里写"E-value = 3.2,说明未测量混杂不太可能影响我们的结论",这个表述在逻辑上是滑坡的。E-value = 3.2 只能说明"推翻结论需要一个很强的混杂",但无法排除这种强混杂确实存在的可能。正确的表述是:"未测量混杂需要与处理和结局各达到 RR = 3.2 的关联才能解释掉观测到的效应,在本研究领域中,已知混杂因素的关联强度为 RR = X–Y,因此残余混杂达到此水平的可能性较低/中等/较高。"判断"可能性高低"是领域知识的工作,E-value 只提供数字框架。
第 5 章的 IPW 估计给出了风险差约 0.032,标准误约 0.022。计算 IPW 估计对应的 E-value,与 AIPW 的 E-value = 1.42 做比较。较小的效应估计是否意味着更脆弱的结论?结合 ICU 领域知识解释你的判断。
library(EValue)
# IPW 的风险差和标准误
ate_ipw <- 0.032; se_ipw <- 0.022
r0 <- 0.4647 # 对照组基线死亡率
# 转换为 RR 尺度
rr_ipw <- (r0 + ate_ipw) / r0
rr_lo <- (r0 + ate_ipw - 1.96 * se_ipw) / r0
ev_ipw <- evalues.RR(rr_ipw, lo = rr_lo)
print(ev_ipw)
IPW 的点估计 ,对应 E-value 约为 1.31,比 AIPW 的 1.42 更小。置信区间下界的 E-value 接近 1.0,极弱的未测量混杂就能让显著性消失。IPW 的效应估计更小、标准误更大,对未测量混杂的抵抗力更弱。但两种方法的效应方向一致,跨方法的方向一致性本身也是稳健性的证据。
分析目标:评估因果效应估计对未测量混杂的稳健程度,不产出新的 ATE。
E-value:。未测量混杂与处理和结局各需达到此 RR 才能翻盘。需要领域知识锚定。
sensemakr:用偏 量化遗漏变量偏差,稳健值 RV 表示使效应消失所需的最小混杂强度。可以用已观测协变量做基准校准。
R 实现:EValue 包的 evalues.RR();sensemakr 包的 sensemakr(),直接接受 lm() 对象。
适用场景:所有依赖可交换性假设的观察性研究。审稿人越来越多地要求作者报告 E-value 或类似的敏感性指标。
局限:无法证明"没有未测量混杂",只能量化"翻盘需要多强"。E-value 缺乏内部校准,sensemakr 依赖线性模型假设。
敏感性分析的思路可以追溯到 Cornfield 在 1959 年为吸烟致癌辩论提供的论证。烟草公司辩称吸烟与肺癌的关联可能由遗传因素造成,Cornfield 反驳:吸烟者肺癌发病率是非吸烟者的 9 倍以上,要用遗传混杂解释,该因素需要在吸烟者中流行率高 9 倍以上,这在生物学上不合理。这个论证和 E-value 一脉相承。Rosenbaum 2002 系统化了这套方法论,VanderWeele & Ding 2017 的 E-value 和 Cinelli & Hazlett 2020 的 sensemakr 则分别提供了更易用的工具。
下一章将转向异质性分析。前面所有方法估计的都是平均处理效应,但 ATE 是全体患者效应的均值,它可能掩盖了不同亚群之间的重要差异。也许对某些患者 RHC 确实有害,而对另一些患者反而有益,平均下来才是一个温和的正向风险差。因果森林可以估计个体化处理效应,帮助拆开 ATE 的"黑箱"。
本章知识地图
表 8·1 第 8 章核心概念与常见误解
| 核心概念 | 核心内容 | 常见误解 | 为什么错 |
|---|---|---|---|
| 条件可交换性 | 在协变量 条件下潜在结果与处理独立,是因果识别的核心假设 | 可以通过某种统计检验来验证可交换性 | 验证需要观测反事实结局,而反事实在数据中永远缺失 |
| E-value | 未测量混杂与处理和结局各需达到的最小 RR 才能翻盘 | E-value 大就说明没有未测量混杂 | E-value 只量化翻盘所需的混杂强度,不能排除这种混杂存在 |
| 领域锚定 | 同一个 E-value 在不同领域含义不同,必须参照已知混杂的关联强度 | E-value = 2 在任何领域都算稳健 | 药物试验中 RR > 2 的混杂罕见,社会科学中 RR > 2 的混杂常见 |
| 稳健值 RV | 使效应估计降至零所需的最小偏 | RV 小就说明结论一定错 | RV 小只说明结论容易被推翻,但小效应的 RV 天然就小 |
| 基准校准 | 用已观测协变量的解释力作为参照系评估未测量混杂的合理强度 | 只要超过 1 倍基准就翻盘说明结论不可信 | 要看" 倍基准"在领域内是否合理,而不只看倍数大小 |
| 敏感性分析的定位 | 压力测试,量化翻盘所需条件,搭配领域知识做判断 | 敏感性分析是因果推断的最后一步,过了就万事大吉 | 它回答的是"假设违反时结论多脆弱",而不是"假设是否成立" |