如何使用ggsurvfit计算Kaplan-Meier图指定随访期事件概率绝对差
用ggsurvfit计算指定随访时长的事件发生概率绝对差值
核心逻辑
事件发生概率 = 1 - 生存率,我们需要先提取指定时间点的分组生存率,转换为事件发生概率后,再计算两组的绝对差值。
具体操作步骤
- 拟合模型并提取指定时间点的生存数据
用survfit2()拟合模型后,通过tidy()函数指定随访时间点,提取对应时间的生存率及置信区间,再转换为事件发生概率:
library(ggsurvfit) library(tidyverse) # 拟合生存模型 fit <- survfit2(Surv(time, status) ~ sex, data = df_lung) # 提取随访365天的生存数据,同时计算事件发生概率 surv_data <- fit %>% tidy(time = 365) %>% mutate( event_prob = 1 - estimate, event_prob_lower = 1 - conf.high, event_prob_upper = 1 - conf.low )
- 计算两组事件发生概率的绝对差值
从提取的数据中筛选分组信息,直接计算差值,也可以同步计算差值的置信区间:
# 提取两组事件发生概率 group_probs <- surv_data %>% pull(event_prob) # 计算绝对差值 event_prob_diff <- abs(group_probs[1] - group_probs[2]) # 计算差值的置信区间 group_lower <- surv_data %>% pull(event_prob_lower) group_upper <- surv_data %>% pull(event_prob_upper) diff_lower <- abs(group_lower[1] - group_lower[2]) diff_upper <- abs(group_upper[1] - group_upper[2]) # 输出结果 cat(sprintf("随访365天事件发生概率绝对差值:%.4f(95CI:%.4f-%.4f)\n", event_prob_diff, diff_lower, diff_upper))
- 可选:在KM图上标注差值
如果需要把结果直接标注在图上,用add_text()添加文本注释即可:
fit %>% ggsurvfit() + add_confidence_interval() + add_risktable() + add_text( x = 365, y = 0.5, label = sprintf("事件概率差值: %.4f", event_prob_diff), hjust = 0 )
关键提示
tidy(time = ...)支持传入多个时间点(比如time = c(365, 730)),一次性提取多时间点的数据。- 转换事件发生概率的置信区间时,因为生存率的置信区间是
(conf.low, conf.high),1减去后区间上下限会反转,所以要用1 - conf.high作为事件概率的置信下限。
内容的提问来源于stack exchange,提问作者Faith Magut
相关产品推荐
相关产品推荐

