如何提取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
相关产品推荐
相关产品推荐

