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
热门推荐
午餐肉罐头拉环断了怎么打开?多种实用方法帮你轻松取出午餐肉
2024年佛山楼市复盘:“量价齐跌”原因何在?
云盘如何加快上传
羽毛球杀球技巧和动作要领(精通羽毛球杀球的必备技能和训练方法)
一级二级调色大片的经典实例:如何通过调色技巧打造电影的视觉与情感震撼效果?
假面骑士时王(Zi-O)异类骑士大百科——异类OOO!超越神的王!
头发剪得越勤长得越快?科学养发可以这样做——
深惠城际最新建设进展汇总
解读四维时空和四维空间,两者到底有什么不同?
从宋文帝新政入手,分析休养生息为什么救不了南朝经济
桑葚最佳搭配的食物 桑葚怎麼吃比較好
怎样去脸上的黑痣要注意什么
你真的了解原生家庭吗?
跨界艺术:将艺术元素融入服装设计的灵感之旅
三种实用的肩宽测量方法详解
3种经典框架,帮你快速整理表达思路
八字命理中的女命与母亲星:解读生辰八字中的母女关系
为何说电动车电池都是充坏的,分享正确充电方法,延长电池寿命
完善五脏虚实辨证体系的机遇与挑战
【盘点】中国各地特色牛奶(附:中国牛奶地图)
校友会2025中国经济类大学一流专业排名发布
精通咨询技术,撰写指导内容的终极指南
文学史中的“吴门画派”(上)
结婚证领取地点有限制么
诉状准备指南:从案件事实到法律依据的完整流程
法庭审判长的司法语言表达规范
七年级作文应该怎么写?一文掌握写作技巧
第十四届上海市大学生工程实践与创新能力大赛圆满收官
房产证过户全攻略:买卖、赠与、继承等多种方式详解
《吞云吐雾》:从社会心理学角度探究人们究竟为何吸烟