You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用生存分析计算药物留存率置信区间(附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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 04:45:00