• R语言基于ggplot绘制多条ROC曲线(2)


    ROC曲线也叫受试者工作曲线,原来用在军事雷达中,后面广泛应用于医学统计中。ROC曲线是根据一系列不同的二分类方式(分界值或决定阈),以真阳性率(灵敏度)为纵坐标,假阳性率(1-特异度)为横坐标绘制的曲线。ROC曲线主要应用于二分类结局,比如是否死亡,疾病诊断,肿瘤复发等等,可以用于自变量为连续变量的截点判定。
    在这里插入图片描述
    既往我们已经介绍了R语言基于ggplot和pROC包绘制多条ROC曲线,但是在我们实际绘制操作中还是有许多对于细节的调整,比如我们在论文中需要对两个预测模型进行比较需要制作出一个类似上图这样的ROC曲线,今天继续聊聊ggplot制作ROC曲线的一些细节操作。
    假设我们有一个数据,我们已经做出来了两个模型,一个是机器学习的xgboost模型,一个是Logisti回归模型我们想比较一下这两模型的ROC曲线并绘图。
    先导入R包

    library(pROC)
    library(ggplot2)
    
    • 1
    • 2

    得出预测数据后,机器学习的模型的ROC为

    xgboost_roc <- roc(bc$placenta.accreta,as.numeric(pre_xgb))
    
    • 1

    Logisti回归模型的ROC为

    roc1<-roc(as.ordered(bc$placenta.accreta) ,as.ordered(bc$pre))
    
    • 1

    我们先可以使用混淆矩阵比较两个模型的准确率

    table(bc$placenta.accreta,pre_xgb,dnn=c("真实值","预测值"))
    
    • 1

    在这里插入图片描述

    confusionMatrix(bc$placenta.accreta,pre)#使用混淆矩阵进行分类
    
    • 1

    在这里插入图片描述
    这样两个模型的准确率比较就算出来了,数据可以放到论文中,我们现在可以使用得到ROC绘图,我们可以要把两个ROC放在list中绘图
    这里xgboost=xgboost_roc中,xgboost将成为图例的名字,可以自己取

    ggroc(list(xgboost=xgboost_roc, Logistic=roc1))
    
    • 1

    在这里插入图片描述
    这个图有几个问题X轴刻度是1-0,我们需要的是0-1,x轴标题需要改成1-特异度,需要添加对角线,图例需要放进图中,我们一步步来修改
    更改X轴的刻度,更改线条大小

    ggroc(list(xgboost=xgboost_roc, Logistic=roc1),legacy.axes = TRUE,size = 1)
    
    • 1

    在这里插入图片描述
    添加对角线和采用空白背景

    g2 <- ggroc(list(xgboost=xgboost_roc, Logistic=roc1),legacy.axes = TRUE,size = 1)
    g2+annotate(geom = "segment", x = 0, y = 0, xend =1, yend = 1,color = "blue",size=1)+ theme_minimal()+theme_bw()
    
    • 1
    • 2

    在这里插入图片描述
    如果想在0点位置相交

    g2+annotate(geom = "segment", x = 0, y = 0, xend =1, yend = 1,color = "blue",size=1)+ theme_minimal()+theme_bw()+
      scale_y_continuous(expand = c(0, 0))+scale_x_continuous(expand = c(0, 0))
    
    • 1
    • 2

    在这里插入图片描述
    我这图0点相交对于不好看,我就不这样弄了,可以自定义曲线的颜色

    g2+annotate(geom = "segment", x = 0, y = 0, xend =1, yend = 1,color = "blue",size=1)+ theme_minimal()+theme_bw()+
      scale_colour_manual(values=c("green", "yellow"))
    
    • 1
    • 2

    在这里插入图片描述
    修改X轴和Y轴标题

    g2+annotate(geom = "segment", x = 0, y = 0, xend =1, yend = 1,color = "blue",size=1)+ theme_minimal()+theme_bw()+
      xlab("1-特异度")+
      ylab("灵敏度")
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    修改图例位置

    g2+annotate(geom = "segment", x = 0, y = 0, xend =1, yend = 1,color = "blue",size=1)+ theme_minimal()+theme_bw()+
      xlab("1-特异度")+
      ylab("灵敏度")+
      theme(legend.position = c(.8,.2),
            legend.key.width = unit(2,"cm"),panel.grid.major = element_blank(), panel.grid.minor = element_blank())
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    更改图例标题

    g2+annotate(geom = "segment", x = 0, y = 0, xend =1, yend = 1,color = "blue",size=1)+ theme_minimal()+theme_bw()+
      xlab("1-特异度")+
      ylab("灵敏度")+
      theme(legend.position = c(.8,.2),
            legend.key.width = unit(2,"cm"),panel.grid.major = element_blank(), panel.grid.minor = element_blank())+
      guides(color=guide_legend(title = "预测模型"))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述
    加上AUC值

    g2+annotate(geom = "segment", x = 0, y = 0, xend =1, yend = 1,color = "blue",size=1)+ theme_minimal()+theme_bw()+
      xlab("1-特异度")+
      ylab("灵敏度")+
      theme(legend.position = c(.8,.2),
            legend.key.width = unit(2,"cm"),panel.grid.major = element_blank(), panel.grid.minor = element_blank())+
      guides(color=guide_legend(title = "预测模型"))+
      annotate("text", x=0.2, y=0.88, label="AUC = 0.92",size=5)+
      annotate("text", x=0.5, y=0.7, label="AUC = 0.67",size=5)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述
    这样基本就算做好了,最后对两个auc进行比较,比较的结果也要附在论文中

    roc.test(xgboost_roc,roc1)
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    AI大模型下的微服务会有什么?
    【单片机毕业设计】【mcuclub-hj-002】基于单片机的多路温度控制设计
    【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(9 月 4 日论文合集)
    Spark GraphX 图算法的理解
    pip的基本命令和使用
    java毕业设计颜如玉图书销售网站的设计与实现Mybatis+系统+数据库+调试部署
    鸿蒙原生App开发之:套用混合app开发思路
    54 循环神经网络 RNN【动手学深度学习v2】
    案例研究 | 玉湖冷链基于JumpServer实现管理安全一体化
    es相关知识
  • 原文地址:https://blog.csdn.net/dege857/article/details/126599513