查看原文
其他

R语言统计与绘图:绘制平滑ROC曲线

段小麻 R语言统计与绘图 2023-01-01

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)   # 查看数据集
aSAH数据集包括113名患者,7个变量

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曲线外观的参数见《R语言统计与绘图:pROC包绘制ROC曲线》这篇推文。

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


相关文章

R语言统计与绘图:绘制不同坐标轴置信区间的森林图 2020-06-05
R语言统计与绘图:方差分析 2020-06-01
R语言统计与绘图:数据的输入与输出 2020-05-31
R语言统计与绘图:pROC包绘制ROC曲线 2020-05-25


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存