在R中使用RMST2绘制不同时间点的RMST差值及置信区间
问题描述
- 需求:绘制两组在一段时间内的RMST差值(Delta of RMST)图,X轴为时间(年),Y轴为RMST差值(天),需包含置信区间
- 已完成操作:通过R代码
a=rmst2(time, status, arm, tau=10)得到tau=10时的组间对比结果,输出如下:
Between-group contrast Est. lower .95 upper .95 p RMST (arm=1)-(arm=0) -0.137 -0.939 0.665 0.738 RMST (arm=1)/(arm=0) 0.981 0.878 1.096 0.738 RMTL (arm=1)/(arm=0) 1.050 0.787 1.402 0.738
- 疑问:R里有没有现成函数可以绘制所有时间点的RMST差值图?能不能通过处理
a$unadjusted.result对象实现?
解决方案
完全可以通过处理a$unadjusted.result对象来实现需求,survRM2包的rmst2函数返回的这个对象里已经包含了不同时间点的RMST估计及置信区间数据,具体步骤如下:
1. 提取并整理差值数据
首先从返回结果里提取两组的RMST数据,计算组间差值,同时整理对应时间点和置信区间:
# 加载必要包(如果没加载的话) library(survRM2) library(dplyr) # 提取两组的RMST结果 rmst_arm0 <- a$unadjusted.result$RMST[a$unadjusted.result$RMST$arm == 0, ] rmst_arm1 <- a$unadjusted.result$RMST[a$unadjusted.result$RMST$arm == 1, ] # 合并数据并计算RMST差值(arm1 - arm0) rmst_diff <- data.frame( time = rmst_arm0$time, diff = rmst_arm1$rmst - rmst_arm0$rmst, # 计算差值的95%置信区间(基于两组RMST的置信区间推导) lower = rmst_arm1$lower - rmst_arm0$upper, upper = rmst_arm1$upper - rmst_arm0$lower ) # 更优方式:如果结果里直接有逐时间点的组间对比数据,直接提取 if (!is.null(a$unadjusted.result$contrast)) { rmst_diff <- a$unadjusted.result$contrast %>% filter(type == "RMST (arm=1)-(arm=0)") %>% select(time, diff = Est., lower = `lower .95`, upper = `upper .95`) }
2. 绘制带置信区间的差值图
用ggplot2包绘制折线图+置信区间丝带:
library(ggplot2) ggplot(rmst_diff, aes(x = time, y = diff)) + geom_line(color = "#1f77b4", linewidth = 1) + geom_ribbon(aes(ymin = lower, ymax = upper), alpha = 0.2, fill = "#1f77b4") + labs( x = "时间(年)", y = "RMST差值(天)", title = "RMST组间差值随时间变化(含95%置信区间)" ) + theme_minimal()
关于现成函数
目前survRM2包没有内置的逐时间点RMST差值图绘制函数,但上面的方法逻辑简单,基于返回结果自行处理绘制完全可以满足需求。
内容的提问来源于stack exchange,提问作者user23634522
相关产品推荐
相关产品推荐

