ROC曲线也叫受试者工作曲线,原来用在军事雷达中,后面广泛应用于医学统计中。ROC曲线是根据一系列不同的二分类方式(分界值或决定阈),以真阳性率(灵敏度)为纵坐标,假阳性率(1-特异度)为横坐标绘制的曲线。ROC曲线主要应用于二分类结局,比如是否死亡,疾病诊断,肿瘤复发等等,可以用于自变量为连续变量的截点判定。

既往我们已经介绍了R语言基于ggplot和pROC包绘制多条ROC曲线,但是在我们实际绘制操作中还是有许多对于细节的调整,比如我们在论文中需要对两个预测模型进行比较需要制作出一个类似上图这样的ROC曲线,今天继续聊聊ggplot制作ROC曲线的一些细节操作。
假设我们有一个数据,我们已经做出来了两个模型,一个是机器学习的xgboost模型,一个是Logisti回归模型我们想比较一下这两模型的ROC曲线并绘图。
先导入R包

library(pROC)
library(ggplot2)

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

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

Logisti回归模型的ROC为

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

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

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

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


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

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


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

ggroc(list(xgboost=xgboost_roc, Logistic=roc1),legacy.axes = TRUE,size = 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()


如果想在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))


我这图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"))


修改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("灵敏度")


修改图例位置

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())


更改图例标题

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 = "预测模型"))


加上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)


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

roc.test(xgboost_roc,roc1)

R语言基于ggplot绘制多条ROC曲线(2)相关推荐

  1. R语言使用pROC包在同一图中绘制两条ROC曲线并通过假设检验检验ROC曲线的AUC或者偏AUC的差异(输出p值)

    R语言使用pROC包在同一图中绘制两条ROC曲线并通过假设检验检验ROC曲线的AUC或者偏AUC的差异(输出p值) 目录

  2. R语言ggplot2可视化绘制多条基本线图(Basic line plot)、使用gghighlight包突出高亮其中的某一条线图(highlight line plot)

    R语言ggplot2可视化绘制多条基本线图(Basic line plot).使用gghighlight包突出高亮其中的某一条线图(highlight line plot) 目录

  3. R语言使用ggplot绘制线型与点

    # Load plyr so we can use ddply() to create the example data setlibrary(plyr)library(tidyverse)ggplo ...

  4. 数据可视化——R语言ggplot2包绘制精美的小提琴图(并箱线图或误差条图组合)

    数据可视化--R语言ggplot2包绘制精美的小提琴图(并箱线图或误差条图组合) 概述:R语言使用ggplot2工具包绘制小提琴图.为了使数据表达更加丰富,同时将小提琴图与箱线图和误差条图相结合.另外 ...

  5. R语言使用pROC包绘制ROC曲线并使用smooth函数绘制平滑的ROC曲线(方法包括:binormal、density、fitdistr、logcondens、logcondens.smooth)

    R语言使用pROC包绘制ROC曲线并使用smooth函数绘制平滑的ROC曲线(方法包括:binormal.density.fitdistr.logcondens.logcondens.smooth) ...

  6. R语言compareGroups包绘制组间趋势(p for trend)实战:基于survival包lung数据集示例

    R语言compareGroups包绘制组间趋势(p for trend)实战:基于survival包lung数据集示例 目录

  7. R语言数据热力图绘制实战(基于原生R函数、ggplot2包、plotly包)

    R语言数据热力图绘制实战(基于原生R函数.ggplot2包.plotly包) 目录 R语言数据热力图绘制实战(基于原生R函数.ggplot2包.plotly包)

  8. R语言使用epiDisplay包的lroc函数可视化logistic回归模型的ROC曲线并输出诊断表、可视化多条ROC曲线、自定义设置lty参数为指定ROC曲线线条的类型(实现、虚线、点线等)

    R语言使用epiDisplay包的lroc函数可视化logistic回归模型的ROC曲线并输出诊断表(diagnostic table).可视化多条ROC曲线.自定义设置lty参数为指定ROC曲线线条 ...

  9. R语言使用ggplot2绘制直方图

    R语言使用ggplot2绘制直方图 代码备份 参考链接: R语言绘制直方图(简书)https://www.jianshu.com/p/18ac00dc64fd #读取数据---- setwd(&quo ...

最新文章

  1. 组装计算机的游戏,如何组装一台游戏电脑
  2. SwfUpload及imgareaselect使用方法
  3. javascript 声明变量var、let、const详解及示例
  4. 原 荐 简单说说Kafka中的时间轮算法
  5. YBTOJ危桥通行洛谷P3163:危桥通行(网络流)
  6. MySQL怎么卸载干净重装?
  7. Ubuntu下添加打印机---之寻找设备lpinfo
  8. 对比两个文件内容差异VS Visual Studio Code
  9. 数字电视加密技术工作原理(EMM ECM)
  10. 圣何塞州立大学计算机工程排名,2021年圣何塞州立大学排名U.S.News世界大学排名第1467...
  11. 条形码扫描模块的作用是什么?有什么应用意义?
  12. ios Reading from private effective user settings
  13. easyphp mysql_EasyPHP 数据库空密码
  14. 鸿蒙os beta3.0怎么升级,鸿蒙系统 2.0 Beta3.0版本更新详解
  15. vue实现消息badge 标记_vue 新消息提示
  16. java 文字转图片且居中
  17. 燕山大学C++实验报告
  18. padavan做副路由,主路由是原厂固件,如何使用adguardHome过滤广告
  19. 【Linux】创建新用户 sudo配置,添加信任
  20. 动态规划——什么是动态规划?

热门文章

  1. 做个合格的数据库管理员(DBA)
  2. 毕业设计 油罐检测爬壁机器人结构设计(说明书+CAD图纸+开题报告+任务书+外文翻译+英文文献)
  3. Linux/CentOS7搭建泰拉瑞亚原版/mod服务器教程
  4. 计算机组成原理组合逻辑,计算机组成原理组合逻辑电路.PPT
  5. 高级定时器TIM1输出PWM波
  6. 三阶魔方复原简易方法笔记
  7. Ubuntu删除ppa
  8. html---div和span标签的区别
  9. 武大首位女院士逝世,国际再生资源领域最高奖中国第一人,享年80岁-1
  10. 发段完美国际注入跑路call 全部原代码