如何使用生存分析计算药物留存率置信区间(附R实现方法)
R语言生存分析提取指定时间点生存率及95%CI实现方法
你已经完成了Kaplan-Meier模型的基础拟合,只需调用survival包内置的summary()函数,传入指定时间点参数即可提取对应结果,无需额外安装依赖包。
具体实现代码
基于你提供的示例数据,完整可运行代码如下:
# 原有模型拟合代码 library(survival) library(survminer) gender <- as.factor(c("Female", "Male", "Female", "Male", "Male", "Male", "Female", "Female", "Female", "Male")) country <- as.factor(c("US", "US", "GB", "GB", "GB", "US", "GB", "US", "GB", "US")) time <- c(5, 10, 12, 15, 20, 9, 14, 18, 24, 20) event <- c(1, 1, 1, 1, 1, 0, 0, 1, 0, 1) df <- data.frame(gender, country, time, event) km.model <- survfit(Surv(time = df$time, event = df$event) ~ gender, data = df) # 新增:提取6、12、24个月的留存率及95%CI target_times <- c(6, 12, 24) km_summary <- summary(km.model, times = target_times) # 整理为结构化数据框方便查看导出 result_df <- data.frame( 分组 = km_summary$strata, 时间_月 = km_summary$time, 留存率 = round(km_summary$surv, 4), 95%CI下限 = round(km_summary$lower, 4), 95%CI上限 = round(km_summary$upper, 4) ) # 打印结果 print(result_df)
结果说明
- 输出的
result_df会按你指定的时间点,分别展示不同性别分组对应的留存率、95%置信区间上下限 - 若某个时间点之前所有样本都已发生事件或删失,对应位置返回
NA属于正常情况 - 若不需要分组计算全人群的留存率,拟合KM模型时将公式改为
survfit(Surv(time, event) ~ 1, data = df)即可
拓展:多变量分组计算
如果需要同时按多个维度(如性别+国家)分组统计,只需修改KM模型的公式即可:
km.model_multi <- survfit(Surv(time, event) ~ gender + country, data = df) summary(km.model_multi, times = c(6,12,24))
内容的提问来源于stack exchange,提问作者Pashtun
相关产品推荐
相关产品推荐

