统计百科 ·
HR 风险比怎么解读 — 生存分析 Cox 回归里的 HR、与 OR/RR 的本质区别和报告模板
统计百科:HR(Hazard Ratio)风险比完整指南——HR 的定义与瞬时风险含义、与 OR/RR 的本质区别(三者不可互换)、Cox 回归输出的 HR 解读、95% CI 判断显著性、比例风险假设检验,给出医学期刊和 APA 格式的 HR 标准报告模板。
医学论文里 HR = 0.58 出现在 Cox 回归结果里,有人直接说"风险降低了 58%"——这是错的。还有人把 HR 和 OR 混用,理由是"都是比值,差不多"——这也是错的。HR 有它独特的含义、独特的来源、独特的前提假设,和 OR、RR 有根本区别,不可互换。本文专门讲清楚 HR 是什么、怎么读、怎么报告,以及和 OR/RR 的本质差异。
为什么 HR 是医学论文里最容易被误读的指标之一
在临床研究和流行病学文献里,你会看到类似这样的句子:
"与安慰剂组相比,治疗组总体生存期(OS)的 HR = 0.72(95% CI: 0.58, 0.89),p = .003,降低了 28% 的死亡风险。"
这句话对不对?大体上是对的,但隐藏着一个前提——比例风险假设成立。一旦这个假设不成立,HR 的解读就会出问题。
更常见的错误是在非生存数据里误用 HR,或把 HR 当 OR 或 RR 来解读。三者看起来都是"比值",数值可能相近,但含义、计算方式、适用数据类型完全不同。
一、HR 是什么:时间依赖的瞬时风险比
HR 的严格定义
**HR(Hazard Ratio,风险比/危险比)**来自生存分析中的 Cox 比例风险回归(Cox Proportional Hazards Regression)。
它的定义是:在同一时刻 t,处理组(如治疗组)发生事件的瞬时风险(hazard),除以对照组(如安慰剂组)发生事件的瞬时风险。
用公式表示:
HR = h_1(t) / h_0(t)
其中:
h_1(t) = 处理组在时刻 t 的瞬时风险函数
h_0(t) = 对照组(参照组)在时刻 t 的瞬时风险函数
t = 时间(随访时间、生存时间)
**瞬时风险(Hazard)**是一个时间点上"已经存活到这个时刻的个体,在接下来极短时间内发生事件的概率密度"——本质上是条件速率,不是普通意义上的"概率"。
Cox 比例风险回归的核心假设
Cox 回归之所以叫"比例风险",是因为它有一个关键假设:两组的 hazard function 在任意时刻的比值是一个常数,即 HR 不随时间变化。
用公式表示:
Cox 模型:h(t|X) = h_0(t) × exp(β_1 X_1 + β_2 X_2 + ...)
对于二分类变量 X(0 = 对照,1 = 处理):
HR = exp(β_1) (对系数 β 做指数变换)
"比例风险假设"意味着 exp(β_1) 在各时刻 t 保持不变。
这个假设叫做比例风险假设(Proportional Hazards Assumption,PH 假设)。它是 HR 能被解释为一个固定"比值"的前提。如果假设不成立(比如某个治疗早期有效但晚期失效),就不能用单一 HR 总结效应,需要分段报告或用其他模型。
二、HR 的三种核心含义
HR = 1:无差异
处理组与对照组在任意时刻的瞬时风险相同,暴露因素与事件发生率无关。
HR > 1:危险因素(风险增加)
处理组的瞬时风险高于对照组。HR = 1.5 表示处理组在任意时刻的瞬时风险是对照组的 1.5 倍。
HR < 1:保护因素(风险降低)
处理组的瞬时风险低于对照组。HR = 0.72 表示处理组的瞬时风险只有对照组的 72%,即降低了 28%(1 - 0.72 = 0.28)的瞬时风险。
快速参考表
| HR 值 | 解读 | 通俗表述 |
|---|---|---|
| > 1 | 危险因素 | 暴露组瞬时风险更高 |
| = 1 | 无关联 | 两组风险相同 |
| < 1 | 保护因素 | 暴露组瞬时风险更低 |
| 0.72 | 保护效应 | 风险降低 28%(1 - 0.72) |
| 1.50 | 危险效应 | 风险增加 50%(1.50 - 1) |
| 0.58 | 保护效应 | 风险降低 42%(1 - 0.58) |
精确表述规范:应说"处理组的瞬时风险是对照组的 0.72 倍",或"降低了 28% 的瞬时风险"。不应直接说"降低了 28% 的风险",因为"风险"一词会与 RR/OR 混淆;但医学写作中"降低了 X% 的事件风险"已成约定俗成的简化表达,在方法章节说清楚用的是 Cox 回归、HR 来自时间-事件数据即可。
三、HR 与 OR / RR 的本质区别
这是本文最关键的部分,也是最容易混淆的地方。
三者的核心差异
| 指标 | 全称 | 来源 | 时间依赖 | 适用数据 |
|---|---|---|---|---|
| HR | Hazard Ratio 风险比 | Cox 比例风险回归 | 是(瞬时速率之比) | 时间-事件数据(有随访时间 + 结局状态) |
| OR | Odds Ratio 优势比 | Logistic 回归 / 病例对照研究 | 否(截面指标) | 二分类结局(无随访时间) |
| RR | Risk Ratio / Relative Risk 相对危险度 | 队列研究 / RCT 直接计算 | 否(累积发生率之比) | 有时间窗口的发生率(无删失处理) |
关键区别逐条解析
区别一:HR 是时间依赖的,OR 和 RR 不是
- OR 衡量某个截面时间点(如调查时)的优势之比,不涉及随访时间。一个横断面研究给不出 HR,只能给 OR。
- RR 是一段固定时间窗口内两组累积发生率之比(如 5 年发病率之比),不考虑发病的时间分布(删失)。
- HR 是整个随访期间任意时刻瞬时风险的比值,是"每个时刻都在比较"的动态指标,且能正确处理删失数据。
区别二:三者数值不相等,不能互换
即使研究同一种关联,三者数值会有所不同(有时差异可以很大):
假设随访 5 年,处理组 5 年累积事件率 = 25%,对照组 = 40%
RR = 0.25 / 0.40 = 0.625
OR = (0.25/0.75) / (0.40/0.60) = 0.333 / 0.667 = 0.500
HR = ? (本例 HR ≈ 0.56;HR 的数值取决于事件的时间分布,与 OR/RR 无固定大小顺序)
在事件率较低(< 10%)时,三者数值接近(OR ≈ RR ≈ HR 近似),可以相互参考;但事件率高时,三者差距显著,不能互换。
区别三:删失数据处理方式不同
临床随访中经常有"删失"(Censored):患者失访、研究结束时尚未发生事件、因其他原因退出。
- Cox 回归 / HR:正确利用删失信息(用"部分似然"估计),不丢失删失观测的信息。
- RR:忽略删失,或简单排除删失观测,导致有偏估计。
- OR(Logistic 回归):把时间到事件数据简化为"最终是否发生"的二分类,完全丢失"什么时候发生"的时间信息,也忽略删失。
结论:有随访时间数据 + 存在删失 → 必须用 Cox 回归报告 HR,不能用 Logistic 回归的 OR 替代。
三者的选择规则
研究数据有随访时间?
是 → 是否有删失数据(失访/研究结束时存活)?
是 → Cox 回归 → 报告 HR
否 → 可用 Cox/log-rank,或直接计算 RR(用累积发生率)
否 → 是否有比较的两组?
是 → 二分类结局:用 Logistic 回归 → 报告 OR(病例对照/横断面)
或 队列研究 → 报告 RR(发生率之比)
否 → 描述统计(患病率等)
四、Cox 回归输出中 HR 的解读
单个 HR 的解读
Cox 回归系数 β 的指数变换即为 HR:
HR = exp(β)
对于连续型预测变量(如年龄):
- HR = 1.04(年龄每增加 1 岁,瞬时风险增加为原来的 1.04 倍,即增加 4%)
- 如果想报告"每增加 10 岁"的 HR:HR_10 = exp(10 × β) = HR^10
对于二分类变量(如治疗 vs 安慰剂,0/1 编码):
- HR = exp(β_治疗) 即为治疗组 vs 安慰剂组的 HR
对于多分类变量(如多个剂量组):
- 需设定参照类别,HR 为各组相对参照组的瞬时风险比
典型 Cox 回归输出示例
表 1 Cox 比例风险回归分析(N = 380,事件 = 心血管事件,随访中位数 = 24 周)
变量 HR(95% CI) p
治疗组(新药 vs 安慰剂) 0.58(0.34, 0.98) .042 *
年龄(每岁) 1.04(1.01, 1.08) .018 *
合并症(有 vs 无) 2.12(1.20, 3.74) .009 **
基线 SBP(每 mmHg) 1.02(0.99, 1.05) .148
性别(男 vs 女) 0.94(0.57, 1.56) .812
注:HR = Hazard Ratio;95% CI 不含 1 提示达统计学显著性;
参照类别:安慰剂组、无合并症、女性。
Schoenfeld 残差全局检验:chi^2(4) = 2.18,p = .703(比例风险假设成立)。
逐行解读:
- 治疗组 HR = 0.58(95% CI [0.34, 0.98],p = .042):在任意时刻,新药组发生心血管事件的瞬时风险是安慰剂组的 0.58 倍,即降低了 42% 的瞬时风险。95% CI 不含 1,统计显著。
- 年龄 HR = 1.04:每增加 1 岁,瞬时风险增加 4%;该 HR 表示在控制其他变量后的独立效应。
- 合并症 HR = 2.12(95% CI [1.20, 3.74]):有合并症者瞬时风险是无合并症者的 2.12 倍,风险增加 112%。
- 基线 SBP HR = 1.02(95% CI [0.99, 1.05],p = .148):95% CI 包含 1,不显著,基线收缩压不是独立预测因子。
五、95% CI 判断显著性:HR 的规则
HR 和 OR 一样,判断统计显著性用 95% CI 是否包含 1:
| CI 情况 | 统计意义 |
|---|---|
| 95% CI 全部 > 1(如 [1.20, 3.74]) | 显著,危险效应(HR > 1) |
| 95% CI 全部 < 1(如 [0.34, 0.98]) | 显著,保护效应(HR < 1) |
| 95% CI 包含 1(如 [0.99, 1.05]) | 不显著(p >= .05) |
| CI 很宽(如 [0.12, 6.43]) | 精度低,样本量或事件数不足 |
EPE(每事件参数数,Events Per Parameter):Cox 回归中,每个预测变量对应的事件数建议 >= 10。事件数太少,HR 的 95% CI 会极宽,结果不稳定。
六、比例风险假设检验:HR 成立的前提
Cox 回归中 HR 有意义的前提是比例风险假设成立——即各预测变量的 HR 不随时间变化。这个假设需要检验,否则报告的 HR 可能是一个失真的平均值。
Schoenfeld 残差检验
最常用的方法是 Schoenfeld 残差与时间的相关性检验:
- 若 Schoenfeld 残差与 log(t) 无显著相关(p >= .05),则比例风险假设成立
- 全局检验(所有变量)和各变量的单独检验都应报告
Schoenfeld 残差检验(比例风险假设)
变量 chi^2 df p
治疗组 0.84 1 .360
年龄 0.47 1 .493
合并症 0.63 1 .427
基线 SBP 0.24 1 .624
全局检验 2.18 4 .703
结论:所有变量及全局检验均 p > .05,比例风险假设成立。
假设不成立时怎么办?
若某变量的 PH 假设不成立(如早期效果强、晚期效果弱),有几种处理方式:
- 时间分段 HR:分别报告"0-6 个月"和"6-24 个月"的 HR
- 加入时间交互项:在模型中加入 X × log(t) 交互项
- 限制平均生存时间差(RMST):不依赖 PH 假设的替代效应量
- ChatSRS 支持"检验比例风险假设,若不满足报告分段 HR 和 RMST"
七、在 chatsrs.com 一句话获得 HR 完整报告
打开 chatsrs.com,上传数据(含随访时间变量和事件状态变量)后输入:
"以 time_to_event(随访时间,周)和 event(1 = 发生,0 = 删失)为生存结局,以 trial_arm(治疗 vs 安慰剂)为主要预测变量,控制协变量 age、sex、bmi、baseline_sbp、comorbidity,做多因素 Cox 比例风险回归。 输出:
- Cox 回归 HR(95% CI)及 p 值汇总三线表(区分粗 HR 和调整 HR)
- Schoenfeld 残差检验(各变量 + 全局检验)
- Kaplan-Meier 生存曲线(两组,含 95% CI 阴影,Number at Risk 表)
- Log-rank 检验
- 医学期刊格式文字描述(含比例风险假设说明)"
ChatSRS 自动输出完整生存分析报告,包含 KM 曲线图、Cox 表格和 APA 格式文字,可直接复制进论文。
八、HR 报告模板(医学期刊 / APA 格式)
单个 HR 的规范报告格式
| 要素 | 格式 | 示例 |
|---|---|---|
| 调整 HR + CI | aHR = X.XX(95% CI: X.XX, X.XX) | aHR = 0.58(95% CI: 0.34, 0.98) |
| p 值 | p = .XXX 或 p < .001 | p = .042 |
| 效应方向描述 | "风险降低 XX%(1 - HR)" 或 "风险增加 XX%(HR - 1)" | "降低 42%(1 - 0.58)的心血管事件瞬时风险" |
| PH 假设说明 | 在方法章节说明 Schoenfeld 检验 | "比例风险假设经 Schoenfeld 残差检验证实成立" |
注意:APA 对 HR 的报告格式无专门规定,医学期刊普遍用以下格式,无前导零(如 HR = .58 而非 HR = 0.58 有争议,多数医学期刊保留前导零,与 APA 不同)。以目标期刊格式为准。
结果章节完整报告模板
多因素 Cox 比例风险回归结果(见表 X)显示,Schoenfeld 残差全局检验提示比例风险
假设成立(chi^2([df]) = X.XX,p = .XXX)。在控制[协变量列表]后,[处理变量]是
[结局事件]的独立[危险/保护]因素(aHR = X.XX,95% CI: [X.XX, X.XX],p = .XXX),
[处理组]发生[结局]的瞬时风险是[对照组]的 X.XX 倍 / [处理组]发生[结局]的瞬时风险
降低了 XX%(1 - X.XX)。
具体示例(保护效应):
多因素 Cox 比例风险回归分析结果显示,Schoenfeld 残差全局检验提示比例风险假设成立(chi^2(4) = 2.18,p = .703)。在控制年龄、性别、BMI、基线收缩压和合并症后,新药治疗是心血管事件的独立保护因素(aHR = 0.58,95% CI: 0.34, 0.98,p = .042),新药组发生心血管事件的瞬时风险降低了 42%(1 - 0.58)。
具体示例(危险效应):
有合并症患者的心血管事件瞬时风险是无合并症患者的 2.12 倍(aHR = 2.12,95% CI: 1.20, 3.74,p = .009)。
方法章节描述模板
时间-事件次要终点(首次心血管事件发生时间)采用 Kaplan-Meier 法估计各组生存函数,Log-rank 检验比较组间差异;多因素 Cox 比例风险回归估计调整风险比(aHR)及 95% CI,协变量包括年龄、性别、BMI、基线收缩压和合并症。比例风险假设以 Schoenfeld 残差法验证,全局检验 p >= .05 为假设成立。所有统计分析使用 ChatSRS(R 引擎,
survival包),显著性水平 alpha = .05,所有检验均为双侧。
常见 FAQ
Q1: HR 和 OR 的数值都是比值,能不能互换?
不能,绝对不能互换。 尽管两者的解读框架相似(> 1 危险,< 1 保护,CI 不含 1 显著),但计算方式和含义完全不同:
- OR 来自 Logistic 回归,是某时间点优势之比,不涉及时间,不处理删失
- HR 来自 Cox 回归,是任意时刻瞬时风险之比,时间依赖,正确处理删失
有随访时间数据时,用 Logistic 回归的 OR 会丢失时间信息,且不能处理删失,导致有偏估计。反过来,无随访时间的横断面数据也无法用 Cox 回归计算 HR。
Q2: HR < 1 时,说"风险降低了 X%"是什么意思?怎么计算?
HR = 0.72 → 风险降低了 1 - 0.72 = 28%(瞬时风险降低 28%)
注意公式方向:不是 0.72 - 1 = -0.28(方向不对),而是 1 - HR = 降低百分比。
HR = 1.50 → 风险增加了 1.50 - 1 = 50%(瞬时风险增加 50%)
Q3: HR 的 95% CI 越宽意味着什么?
CI 宽通常意味着事件数太少(样本量不等于事件数,删失的观测对估计精度贡献有限)。Cox 回归的精度主要由事件数决定,而非总样本量。建议:每个预测变量对应 >= 10 个事件(EPE >= 10),总事件数 < 50 时估计精度较低,结果需谨慎解读。
Q4: 比例风险假设不成立,HR 还有意义吗?
如果 PH 假设不成立(HR 随时间变化),单一 HR 值就是一个失真的"平均",会掩盖真实的时间依赖效应(比如早期有效、晚期无效的治疗)。
处理方案:
- 报告不同时间段的分段 HR(如"0-6 个月 HR = 0.42,6-24 个月 HR = 0.88")
- 用 RMST(限制平均生存时间)差值替代 HR 作为主要效应量,RMST 不依赖 PH 假设
- 在讨论中说明 PH 假设检验结果和方法的局限性
ChatSRS 支持在结果中自动标注 Schoenfeld 检验,如不满足则给出 RMST 替代分析。
相关阅读
- 临床试验数据分析全流程 — RCT 基线均衡/ITT/生存分析/CONSORT
- OR 值(优势比)在医学论文里的解读与报告
- 生存分析用 AI 一句话完成 — Kaplan-Meier/Cox 回归/HR 值全攻略
本文首发于 ChatSRS 官方博客。如有问题或反馈,欢迎在 ChatSRS 站内 [用户中心 -> 帮助与反馈] 联系我们。