如何创建循环计算不同样本量下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
相关产品推荐
相关产品推荐

