dxy logo
首页丁香园病例库学术专区全部版块
搜索
登录

生存分析规范实践——Kaplan-Meier曲线与Cox回归在肺癌患者预后评估中的应用

用户头像
外科医师 · 发布于 01-25 · IP 天津天津
1671 浏览
icon墨点星沟 推荐

【摘要】 生存分析是肿瘤预后研究的核心统计方法,其中Kaplan-Meier(KM)曲线可直观比较不同组间生存差异,Cox比例风险回归能量化独立预后因素,二者联合应用是《Journal of Clinical Oncology》《Lancet Oncology》等SCI期刊肿瘤方向的高频收录范式。本文以180例肺癌患者随访数据为例,系统阐述KM曲线的绘制与log-rank检验、Cox比例风险回归的规范实操,重点强调截尾数据编码、模型前提验证及SCI绘图与报告规范,为临床科研工作者提供可直接复用的预后分析方案,助力提升研究质量与投稿通过率。

一、引言

肺癌是全球发病率与死亡率最高的恶性肿瘤之一,不同治疗方案(手术、化疗、靶向治疗)的疗效差异及预后影响因素筛查,是指导临床个体化诊疗的关键。生存分析作为评估肿瘤患者预后的核心工具,可充分利用随访数据中的时间-结局信息,尤其适用于存在截尾数据(失访、随访结束未发生结局)的场景。

KM曲线因能直观呈现各组生存轨迹,成为组间生存差异比较的首选方法;Cox比例风险回归可在控制混杂因素后,筛选独立预后因素,二者联合应用可实现“描述生存差异+揭示影响机制”的双重目标。然而,临床研究中常存在截尾数据编码错误、KM曲线绘制不规范、Cox回归忽视比例风险(PH)假设等问题,导致研究结论可信度不足。本文结合具体案例,规范生存分析的应用流程,为肺癌及其他肿瘤预后研究提供参考,后续还将拓展Cox回归PH假设验证进阶方法及Nomogram预测模型构建,助力提升研究深度。

二、研究设计与数据特征

(一)研究对象

回顾性纳入某院2019年1月至2022年1月确诊的原发性肺癌患者180例,其中男102例、女78例,平均年龄(62.5±9.8)岁;病理类型:腺癌98例,鳞癌62例,其他类型20例;肿瘤分期(AJCC第8版):Ⅰ-Ⅱ期76例,Ⅲ-Ⅳ期104例。患者均接受手术、化疗或靶向治疗,其中手术组60例、化疗组60例、靶向治疗组60例。

纳入标准:① 经病理组织学或细胞学证实为原发性肺癌;② 临床资料完整,明确治疗方案及肿瘤分期;③ 完成规律随访,随访起点为治疗开始时间,终点为患者死亡或末次随访时间。排除标准:① 合并其他恶性肿瘤;② 治疗前存在远处转移;③ 随访资料不完整,无法明确生存状态。本研究经医院伦理委员会批准(伦理批号:2024-042),所有患者或家属签署知情同意书。

(二)研究指标与数据编码

1. 结局指标:总生存期(OS),定义为“治疗开始至患者死亡或末次随访的时间”,单位为月;生存状态(二分类):1=死亡(结局发生),0=截尾(失访、随访结束未死亡或因非肿瘤原因死亡)。2. 分组变量:治疗方案(手术组、化疗组、靶向治疗组)。3. 协变量(Cox回归纳入因素):年龄(连续型,岁)、性别(二分类,男=1,女=0)、治疗方案(分类变量,以手术组为参照)、肿瘤分期(二分类,Ⅰ-Ⅱ期=0,Ⅲ-Ⅳ期=1)。

三、统计方法与规范实操

本研究采用R 4.3.0软件(survival包、ggsurvminer包)与SPSS 26.0软件分析,检验水准α=0.05。生存分析核心流程:KM曲线绘制与组间生存差异检验→Cox比例风险回归筛选独立预后因素→模型验证与结果报告。

(一)Kaplan-Meier曲线与log-rank检验

1. 适用条件

适用于分组资料的生存差异比较,无需满足分布假设,可处理截尾数据;log-rank检验用于比较多组生存曲线,核心假设为“各组生存曲线的风险函数成比例”。

2. 规范实操步骤

❶ R语言实操(含曲线绘制与检验):

# 1. 加载必备包

install.packages(c("survival", "ggsurvminer", "lmtest"))

library(survival)

library(ggsurvminer)

library(lmtest)


# 2. 数据预处理(缺失值采用多重插补法填补,截尾数据确认)

lung_data <- read.csv("肺癌患者生存数据.csv")

lung_data$生存状态 <- as.integer(lung_data$生存状态)

lung_data$治疗方案 <- factor(lung_data$治疗方案, levels = c("手术", "化疗", "靶向"))


# 3. 构建KM生存模型,进行log-rank检验

km_fit <- survfit(Surv(生存时间, 生存状态) ~ 治疗方案, data = lung_data)

# 提取各组中位生存期

surv_median <- surv_median(km_fit)

# log-rank检验结果

log_rank_test <- survdiff(Surv(生存时间, 生存状态) ~ 治疗方案, data = lung_data)

chi2_value <- round(log_rank_test$chisq, 2)

p_value <- round(1 - pchisq(log_rank_test$chisq, df = log_rank_test$df), 3)


# 4. 绘制符合SCI规范的KM曲线

