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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 00:22:14