查看原文
其他

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

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

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

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

pROC包中的常用缩写:

缩写解释
ROC曲线受试者操作特征曲线
AUCROC曲线下面积
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曲线》这篇推文。


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

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


相关文章

R语言统计与绘图:forestplot包绘制森林图 2020-05-29
R语言统计与绘图:pROC包绘制ROC曲线 2020-05-25
R语言统计与绘图:ggsurvplot()函数绘制Kaplan-Meier生存曲线 2020-05-21
R语言统计与绘图:快速绘制临床论文基线特征表 2020-05-05


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

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