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
热门推荐
玫瑰怎么做成干花保持颜色不变?注意事项有哪些?
玫瑰长芽又蔫后还能活吗?
营养师解析:一天到底要喝多少水?喝水量计算公式一次看!
科学家在藻类中发现了沙漏形的发育模式
注销手机号等于出卖自己?10086回应,这些办法解除隐患
母猪怀孕:如何给孕妇猪提供适当的护理?
20年期超长期特别国债首发 债市供需关系日益均衡 降息降准预期回落
康熙的荣妃马佳氏子女哪些?
痒!皮肤发痒泛红怎么办?常见皮肤病的自我辨别指南
离型纸的原理、结构、分类及特点介绍
益生菌、乳酸菌傻傻分不清?一篇搞懂如何挑选适合你的益生菌产品
探寻福禄考花之名来由:缘起何处,寓意深远
137项清华大学科技成果亮相成都,政产研协同成果转化基地揭牌
如何正确清洗洗衣机脱水桶(简单几步)
哪届选秀MVP最多? 03黄金一代无缘 84年数量一骑绝尘
想戒掉垃圾食物?改吃「這類零食」有效擺脫嘴饞的困擾
物体所受压力与受力面积的秘密:揭秘影响压强的关键因素
李秀娟:从“她困惑”到“她优势”
庄子:接纳了无常,你就不会迷茫
道教宇宙本原观与天人合一的哲学解析
ARM编程用什么语言
解析安卓充电接口的演变与特点(安卓充电接口类型及其功能分析)
网络交友被骗的真实故事与反思
看懂家用电器能效等级,选对绿色家电!
食品保鲜冷库温度要求标准规范
性是爱的一部分又为什么会有柏拉图式爱情
在家也能中风复健!瑜伽改善肌肉痉挛 强化平衡感、舒缓情绪
适合在床上的瑜伽动作
中考作文秘籍大公开!这场讲座干货满满
我国专家牵头制定的全球首个量子计算领域国际标准正式发布