ROC曲线是临床中常用的统计分析之一,R中可以绘制ROC曲线的包也有很多,pROC
包就是其中的佼佼者。
pROC包可以计算AUC和95%置信区间,可以可视化、平滑和比较ROC曲线。
今天来学习下怎么使用pROC
包来绘制平滑ROC曲线。
目 录
- 1. 安装和加载R包
- 2. 读取内置数据集
- 3. 拟合平滑ROC对象
- 4. 平滑ROC曲线的方法
- 5. 先绘制1条平滑曲线
- 6. 再添加1条ROC曲线
- 7. 添加图例
1. 安装和加载R包
install.packages("pROC") # 安装pROC包
library(pROC) # 加载pROC包
2. 读取内置数据集
使用pROC包自带的aSAH
数据集来演示。该数据集包括了113例动脉瘤蛛网膜下腔出血患者的临床和实验室资料。
data(aSAH) # 加载内置数据集
View(aSAH) # 查看数据集

3. 拟合平滑ROC对象
在pROC包中,一般使用roc()函数来建立ROC对象。如果要拟合平滑ROC曲线,可以在roc()函数中使用smooth
参数。
roc1 <- roc(aSAH$outcome, aSAH$s100b,
smooth =TRUE)
roc2 <- roc(aSAH$outcome, aSAH$ndka,
smooth =TRUE)
roc1;roc2
# 下面代码与上面等效
roc3 <- roc(aSAH$outcome, aSAH$s100b)
smooth(roc3)

结果显示,roc1对象平滑后的AUC为0.74,而未平滑的原始AUC为0.731。
4. 平滑ROC曲线的方法
平滑ROC曲线的方法有很多,具体可查看帮助文档。
plot(roc3)
rs <- smooth(roc3, method=“binormal”)
plot(rs, add=TRUE, col=“green”)
rs2 <- smooth(roc3, method=“density”)
plot(rs2, add=TRUE, col=“blue”)
rs3 <- smooth(roc3, method=“fitdistr”, density=“lognormal”)
plot(rs3, add=TRUE, col=“magenta”)
rs4 <- smooth(roc3, method=“logcondens”)
plot(rs4, add=TRUE, col=“brown”)
rs5 <- smooth(roc3, method=“logcondens.smooth”)
plot(rs5, add=TRUE, col=“orange”)

5. 先绘制1条平滑曲线
plot(roc1, # 前面构建的平滑ROC对象
print.auc=TRUE, # 图像上输出AUC值
print.auc.x=0.5,print.auc.y=0.5, # AUC值坐标为(x,y)
auc.polygon=TRUE, # 将ROC曲线下面积转化为多边形
auc.polygon.col="skyblue", # 设置多边形的填充颜色
grid= FALSE, # 不显示网格背景线
legacy.axes=TRUE) # 使横轴从0到1,表示为1-特异度

6. 再添加1条ROC曲线
plot.roc(roc2,
add=TRUE, # 增加曲线
col = "red", # 设置曲线颜色
print.auc=TRUE, # 图像上输出AUC
print.auc.col = "red", # 设置AUC文本的颜色
print.auc.x=0.5,print.auc.y=0.4) # AUC的坐标为(x,y)

7. 添加图例
legend(0.35,0.40, # 图例位置x,y
bty = "n", # 图例样式
title="", # 添加图例标题
legend=c("roc1","roc2"), # 添加分组
col=c("#FF2E63","#252A34"), # 颜色跟前面一致
lwd=2) # 线条粗细

pROC包是目前功能最全面的ROC曲线专业绘制包,可以多探索探索。