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

R中如何计算数据框两变量对应最大值的bootstrapped误差标准差

R分组Bootstrap计算最大值对应索引的标准差

实现逻辑

将每一次bootstrap采样与「ex最大值对应ei的提取」绑定,重复指定次数后对所有提取到的ei计算标准差即可,以下是可直接运行的代码:

首先加载依赖包:

library(dplyr)

完整实现代码:

# 示例数据(固定种子方便复现结果)
set.seed(123)
ex <- rnorm(10, 3, 1.4)
ei <- rep(1:5, times=2)
eg <- rep(letters[1:2], each=5)
eg.df <- data.frame(eg, ex, ei)

# 自定义bootstrap重复次数,次数越高结果稳定性越好
n_bootstrap <- 1000

eg_boot_result <- eg.df %>%
  group_by(eg) %>%
  reframe(
    # 重复n_bootstrap次采样逻辑
    boot_data = replicate(n_bootstrap, {
      # 分组内有放回采样,样本量和原组一致
      # dplyr版本低于1.1.0请将pick(everything())替换为cur_data()
      sample_df <- slice_sample(pick(everything()), prop = 1, replace = TRUE)
      # 返回本次采样的max(ex)和对应ei
      c(
        max_ex = max(sample_df$ex),
        max_ei = sample_df$ei[which.max(sample_df$ex)]
      )
    }) %>% t(), # 转置为每行对应一次采样结果的格式
    .groups = "drop"
  ) %>%
  # 按分组计算两个指标的标准差
  group_by(eg) %>%
  summarise(
    sdEx = sd(boot_data[, "max_ex"]),
    sdEi = sd(boot_data[, "max_ei"])
  )

# 输出结果
print(eg_boot_result)

说明

  • 相比嵌套sample的写法,用replicate封装单次采样逻辑可读性更强,也方便调整重复次数
  • 如果你需要保留所有bootstrap的原始采样结果用于后续分析,删除最后的summarise步骤即可获取每一次采样的max_ex和max_ei值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:18:00