本章将常用的基于R语言实现二元Logistic回归模型临床预测模型的构建和验证,以及诺曼图的绘制记录下来,更为复杂的生存分析中的Cox回归将在后续章节介绍。临床预测模型的思路总结如下:①明确临床问题,确定科学假设。②查找文献,确定预测模型的研究思路。③确定模型中结局变量。④确定模型中的预测因子。⑤构建模型,计算模型预测值。⑥模型区分度评估。⑦模型校准度评估。⑧临床实用型DCA评估。
本文采用的数据是上海交大出版<医学统计学及SAS应用>第十一章数据。预测因子有性别、年龄和高血压等级,结局变量为是否患病。本文研究目的探讨患病的危险因素构建并验证模型。因数据量少且只有一个数据集,故只用此数据集建模,并验证,若有更多外部数据,最好拿外部数据来验证模型。
具体分析步骤是,①基于这些变量构建模型。②绘制Nomogram图。③计算模型ROC曲线面积(区分度)和绘制校准曲线并检验(校准度,U检验),该步骤用神包rms一步实现。接下来直接上代码。
library(rms) ###加载rms包#
##建立数据集
y <- c(0,1,0,0,0,1,1,1,0,0,0,1,1,0,0,1,0,0,0,1,1,0,1,
1,0,1,1,1,0,1,0,1,0,0,1,1,0,0,1,1,0,1,0,0,0,1,
1,1,1,0,1,1,0,0,0,1,1,1,0,1,1,1,1,0,0,1,1,1,0,
0,0,1,0,1,0,1,0,1)
age <- c(28,42,46,45,34,44,48,45,38,45,49,45,41,46,49,46,44,48,
52,48,45,50,53,57,46,52,54,57,47,52,55,59,50,54,57,60,
51,55,46,63,51,59,48,35,53,59,57,37,55,32,60,43,59,37,
30,47,60,38,34,48,32,38,36,49,33,42,38,58,35,43,39,59,
39,43,42,60,40,44)
sex <- c(0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,
0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,
0,1,0,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,
0,1,1,1,0,1)
ECG <- c(0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,
0,0,1,1,0,0,1,1,0,0,1,1,0,0,2,1,0,0,2,2,0,0,2,2,
0,1,2,2,0,1,0,2,0,1,0,2,1,1,0,2,1,1,0,2,1,1,0,2,
1,1,0,2,1,1)
dt <- data.frame(y,age,sex,ECG) ##把数据集设置成数据框结构
该图的使用,本质上这是将逻辑回归模型可视化展示,方便临床快速判断。假设有个病人年龄45岁,性别为男,高血压正常,Nomogram用法是在age变量上找到其值为45的刻度,然后画垂线投影到最上方的points刻度尺上,找到找到对应的分值为50分,同理找到sex为1的分值约为37分,ECG为0对应分值为0,将这三个因素的points值加起来总分87。下一步在下面的Total Points刻度尺上找到87,向下方的Risk of Death做垂线,87对应的值在0.4和0.5之间,约为0.48,说明该患者患病风险预测概率值为48%。
首先看代码中返回的结果,Emax是模型与理想模型的最大偏移量,Eavg是模型与理想模型的最小偏移量,这两个值越小越好,越小则说明模型与理想模型越接近。U是指Unreliability test 即U检验,用来判断构建的模型是否能通过校准度检验,其对应的P值在最下面,S:p,当S:p>0.05说明通过校准度检验。C(ROC)是ROC面积,该面积和C-index指数本质上是一样的,只不过一个对应LR,一个对应COX。
本文介绍了Logistic回归模型的深度验证和Nomogram的绘制及应用。需要注意的是:一个预测模型的好坏除了内部验证,还要看外部验证,即它的外推性是否好。本文由于数据量少,也没有获取外部验证集,仅用原始数据集作为训练集和验证集。