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

ROC曲线是临床中常用的统计分析之一,R中可以绘制ROC曲线的包也有很多,pROC包就是其中的佼佼者。

pROC包可以计算AUC和95%置信区间,可以可视化、平滑和比较ROC曲线。

pROC包中的常用缩写:

缩写 解释
ROC曲线 受试者操作特征曲线
AUC ROC曲线下面积
pAUC 部分ROC曲线下面积
CI 置信区间
SP 特异度specificity
SE 灵敏度sensitivity

下面来学习下怎么使用pROC包来可视化ROC曲线的置信区间。


目  录

  • 1. 安装和加载R包
  • 2. 读取内置数据集
  • 3. 建立拟合曲线
  • 4. 可视化ROC曲线的CI
    • 4.1 可视化阈值的CI
    • 4.2 绘制特定阈值的CI
    • 4.3 可视化灵敏度的CI
    • 4.4 可视化特异度的CI
    • 4.5 可视化指定特异度和灵敏度的CI
    • 4.6 调整CI的形状
    • 4.7 绘制多条曲线的CI
  • 5. plot.ci()函数

1. 安装和加载R包

在绘制图形前需要下载和加载pROC包。

install.packages("pROC"# 安装pROC包
library(pROC) # 加载pROC包

2. 读取内置数据集

使用pROC包自带的aSAH数据集来演示。该数据集包括了113例动脉瘤蛛网膜下腔出血患者的临床和实验室资料。

data(aSAH) # 加载内置数据集
View(aSAH) # 查看数据集
aSAH数据集包括113名患者,7个变量

3. 建立拟合曲线

在pROC包中,使用roc()函数来建立ROC对象。默认情况下roc()函数会输出AUC的值。

roc1 <- roc(aSAH$outcome, aSAH$s100b,
            levels=c("Good""Poor")) 
roc2 <- roc(aSAH$outcome, aSAH$ndka,
            levels=c("Good""Poor"))
roc1;roc2

4. 可视化ROC曲线的CI

plot.ci()函数能够在ROC曲线上增加置信区间,置信区间可以表示为条形或置信带形状。

4.1 可视化阈值的CI

在绘制阈值的CI之前,需要使用ci.thresholds()函数创建对象。

plot(roc1)
thr.obj <- ci.thresholds(roc1) 
plot(thr.obj) # ci.thresholds()函数创建的对象

4.2 绘制特定阈值的CI

roc4 <- plot.roc(aSAH$outcome, aSAH$s100b,
                   ci=TRUE, print.auc=TRUE) 
rocthr <- ci(roc4, of="thresholds", thresholds="best")
plot(rocthr) 

4.3 可视化灵敏度的CI

plot(roc1)
se.obj <- ci(roc1, of="se", boot.n=500) 
plot(se.obj) 

4.4 可视化特异度的CI

plot(roc1)
sp.obj <- ci.sp(roc1, boot.n=500) 
plot(sp.obj) 

4.5 可视化指定特异度和灵敏度的CI

rocobj <- plot.roc(aSAH$outcome, aSAH$s100b,
                   ci=TRUE, of="se", 
                   specificities=seq(0.210.25)) 
plot(ci.sp(rocobj, sensitivities=seq(0.210.25))) 
rocobj <- plot.roc(aSAH$outcome, aSAH$s100b,
                   ci=TRUE, of="se", 
                   specificities = c(0.20.4)) 
plot(ci.sp(rocobj, sensitivities = c(0.40.6)))

4.6 调整CI的形状

plot(roc1)
sp.obj <- ci.sp(roc1, sensitivities=seq(01.01), boot.n=100) 
plot(sp.obj, type="shape", col="#5bd1d7"

4.7 绘制多条曲线的CI

plot(roc1) # 绘制ROC曲线
plot(roc2, add = TRUE# 添加ROC曲线到现有图形上
sp.obj1 <- ci.sp(roc1, sensitivities=seq(01.01), boot.n=100) 
sp.obj2 <- ci.sp(roc2, sensitivities=seq(01.01), boot.n=100) 
plot(sp.obj1, type="shape"# 绘制置信区间,设置CI形状,调节颜色参数
     col = rgb(25,12,100,alpha=10,max=255))
plot(sp.obj2, type="shape"# 绘制置信区间,设置CI形状,调节颜色参数
     col = rgb(155,227,0,alpha=20,max=255)) 

5. plot.ci()函数

plot.ci()函数可以调整函数中的参数来向ROC曲线上添加置信区间,置信区间形状有bars和shape两种,

plot(x,       
     type=c("bars""shape"),       
     length=.01*ifelse(attr(x,"roc")$percent, 1001),       
     col=ifelse(type=="bars", par("fg"),"gainsboro"),       
     no.roc=FALSE,       
     ...)
# 部分参数解释
x  # 由ci.thresholds()、ci.se()或ci.sp()函数创建的对象
type  # 置信区间的类型,有条形bars和置信带shape两种,可以缩写为"b"或"s"。  
# "shape"仅适用于ci.se()和ci.sp()函数,不适用于ci.thresholds()函数。
length # bars刻度线的长度,只在 type=bars 时使用
col # 条形或置信带形状的颜色。
no.roc # 逻辑词,如果为FALSE,则将ROC曲线重新添加到该形状上;
# 如果为TRUE,则只绘制形状;在type=bars则忽略


总结绘制ROC曲线的R包的区别

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

统计与绘图

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

2020-6-19 13:24:41

统计与绘图

R语言统计与绘图:ROC曲线的统计计算

2020-6-19 13:26:29

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