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

如何将竞争风险图按结局而非组别分面板展示?

实现按结局分面板的竞争风险图

要实现按结局拆分面板、每个面板展示所有组别累积发生率的需求,ggcompetingrisks 没有直接对应的参数,我们可以手动提取 cuminc 的拟合结果,用 ggplot2 自定义绘图来实现。

步骤1:数据准备与拟合

先运行原代码生成数据并拟合累积发生率模型:

set.seed(2)
failure_time <- rexp(100)
status <- factor(sample(0:2, 100, replace=TRUE), 0:2,
                 c('no event', 'death', 'progression'))
disease <- factor(sample(1:3,  100,replace=TRUE), 1:3,
                  c('BRCA','LUNG','OV'))

library(cmprsk)
fit3 <- cuminc(ftime = failure_time, fstatus = status,
              group = disease)

步骤2:提取并整理拟合数据

手动从 cuminc 对象中提取时间点、累积发生率估计值、组别和结局信息,整理成适合 ggplot 的长格式:

# 定义函数提取cuminc结果
extract_cuminc_data <- function(fit) {
  # 获取所有分组-结局组合
  strata_names <- names(fit$est)
  # 逐个提取数据
  result_list <- lapply(strata_names, function(str) {
    # 拆分组别和结局
    group_event <- strsplit(str, " ")[[1]]
    group <- group_event[1]
    event <- group_event[2]
    
    data.frame(
      time = fit$time[[str]],
      cum_incidence = fit$est[[str]],
      lower_ci = fit$lower[[str]],
      upper_ci = fit$upper[[str]],
      group = group,
      event = event
    )
  })
  # 合并为数据框
  do.call(rbind, result_list)
}

# 提取数据
tidy_data <- extract_cuminc_data(fit3)

步骤3:用ggplot绘制分面板图

按结局分面,每个面板内用不同颜色展示各组的累积发生率曲线,可选添加置信区间:

library(ggplot2)

ggplot(tidy_data, aes(x = time, y = cum_incidence, color = group)) +
  # 绘制累积发生率阶梯线
  geom_step(linewidth = 1) +
  # 绘制置信区间(可选)
  geom_ribbon(aes(ymin = lower_ci, ymax = upper_ci, fill = group), 
              alpha = 0.2, color = NA) +
  # 按结局分面板
  facet_wrap(~event, scales = "free_y") +
  # 自定义标签与主题
  labs(x = "时间", y = "累积发生率", color = "疾病分组", fill = "疾病分组") +
  theme_bw() +
  theme(legend.position = "top")

补充说明

  • 上述代码会生成3个面板(对应death、progression、no event),每个面板内展示BRCA、LUNG、OV三组的累积发生率曲线。
  • 如果不需要no event结局,可以在提取数据后加一行tidy_data <- subset(tidy_data, event != "no event")过滤掉该组数据。
  • 通过scales = "free_y"可以让每个面板的y轴自适应范围,避免不同结局发生率差异大导致的可视化失真。

内容的提问来源于stack exchange,提问作者Timmo83

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:15:53