R语言VRPM包绘制多种模型的彩色列线图

发布时间:2024年01月24日

列线图,又称诺莫图(Nomogram),它是建立在回归分析的基础上,使用多个临床指标或者生物属性,然后采用带有分数高低的线段,从而达到设置的目的:基于多个变量的值预测一定的临床结局或者某类事件发生的概率。列线图(Nomogram)可以用于多指标联合诊断或预测疾病发病或进展。
近些年来在高质量SCI临床论文中用的越来越多。列线图将回归模型转换成了可以直观的视图,让结果更容易判断,具有可读性,例如:

在这里插入图片描述

咱们既往已经多篇文章介绍绘制列线图,今天咱们来介绍一下VRPM包绘制彩色列线图,这个包可以绘制多个模型的列线图,咱们一一来介绍。
首先VRPM包已经在R官方下架,不能直接安装,咱们可以

install.packages("devtools")  # 安装devtools包
devtools::install_github("nanxstats/VRPM")  # 安装VRPM包

或者在我的公众号吧这个包下载下来(公众号回复:VRPM包),手动安装

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果遇到下面报错的话,表明’fields’, ‘R2HTML’这两个包的版本不合适,
在这里插入图片描述
咱们需要把’fields’, 'R2HTML’这两个包从新安装一下,然后再次安装就可以了
安装好VRPM包后咱们就可以开始了,先导入R包

library(VRPM)
library(survival)

设置好咱们的目录,这样有个好处,VRPM包是直接把图片保存到默认目录的,这样你比较好找

setwd("E:/公众号文章2023年/VRPM包绘制彩色评分图")

导入数据,把分类变量转成因子

mydata <- read.csv("mydata.csv")

在这里插入图片描述
这是很简单的数据,admit是个分类的结局变量,其他的是协变量,(公众号回复:列线图数据,可以获得这个数据。)
把分类变量转成因子

mydata$rank <- factor(mydata$rank)

建立模型,先来个逻辑回归的

fit <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")

绘制列线图

colplot(fit)

绘图后并不在R界面生成我们需要在默认目录下找,就是刚才咱们设置的目录
(“E:/公众号文章2023年/VRPM包绘制彩色评分图”)

在这里插入图片描述
这样一个彩色列线图就生成了,根据颜色深浅表示了危险程度。咱们还可以对颜色进行一些修改

colplot(fit,coloroptions=1)

在这里插入图片描述

colplot(fit,coloroptions=3)

在这里插入图片描述
接下来咱们来个cox回归的,使用的是mfp包自带的数据

library(mfp)
data(GBSG)

在这里插入图片描述
数据中的rfst是生存时间,cens是结局变量,其他的是协变量
建立模型

fit<-coxph(Surv(rfst, cens) ~ age+tumsize+posnodal+prm+esm+menostat+tumgrad, data = GBSG, 
           model=TRUE)

绘图

colplot(fit)

在这里插入图片描述
下面咱们来个结局变量Y是多分类的逻辑回归模型,使用的是VGAMdata包自带的xs.nz数据
l

ibrary(nnet)
library(VGAMdata)
data(xs.nz)

在这里插入图片描述
这个数据很大,咱们提取需要的变量来组成模型

marital.nz <- xs.nz[,c("marital","sex","age","height","weight")]
mydata <- marital.nz[complete.cases(marital.nz),]

咱们可以看到结局变量marital是4分类变量

str(mydata)

在这里插入图片描述
建立模型

fit <- multinom(marital ~ sex + age + height + weight, data = mydata,model=TRUE)

对于多项式逻辑回归,有多个结局概率,咱们需要指定你研究的是指标
咱们先把结局的4个变量提取出来,分别是4个婚姻状态“单身”“已婚”“离婚”“寡居”

outnames=colnames(fitted(fit))

在这里插入图片描述
咱们单身为参考变量,绘制列线图,先生成图片的标题

labels=c(paste("Linear predictor for",outnames[-1]),paste
         ("Predicted chance of being",outnames))

在这里插入图片描述
接下来绘图,会生成多个图片,它是分成2个图片一组的,发表的时候可能需要拼一下图

colplot(fit,coloroptions=3,risklabel=labels,filename="div")

在这里插入图片描述
在这里插入图片描述
接下来是married的
在这里插入图片描述
在这里插入图片描述
接下来是widowed的

在这里插入图片描述
在这里插入图片描述
图片很多还有几张就不发上来了。
接下来咱们绘制个支持向量机分类的,使用R自带的鸢尾花数据

library(kernlab)
data(iris)

在这里插入图片描述
咱们把其他两种类型的花设置为other

levels(iris$Species)[levels(iris$Species)=="setosa"] <- "other"
levels(iris$Species)[levels(iris$Species)=="virginica"] <- "other"

在这里插入图片描述
对数据重新命名

names(iris)=c("SL","SW","PL","PW","Species")

生成模型

model <-ksvm(Species ~ ., data = iris,prob.model=TRUE,kpar=list(0.03),C=10)

对模型进行预处理,

newmodel=preplotperf(model,iris,indy=5,zerolevel="min")

绘图

colplot(newmodel,filename="IRIS2",zerolevel="min",coloroptions=5)

在这里插入图片描述

文章来源:https://blog.csdn.net/dege857/article/details/135813237
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。