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

求助:计算含总体中位数的Bootstrap置信区间数量(代码循环问题)

Bootstrap置信区间覆盖率计算问题修正

你的代码存在变量定义、循环逻辑和索引错误,以下是问题梳理和修正方案:

核心问题点

  • 未定义变量B:代码多处使用B但未赋值,需明确区分外层重复实验次数和内层Bootstrap抽样次数
  • 无效变量Total:sample函数中size=length(Total)无定义,应改为length(data)(与原始样本量一致)
  • 排序逻辑错误:result_vec[i]<- result_vec[order(result_vec)]会将整个排序向量塞进单个元素,导致分位数计算完全失效
  • 分位数索引错误:0.0975应为0.975,且手动索引易出错,建议直接用分位数函数
  • 条件判断错误:if(lower_bound<... && upper_bound<...)是对整个向量做比较,应取当前循环对应的单个元素

修正后的代码

pop_median <- 0.693
# 内层Bootstrap抽样次数
n_boot <- 10000
# 外层重复实验次数
n_rep <- 1000
set.seed(233)
data <- rexp(100, 1)

lower_bound <- vector(length = n_rep)
upper_bound <- vector(length = n_rep)
count <- 0

for (i in 1:n_rep) { 
  # 用replicate替代内层循环,生成n_boot个Bootstrap中位数
  boot_medians <- replicate(n_boot, median(sample(data, size = length(data), replace = TRUE)))
  # 直接计算95%置信区间的分位数
  lower_bound[i] <- quantile(boot_medians, 0.025)
  upper_bound[i] <- quantile(boot_medians, 0.975)
  
  # 判断总体中位数是否在当前区间内
  if (lower_bound[i] < pop_median && upper_bound[i] > pop_median) {
    count <- count + 1
  }
}

count

优化说明

  • 用replicate替代内层循环,代码更简洁且执行效率更高
  • 变量命名更清晰(n_boot、n_rep),避免混淆
  • 直接调用quantile函数计算分位数,避免手动索引可能出现的边界错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:55:18