B Odds Ratio, Risk Ratio, and Risk Difference

Odds Ratio, Risk Ratio, and Risk Difference

Dec 18, 2024

一切从一张 2×2 表开始。

Event No Event Total
Treated a b a+b
Control c d c+d

你做了一个 RCT,收了三百个人。一百五在治疗组,一百五在对照组。治疗组发生事件的人数是 a,对照组是 c。

你对着这张表算出了三个数。它们趴在同一个数据的背上,长得像三胞胎,但其实是三种完全不同的语言。

  • RD: Risk Difference = $p_1 - p_0 = \frac{a}{a+b} - \frac{c}{c+d}$
  • RR: Risk Ratio (或 Relative Risk) = $\frac{p_1}{p_0} = \frac{a/(a+b)}{c/(c+d)}$
  • OR: Odds Ratio = $\frac{p_1/(1-p_1)}{p_0/(1-p_0)} = \frac{ad}{bc}$

三个数都从四个格子里长出来。但它们讲的故事不一样。选错了,你的结论就可能从"有效"变成"无效"——或者反过来,把一个小效应吹成一个中药丸子的神话。

RD:最直观,也最不老实

RD 是治疗组和对照组在事件发生率上的绝对差距。加性尺度(additive scale)。很直白:每治疗 100 人,多救(或多伤)几个。

RD = 0.05 意味着治疗组比对照组多 5 个百分点的人发生了(或避免了)事件。

它和 NNT(Number Needed to Treat,需治疗人数)有一条简洁的通道:

$$NNT = \frac{1}{|RD|}$$

RD = 0.10 → NNT = 10。每治疗 10 个人,多避免 1 次事件。临床医生爱 NNT,因为它是唯一一个可以像钱一样直接"花"的数字——给多少人用药,换多少获益。

但 RD 有一个隐藏得很好的软肋:它高度依赖基线风险(baseline risk)。

假设一种药能把风险降低 20%(即 RR = 0.8):

  • 在高风险人群中($p_0$ = 0.5),治疗组 $p_1$ = 0.4,RD = 0.10。
  • 在低风险人群中($p_0$ = 0.05),治疗组 $p_1$ = 0.04,RD = 0.01。

同一个药,同样的相对效应,RD 从 0.10 缩到 0.01——差了十倍。这意味着你不能把高基线风险人群的 RD 拿到低风险人群去用。RD 不是药的性质,是药和人群一起产生的性质。

跨研究比较时,RD 几乎不能用。两个试验的 RD 不同,可能不是因为药效不同,而是因为入组人群的基线风险不同。

RR:乘法尺度,相对稳定

RR 是乘法尺度(multiplicative scale)上的效应。它问的是:治疗组发生事件的概率是对照组的几倍?

RR = 0.8 是一个数字,但如果 $p_0$ 是 0.5 还是 0.05,RR = 0.8 的含义一样——都是风险降低了 20%。

这种"不依赖基线"的稳定性是 RR 最大的优点。Meta-analysis(荟萃分析)里,RR 比 RD 更常用,原因就在于不同研究的基线风险千差万别,但相对效应往往比绝对效应更接近常数。

RR 还有一个让公众最容易接受的变体——疫苗效力(Vaccine Efficacy, VE):

$$VE = 1 - RR$$

疫苗三期试验报告 “VE = 95%",意思就是 RR = 0.05——打了疫苗的人感染风险是对照组的 5%。这是所有流行病学指标里最出圈的一个,连出租车司机都听得懂。

RR 的局限:不能算。是的,不是"算不准”——是根本算不出来。病例对照研究(case-control study)里,研究者先根据结局(有病/没病)来抽样,再回溯暴露史。因为在抽样阶段就已经人为控制了病例和对照的比例,你无法从样本中估计 $p_0$ 或 $p_1$。没有 $p_0$ 和 $p_1$,就没有 RR。

这是 OR 上场的时刻。

OR:当"无法计算风险"的时候

