ROC曲线也叫受试者工作曲线,原来用在军事雷达中,后面广泛应用于医学统计中。ROC曲线是根据一系列不同的二分类方式(分界值或决定阈),以真阳性率(灵敏度)为纵坐标,假阳性率(1-特异度)为横坐标绘制的曲线。
ROC曲线主要应用于二分类结局,比如是否死亡,疾病诊断,肿瘤复发等等,可以用于自变量为连续变量的截点判定。
既往我们已经介绍了R语言基于pROC包绘制ROC曲线,不少粉丝发信息问怎么使用ggplot绘制ROC曲线,今天我们来演示一下,续使用我们的肺炎数据(公众号回复:肺炎,可以获得数据),我们先导入包和数据。
library(pROC)
library(ggplot2)
bc<-read.csv("E:/r/test/feiyan.csv",sep=',',header=TRUE)
names(bc)
数据fy为二分类结局变量,其余4个均是炎症指标,都是连续变量,假设我们想知道炎症指标TNF和肺炎发生关系的ROC曲线
roc1<- roc(bc$fy, bc$TNF)
g<-ggroc(roc1)
g
一个最简单的图形就出来啦,我们继续对它进行修改
g + theme_minimal() + ggtitle("输入标题") +
geom_segment(aes(x = 1, xend = 0, y = 0, yend = 1), color="red",
linetype=6)###设置对角线,主要设置起点和终点的X,Y坐标
对Y轴坐标进行更改
gl <- ggroc(roc1, legacy.axes = TRUE)
gl
gl + xlab("1-灵敏度") + ylab("敏感性") +
geom_segment(aes(x = 0, xend = 1, y = 0, yend = 1), color="darkgrey", linetype="dashed")
绘制多条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
也可以这样绘制,也是一样的图形
roc.list <- roc(fy ~ TNF + IL6 + sTREM1+PCT, data = bc)
g.list <- ggroc(roc.list)
g.list
可以修改线条颜色和线型
g5 <- ggroc(roc.list, aes=c("linetype", "color"))
g5
添加对角线
g5+annotate(geom = "segment", x = 1, y = 0, xend =0, yend = 1)
可以选择自己喜欢的线条形式,这样一个用于论文发表的ROC曲线就做好了
g2+annotate(geom = "segment", x = 1, y = 0, xend =0, yend = 1)+
scale_fill_discrete(labels=c("TNF ", "IL6 ", "sTREM1", "PCT"))