pROC包分层Bootstrap抽样占比及自定义设置技术咨询
关于pROC包roc函数Bootstrap抽样的比例与自定义问题
核心结论
- pROC中
ci.method='bootstrap'时,分层Bootstrap抽样是按原样本的病例/对照数量进行有放回抽样,即每个Bootstrap样本的大小和原始样本完全一致(抽样占比100%),并非70%、80%这类比例。 - 目前pROC的
roc()函数不支持自定义该抽样比例。
对论文描述的验证
你对论文内容的理解准确:分层Bootstrap会保证每个Bootstrap重复样本中,病例和对照的数量与原始样本完全相同,同时维持原样本的病例对照比例。文中“选择的病例和对照观测数与原始样本相同”就是指抽样后的样本量和原样本一致,而非抽取部分比例。
自定义抽样比例的替代方案
如果需要自定义Bootstrap抽样比例,可手动实现分层抽样逻辑,再结合pROC计算相关指标:
- 按病例/对照分层,抽取指定比例的样本,重复多次Bootstrap迭代
- 对每个Bootstrap样本计算ROC和AUC
- 手动计算置信区间后完成绘图
参考代码示例:
# 假设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
相关产品推荐
相关产品推荐

