教程 ·
生存分析用 AI 一句话完成 — Kaplan-Meier/Cox 回归/HR 值/APA 医学报告全攻略
生存分析完整教程:用 AI 一句话完成 Kaplan-Meier 曲线、Log-rank 检验、Cox 比例风险回归,自动输出 HR[95%CI]、中位生存期、比例风险假设检验,并给出符合 APA/医学期刊格式的论文报告模板。
随访数据里有删失、有退出、有时间——这三个特点让普通 t 检验和回归全部失效。生存分析是处理"时间到事件"数据的专门武器,但 SPSS 的操作界面让人头疼。这篇文章教你用 AI 一句话跑完 KM 曲线、Log-rank 检验、Cox 回归,HR 值和 APA 句式 60 秒全齐。
随访数据为什么不能用普通回归分析
医学研究里有一类数据极其常见,却让大多数统计入门教材避而不谈:
- 一批癌症患者接受治疗,有些在随访结束前死亡(事件发生),有些随访期满仍然存活,有些中途失访(删失)
- 临床试验比较新旧方案的复发风险,主要终点不是某个数值,而是"从治疗开始到复发的时间"
- 队列研究追踪 5 年,关心的不是患病率,而是各组的"中位无事件生存时间"
这类数据叫做时间到事件数据(Time-to-Event Data),有两个核心特征:
- 结局变量是时间,不是连续分值或二分类是/否——普通线性回归假设因变量服从正态分布,对时间变量完全不适用。
- 存在删失(Censoring)——部分观察对象在随访结束时还没发生目标事件。这些数据不能直接丢弃,丢弃会系统性低估生存时间;也不能当作"未发生事件"处理,因为他们实际上只是"尚未发生"。
这两个特点决定了,处理随访数据必须使用生存分析(Survival Analysis)。
然而在 SPSS 里实际操作生存分析,仅是找到菜单就要费一番力气:分析 → 生存 → Kaplan-Meier 或 Cox 回归,然后分别在对话框里指定时间变量、状态变量、定义事件编码、选择检验方法……换一组数据就要重来一遍,出现错误提示时也不知道是数据问题还是参数问题。
ChatSRS 把这个流程压到一句话。
案例数据:肺癌术后辅助化疗随访队列
假设你手上有一份肿瘤科临床随访数据,共 320 名非小细胞肺癌(NSCLC)术后患者,接受不同的辅助化疗方案后进行了最长 60 个月的随访:
os_months 总生存时间(月,从手术结束到死亡或随访截止)
os_event 生存状态(0 = 删失/存活,1 = 死亡)
chemo_group 化疗方案(A = 标准铂类,B = 靶向联合铂类)
age 年龄(岁,连续变量)
stage 分期(II / III,分类变量)
ecog ECOG 体能评分(0-1 / 2,分类变量)
smoking 吸烟史(0 = 无,1 = 有)
研究问题:
- 两种化疗方案的总生存期(OS)有无显著差异?(Kaplan-Meier + Log-rank)
- 控制混杂因素后,哪些因素是独立预后因素?效应量 HR 是多少?(Cox 回归)
这是典型的单中心前瞻性随访队列场景,在肿瘤学、心血管科、流行病学类论文中极其普遍,与博客 08 中以多种医学研究类型作综述式介绍的视角不同——本文聚焦于生存分析方法本身的原理、读表、报告句式。
生存分析核心概念
在跑模型之前,先把五个核心概念搞清楚,读输出结果才不会一头雾水。
1. 删失(Censoring)
删失不是坏数据,是"观察不完整但信息有价值"的数据。常见的删失类型:
- 随访到期删失:研究结束时患者还活着,记为 event = 0
- 失访删失:患者中途失联,最后一次随访时间作为删失时间,event = 0
- 竞争事件删失:目标事件是"癌症死亡",但某患者死于心血管意外,这算作对癌症死亡的删失
生存分析对删失数据的处理方式:把删失时间之前的信息全部利用(该患者到删失为止是"存活"的),但不假设删失之后会发生什么。这称为右删失(Right Censoring),是最常见的类型。
2. 生存函数 S(t)
生存函数 S(t) 表示个体在时间 t 时刻仍未发生目标事件的概率:
S(t) = P(T > t)
- t = 0 时,S(0) = 1(所有人刚入组时都"存活")
- 随着 t 增大,S(t) 单调递减
- Kaplan-Meier 法在每个实际事件时间点更新 S(t),形成阶梯状曲线
3. Kaplan-Meier 曲线与中位生存期
Kaplan-Meier(KM)曲线是生存函数 S(t) 的非参数估计,不需要假设生存时间服从任何分布。
中位生存期(Median Survival Time)是 S(t) 下降到 0.5(50%)时对应的时间,即"一半以上个体发生事件所需的时间"。若随访结束时超过 50% 的个体仍未发生事件,则中位生存期为"未达到(Not Reached)",这通常是好消息——说明大多数患者还活着。
4. Log-rank 检验
Log-rank 检验(也写作 log-rank test)用于比较两组或多组 KM 曲线是否有统计学差异。它不比较单个时间点的生存率,而是全程比较两条曲线在各事件时间点的期望 vs 观察事件数之差,输出一个卡方统计量和 p 值。
- p < .05:各组生存曲线整体有显著差异
- p >= .05:无法拒绝各组生存分布相同的原假设
Log-rank 检验对早期差异不敏感、对持续差异更敏感,是比较两条 KM 曲线的首选方法。若两组曲线在早期就迅速分离然后趋于平行,可考虑 Wilcoxon(Breslow)检验作为补充。
5. Cox 比例风险回归与 HR 值
Cox 回归(Cox Proportional Hazards Model)是生存分析里的"多因素分析工具",类似于普通回归,但因变量是"瞬时风险率"(hazard function),而不是某个具体结局值。
Cox 回归的核心输出是风险比(Hazard Ratio,HR):
HR = exp(回归系数 b)
- HR > 1:该变量是风险增加因素(危险因素)。HR = 2.0 表示控制其他变量后,该组个体在任何时刻的瞬时死亡风险是参照组的 2.0 倍。
- HR < 1:该变量是保护因素。HR = 0.6 表示风险降低为参照组的 60%,即风险降低 40%。
- HR = 1(或 95% CI 包含 1):该变量与生存风险无统计学关联。
Cox 模型的核心假设是比例风险假设(Proportional Hazards Assumption,PH 假设):两组之间的风险比 HR 在整个随访期间保持恒定,即两条危险函数之比是常数。如果某个变量的效应随时间变化(例如早期保护、晚期无效),比例风险假设就不成立,需要用 Schoenfeld 残差检验来诊断。
用 AI 一句话完成生存分析
在 chatsrs.com 上传随访数据后输入:
"以 os_months 为生存时间、os_event 为生存状态(1 = 死亡,0 = 删失),按 chemo_group 分组,做以下完整分析:
- Kaplan-Meier 生存曲线(含 95% CI 阴影),输出各组中位生存期 + 1/3/5 年生存率
- Log-rank 检验(整体 + 两两比较)
- 多因素 Cox 比例风险回归,协变量纳入 age、stage、ecog、smoking,输出 HR、95% CI、p 值三线表
- Schoenfeld 残差检验比例风险假设(全局 + 各变量)
- HR 森林图
- APA/医学格式中文文字描述"
ChatSRS 底层调用 R 的 survival 和 survminer 包,或 Python 的 lifelines 库,60 秒输出以下完整结果。
输出结果怎么读
输出 1: Kaplan-Meier 生存表
表 1 各化疗组总生存期 Kaplan-Meier 分析(N = 320)
组别 n 事件数 删失数 中位 OS(月) 95% CI 1年OS% 3年OS% 5年OS%
方案 A 162 98 64 28.4 [23.8, 33.1] 78.4% 41.6% 26.3%
方案 B 158 61 97 未达到 — 89.6% 62.8% 47.5%
Log-rank 检验:chi^2(1) = 18.74,p < .001
读表要点:
| 字段 | 含义 |
|---|---|
| 事件数 | 随访期间发生死亡的人数,分子 |
| 删失数 | 随访结束时存活或失访的人数 |
| 中位 OS | S(t) 下降到 0.5 时对应的月数;"未达到"表示超过 50% 的 B 组患者到随访结束仍存活 |
| 95% CI | 中位生存时间的置信区间,用 Greenwood 公式计算 |
| 1/3/5 年 OS% | 对应时间点的 KM 生存率估计值 |
B 组中位 OS"未达到"而 A 组为 28.4 月,加上 Log-rank p < .001,说明 B 方案在总生存上具有显著优势。
输出 2: Cox 比例风险回归三线表
表 2 总生存期多因素 Cox 比例风险回归(N = 320)
变量 HR 95% CI p
化疗方案 B(vs A) 0.52 [0.37, 0.73] <.001 ***
年龄(每岁) 1.03 [1.01, 1.05] .003 **
分期 III(vs II) 2.18 [1.54, 3.08] <.001 ***
ECOG 2(vs 0-1) 1.84 [1.28, 2.65] .001 **
吸烟史(有 vs 无) 1.31 [0.93, 1.85] .125
模型整体:似然比 chi^2(5) = 68.42,p < .001
C-index: 0.714(95% CI: 0.674, 0.754)
读表要点:
- 方案 B 的 HR = 0.52:控制年龄、分期、ECOG、吸烟史后,B 组任意时刻的死亡风险是 A 组的 52%,即降低了 48%(1 - 0.52 = 0.48),差异极显著。
- 分期 III 的 HR = 2.18:III 期患者的死亡风险是 II 期的 2.18 倍,是效应量最大的预后因素。
- 吸烟史 HR = 1.31,95% CI 包含 1,p = .125:吸烟史在控制其他变量后不再独立显著,不作为本模型的独立预后因素。
- C-index = 0.714:模型整体区分能力中等偏良(0.7 是通常的门槛,0.8 以上为良好)。
输出 3: 比例风险假设检验(Schoenfeld 残差)
表 3 比例风险假设检验结果
变量 rho chi^2 p 判定
化疗方案(B vs A) -0.031 0.48 .489 成立
年龄 0.024 0.29 .591 成立
分期(III vs II) -0.018 0.17 .679 成立
ECOG(2 vs 0-1) 0.041 0.85 .357 成立
吸烟史 0.019 0.19 .665 成立
全局检验 — 1.72 .887 成立,Cox 模型适用
全局检验 p = .887,各变量 p 值均远大于 .05,说明比例风险假设成立,Cox 模型对本数据适用。这一步是 Cox 回归的必检项,审稿人通常会要求报告。
若比例风险假设不成立(某变量 p < .05)怎么办?见 FAQ 部分。
输出 4: 可视化
[截图位置 1:KM 生存曲线,A/B 两组阶梯曲线 + 95% CI 阴影 + Number at Risk 表格 + Log-rank p 值标注]
[截图位置 2:Cox 回归 HR 森林图,各变量 HR 点 + 95% CI 横条图,参考线 HR = 1,p 值标注]
[截图位置 3:Schoenfeld 残差散点图,x 轴为时间,y 轴为残差,各变量一张,水平趋势表示假设成立]
论文里怎么报告(APA 7th / 医学期刊格式)
生存分析的报告要求比普通回归更细:需要同时报告中位生存期(含 95% CI)、Log-rank 统计量、Cox 模型的 HR(含 95% CI)以及比例风险假设检验结果。
以下给出可直接复制进论文的句式模板:
方法节(统计方法段落):
采用 Kaplan-Meier 乘积极限法估计各组总生存函数,以 Log-rank 检验比较各组生存曲线的差异。进一步采用 Cox 比例风险回归模型分析总生存期的独立影响因素,协变量包括年龄、肿瘤分期、ECOG 体能状态评分和吸烟史。以 Schoenfeld 残差检验验证比例风险假设(PH 假设)。统计分析使用 R 4.4(survival 包、survminer 包),检验水准 alpha = 0.05(双尾)。
结果节(Kaplan-Meier + Log-rank 部分):
Kaplan-Meier 生存分析结果显示,方案 B 组中位总生存期未达到(> 60 个月),方案 A 组中位总生存期为 28.4 个月(95% CI [23.8, 33.1])。Log-rank 检验显示两组总生存曲线存在显著差异,chi^2(1) = 18.74,p < .001,方案 B 的 1 年、3 年、5 年生存率(89.6%、62.8%、47.5%)均显著高于方案 A(78.4%、41.6%、26.3%)。
结果节(Cox 回归部分):
多因素 Cox 比例风险回归分析显示,模型整体有统计学意义,似然比 chi^2(5) = 68.42,p < .001,C-index = 0.714(95% CI [0.674, 0.754])。Schoenfeld 残差全局检验显示比例风险假设成立,chi^2(5) = 1.72,p = .887。
在控制协变量的条件下,化疗方案 B 相对方案 A 可显著降低死亡风险(HR = 0.52,95% CI [0.37, 0.73],p < .001),即 B 方案患者任意时刻的死亡风险比 A 方案降低约 48%。肿瘤分期(III vs II:HR = 2.18,95% CI [1.54, 3.08],p < .001)和 ECOG 体能状态(2 vs 0-1:HR = 1.84,95% CI [1.28, 2.65],p = .001)是独立预后不良因素。年龄每增加 1 岁,死亡风险增加 3%(HR = 1.03,95% CI [1.01, 1.05],p = .003)。吸烟史在多因素模型中不构成独立预后因素(HR = 1.31,95% CI [0.93, 1.85],p = .125)。
报告格式规范总结:
| 要素 | 格式示例 |
|---|---|
| 中位生存期 | 中位 OS = 28.4 个月(95% CI [23.8, 33.1]) |
| Log-rank 统计 | chi^2(1) = 18.74,p < .001 |
| HR + 95% CI | HR = 0.52,95% CI [0.37, 0.73] |
| HR 的 p 值 | p < .001(小数点前不写 0) |
| C-index | C-index = 0.714(95% CI [0.674, 0.754]) |
| PH 假设检验 | Schoenfeld 全局检验:chi^2(5) = 1.72,p = .887 |
| 模型整体 | 似然比 chi^2(5) = 68.42,p < .001 |
医学期刊(NEJM / Lancet / JCO)和 APA 7th 均要求 HR 与 95% CI 同时报告,置信区间用方括号 [ ],p 值小数点前不加 0(写 p = .001,不写 p = 0.001)。中位生存期"未达到"时,应明确说明"中位 OS 未达到(随访期 > 60 个月)",而非空白或写 NR 不加解释。
常见问题 FAQ
Q1:删失数据是什么?为什么不能直接丢弃?
A:删失(Censoring)是指随访结束时目标事件尚未发生的观察对象,包括:研究截止日期前仍存活(to期删失)、中途失访、死于其他原因(竞争事件删失)。这些个体的随访时间内提供了"至少存活了这么久"的有效信息。若丢弃,会把"活得久的人"系统性剔除,严重低估真实生存时间;若当作"事件发生"处理,又会虚增事件数、夸大死亡风险。生存分析通过 Kaplan-Meier 乘积极限法,把删失时间之前的信息全部利用,在每个实际事件时间点重新计算"处于风险中"的人数,从而得到无偏估计。
Q2:Kaplan-Meier 和 Cox 回归有什么区别?什么时候用哪个?
A:两者互补,不是替代关系。
| 对比 | Kaplan-Meier | Cox 回归 |
|---|---|---|
| 用途 | 描述生存函数,比较组间差异 | 量化多个因素的独立影响 |
| 分组变量数 | 通常 1 个(或少数几个) | 可纳入多个协变量 |
| 控制混杂 | 不能控制混杂 | 可同时控制多个混杂变量 |
| 输出指标 | 中位生存期、生存率、Log-rank p | HR(风险比)+ 95% CI |
| 假设 | 非参数,无分布假设 | 需满足比例风险假设 |
规范做法:先用 KM 曲线做描述和初步比较(Log-rank 检验),再用 Cox 回归做多因素分析(控制混杂,给出 HR),两者在医学论文中通常配对使用。
Q3:HR 怎么解读?HR = 0.52 具体是什么意思?
A:HR(风险比,Hazard Ratio)是 Cox 回归的核心效应量,表示控制其他变量后,某组在任意时刻发生目标事件的瞬时风险是参照组的多少倍。
- HR = 0.52:该组任意时刻的死亡风险是参照组的 52%,即风险降低了 48%(1 - 0.52 = 0.48)
- HR = 2.18:该组死亡风险是参照组的 2.18 倍,风险升高了 118%
- HR 的 95% CI 不含 1(即下限 > 1 或上限 < 1)才是统计显著
需要注意:HR 衡量的是瞬时相对风险,不等于在某个具体时间点的生存概率之比,也不等于相对危险度(RR),在比例风险假设成立时才可以这样解读。
Q4:比例风险假设(PH 假设)不满足怎么办?
A:当 Schoenfeld 残差检验发现某个变量的 p < .05,说明该变量对生存风险的效应随时间变化(非比例风险)。常见处理方案:
- 时间分层 Cox 回归:将违背假设的变量放入分层项(
strata()),不估计其 HR,仅作为分层调整变量,其余变量仍输出 HR。适合"不关心该变量 HR,只想控制其混杂"的情形。 - 时间依赖协变量:在 Cox 模型中加入该变量与时间的交互项
X * t,量化效应随时间的变化趋势。 - 改用参数生存模型:如 Weibull 回归、指数模型,这类模型对时间效应有明确假设,在某些情形下拟合更好。
- 竞争风险模型(Fine-Gray):若同时存在竞争事件,Fine-Gray 次发病率回归是更合适的方法。
在 ChatSRS 中告知"比例风险假设对 XX 变量不成立,请用分层 Cox 回归处理"即可自动切换。
小结
生存分析处理的是医学随访和时间到事件数据,三个核心步骤:
- KM 曲线 + Log-rank 检验:描述各组生存分布,确认组间是否有显著差异(报告中位生存期和 Log-rank chi^2 / p)
- 多因素 Cox 回归:控制混杂,识别独立预后因素,量化 HR 及 95% CI
- Schoenfeld 残差检验:验证比例风险假设,确认 Cox 模型的适用性
论文报告时,HR 和 95% CI 必须同时报告,缺一不可;中位生存期"未达到"时要明确说明语境而非空白。ChatSRS 把全部流程压到一句话,自动输出 KM 表、Log-rank 统计、Cox 三线表、比例风险假设检验结果和 APA 格式文字描述,可直接复制进论文。
相关阅读
- 医学问卷数据 AI 分析 — ROC/生存分析/SCI 标准三线表
- 二元 Logistic 回归用 AI 一句话完成 — OR 值、ROC、APA 报告全攻略
- 毕业论文统计分析救星 — 从 SPSS 苦力到 AI 对话式
本文首发于 ChatSRS 官方博客。如有问题或反馈,欢迎在 ChatSRS 站内 [用户中心 -> 帮助与反馈] 联系我们。