预测模型构建利器

您所在的位置:网站首页 如何看列线图 预测模型构建利器

预测模型构建利器

2023-05-11 04:01| 来源: 网络整理| 查看: 265

目录

模型知识准备

什么是列线图?

如何看懂列线图?

什么是校准曲线?

模型搭建

哑变量的设置

列线图的绘制

校准曲线的绘制

每文一语

模型知识准备 什么是列线图?

列线图(Alignment Diagram),又称诺莫图(Nomogram图),它是建立在多因素回归分析的基础上,将多个预测指标进行整合,然后采用带有刻度的线段,按照一定的比例绘制在同一平面上,从而用以表达预测模型中各个变量之间的相互关系。

列线图的基本原理,简单的说,就是通过构建多因素回归模型(常用的回归模型,例如Cox回归、Logistic回归等),根据模型中各个影响因素对结局变量的贡献程度(回归系数的大小),给每个影响因素的每个取值水平进行赋分,然后再将各个评分相加得到总评分,最后通过总评分与结局事件发生概率之间的函数转换关系,从而计算出该个体结局事件的预测值。

列线图将复杂的回归方程,转变为了可视化的图形,使预测模型的结果更具有可读性,方便对患者进行评估。正是由于列线图这种直观便于理解的特点,使它在医学研究和临床实践中也逐渐得到了越来越多的关注和应用。

如何看懂列线图?

我们可以看到列线图主要由左边的名称以及右边对应的带有刻度的线段所组成。

列线图的名称主要包括三类:

1. 预测模型中的变量名称:例如图中的年龄(Age)、ftv(孕前检查次数),ht(是否高血压),smoke(是否抽烟)等信息,每一个变量对应的线段上都标注了刻度,代表了该变量的可取值范围,而线段的长度则反映了该因素对结局事件的贡献大小。

2. 得分,包括单项得分,即图中的Point(第一行),表示每个变量在不同取值下所对应的单项分数,以及总得分,即Total Point(最后一行),表示所有变量取值后对应的单项分数加起来合计的总得分。

3. 预测概率:例如图中的Low weight rate,表示出生低体重儿的概率。

实例分析:如果产妇35岁,根据列线图,得分10分;无高血压,得分0分;抽烟,得分37分;再加上其他分数,如果总分100分,那么对应的生产低体重儿的概率就约为0.12,那么你就可以拿着这个图表给患者看,告诉她产出低体重儿的概率比较低。这样就到预测的效果了,懂了吗,那么最后就是如何搭建模型,最后达到这些效果。

什么是校准曲线?

校准曲线的解释:事实上,校准曲线是实际发生概率与预测概率的散点图。校准曲线可视化了霍斯默-勒梅休(Hosmer-Lemeshow)拟合优度检验的结果,所以除了校准曲线之外,我们还应该检查霍斯默-勒梅休拟合优度检验的结果。预测率和实际发生率越接近Y = X,Hosmer-Lemeshow拟合优度检验的p值大于0.05,模型校准得越好。在这种情况下,校准曲线几乎Y = X线,表示模型校准良好。

模型搭建

此次模型是基于R语言的多功能程序包,进行logistic回归预测,绘制列线图,绘制校准曲线,包括C指数等计算

为了更好的搭建我们的模型,我们首先对数据进行预处理,对数据进行了清洗和规整化,使得我们的每一个指标都是数值类型

#查看当前工作路径 getwd() #设置当前工作路径 setwd("E:/个人文件/学术科研/身体约束预测模型") getwd() #导入第三方程序包 library(rms) library(readr) #导入数据 mydata=read.csv("数据.csv",encoding = 'UTF-8') 哑变量的设置

1、如果是二分类变量不用设为哑变量

2、如果是三分类以上的有序变量尽量不设哑变量,这样可以节省自由度,准确度会更高一些

3、非有序变量的三分类以上的变量必须设为哑变量,否则会影响结果

将哑变量引入回归模型,虽然使模型变得较为复杂,但可以更直观地反映出该自变量的不同属性对于因变量的影响,提高了模型的精度和准确度。但是我们也需要根据我们的实际的场景来对我们的数据进行处理。

如果要处理,我们就可以利用下面的代码进行处理,为什么此处不需要,就是因为元数据已经是一个有序的数值变量,而且没有规律的,不会很大的影响我们的模型,反而设置之后会影响。

处理分类变量

#此处用于哑变量的设置,此数据已经设置好了 mydata$leibie=as.factor(mydata$leibie) mydata$n0=as.factor(mydata$n0) mydata$shuxing=as.factor(mydata$shuxing) mydata$age=as.factor(mydata$age) mydata$time=as.factor(mydata$time) mydata$n4=as.factor(mydata$n4) mydata$n5=as.factor(mydata$n5) mydata$n8=as.factor(mydata$n8) mydata$n9=as.factor(mydata$n9) mydata$n10new=as.factor(mydata$n10new) mydata$MOBILITY=as.factor(mydata$MOBILITY) mydata$n13=as.factor(mydata$n13) mydata$n14=as.factor(mydata$n14) mydata$n15=as.factor(mydata$n15) mydata$n16=as.factor(mydata$n16) mydata$n18=as.factor(mydata$n18) mydata$n32=as.factor(mydata$n32) mydata$n40new=as.factor(mydata$n40new) #查看 mydata #查看数据集(展示数据集里面的各个自变量的信息) mydata=as.data.frame(mydata) summary(mydata) #打包数据 dd=datadist(mydata) options(datadist='dd')

模型搭建

fit=lrm(n23~age+time+n4+n5+n7+n8+n9+n10new+n13+n14+n15+n16+n18 +n19f1+n20+n21+n22+n32+n39new+n40new,data = mydata,x=T,y=T) Logistic Regression Model lrm(formula = n23 ~ age + time + n4 + n5 + n7 + n8 + n9 + n10new + n13 + n14 + n15 + n16 + n18 + n19f1 + n20 + n21 + n22 + n32 + n39new + n40new, data = mydata, x = T, y = T) Model Likelihood Discrimination Rank Discrim. Ratio Test Indexes Indexes Obs 1026 LR chi2 800.88 R2 0.796 C 0.974 1 761 d.f. 20 g 4.249 Dxy 0.948 2 265 Pr(> chi2) |Z|) Intercept -7.7527 1.9490 -3.98


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3