动态列线图

R语言预测模型可视化-动态列线图

原创 修身立道 数据统计和机器学习 2023-02-12 11:16 发表于河南

收录于合集

#预测模型7个

#r语言60个

之前的文章 R语言预测模型可视化-Nomogram 介绍了静态列线图的制作过程,做出来的图形如下图所示,可直接在文章中使用。

640?wx_fmt=png&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

这种图片可以说在逻辑回归模型中是标配,但是使用起来有点不方便,实用性和可操作性可太低。另外一种做法是在列线图上加垂直的网格线,像下图这样。但是还是需要手动计算,精确性也不高。

640?wx_fmt=png&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

总之,这种静态列线图使用起来不是很方便。如何才能合理准确的使用列线图呢?下面介绍两种基于shiny的动态列线图,可提高列线图的实用性和准确性。

1、基于DynNom

仍然采用之前文章的数据,以方便不同列线图之间的比较。

数据准备

#清除空间
rm(list = ls())
#载入数据
dat <- read.csv("MPE.csv")
#删除缺失值
df <-na.omit(dat)
#查看维度
dim(df)
Show in New Window
[1] 407  14

#将分类变量转变为因子并添加标签
df$MPE <- factor(df$MPE,levels = c(0,1),labels = c("No","Yes"))
df$Gender <- factor(df$Gender,levels = c(0,1),labels = c("Female","Male"))
df$Fever<- factor(df$Fever,levels = c(0,1),labels = c("No","Yes"))
df$ChestPain<- factor(df$ChestPain,levels = c(0,1),labels = c("No","Yes"))
df$Cough<- factor(df$Cou,levels = c(0,1),labels = c("No","Yes"))

 

模型构建

fit2 <- glm(MPE ~Gender+Fever+ChestPain+ADAPE,
          data=df,family = binomial())
summary(fit2)

Call:
glm(formula = MPE ~ Gender + Fever + ChestPain + ADAPE, family = binomial(), 
    data = df)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.4929  -0.8230  -0.4352   0.8984   3.1355  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept)   0.019801   0.281123   0.070  0.94385    
GenderMale   -0.710901   0.269948  -2.633  0.00845 ** 
FeverYes     -1.829423   0.325621  -5.618 1.93e-08 ***
ChestPainYes  0.773577   0.253110   3.056  0.00224 ** 
ADAPE        -0.012189   0.006345  -1.921  0.05475 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 468.92  on 406  degrees of freedom
Residual deviance: 393.45  on 402  degrees of freedom
AIC: 403.45

Number of Fisher Scoring iterations: 5

 

建立动态列线图

library(DynNom)
DynNom(fit2,df)

运行代码之后,后弹出一个基于显示动态列线图的网页。页面左侧为模型预测变量部分,连续预测变量以可选数值(以观测范围为界)的形式展示,分类变量以下拉框的形式展示;右侧展示预测概率及模型信息。使用者只需要在相应的变量选项里进行选择,列线图即会给出模型的基本信息。点击页面中的Graphical Summary/Numerical Summary/ Model Summary按钮可以切换查看模型的预测结果和模型信息。

640?wx_fmt=png&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

640?wx_fmt=png&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

640?wx_fmt=png&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

网页部署

以上生成的动态列线图依赖于R和Rstudio,通过以下步骤才能部署到网页中。

1、注册shinyapp账号

进入shinyapps.io/注册账号

2、将shinyapps.io云账户关联至Rstudio(在R studio运行下述代码)

install.packages('rsconnect')    
library(rsconnect)

进入账号,点击Account—Tokens-show,复制粘贴到Rstudio中并运行(个人账号已处理)

setAccountInfo(name='mylogistic2',
			  token='A124917D803DE957B77394FFFF92B37E',
			  secret='yXQohompt0CIL****LD8+9j8WE+K/w')

3、制作动态列线图

DNbuilder(fit2)

运行完之后,会在工作目录文件夹内出现一个新的文件夹(DynNomapp),内含ui.R、server.R、global.R、functions.R、data.Rdata和 README.txt 等文件;

640?wx_fmt=png&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

关掉 Rstudio,打开 ui.R 或 server.R,点击右上角的 Run APP,你会得到一个右上角有 Publish 的 Dynamic nomogram.

640?wx_fmt=png&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

此时,可以通过点击 Publish 上传上述文件,

640?wx_fmt=png&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

640?wx_fmt=png&tp=wxpic&wxfrom=5&wx_lazy=1&wx_co=1

点击Publish等待完成部署。部署完成后会弹出一个网页。复制网址就可以粘贴在论文中或发给其他人使用。

也可以运行如下语句:

deployApp(appName = “Dynamic_nomogram”)

2.shinyPredict

library(shinyPredict)
shinyPredict(models = list("MPE model"=fit2),
             path="./",#文件存储位置
             data=df[,c(2,4,6,13)],#选择显示的变量
             title="dynamic nomogram")#图片标题

运行完之后,会在工作路径中生成 3 个文件,打开名为 app.R 的文件,点击右上角的 Run app 即可生成该列线图,之后的事情就是上传到 shinyapp 生成网页版列线图(和DynNom网页部署步骤一致)。

以上是两种动态列线图的绘制和部署过程,希望能给各位提供帮助。其中动态列线图的许多细节问题调整需认真摸索。

更多R语言的知识请关注公众号PRLearning 数据统计和机器学习进行交流学习。请关注后私信回复“动态列线图”获取数据及代码。如果对您有用请先收藏,再点赞。

 

 

收录于合集 #预测模型

 7个

下一篇R语言正则化技术3-弹性网络(ElasticNet)

阅读 265

分享收藏

22

 

 

 

发消息

 

 

 

 

 

 

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值