R语言中如何绘制两个模型的AUC置信区间带
实现方案
pROC包内置了ROC曲线置信区间计算功能,无需依赖其他包即可实现带状置信区间效果。核心逻辑是先存储两个模型的ROC对象,通过bootstrap法计算各假阳性率节点下真阳性率的置信区间,再用半透明多边形绘制带状区域,最后叠加主ROC曲线即可。
可直接运行的修改后代码
library(pROC) # 先构建两个模型的ROC对象,暂不直接绘图 roc_model1 <- roc(test_df$extry, y, percent = TRUE) roc_model2 <- roc(test_df$extry, rf.model$votes[,1], percent = TRUE) # 绘制第一个模型的主ROC曲线 plot(roc_model1, legacy.axes = TRUE, xlab = "False Positive Percentage", ylab = "True Postive Percentage", col = "#377eb8", lwd = 4, print.auc = TRUE) # 计算第一个模型ROC的95%置信区间,默认采用bootstrap重抽样法 ci_roc1 <- ci.se(roc_model1, boot.n = 2000, step = 1) # step=1对应百分比模式下每1%计算1个节点,保证平滑度 # 绘制同色系半透明置信带,关闭边框避免干扰主曲线 plot(ci_roc1, type = "shape", col = rgb(55, 126, 184, maxColorValue = 255, alpha = 0.2), border = NA) # 叠加第二个模型的主ROC曲线 plot(roc_model2, col = "#4daf4a", lwd = 4, print.auc = TRUE, add = TRUE, print.auc.y = 40) # 计算第二个模型ROC的95%置信区间 ci_roc2 <- ci.se(roc_model2, boot.n = 2000, step = 1) # 绘制第二个模型的半透明置信带 plot(ci_roc2, type = "shape", col = rgb(77, 175, 74, maxColorValue = 255, alpha = 0.2), border = NA)
参数调整说明
- 置信水平修改:在
ci.se()中添加conf.level参数即可,如需90%置信区间就设置conf.level=0.9 - 透明度调整:
rgb()里的alpha参数控制色带透明度,取值范围0-1,数值越小越透明,日常使用0.2-0.3的视觉效果最佳 - 计算速度调整:如果数据集较大bootstrap速度慢,可以把
boot.n适当调低到1000,对结果精度影响很小 - 步长适配:你代码里开了
percent=TRUE参数,ci.se()的step参数对应设为1(即1个百分点步长)即可保证带状平滑;如果没开百分比模式,把step设为0.01即可。
内容的提问来源于stack exchange,提问作者lola
相关产品推荐
相关产品推荐

