手把手教你用r语言评价临床预测模型。在日常的临床工作以及研究中,对于某个疾病,无论是肿瘤研究,还是非肿瘤研究,我们常听到患者提出这样的问题,“我的检查结果是这样的,那么最终患病的概率有多少,生存情况又是怎样的呢”。当然,生信分析,作为医学研究的三大主线之一,亦是如此,最终的结局无外乎两种,一是发病率是多少,二是预后生存情况如何。
(一) nomogram图:
当我们通过数据挖掘,或者模型构建,发现了一种新的biomarker,或者风险模型,除了通过roc曲线或者生存分析评估其对疾病进展或者预后的独立预测能力以外,另一种很重要的手段就是该分子变量与其他已有的临床病理特征结合,综合预测患病率或生存率模型的重要能力。如果我们能提前预测病人病情的进展情况,那么有时候将会做出不同的临床决定,使整个过程更偏向个性化治疗。 nomogram图,又称为列线图,是基于多因素分析的结果,将多个预测指标进行整合,根据一定的比例分配,以图形的形式将各个变量之间对结局预测之间相互关系进行可视化展示。下面,一起学习一下基于logistic回归和cox回归分析的列线图的绘制过程。
基于logistic回归的列线图:
1. 引用r包:
#install.packages("rms")
library(rms) #引用rms包
2. 读取文件:
setwd("c:users00desktop9_nomogram") #设置工作目录
rt <- read.table("log.txt",header=t,sep=" ") #读取数据
head(rt) #查看数据集rt
▲ 在该数据集中,主要包含了年龄(age),性别(gender),bmi值,教育水平(education),饮酒史(alcohol)5个自变量,以及1个结局变量(status)。
3. 设置变量参数:
首先,根据分组情况,对所有的变量添加标签
rt$age <- factor(rt$age,labels=c("<60",">=60"))
rt$gender <- factor(rt$gender,labels=c("no","yes"))
rt$bmi <- factor(rt$bmi,labels=c("0","1","2"))
rt$education <- factor(rt$education,labels=c("primary","secondary","higher"))
rt$alcohol <- factor(rt$alcohol,labels=c("no","yes"))随后,使用datadist()函数将数据打包ddist <- datadist(rt) #使用函数datadist()将数据打包
options(datadist = "ddist")
4. 构建logistic模型:
fit <- lrm(status~age gender bmi education alcohol, data=rt, x=t, y=t)
#利用lrm()函数对模型进行拟合
fit #查看模型拟合结果
结果如下:
在模型中,纳入所有的变量构建了logistic模型,结果展示了每个变量在模型中的系数以及p值,而且模型的c指数为0.839,展示出模型良好的预测能力。
5.构建nomogram及可视化:
使用nomogram()函数构建模型
nom<- nomogram(fit, fun=plogis,
fun.at=c(0.0001,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,0.9999),
lp=f,
funlabel="risk of hypertension") #构建nomogram图
plot(nom) #输出nomogram图
结果如下:
通过将每个指标对应的points相加,与total points相对应,即可获得不同患者的患病可能性,并且可以提前对高危的患者进行针对性的干预。