sci_km_plot <- ggsurvplot(

km_fit,

data = lung_data,

pval = paste0("log-rank χ²=", chi2_value, ", P<", ifelse(p_value<0.001, "0.001", p_value)),

pval.coord = c(10, 0.05), # P值位置调整

legend = "right",

legend.labs = c("手术组(n=60)", "化疗组(n=60)", "靶向治疗组(n=60)"),

xlab = "随访时间(月)",

ylab = "生存率(%)",

ylim = c(0, 1),

break.time.by = 6, # X轴每6个月为一个刻度

surv.median.line = "hv", # 显示中位生存期横线与竖线

censor.shape = 3, censor.size = 2, # 截尾数据标记(小叉号)

palette = c("#3498DB", "#E67E22", "#2ECC71"), # 期刊常用配色

font.main = c(14, "bold", "black"),

font.x = c(12, "bold", "black"),

font.y = c(12, "bold", "black")

)

print(sci_km_plot)

print(paste0("靶向治疗组中位生存期:", round(surv_median$median[3], 1), "个月"))

❷ SPSS实操步骤:

  1. 导入数据,确认生存时间(数值变量)、生存状态(数值变量,1=死亡,0=截尾)、治疗方案(分类变量)编码正确;
  2. 进入【分析】→【生存分析】→【Kaplan-Meier】;
  3. 时间框移入“生存时间”,状态框移入“生存状态”,点击【定义事件】,在“单值”框输入1(定义死亡为结局事件);
  4. 因子框移入“治疗方案”,【选项】中勾选“生存表”“中位数生存时间”“生存函数”;
  5. 【绘制】中勾选“生存曲线”,选择“按因子分组”,点击【确定】,输出KM曲线及log-rank检验结果;
  6. 曲线优化:双击输出的曲线,调整坐标轴标签、配色、样本量标注,确保符合SCI规范。

3. 结果解读

180例肺癌患者中位随访时间28个月,期间共126例患者死亡,54例患者截尾(截尾率30.0%)。KM生存曲线显示,靶向治疗组生存轨迹显著高于手术组和化疗组;log-rank检验结果显示,三组患者生存率存在统计学差异(χ²=25.36,P<0.001)。进一步两两比较显示,靶向治疗组中位生存期(36.2个月)显著长于手术组(22.5个月)和化疗组(18.8个月),提示靶向治疗可显著改善肺癌患者生存预后。

(二)Cox比例风险回归分析

1. 适用条件与前提验证

适用条件:多因素预后分析,可同时纳入连续型与分类变量,处理截尾数据;核心前提为比例风险(PH)假设,即各协变量的风险比(HR)不随时间变化。

PH假设验证方法:

  1. 绘制Schonfeld残差图,若残差与时间无明显趋势,提示符合PH假设;
  2. 采用似然比检验,比较含时间交互项与不含交互项的模型,P>0.05提示符合PH假设。

实际操作中若遇到PH假设违反、哑变量编码困惑或AUC计算难题,可结合具体数据场景调整分析策略。

2. 规范实操步骤

❶ R语言实操(含PH假设验证):

# 1. 构建Cox回归模型

cox_fit <- coxph(Surv(生存时间, 生存状态) ~ 年龄 + 性别 + 治疗方案 + 肿瘤分期, data = lung_data)

summary(cox_fit)


# 2. 验证PH假设(Schonfeld残差图)

cox_resid <- cox.zph(cox_fit)

print(cox_resid) # 各变量P>0.05,符合PH假设

plot(cox_resid, var = "治疗方案", main = "治疗方案Schonfeld残差图")


# 3. 提取HR值、95%CI及P值,整理结果

cox_result <- exp(cbind(HR=coef(cox_fit), confint(cox_fit), P值=summary(cox_fit)$coefficients[,5]))

cox_result <- round(cox_result, 3)

print("Cox回归分析结果(HR及95%CI):")

print(cox_result)

❷ SPSS实操步骤:

  1. 进入【分析】→【生存分析】→【Cox回归】;
  2. 时间框移入“生存时间”,状态框移入“生存状态”,定义事件为1=死亡;
  3. 协变量框移入年龄、性别、治疗方案、肿瘤分期,方法选择“进入”(全部纳入模型);
  4. 【选项】中勾选“HR的置信区间”(95%)、“模型拟合信息”;【保存】中勾选“风险得分”;
  5. 【绘图】中选择“Schonfeld残差”,勾选所有协变量,用于验证PH假设;
  6. 点击【确定】,输出Cox回归结果及PH假设验证图。

3. 结果解读

多因素Cox比例风险回归分析显示,在控制年龄、性别等混杂因素后,靶向治疗和肿瘤分期Ⅰ-Ⅱ期是肺癌患者预后良好的独立影响因素:

  1. 靶向治疗vs手术治疗:HR=0.35,95%CI:0.21-0.58,P<0.001,提示接受靶向治疗的患者死亡风险较手术治疗降低65%;
  2. 肿瘤分期Ⅰ-Ⅱ期vsⅢ-Ⅳ期:HR=0.42,95%CI:0.25-0.70,P=0.001,提示Ⅰ-Ⅱ期患者死亡风险较Ⅲ-Ⅳ期降低58%。

年龄、性别对肺癌患者生存预后无统计学影响(均P>0.05),这一结果与临床实践中年龄、性别并非肺癌预后核心影响因素的认知一致。

回复3 9

全部讨论(0)

默认最新
avatar
分享帖子
share-weibo分享到微博
share-weibo分享到微信
返回顶部