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

列线图,又称诺莫图(Nomogram),它是建立在回归分析的基础上,使用多个临床指标或者生物属性,然后采用带有分数高低的线段,从而达到设置的目的:基于多个变量的值预测一定的临床结局或者某类事件发生的概率。列线图(Nomogram)可以用于多指标联合诊断或预测疾病发病或进展。

近些年来在高质量SCI临床论文中用的越来越多。列线图将回归模型转换成了可以直观的视图,让结果更容易判断,具有可读性,例如:

咱们既往已经多篇文章介绍绘制列线图,今天咱们来介绍一下VRPM包绘制彩色列线图,这个包可以绘制多个模型的列线图,咱们一一来介绍。

首先VRPM包已经在R官方下架,不能直接安装,咱们可以

r 复制代码
install.packages("devtools")  # 安装devtools包
devtools::install_github("nanxstats/VRPM")  # 安装VRPM包

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



如果遇到下面报错的话,表明'fields', 'R2HTML'这两个包的版本不合适,

咱们需要把'fields', 'R2HTML'这两个包从新安装一下,然后再次安装就可以了

安装好VRPM包后咱们就可以开始了,先导入R包

r 复制代码
library(VRPM)
library(survival)

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

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

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

r 复制代码
mydata <- read.csv("mydata.csv")

这是很简单的数据,admit是个分类的结局变量,其他的是协变量,(公众号回复:列线图数据,可以获得这个数据。)

把分类变量转成因子

r 复制代码
mydata$rank <- factor(mydata$rank)

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

r 复制代码
fit <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")

绘制列线图

r 复制代码
colplot(fit)

绘图后并不在R界面生成我们需要在默认目录下找,就是刚才咱们设置的目录

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

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

r 复制代码
colplot(fit,coloroptions=1)
r 复制代码
colplot(fit,coloroptions=3)

接下来咱们来个cox回归的,使用的是mfp包自带的数据

r 复制代码
library(mfp)
data(GBSG)

数据中的rfst是生存时间,cens是结局变量,其他的是协变量

建立模型

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

绘图

r 复制代码
colplot(fit)

下面咱们来个结局变量Y是多分类的逻辑回归模型,使用的是VGAMdata包自带的xs.nz数据

l

r 复制代码
ibrary(nnet)
library(VGAMdata)
data(xs.nz)

这个数据很大,咱们提取需要的变量来组成模型

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

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

r 复制代码
str(mydata)

建立模型

r 复制代码
fit <- multinom(marital ~ sex + age + height + weight, data = mydata,model=TRUE)

对于多项式逻辑回归,有多个结局概率,咱们需要指定你研究的是指标

咱们先把结局的4个变量提取出来,分别是4个婚姻状态"单身""已婚""离婚""寡居"

r 复制代码
outnames=colnames(fitted(fit))

咱们单身为参考变量,绘制列线图,先生成图片的标题

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

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

r 复制代码
colplot(fit,coloroptions=3,risklabel=labels,filename="div")


接下来是married的

接下来是widowed的


图片很多还有几张就不发上来了。

接下来咱们绘制个支持向量机分类的,使用R自带的鸢尾花数据

r 复制代码
library(kernlab)
data(iris)

咱们把其他两种类型的花设置为other

r 复制代码
levels(iris$Species)[levels(iris$Species)=="setosa"] <- "other"
levels(iris$Species)[levels(iris$Species)=="virginica"] <- "other"

对数据重新命名

r 复制代码
names(iris)=c("SL","SW","PL","PW","Species")

生成模型

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

对模型进行预处理,

r 复制代码
newmodel=preplotperf(model,iris,indy=5,zerolevel="min")

绘图

r 复制代码
colplot(newmodel,filename="IRIS2",zerolevel="min",coloroptions=5)
相关推荐
学习两年半的Javaer4 分钟前
Rust语言基础知识详解【一】
开发语言·rust
PyAIGCMaster5 分钟前
50周学习go语言:第四周 函数与错误处理深度解析
开发语言·学习·golang
全栈开发圈6 分钟前
新书速览|Rust汽车电子开发实践
开发语言·rust·汽车
PyAIGCMaster7 分钟前
第二周补充:Go语言中&取地址符与fmt函数详解
开发语言·后端·golang
~kiss~13 分钟前
Rust学习~tokio简介
开发语言·学习·rust
Mr.Wang80926 分钟前
条款23:宁以non-member、non-friend替换member函数
开发语言·c++
关关钧42 分钟前
【R语言】读取CSV数据时,显示[1] PK...<0 行> (或0-长度的row.names)
开发语言·r语言
以卿a2 小时前
C++ 模板初阶
开发语言·c++
s:1032 小时前
【框架】参考 Spring Security 安全框架设计出,轻量化高可扩展的身份认证与授权架构
java·开发语言
道不尽世间的沧桑3 小时前
第17篇:网络请求与Axios集成
开发语言·前端·javascript