You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言ROC分析不使用pROC等包如何计算AUC置信区间

无pROC依赖的AUC置信区间计算实现

你不需要安装pROC等专用ROC扩展包,基于现有代码已经使用的ROCR包函数,搭配Bootstrap自助法即可完成AUC置信区间计算。

核心逻辑

  • 对测试集做和原样本量一致的有放回重采样
  • 每次重采样后复用现有AUC计算逻辑得到采样子集的AUC值
  • 重复采样1000~2000次得到AUC的经验分布
  • 取分布的对应分位数作为置信区间上下限,95%置信区间对应2.5%、97.5%分位点

可直接嵌入的代码

在你原有代码生成score和actual.class对象后,加入以下代码即可:

# Bootstrap参数设置
set.seed(123) # 固定随机种子保证结果可复现
boot_reps <- 1000 # 重采样次数,可按需提升至2000提高稳定性
boot_auc_vec <- c()
test_sample_n <- length(actual.class)

for (i in 1:boot_reps) {
  # 生成有放回抽样索引
  samp_idx <- sample(1:test_sample_n, size = test_sample_n, replace = TRUE)
  samp_score <- score[samp_idx]
  samp_label <- actual.class[samp_idx]
  # 跳过仅含单一类别的无效采样
  if (length(unique(samp_label)) < 2) next
  # 复用原有逻辑计算采样AUC
  samp_pred <- prediction(samp_score, samp_label)
  samp_auc <- performance(samp_pred, "auc")
  boot_auc_vec[i] <- unlist(slot(samp_auc, "y.values"))
}
# 清理无效采样产生的缺失值
boot_auc_vec <- na.omit(boot_auc_vec)
# 计算95%置信区间,调整probs参数可修改置信水平,如90%CI取c(0.05, 0.95)
auc_95ci <- quantile(boot_auc_vec, probs = c(0.025, 0.975))

计算完成后你可以直接将CI结果追加到原有的all_res结果矩阵中,参考代码:

all_res <- c(all_res, 
             "AUC_95CI_L" = round(auc_95ci[1],4), 
             "AUC_95CI_U" = round(auc_95ci[2],4))

使用说明

  • 重采样次数不建议低于1000次,次数越高置信区间估计越稳定,对应运行耗时也会增加
  • 必须设置随机种子,否则每次运行得到的置信区间会存在小幅波动,不利于结果复现
  • 该实现仅依赖R基础函数和你现有代码已经在使用的ROCR包,不需要额外安装任何专用ROC分析包

内容的提问来源于stack exchange,提问作者Kodex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 02:21:21