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

如何从Kaplan-Meier模型的km_fit结果中提取95%置信区间?

如何从Kaplan-Meier模型结果中提取95%置信区间?

你在使用confint()函数提取Kaplan-Meier模型(survfit对象)的置信区间时出现no applicable method错误,原因是confint()函数主要用于回归模型的参数置信区间计算,并不适用于survfit对象的生存概率置信区间提取。以下是几种正确的方法:

问题复现代码

# Plot Kaplan-Meier curves
sg1_survival <- Surv(
  time = sg1$`Time from breast cancer diagnosis to bone metastasis (months) (NA = unknown)`,
  event = sg1$`status (=1 as all pts have bone metastasis and BC)`
)

km_fit <- survfit(sg1_survival ~ sg1$`Molecular type (0=hr+her2+, 1=hr+her2-, 2=hr-her2+, 3=TNBC)`, data = sg1)

# 原错误代码
# ci <- confint(km_fit, level = 0.95)

正确提取方法

1. 直接从km_fit对象中提取全时间点置信区间

survfit对象默认会计算95%置信区间(可通过survfit()的conf.level参数调整),结果存储在对象的lower和upper属性中,对应生存概率的置信区间下限和上限:

# 将生存数据、置信区间整理为数据框
survival_ci_df <- data.frame(
  时间 = km_fit$time,
  生存概率 = km_fit$surv,
  95%CI下限 = km_fit$lower,
  95%CI上限 = km_fit$upper,
  风险人数 = km_fit$n.risk,
  事件数 = km_fit$n.event
)

# 查看结果
head(survival_ci_df)

2. 提取特定时间点的置信区间

如果只关注特定时间点(比如12个月、24个月)的生存概率及置信区间,可使用summary()函数指定times参数:

# 提取12个月和24个月的生存概率及置信区间
summary(km_fit, times = c(12, 24), conf.int = TRUE)

3. 提取中位生存期的置信区间

若需要各分组中位生存期的置信区间,可使用survminer包的get_median_survival()函数:

library(survminer)

# 提取中位生存期及95%置信区间
median_survival_ci <- get_median_survival(km_fit)
print(median_survival_ci)

额外建议

你的survfit()公式写法可优化,避免直接引用sg1$xxx,改用数据框内的变量名,使代码更规范:

# 优化后的survfit调用
km_fit <- survfit(sg1_survival ~ `Molecular type (0=hr+her2+, 1=hr+her2-, 2=hr-her2+, 3=TNBC)`, data = sg1)

内容的提问来源于stack exchange,提问作者firmo23

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 22:58:33