mobile wallpaper 1
353 字
1 分钟
R语言方差分析 (ANOVA)
2026-06-29

单因素方差分析#

检验一个因素(如:不同品种)对指标的影响。

code.R
# 拟合模型
model_1w <- aov(产量 ~ 品种, data = df)
summary(model_1w)
# 事后多重比较 (Tukey 法):看看具体哪两个品种之间有差异
library(agricolae)
HSD.test(model_1w, "品种", group = TRUE, console = TRUE)

双因素方差分析及交互作用#

如果存在两个因素,我们还要关心它们之间会不会相互影响(交互作用)。

code.R
# 带交互作用的模型
model_2wi <- aov(产量 ~ 品种 * 施肥方式, data = df)
summary(model_2wi)

ANOVA 的前提假设检验#

方差分析要求数据服从正态分布并且各组方差齐性

code.R
# 正态性检验 (Shapiro-Wilk)
shapiro.test(x) # p > 0.05 说明符合正态
{{ ... }}
library(car)
leveneTest(产量 ~ 品种, data = df) # p > 0.05 说明方差齐

进阶补充:ANOVA 的线性模型本质与平方和类型#

  • ANOVA 即一般线性模型(GLM):在数学上,方差分析与线性回归是等价的,其本质是通过引入虚拟变量(Dummy Variables)来拟合分类自变量的线性模型(Y = X \eta + \epsilon)。在 R 中,aov() 实际上就是 lm() 的包装器。
  • I 类、II 类与 III 类平方和的深层陷阱
    • R 的默认 ANOVA(使用 summary(aov()))计算的是 Type I (Sequential) Sum of Squares。这意味着变量进入模型的顺序会直接改变计算结果!如果你的设计是非平衡的(各组样本量不同),这会导致错误的结论。
    • 为了得到顺序无关的结果(如 SAS 和 SPSS 的默认输出),必须使用 car::Anova(model, type=3) 来计算 Type III 平方和,并且必须将因子的正交对比属性(contrasts)修改为 contr.sum 而非默认的 contr.treatment
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

R语言方差分析 (ANOVA)
https://blog.sopak.space/posts/study/economics-management/ms-rfp/8/
作者
Xxxhite
发布于
2026-06-29
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录