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

如何使用R的cuRe包实现模型外推并绘制多模型合并ggplot图?

解决cuRe包非混合治愈模型外推与多模型ggplot2绘图问题

核心思路

cuRe包的predict函数需要通过newdata参数指定自定义时间点(包括外推到50年的点),从而将时间与生存概率对应起来;随后将多个模型的预测结果合并,用ggplot2统一绘图。

具体实现步骤

  1. 加载所需包
library(cuRe)
library(ggplot2)
library(splines)
  1. 生成包含外推时间点的数据集
    指定从0.01(避免log(0)的报错)到50年的时间序列,步长可根据需求调整:
# 生成目标时间点(含50年外推)
pred_times <- seq(0.01, 50, by = 0.5)
# 构建预测用数据集,变量名需与模型中的时间变量一致(即FUyear)
new_dat <- data.frame(FUyear = pred_times)
  1. 拟合多个非混合治愈模型
    以不同自由度的样条模型为例:
# 自由度2的样条模型
model_df2 <- GenFlexCureModel(
  formula = Surv(FUyear, status) ~ 1,
  smooth.formula = ~ ns(log(FUyear), df = 2),
  data = colonDC,
  type = "nmixture"
)

# 自由度3的样条模型
model_df3 <- GenFlexCureModel(
  formula = Surv(FUyear, status) ~ 1,
  smooth.formula = ~ ns(log(FUyear), df = 3),
  data = colonDC,
  type = "nmixture"
)

# 自由度4的样条模型
model_df4 <- GenFlexCureModel(
  formula = Surv(FUyear, status) ~ 1,
  smooth.formula = ~ ns(log(FUyear), df = 4),
  data = colonDC,
  type = "nmixture"
)
  1. 提取并合并多模型预测结果
    编写辅助函数统一处理每个模型的预测输出,添加时间与模型标识:
# 定义提取预测结果的函数
get_pred_data <- function(model, model_label, newdata) {
  surv_pred <- predict(model, type = "surv", newdata = newdata)
  data.frame(
    time = newdata$FUyear,
    survival = as.vector(surv_pred),
    model = model_label
  )
}

# 提取各模型结果
pred_df2 <- get_pred_data(model_df2, "样条自由度=2", new_dat)
pred_df3 <- get_pred_data(model_df3, "样条自由度=3", new_dat)
pred_df4 <- get_pred_data(model_df4, "样条自由度=4", new_dat)

# 合并所有结果
all_preds <- rbind(pred_df2, pred_df3, pred_df4)
  1. 用ggplot2绘制多模型曲线
ggplot(all_preds, aes(x = time, y = survival, color = model)) +
  geom_line(linewidth = 1) +
  labs(x = "随访时间(年)", y = "生存概率", color = "模型类型") +
  theme_minimal() +
  xlim(0, 50)  # 确保外推到50年的部分显示

关键说明

  • 必须通过newdata指定自定义时间点,才能获取外推到50年的预测值,同时解决predict输出无时间点的问题;
  • 时间起点设为0.01而非0,是为了避免log(FUyear)出现无穷大的报错;
  • 可根据需求调整时间步长、模型参数(如不同协变量、样条类型),只需保持newdata的变量名与模型一致即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 01:53:33