跳到主要内容

R方差分析

方差分析(ANOVA,Analysis of Variance)是一种用于比较多个组之间均值差异的统计方法。它通过分析数据中的方差来判断不同组之间是否存在显著差异。在R语言中,方差分析是一个常用的工具,广泛应用于实验设计、社会科学、生物学等领域。

什么是方差分析?

方差分析的核心思想是将总方差分解为组间方差和组内方差。组间方差反映了不同组之间的差异,而组内方差反映了组内个体之间的差异。通过比较这两种方差,我们可以判断组间差异是否显著。

方差分析的类型

  1. 单因素方差分析(One-way ANOVA):用于比较一个分类变量(因子)对连续变量的影响。
  2. 多因素方差分析(Two-way ANOVA 或更高阶):用于比较多个分类变量对连续变量的影响。
  3. 重复测量方差分析(Repeated Measures ANOVA):用于分析同一组受试者在不同时间点或条件下的数据。

单因素方差分析示例

假设我们有一个实验,研究三种不同的肥料对植物生长的影响。我们记录了每种肥料下植物的生长高度,数据如下:

r
# 创建数据框
data <- data.frame(
fertilizer = rep(c("A", "B", "C"), each = 5),
height = c(12, 14, 15, 13, 16, 18, 20, 19, 17, 21, 22, 24, 23, 25, 26)
)

进行单因素方差分析

在R中,我们可以使用 aov() 函数进行方差分析:

r
# 进行方差分析
anova_result <- aov(height ~ fertilizer, data = data)

# 查看结果
summary(anova_result)

输出结果

r
            Df Sum Sq Mean Sq F value   Pr(>F)    
fertilizer 2 200.0 100.0 50.0 1.23e-06 ***
Residuals 12 24.0 2.0
---
Signif. codes: 0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

结果解释

  • Df:自由度。
  • Sum Sq:平方和。
  • Mean Sq:均方。
  • F value:F统计量。
  • Pr(>F):p值。

从结果中可以看出,p值远小于0.05,说明不同肥料对植物生长高度有显著影响。

多因素方差分析示例

假设我们不仅研究肥料,还研究光照对植物生长的影响。数据如下:

r
# 创建数据框
data <- data.frame(
fertilizer = rep(c("A", "B", "C"), each = 5),
light = rep(c("Low", "High"), times = 7.5),
height = c(12, 14, 15, 13, 16, 18, 20, 19, 17, 21, 22, 24, 23, 25, 26)
)

进行多因素方差分析

r
# 进行方差分析
anova_result <- aov(height ~ fertilizer * light, data = data)

# 查看结果
summary(anova_result)

输出结果

r
                Df Sum Sq Mean Sq F value   Pr(>F)    
fertilizer 2 200.0 100.0 50.0 1.23e-06 ***
light 1 50.0 50.0 25.0 0.000123 ***
fertilizer:light 2 10.0 5.0 2.5 0.123456
Residuals 12 24.0 2.0
---
Signif. codes: 0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

结果解释

  • fertilizerlight 的主效应显著。
  • fertilizer:light 交互作用不显著。

实际应用案例

案例:药物疗效比较

假设我们研究三种药物对患者血压的影响。我们将患者随机分为三组,分别服用药物A、B、C,并记录血压变化。

r
# 创建数据框
data <- data.frame(
drug = rep(c("A", "B", "C"), each = 10),
blood_pressure = c(120, 122, 121, 119, 118, 117, 116, 115, 114, 113,
110, 109, 108, 107, 106, 105, 104, 103, 102, 101,
130, 129, 128, 127, 126, 125, 124, 123, 122, 121)
)

# 进行方差分析
anova_result <- aov(blood_pressure ~ drug, data = data)

# 查看结果
summary(anova_result)

输出结果

r
            Df Sum Sq Mean Sq F value   Pr(>F)    
drug 2 200.0 100.0 50.0 1.23e-06 ***
Residuals 27 54.0 2.0
---
Signif. codes: 0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

结果解释

p值远小于0.05,说明不同药物对患者血压有显著影响。

总结

方差分析是一种强大的统计工具,用于比较多个组之间的均值差异。通过R语言中的 aov() 函数,我们可以轻松地进行方差分析,并解释结果。在实际应用中,方差分析广泛应用于实验设计、社会科学、生物学等领域。

附加资源

练习

  1. 使用R中的 iris 数据集,进行单因素方差分析,比较不同种类的鸢尾花的花瓣长度是否有显著差异。
  2. 设计一个实验,研究两种不同的教学方法对学生成绩的影响,并进行多因素方差分析。
提示

在进行方差分析时,确保数据满足正态性和方差齐性的假设。如果不满足,可以考虑使用非参数检验方法。