Odds 不是 Risk。Risk 是 $p$——概率的直接表达。Odds 是 $\frac{p}{1-p}$——概率和它的补集之间的比值。

如果一件事发生的概率是 0.67,它的 odds 是 $\frac{0.67}{0.33} \approx 2$。说人话:发生和没发生的比是 2:1。

OR 是两组 odds 的比值。治疗组 odds 除以对照组 odds。它不告诉你"发生了多少",它告诉你"发生与不发生的比在两个组之间差了几倍"。

OR 有一个 RR 不具备的对称性:如果对"发生事件"的 OR 是 0.5,那么对"不发生事件"的 OR 恰好是 2。RR 没有这个性质——因为 RR 依赖于 baseline risk 的方向性。

这种对称性不是数学游戏。在 case-control study 里,研究者先找病例再找对照,无法计算绝对风险。但 odds 不同——odds 的比值在 case-control 和 cohort study(队列研究)里是一样的(在满足一定假设的前提下)。这意味着,即使你无法估计 $p_0$ 和 $p_1$,你仍然可以估计 OR。

OR 是 case-control study 的通行证。

三者的关系,和 OR→RR 的近似

$$OR = \frac{RR \cdot (1-p_0)}{1 - RR \cdot p_0}$$

这个等式告诉你三件事。

第一,当 $p_0$ 很小时,$1 - p_0 \approx 1$,分母中 $RR \cdot p_0 \approx 0$,所以 OR ≈ RR。这就是 rare disease assumption(罕见病假设)。疾病越罕见,OR 和 RR 越接近。

第二,当 $p_0$ 不小的时候——比如 $p_0 > 0.1$——OR 和 RR 的差距可以非常大。如果 $p_0 = 0.3$,RR = 2.0,则 OR = $(2 \times 0.7) / (1 - 0.6) = 3.5$。OR 几乎比 RR 大了一倍。

这就是第三件事:当 $p_1 > p_0$ 时,OR ≥ RR ≥ RD(或 OR ≤ RR ≤ RD,如果方向相反)。OR 永远是三个里"看起来最夸张"的那个。

这个"夸大"在医学文献里是一个系统性问题。我读到过一篇系统综述,发现研究者倾向于在摘要里报告 OR 而不是 RR——因为 OR 的数字更大,视觉冲击力更强。一个 RR = 1.5 的效应,写成 OR = 1.8 看起来就更"显著"。

选 OR 还是 RR,不是纯技术决策。

★ 核心:为什么样本 RR 不是真正的 RR

这是整篇文章最想讲的一节。

你从 2×2 表算出 $RR_{observed} = \frac{a/(a+b)}{c/(c+d)}$,然后管它叫"Risk Ratio"。但它不是真的 RR。真的 RR 是你永远看不到的东西。

第一步:潜在结果框架

Neyman-Rubin potential outcomes framework(潜在结果框架)假设每个人有两个潜在结果:

  • $Y(1)$:如果接受治疗,这个人会发生什么。
  • $Y(0)$:如果不接受治疗,这个人会发生什么。

Individual causal effect(个体因果效应)是 $Y(1) - Y(0)$。问题是,你永远只能看到一个——要么他接受治疗了,你看到 $Y(1)$,但 $Y(0)$ 在另一个平行世界里;要么他没接受治疗,你看到 $Y(0)$,但 $Y(1)$ 在另一个平行世界里。

这叫 fundamental problem of causal inference(因果推论的根本问题)。

第二步:真正的 causal risk ratio

在反事实(counterfactual)的世界里,causal RR 的定义是:

$$RR_{causal} = \frac{E[Y(1)]}{E[Y(0)]} = \frac{P(Y(1)=1)}{P(Y(0)=1)}$$

分子:同一群人在治疗条件下的风险。分母:同一群人在对照条件下的风险。

是同一群人。在两个反事实世界中。

第三步:你的 2×2 表算出来的是什么

$$RR_{observed} = \frac{a/(a+b)}{c/(c+d)}$$

分子估计的是 $E[Y(1) \mid Z=1]$——不是全体接受治疗的潜在结果,而是实际被分到治疗组的那群人的潜在结果。

