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

R语言多次随机抽样分组执行ANOVA并批量存储指标的实现问题

R语言实现重复分组ANOVA的完整方案

完整可运行代码

# 1. 初始生成50个随机数
set.seed(123) # 可选,添加后可复现运行结果
samp <- rnorm(50, 3.47, 0.0189) 

# 2. 初始化结果存储矩阵,对应1000次迭代的3个指标
iter_num <- 1000
results <- matrix(NA, nrow = iter_num, ncol = 3,
                  dimnames = list(NULL, c("F_value", "P_value", "F_critical")))

# 3. 迭代执行分组+ANOVA流程
for (i in 1:iter_num) {
  # 3.1 无放回打乱所有样本,生成带分组标识的数据框
  shuffled_samp <- sample(samp, size = 50, replace = FALSE)
  df <- data.frame(
    value = shuffled_samp,
    group = rep(1:10, each = 5) # 自动生成10组标识,每组对应5个样本
  )
  
  # 3.2 执行ANOVA检验
  samp_lm <- lm(value ~ factor(group), data = df)
  anova_res <- anova(samp_lm)
  
  # 3.3 计算F临界值,提取三个目标指标存入结果矩阵
  f_critical <- qf(1 - 0.05, anova_res$Df[1], anova_res$Df[2])
  results[i, ] <- c(anova_res$`F value`[1], anova_res$`Pr(>F)`[1], f_critical)
}

# 4. 查看前几行结果验证
head(results)

实现说明

  • 分组逻辑:每次迭代先对全部50个样本做无放回全排列,按顺序每5个归为一组,既满足无放回抽样要求,也避免了循环抽样的冗余代码
  • 指标提取:直接从anova()返回的结果中取第一行的对应值(组间差异对应的统计量),F临界值调用qf()计算,自由度直接读取ANOVA结果中的自由度参数,无需手动硬编码
  • 结果存储:预分配的矩阵results每一行对应一次迭代的三个指标,后续可直接用于后续统计分析

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 12:21:04