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

在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 05:43:29