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

pROC包分层Bootstrap抽样占比及自定义设置技术咨询

关于pROC包roc函数Bootstrap抽样的比例与自定义问题

核心结论

  • pROC中ci.method='bootstrap'时,分层Bootstrap抽样是按原样本的病例/对照数量进行有放回抽样,即每个Bootstrap样本的大小和原始样本完全一致(抽样占比100%),并非70%、80%这类比例。
  • 目前pROC的roc()函数不支持自定义该抽样比例。

对论文描述的验证

你对论文内容的理解准确:分层Bootstrap会保证每个Bootstrap重复样本中,病例和对照的数量与原始样本完全相同,同时维持原样本的病例对照比例。文中“选择的病例和对照观测数与原始样本相同”就是指抽样后的样本量和原样本一致,而非抽取部分比例。

自定义抽样比例的替代方案

如果需要自定义Bootstrap抽样比例,可手动实现分层抽样逻辑,再结合pROC计算相关指标:

  1. 按病例/对照分层,抽取指定比例的样本,重复多次Bootstrap迭代
  2. 对每个Bootstrap样本计算ROC和AUC
  3. 手动计算置信区间后完成绘图

参考代码示例:

# 假设df中classes为二分类变量(case/control)
n_boot <- 1000
auc_values <- numeric(n_boot)

for (i in 1:n_boot) {
  # 分层抽取80%样本
  case_subset <- df[df$classes == "case", ]
  control_subset <- df[df$classes == "control", ]
  boot_case <- case_subset[sample(nrow(case_subset), round(0.8 * nrow(case_subset))), ]
  boot_control <- control_subset[sample(nrow(control_subset), round(0.8 * nrow(control_subset))), ]
  boot_sample <- rbind(boot_case, boot_control)
  
  # 计算当前Bootstrap样本的AUC
  roc_obj <- pROC::roc(as.factor(boot_sample$classes), boot_sample$score)
  auc_values[i] <- roc_obj$auc
}

# 计算AUC的95%置信区间
ci_auc <- quantile(auc_values, c(0.025, 0.975))

内容的提问来源于stack exchange,提问作者JALO - JusAnotherLivngOrganism

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 10:10:57