R语言使用 ggscidca包优雅的绘制随机森林决策曲线

DCA(Decision Curve Analysis)临床决策曲线是一种用于评价诊断模型诊断准确性的方法,在2006年由AndrewVickers博士创建,我们通常判断一个疾病喜欢使用ROC曲线的AUC值来判定模型的准确性,但ROC曲线通常是通过特异度和敏感度来评价,实际临床中我们还应该考虑,假阳性和假阴性对病人带来的影响,因此在DCA曲线中引入了阈概率和净获益的概念。

在这里插入图片描述
在既往文章《R语言手动绘制随机森林决策曲线》中,咱们已经介绍了手动绘制随机森林决策曲线,如今我已经把代码整合到了我写的ggscidca包上,咱们可以通过ggscidca包快速绘制随机森林决策曲线,下面我来演示一下
咱们使用下面代码安装ggscidca包,安装了旧版本的在安装一次就可以更新到新版本

install.packages("ggscidca")

安装后以后咱们导入R包和数据,ggscidca绘制决策曲线支持的是randomForest包生成的随机森林,目前还不支持随机森林生存分析,所以咱们要导入randomForest包。数据是使用ggscidca 包自带的LIRI数据。

library(ggscidca)
library(survival)
library(reshape2)
library(ggplot2)
library(randomForest)
LIRI<-LIRI

在这里插入图片描述
Status是结局变量,其他是一些协变量,这个数据只是演示用,没有什么实际意义。咱们先对数据进行随机拆分

set.seed(1)
index <- sample(2,nrow(LIRI),replace = TRUE,prob=c(0.7,0.3))
traindata <- LIRI[index==1,]
testdata <- LIRI[index==2,]

拆分好数据后,先把结果变量转成因子

traindata$status<-as.factor(traindata$status)

咱们先用训练集建模,具体参数不介绍了,有兴趣看我相关的文章,你需要什么调参的话也是在这一步进行

fit<-randomForest(status ~ANLN+CENPA+GPR182+BCO2 ,data=traindata,ntree=500,
                  important=TRUE,proximity=TRUE)

建立模型后,咱们先绘制训练集决策曲线

scidca(fit,newdata = traindata)

在这里插入图片描述
绘制验证集决策曲线

scidca(fit,newdata = testdata )

在这里插入图片描述
如果只是想要单纯的决策曲线,也是可以的

scidca(fit,newdata = testdata,colbar = F)

在这里插入图片描述
应粉丝的要求在,在新版本ggscidca包添加了虚线功能,你可以在阈值的两点添加虚线,

scidca(fit,newdata = testdata ,threshold.line = T)

在这里插入图片描述
在文章Nomograms in Oncology – More than Meets the Eye中还报道了具体的阈值数,

在这里插入图片描述
ggscidca包也提供了阈值数的功能,

scidca(fit,newdata = testdata ,threshold.line = T,threshold.text=T)

在这里插入图片描述

表明预测模型在9%到41%这个阈值是获益的。这两个数值的大小和位置是可以移动的

scidca(fit,newdata = testdata ,threshold.line = T,threshold.text=T,nudge_x = 0.01,nudge_y = 0.02)

在这里插入图片描述
更改字体大小,颜色和背景

scidca(fit,newdata = testdata ,threshold.line = T,threshold.text=T,nudge_x = 0.01,nudge_y = 0.02,
       po.text.size=7,po.text.col="red",po.text.fill="green")

在这里插入图片描述
绘制普通的决策曲线,也是可以添加阈值数的

scidca(fit,newdata = testdata,colbar = F,threshold.text=T,nudge_x = 0.01,nudge_y = 0.02,
       po.text.size=7,po.text.col="red",po.text.fill="green")

在这里插入图片描述
加上线条也是可以的,线条还可以改颜色,线型和大小

scidca(fit,newdata = testdata,colbar = F,threshold.text=T,nudge_x = 0.01,nudge_y = 0.02,
       po.text.size=7,po.text.col="red",po.text.fill="green",threshold.line = T,
       threshold.linecol="blue")

在这里插入图片描述
这个线条加上去好像不是很美观,目前我还没想好怎么优化,如果你有好的建议,也可以私信我。
最后介绍一个手动调控功能,我重新导入一个数据

bc<-Breastcancer

#分类变量转成因子

bc$histgrad<-as.factor(bc$histgrad)
bc$er<-as.factor(bc$er)
bc$pr<-as.factor(bc$pr)
bc$ln_yesno<-as.factor(bc$ln_yesno)

#建立模型

f1<-coxph(Surv(time,status)~er+histgrad+pr+age+ln_yesno,bc)
f2<-coxph(Surv(time,status)~er+histgrad+ln_yesno,bc)
f3<-coxph(Surv(time,status)~ln_yesno,bc)

先做个生存分析的决策曲线

scidca(f2,threshold.line = T,threshold.text=T)

在这里插入图片描述
上图看着好像还行,没见啥问题,咱们限制一下X轴的范围

scidca(f2,modelnames = "零基础说科研",xstop=0.20,threshold.line = T,threshold.text=T)

在这里插入图片描述
这样问题就来了,虚线其实没有对准,因为X轴很大的时候,虚线向下角度不明显,限制范围后就明显了,这种情况咱们可以手动调整一下,需要liftpec参数,咱们向左挪移一下

scidca(f2,modelnames = "零基础说科研",xstop=0.20,threshold.line = T,threshold.text=T,
       liftpec=-1)

在这里插入图片描述
这样就对上了。有报错或者意见或建议,欢迎公众号私信我。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天桥下的卖艺者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值