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

如何创建循环计算不同样本量下bootstrap相对标准差的均值

修改后的R代码实现

我们可以通过添加外层循环完成10次迭代,再对每个样本量计算相对标准差的平均值,具体代码如下:

library(boot)  # 确保加载boot包,原代码依赖该包的boot函数

n_range <- 2:29
iterations <- 10  # 设置迭代次数
# 初始化矩阵存储每次迭代结果:行对应迭代次数,列对应不同样本量
results_matrix <- matrix(nrow = iterations, ncol = length(n_range))
set.seed(30)  # 全局设置随机种子,保证结果可重复

# 提前读取base.csv并计算固定参数,避免循环内重复操作浪费资源
base <- read.table("base.csv", header=T, sep=",")
base$area <- 5036821
base$quadrea <- base$area * 16

for (i in 1:iterations) {
  bResultsRan <- vector("double", length(n_range))
  for (idx in seq_along(n_range)) {
    n <- n_range[idx]
    bRowsRan <- Random[sample(nrow(Random), n), ]
    
    bootRan <- boot(data = bRowsRan$count, statistic = average, R=1000)
    base$data <- bootRan$t
    base$popsize <- base$data * base$quadrea
    bValue <- sd(base$popsize)/mean(base$popsize)
    
    bResultsRan[idx] <- bValue
  }
  results_matrix[i, ] <- bResultsRan
}

# 计算每个样本量的10次迭代平均相对标准差
avg_relative_sd <- colMeans(results_matrix)
BRRan <- data.frame(n = n_range, avg_relative_sd = avg_relative_sd)

# 绘制结果图
plot(BRRan$n, BRRan$avg_relative_sd, xlab = "样本量", ylab = "平均相对标准差", type = "l", main = "样本量与平均Bootstrap相对标准差关系")

关键修改说明

  • 新增外层循环控制10次迭代,用矩阵存储每次迭代的全样本量结果,方便后续计算均值
  • 将base.csv读取和固定参数计算移到循环外,避免重复IO操作提升运行效率
  • 用seq_along(n_range)遍历样本量索引,替代原代码中b-1的索引方式,逻辑更清晰
  • 通过colMeans()直接计算每个样本量对应的10次迭代结果平均值,生成最终数据框

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:01:49