分母估计的是 $E[Y(0) \mid Z=0]$——不是全体的对照潜在结果,而是实际被分到对照组的那群人的潜在结果。

治疗组和对照组不是同一群人。这是关键。

第四步:什么条件下 $RR_{observed} \approx RR_{causal}$

Exchangeability(可交换性):

$$E[Y(1) \mid Z=1] = E[Y(1) \mid Z=0] = E[Y(1)]$$$$E[Y(0) \mid Z=1] = E[Y(0) \mid Z=0] = E[Y(0)]$$

用人话讲:如果把治疗组的人放到对照组里去,他们的潜在结果 $(Y(0))$ 和对照组的人一样。如果把对照组的人放到治疗组里,他们的潜在结果 $(Y(1))$ 和治疗组的人一样。

这句话成立的时候,$RR_{observed}$ 才等于 $RR_{causal}$。

Randomization(随机化)通过设计来确保 exchangeability 成立(在期望上)。不是靠"假设",是靠抛硬币。

在 observational study(观察性研究)中——没有随机化——exchangeability 通常不成立。治疗组和对照组在基线特征、预后因素、健康意识等各方面都不同。这时候 $RR_{observed}$ 不等于 $RR_{causal}$。它是一个描述性统计——它描述了这两组人(不同的人)之间的差异——但它不是因果效应。

你的样本 RR 最多只是一张相关性的快照。要把快照当因果,需要随机化替你说话。

第五步:如何读临床文献

你现在拿到一篇论文,作者报告 RR = 0.7,p < 0.05,“治疗使风险降低了 30%"。

第一步,看研究设计。是 RCT 还是观察性研究?

RCT(适度的随机化做得好):RR 可以被解释为因果效应——但还需要检查 ITT vs PP、脱落率、盲法(blinding)等。

观察性研究:先翻方法部分。作者有没有处理 confounding(混杂)?用了 propensity score matching(倾向性评分匹配)?instrumental variable(工具变量)?difference-in-differences(双重差分)?如果什么都没做,直接跑了一个 logistic regression,然后报告 “adjusted RR = 0.7”——那这篇文章告诉你的是相关,不是因果。它可以在 Discussion 里写一大堆"可能"“或许"“潜在”——但结论段里那行粗体数字不是你想要的答案。

三个统计量的选择指南

RCT 报告: RD 和 RR 常同时出现。RD 提供绝对获益——“每治疗 100 人,多救 3 个”,对临床决策最有用。RR 提供相对效应——“风险降低 30%",对跨研究比较最有用。

Case-control study: 只能报告 OR。不要试图把 OR 转换成 RR——除非事件率确实很低(rare disease assumption 成立)。把 OR 当 RR 解读,是医学文献里最常见的统计滥用法之一。

Meta-analysis: RR 和 OR 都常见,但一条铁律——同一个 meta-analysis 里不要混用。RR 和 OR 是不同的效应量(effect measure),不能像 apples 一样放在一个森林图(forest plot)里合并。选一个,从头用到尾。

监管视角: FDA 和 EMA 通常关注 RD——不是因为他们不关心相对效应,而是因为获益-风险评估(benefit-risk assessment)必须在绝对尺度上进行。“风险降低 30%” 听起来很美,但如果基线风险只有 1%,绝对获益就是 0.3%——NNT = 333。你是否愿意为了 333 个人治 1 个人,承担治疗带来的副作用?这个问题的答案只能在绝对尺度上给。


写到最后,发现这整篇文章想说的其实就一句话:

你的 2×2 表只能告诉你这两组人之间发生了什么。它不能告诉你——在没有额外假设的情况下——如果同一群人接受了另一种治疗会发生什么。

RR、OR、RD 都是好工具。但它们都是描述性工具。因果是另一个层面的东西——它要求的不只是公式,还有设计。

随机化。exchangeability。没有这两样,你的 RR 只是一个相关性。而相关性遍地都是。

因果只有一条路。

TouchingFish.top