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年后趋于平稳
原神雷电将军立绘及角色背景一览
长期喝茶会损伤肾脏?医学专家:真正伤肾的是这些食物
一文详解:有效排痰的多种实用方法
带保暖耳罩会对耳朵有伤害吗 保暖耳罩的正确戴法介绍
汽车电灯接触不良怎么办?一文详解解决方法与预防措施
如何修复电灯接触不良问题(解决电灯接触不良的简易方法)
佛手瓜的种植方法
方言有声,传承有根
什么是7P营销策略?
附子理中丸:传承千年的温中散寒圣药,具体有哪些功效?
今天,我们聊聊凌家滩玉器背后的文明故事
玉的品质精神:象征、论文、作文及温润特性分析
家有考生必看,高考期间的健康生活指南快收好
哈佛大学研究:吃黑巧克力不胖人,还能预防糖尿病?风险降低21%
如何更换汽车安全带?安全带更换的步骤和注意事项是什么?
书店有哪几种书 十类书店常见的书种类大全
狗可以吃椰子吗?
家庭光疗 vs 院内光疗:治疗银屑病哪个好?
优化Cocos Creator 包体体积
火把节进入倒计时:来看看传承千年的巍山火把是如何做成的
如何在面对物业相关问题时找到合适的管理方式?这些方式有哪些注意事项?
51号元素锑:特性、用途及其在生活中的影响与历史意义
想拥有健康好生活?试试这些培养好心态的方法
克菲尔益生菌改細菌叢生態 效果比優格快
在家锻炼腿部肌肉的三种有效方法