如何将ggsurvfit累积风险表的生存值替换为指定时间点事件比例?
用ggsurvfit在风险表中展示指定时间点的事件发生比例
要把风险表中的生存数据替换为事件发生比例,核心逻辑是利用「事件发生率 = 1 - 生存率」的关系,对原有的生存率统计值反向计算,同时调整置信区间的上下限顺序(因为生存率的置信区间下限对应事件发生率的上限,反之亦然)。
修改后的完整代码
library(ggsurvfit) res <- survfit2(Surv(time, status) ~ 1, data = df_colon) %>% ggsurvfit(type = "risk", linewidth = 0.8) + add_confidence_interval() + add_risktable( risktable_stats = c("{n.risk} ({cum.event})", "{round((1 - estimate)*100)}% ({round((1 - conf.high)*100)}, {round((1 - conf.low)*100)})"), stats_label = c("At Risk (Cum. Events)", "Event Rate (95% CI)"), # 直接指定风险表要显示的时间点,和x轴刻度对齐 times = c(0, 1, 2, 4, 6, 8) ) + scale_ggsurvfit(x_scales = list(breaks = c(0, 1, 2, 4, 6, 8)))
关键修改说明
- 事件发生率计算:用
1 - estimate替代原有的estimate,乘以100转为百分比格式 - 置信区间调整:原生存率的
conf.low是生存概率下限,对应事件发生率的上限;conf.high是生存概率上限,对应事件发生率的下限,因此需要调换顺序为(1 - conf.high)和(1 - conf.low) - 指定时间点:通过
times参数直接定义风险表要展示的时间点,配合scale_ggsurvfit的x_scales$breaks让x轴刻度和风险表时间点完全对齐 - 标签更新:把
stats_label中的生存相关标签改为事件发生率对应描述
内容的提问来源于stack exchange,提问作者microbe
相关产品推荐
相关产品推荐

