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. 安卓APP动态调试-IDA实用攻略
  2. CalcBackProject函数
  3. 微信小程序中this指向作用域问题this.setData is not a function报错
  4. 软件测试理论入门(一)
  5. React 的慢与快:优化 React 应用实战
  6. 通过DataX从Oracle同步数据到MySQL-安装配置过程
  7. 23. WebVR播放器: 消费升级带来的机遇
  8. android 程序开发的插件化
  9. 简要描述服务器虚拟化四大特性,虚拟化的四大特性
  10. 信息安全基础练习题(看完包过)
  11. mysql报错解决方式:1449 - The user specified as a definer (‘root‘@‘%‘) does not exist
  12. 发国外邮件用什么企业邮箱?在国外用什么邮箱稳定呢?
  13. 对于line-height的认识
  14. 初入测试如何编写测试用例?从3个方面带你写一个合格的测试用例
  15. HTML5期末大作业:在线电影介绍(6页) HTML+CSS+JavaScript 大学生毕设网页设计源码HTML web网页设计制作成品
  16. Java期末考试试题及参考答案(06)
  17. 通过企业微信和微信打造免费的消息提醒Push机制
  18. 全国第一所蚂蚁链大学落地江西 2020区块链创新应用高峰论坛圆满落幕
  19. rhino android js,android rhino
  20. Android导出数据到Excel表

热门文章

  1. 头部广告栏viewpager + recyclerview
  2. 《最优化计算方法》这门课中所有的方法在回归分析的比较与分析
  3. java基于ssm的自动排课系统
  4. c语言编译器手机版6,c语言编译器app安卓手机版
  5. 一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接
  6. 基于Asterisk的VoIP开发指南…
  7. C语言程序设计 利用文件保存数据
  8. 人原ADSC细胞 正常人脂肪来源干细胞 Adipose-derived stem cells报告
  9. @abc和abc区别在那里
  10. 基于Android的影院在线购票APP的设计与实现