如何从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
相关产品推荐
相关产品推荐

