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

如何单独获取每个物种对应的ANOVA方差分析检验的汇总统计结果

解决方案

首先你现有代码存在一个逻辑问题:do()函数内调用aov()时指定的data = Isotopes是全局未分组的数据集,会导致每个物种对应的模型都用了全量数据,分组失效,需要先把这里改为data = . 调用分组后的子集。

方法1:使用broom包输出结构化汇总结果(推荐,方便后续导出/分析)

broom是tidyverse生态下专门整理统计模型输出的包,可以直接把ANOVA结果转为规整的数据框:

# 加载所需包
library(dplyr)
library(broom)

# 修正分组建模逻辑
Anova <- Isotopes %>% 
  group_by(Species) %>% 
  do(model = aov(d15N~Season+Location, data = .))

# 提取每个物种的ANOVA方差分析表
anova_result <- Anova %>% 
  summarize(
    Species = Species,
    tidy(model)
  )

# 提取每个物种的模型整体拟合指标(如R方、p值等)
model_fit <- Anova %>% 
  summarize(
    Species = Species,
    glance(model)
  )

你可以直接查看anova_result得到每个物种对应每个自变量的自由度、F值、p值等统计量,查看model_fit得到每个物种模型的整体拟合结果。

方法2:使用基础R函数直接打印每个物种的汇总结果

如果你不想安装额外包,可以直接遍历模型列表调用基础R的summary()函数:

# 先修正建模代码
Anova <- Isotopes %>% 
  group_by(Species) %>% 
  do(model = aov(d15N~Season+Location, data = .))

# 逐个打印每个物种的ANOVA汇总
species_list <- unique(Isotopes$Species)
for (i in seq_along(species_list)) {
  cat("===== 物种:", species_list[i], "的ANOVA结果 =====\n")
  print(summary(Anova$model[[i]]))
  cat("\n")
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:27:00