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

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曲线专业绘制包,可以多探索探索。

统计与绘图

多组独立样本的非参数检验及两两比较教程

2020-5-24 14:44:11

统计与绘图

R语言统计与绘图:可视化ROC曲线的置信区间

2020-6-19 13:26:00

声明 本网部分文章源于互联网,转载出于传递更多信息和学习之目的,并不意味着赞同其观点。
如转载稿涉及版权等问题,请立即联系管理员,我们会予以修改、删除相关文章,请留言反馈
When your legal rights are being violated, please send an email to: sci666net@qq.com
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索