如何在ggcuminc图中提取特定百分位数对应的时间?
获取累积发病率函数(CIF)特定百分位数对应的时间
你不需要从绘图对象里提取数据,直接用cuminc()计算得到的结果对象就能拿到目标百分位数对应的时间,具体步骤如下:
1. 拆分计算与绘图流程
先单独保存CIF的计算结果,再基于该对象完成绘图操作(既不影响可视化效果,又能方便提取统计值):
# 先计算CIF并保存为独立对象 cif_obj <- tidycmprsk::cuminc(Surv(time, status) ~ 1, data = df) # 原绘图代码保持不变,基于cif_obj生成图像 cif_RFS_overall <- cif_obj %>% ggcuminc(outcome = "relapse") + labs(x = "Months") + add_risktable(risktable_stats = "n.risk") + scale_ggsurvfit()
2. 直接提取目标百分位数时间
使用quantile()函数作用于cif_obj,指定需要的百分位数和目标结局即可:
# 提取relapse结局的10%、50%百分位数对应的时间 quantile(cif_obj, probs = c(0.1, 0.5), outcome = "relapse")
输出结果会包含三列信息:quantile(指定的百分位数)、time(对应时间)、estimate(该时间点实际的累积发病率)。如果随访期间未达到指定的累积发病率,对应的time会显示为NA。
备选:手动精细查找(灵活筛选场景)
如果需要更精细的控制,可以将CIF结果转换为tidy格式后手动查找:
library(broom) # 转换为tidy数据框,仅保留relapse结局的数据 cif_tidy <- tidy(cif_obj, outcome = "relapse") # 查找第一个累积发病率≥10%的时间点 cif_tidy %>% filter(estimate >= 0.1) %>% slice_min(time) # 查找第一个累积发病率≥50%的时间点 cif_tidy %>% filter(estimate >= 0.5) %>% slice_min(time)
内容的提问来源于stack exchange,提问作者anso_s
相关产品推荐
相关产品推荐

