问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

R语言-基于现有临床预测模型预测性能评估(predRupdate)

创作时间:
作者:
@小白创作中心

R语言-基于现有临床预测模型预测性能评估(predRupdate)

引用
CSDN
1.
https://blog.csdn.net/weixin_46587777/article/details/138095148

在临床科研文献中,有时会遇到只提供模型系数而没有数据集和代码的情况。此时,如何利用这些模型进行预测性能评估?R包predRupdate提供了一个解决方案,它可以在给定新数据集的情况下评估现有临床预测模型的预测性能。本文将详细介绍predRupdate包的使用方法,包括模型验证、更新和集成。

一、加载R包和数据集

首先,需要安装并加载predRupdate包:

install.packages("predRupdate")
library(predRupdate)

1.1 Logistic回归模型

将现有模型的系数及截距构建为数据框:

coefs_table_1 <- data.frame("Intercept" = -3.995,
                           "Age" = 0.012,
                           "SexM" = 0.267,
                           "Smoking_Status" = 0.751,
                           "Diabetes" = 0.523,
                           "Creatinine" = 0.578)

构建逻辑回归模型:

Existing_Logistic_Model <- pred_input_info(
  model_type = "logistic",
  model_info = coefs_table_1)
summary(Existing_Logistic_Model)

利用新的数据集进行验证:

validation_results <- pred_validate(
  x = Existing_Logistic_Model,
  new_data = SYNPM$ValidationData,
  binary_outcome = "Y")
summary(validation_results)

在结果中给出校准曲线的斜率0.7403,截距0.7479,AUC为0.5816及95%置信区间(0.5703-0.5928),Brier Score为0.1246。

绘制校准曲线:

validation_results$flex_calibrationplot

1.2 survival模型

survival模型,需要指定模型的累积风险以及回归系数:

coefs_table_2 <- data.frame("Age" = 0.007,
                           "SexM" = 0.225,
                           "Smoking_Status" = 0.685,
                           "Diabetes" = 0.425,
                           "Creatinine" = 0.587)
#构建模型
Existing_TTE_Model <- pred_input_info(
  model_type = "survival",
  model_info = coefs_table_2,
  cum_hazard = SYNPM$TTE_mod1_baseline)

模型验证:

validation_results <- pred_validate(
  x = Existing_TTE_Model,
  new_data = SYNPM$ValidationData,
  survival_time = "ETime",
  event_indicator = "Status",
  time_horizon = 5)
summary(validation_results)
plot(validation_results)

二、利用新数据集更新模型

2.1构建模型

coefs_table <- data.frame("Intercept" = -3.995,
                          "Age" = 0.012,
                          "SexM" = 0.267,
                          "Smoking_Status" = 0.751,
                          "Diabetes" = 0.523,
                          "Creatinine" = 0.578)
Existing_Logistic_Model <- pred_input_info(
  model_type = "logistic",
  model_info = coefs_table)

2.2 更新模型(pred_updat())

Updated_model <- pred_update(
  Existing_Logistic_Model,
  update_type = "recalibration",
  new_data = SYNPM$ValidationData,
  binary_outcome = "Y")

模型验证:

pred_val <- pred_validate(
  Updated_model,
  new_data = SYNPM$ValidationData,
  binary_outcome = "Y")
summary(pred_val)

绘制校准曲线:

plot(pred_val)

三、模型集成

当我们用模型集成时,元模型必须是同一类型的模型,比如logistic或survival模型,这与常用的模型集成有所不同。

构建集成模型:

coefs_table <- data.frame(rbind(c("Intercept" = -3.995,
                                  "Age" = 0.012,
                                  "SexM" = 0.267,
                                  "Smoking_Status" = 0.751,
                                  "Diabetes" = 0.523,
                                  "Creatinine" = 0.578),
                                c("Intercept" = -2.282,
                                  "Age" = NA,
                                  "SexM" = 0.223,
                                  "Smoking_Status" = 0.528,
                                  "Diabetes" = 0.200,
                                  "Creatinine" = 0.434),
                                c("Intercept" = -3.013,
                                  "Age" = NA,
                                  "SexM" = NA,
                                  "Smoking_Status" = 0.565,
                                  "Diabetes" = -0.122,
                                  "Creatinine" = 0.731)))
multiple_mods <- pred_input_info(model_type = "logistic",
                                 model_info = coefs_table)
summary(multiple_mods)

模型预测:

SR <- pred_stacked_regression(x = multiple_mods,
                              new_data = SYNPM$ValidationData,
                              binary_outcome = "Y")
summary(SR)

模型验证:

pred_val_2 <- pred_validate(SR,
              new_data = SYNPM$ValidationData,
              binary_outcome = "Y")
summary(pred_val_2)

绘制校准曲线:

pred_val_2$flex_calibrationplot

本文原文来自CSDN

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号