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

如何提取icenReg包survCIS()函数输出并用于ggplot生存曲线置信区间绘图

提取icenReg生存曲线置信区间并用于ggplot绘图

我来帮你搞定这个问题!你已经用icenReg的survCIs()拿到了生存曲线的置信区间估计,但不知道怎么把这些值提出来用ggplot画图对吧?其实很简单,咱们一步步来:

1. 先搞清楚invCDF_ests的结构

首先,你可以用str()函数查看这个对象的内部结构,它其实是一个列表,每个列表元素对应一个分组(比如你这里的gender的不同水平),每个元素里都是包含time(时间点)、surv(生存概率估计值)、lower(置信区间下限)、upper(置信区间上限)的数据框:

str(invCDF_ests)

2. 将列表转换为ggplot可用的整洁数据框

我们需要把列表里的各个分组数据合并成一个带分组标识的数据框,这里推荐用dplyr包来处理(如果没安装的话先运行install.packages("dplyr")):

library(dplyr)

# 合并列表元素,添加分组列(.id参数用来保留原列表的名称,也就是分组的水平)
surv_df <- bind_rows(invCDF_ests, .id = "gender") %>%
  # 把gender转换成因子,方便后续绘图的标签展示(根据你的实际数据调整标签)
  mutate(gender = factor(gender, labels = c("Female", "Male")))

如果你不想用dplyr,用base R也能搞定:

# Base R 版本:遍历列表,给每个数据框添加分组列,再合并
surv_list <- lapply(names(invCDF_ests), function(group) {
  df <- invCDF_ests[[group]]
  df$gender <- group
  return(df)
})
surv_df <- do.call(rbind, surv_list)
surv_df$gender <- factor(surv_df$gender, labels = c("Female", "Male"))

3. 用ggplot绘制带置信区间的生存曲线

现在surv_df已经是ggplot可以直接使用的格式了,我们可以用geom_line()画生存曲线,用geom_ribbon()画置信区间的填充:

library(ggplot2)

ggplot(surv_df, aes(x = time, y = surv, color = gender)) +
  # 绘制生存曲线
  geom_line(linewidth = 1) +
  # 绘制置信区间填充,注意把fill和gender绑定,alpha调整透明度
  geom_ribbon(aes(ymin = lower, ymax = upper, fill = gender), alpha = 0.2, color = NA) +
  # 设置坐标轴和图例标签
  labs(x = "Time", y = "Survival Probability", color = "Gender", fill = "Gender") +
  # 用简洁的主题
  theme_minimal()

这样就能得到一条带置信区间填充的分组生存曲线啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 16:56:15