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)
相关推荐
学习使我变快乐39 分钟前
C++:const成员
开发语言·c++
500了2 小时前
Kotlin基本知识
android·开发语言·kotlin
不知所云,4 小时前
qt cmake自定义资源目录,手动加载资源(图片, qss文件)
开发语言·qt
安冬的码畜日常4 小时前
【玩转 JS 函数式编程_006】2.2 小试牛刀:用函数式编程(FP)实现事件只触发一次
开发语言·前端·javascript·函数式编程·tdd·fp·jasmine
阑梦清川4 小时前
Java继承、final/protected说明、super/this辨析
java·开发语言
PythonFun5 小时前
Python批量下载PPT模块并实现自动解压
开发语言·python·powerpoint
Death2005 小时前
Qt 6 相比 Qt 5 的主要提升与更新
开发语言·c++·qt·交互·数据可视化
机器视觉知识推荐、就业指导5 小时前
使用Qt实现实时数据动态绘制的折线图示例
开发语言·qt
快乐就好ya6 小时前
Java多线程
java·开发语言
CS_GaoMing6 小时前
Centos7 JDK 多版本管理与 Maven 构建问题和注意!
java·开发语言·maven·centos7·java多版本