ROC曲线也叫受试者工作曲线,原来用在军事雷达中,后面广泛应用于医学统计中。ROC曲线是根据一系列不同的二分类方式(分界值或决定阈),以真阳性率(灵敏度)为纵坐标,假阳性率(1-特异度)为横坐标绘制的曲线。

ROC曲线主要应用于二分类结局,比如是否死亡,疾病诊断,肿瘤复发等等,可以用于自变量为连续变量的截点判定。

R语言ggplot两条折线图 r语言ggplot绘制曲线图_r语言


既往我们已经介绍了R语言基于pROC包绘制ROC曲线,不少粉丝发信息问怎么使用ggplot绘制ROC曲线,今天我们来演示一下,续使用我们的肺炎数据(公众号回复:肺炎,可以获得数据),我们先导入包和数据。

library(pROC)
library(ggplot2)
bc<-read.csv("E:/r/test/feiyan.csv",sep=',',header=TRUE)
names(bc)

R语言ggplot两条折线图 r语言ggplot绘制曲线图_R语言ggplot两条折线图_02


R语言ggplot两条折线图 r语言ggplot绘制曲线图_bc_03


数据fy为二分类结局变量,其余4个均是炎症指标,都是连续变量,假设我们想知道炎症指标TNF和肺炎发生关系的ROC曲线

roc1<- roc(bc$fy, bc$TNF)
g<-ggroc(roc1)
g

R语言ggplot两条折线图 r语言ggplot绘制曲线图_r语言_04


一个最简单的图形就出来啦,我们继续对它进行修改

g + theme_minimal() + ggtitle("输入标题") + 
  geom_segment(aes(x = 1, xend = 0, y = 0, yend = 1), color="red", 
               linetype=6)###设置对角线,主要设置起点和终点的X,Y坐标

R语言ggplot两条折线图 r语言ggplot绘制曲线图_R语言ggplot两条折线图_05


对Y轴坐标进行更改

gl <- ggroc(roc1, legacy.axes = TRUE)
gl

R语言ggplot两条折线图 r语言ggplot绘制曲线图_r语言_06

gl + xlab("1-灵敏度") + ylab("敏感性") + 
  geom_segment(aes(x = 0, xend = 1, y = 0, yend = 1), color="darkgrey", linetype="dashed")

R语言ggplot两条折线图 r语言ggplot绘制曲线图_r语言_07


绘制多条ROC曲线,先生成多个ROC

roc2<- roc(bc$fy, bc$IL6)
roc3<- roc(bc$fy, bc$sTREM1)
roc4<- roc(bc$fy, bc$PCT)

绘制图形

g2 <- ggroc(list(TNF=roc1, IL6=roc2, sTREM1=roc3,PCT=roc4))
g2

R语言ggplot两条折线图 r语言ggplot绘制曲线图_数据_08


也可以这样绘制,也是一样的图形

roc.list <- roc(fy ~ TNF + IL6 + sTREM1+PCT, data = bc)
g.list <- ggroc(roc.list)
g.list

R语言ggplot两条折线图 r语言ggplot绘制曲线图_bc_09


可以修改线条颜色和线型

g5 <- ggroc(roc.list, aes=c("linetype", "color"))
g5

R语言ggplot两条折线图 r语言ggplot绘制曲线图_r语言_10


添加对角线

g5+annotate(geom = "segment", x = 1, y = 0, xend =0, yend = 1)

R语言ggplot两条折线图 r语言ggplot绘制曲线图_二分类_11


可以选择自己喜欢的线条形式,这样一个用于论文发表的ROC曲线就做好了

g2+annotate(geom = "segment", x = 1, y = 0, xend =0, yend = 1)+
        scale_fill_discrete(labels=c("TNF ", "IL6 ", "sTREM1", "PCT"))

R语言ggplot两条折线图 r语言ggplot绘制曲线图_数据_12