← 返回

anova

统计学与数据科学 Statistics and Data Science

一、什么是 ANOVA?

基本定义

ANOVA (Analysis of Variance,方差分析) 是一种统计方法,用于检验多个组的均值 (means) 是否存在显著差异 (significant difference)。

为什么叫”方差分析”?

这是个很有意思的问题:我们明明想比较均值 (mean),为什么要分析方差 (variance)

核心思想

  • 如果各组均值真的不同,那么组间变异 (between-group variation) 应该比组内变异 (within-group variation) 更大
  • ANOVA 通过比较”组间方差”和”组内方差”来判断均值差异是否显著

类比: 想象你在比较三个班级的平均成绩:

  • Between-group variance 大:A班平均90分,B班平均70分,C班平均50分 → 班级之间差异明显
  • Within-group variance 大:每个班内部学生成绩差异很大(有人90分有人50分)→ 随机波动 (random fluctuation) 大

如果组间方差 >> 组内方差,说明班级之间的差异是真实的 (genuine),不是偶然 (by chance)。


二、ANOVA 的类型

按因子数量分类:

类型自变量数量英文术语例子
单因素方差分析1个因子 (factor)One-way ANOVA比较3种药物的疗效
双因素方差分析2个因子Two-way ANOVA比较药物类型×性别对疗效的影响
多因素方差分析3个或更多因子Multi-way ANOVA / Factorial ANOVA药物×性别×年龄组

按样本类型分类:

类型样本关系英文术语例子
独立样本方差分析独立样本 (independent samples)Between-subjects ANOVA不同的人接受不同治疗
重复测量方差分析重复测量 (repeated measures)Within-subjects ANOVA / Repeated Measures ANOVA同一批人在不同时间点测量

本文重点One-way ANOVA(单因素独立样本方差分析)


三、One-way ANOVA 的使用场景

必须满足的条件:

  1. 因变量 (dependent variable / outcome variable)连续变量 (continuous variable)(如:分数、体重、时间、血压)
  2. 自变量 (independent variable / predictor / factor)分类变量 (categorical variable),有3个或更多水平 (levels / groups)
  3. 独立样本 (independent observations):各组观测值互不影响
  4. 每组样本来自正态分布 (normal distribution)(或样本量足够大)
  5. 各组方差齐性 (homogeneity of variance / homoscedasticity)

典型应用场景:

研究领域研究问题自变量 (Factor)因变量 (Outcome)组数
医学3种降压药哪种最有效?药物类型 (Drug type)收缩压下降值 (Systolic BP reduction, mmHg)3
教育4种教学法对学习效果的影响教学方法 (Teaching method)期末考试成绩 (Final exam score)4
农业不同施肥量对产量的影响施肥量 (Fertilizer level)作物产量 (Crop yield, kg)4
心理学不同音乐类型对焦虑的影响音乐类型 (Music genre)焦虑量表得分 (Anxiety score)3
市场营销3种广告策略的效果比较广告类型 (Ad type)购买意愿评分 (Purchase intention)3

四、ANOVA 的数学原理

核心概念:变异分解 (Partitioning Variance / Variance Decomposition)

ANOVA 把总变异 (total variation) 分解成两部分:

总变异 = 组间变异 + 组内变异
Total Variation = Between-group Variation + Within-group Variation
SST = SSB + SSW

1. 总变异 (Total Sum of Squares, SST / SS_total)

衡量所有数据点相对于总均值 (grand mean) 的离散程度 (dispersion)。

公式

SST = Σ(xᵢⱼ - x̄)²
  • xᵢⱼ:第 i 组第 j 个观测值 (observation)
  • x̄:所有数据的总均值 (grand mean / overall mean)

含义:如果把所有数据看成一个整体,它们的总波动 (total variability) 有多大?


2. 组间变异 (Between-group Sum of Squares, SSB / SS_between / SS_treatment)

衡量各组均值 (group means) 相对于总均值的差异。

公式

SSB = Σ nᵢ × (x̄ᵢ - x̄)²
  • nᵢ:第 i 组的样本量 (sample size)
  • x̄ᵢ:第 i 组的均值 (group mean)
  • x̄:总均值 (grand mean)

含义:各组的平均水平差异有多大?这是我们关心的”真实效应 (treatment effect)”。

直觉理解

  • 如果各组均值都接近总均值 → SSB 小 → 组间差异不明显
  • 如果各组均值差异很大 → SSB 大 → 组间差异明显

3. 组内变异 (Within-group Sum of Squares, SSW / SS_within / SS_error / SS_residual)

衡量每组内部数据的波动(随机误差 / random error)。

公式

SSW = Σ Σ (xᵢⱼ - x̄ᵢ)²

含义:即使在同一组内,数据也会有自然波动(个体差异 / individual differences、测量误差 / measurement error 等)。这是”随机误差 (random error / noise)”。

直觉理解

  • 如果每组内部数据很集中 → SSW 小 → 组内一致性 (consistency) 高
  • 如果每组内部数据很分散 → SSW 大 → 随机波动大

变异分解的意义

SST = SSB + SSW
Total Variation = Systematic Variation + Random Variation
总波动 = 系统性差异 + 随机误差

ANOVA 的判断逻辑

  • 如果 SSB >> SSW:组间差异 (systematic difference) 远大于随机误差 → 差异是真实的
  • 如果 SSB ≈ SSW:组间差异和随机误差差不多 → 差异可能只是偶然

五、F 统计量 (F-statistic / F-ratio)

为什么不能直接比较 SSB 和 SSW?

因为它们的自由度 (degrees of freedom, df) 不同,需要标准化 (standardization)。

均方 (Mean Square, MS)

组间均方 (Mean Square Between, MSB / MS_treatment)

MSB = SSB / df_between
df_between = k - 1  (k 是组数 / number of groups)

组内均方 (Mean Square Within, MSW / MS_error)

MSW = SSW / df_within
df_within = N - k  (N 是总样本量 / total sample size)

F 统计量 (F-statistic)

F = MSB / MSW
F = Between-group variance / Within-group variance

含义

  • F 值衡量”组间变异”相对于”组内变异”的大小
  • F ≈ 1:组间差异和随机误差差不多 → 可能没有真实差异
  • F >> 1:组间差异远大于随机误差 → 很可能有真实差异 (likely a real effect)

F 分布 (F-distribution)

F 统计量服从 F 分布,参数为 (df_between, df_within)。

通过查 F 分布表 (F-table) 或用软件计算,可以得到 p-value

  • p < 0.05:拒绝原假设 (reject null hypothesis),认为组间有显著差异 (statistically significant difference)
  • p ≥ 0.05:不能拒绝原假设 (fail to reject null hypothesis),认为组间无显著差异

六、假设检验步骤 (Hypothesis Testing)

Step 1: 建立假设 (State Hypotheses)

原假设 (Null Hypothesis, H₀)

μ₁ = μ₂ = μ₃ = ... = μₖ

所有组的总体均值 (population means) 相等。

备择假设 (Alternative Hypothesis, H₁ / Hₐ)

至少存在一对 i ≠ j,使得 μᵢ ≠ μⱼ
At least one group mean differs from the others

至少有一个组的均值与其他组不同。

注意:H₁ 不是说”所有组都不同”,而是”至少有一对不同”。


Step 2: 设定显著性水平 (Set Significance Level)

通常选择 α = 0.05(也可以是 0.01 或 0.10)。


Step 3: 计算检验统计量 (Calculate Test Statistic)

  1. 计算各组均值、总均值
  2. 计算 SSB、SSW、SST
  3. 计算 MSB、MSW
  4. 计算 F = MSB / MSW

Step 4: 确定 p-value (Determine p-value)

根据 F 值和自由度,查 F 分布表或用软件计算 p-value。


Step 5: 做出决策 (Make Decision)

  • 如果 p < α:拒绝 H₀ (reject H₀),认为组间存在显著差异
  • 如果 p ≥ α:不能拒绝 H₀ (fail to reject H₀),认为组间无显著差异

七、完整计算示例

研究问题

比较 3 种肥料(A、B、C)对小麦产量的影响。

数据

肥料 A (Fertilizer A)肥料 B (Fertilizer B)肥料 C (Fertilizer C)
202832
223035
192733
243136
212934

Step 1: 计算基本统计量 (Descriptive Statistics)

各组均值 (Group means)

  • x̄₁ = (20+22+19+24+21)/5 = 21.2
  • x̄₂ = (28+30+27+31+29)/5 = 29.0
  • x̄₃ = (32+35+33+36+34)/5 = 34.0

总均值 (Grand mean)

x̄ = (21.2×5 + 29.0×5 + 34.0×5) / 15 = 28.07

Step 2: 计算 SSB(组间变异 / Between-group Sum of Squares)

SSB = n₁(x̄₁ - x̄)² + n₂(x̄₂ - x̄)² + n₃(x̄₃ - x̄)²
    = 5×(21.2-28.07)² + 5×(29.0-28.07)² + 5×(34.0-28.07)²
    = 5×47.20 + 5×0.86 + 5×35.16
    = 236.0 + 4.3 + 175.8
    = 416.1

Step 3: 计算 SSW(组内变异 / Within-group Sum of Squares)

肥料 A 组内

(20-21.2)² + (22-21.2)² + (19-21.2)² + (24-21.2)² + (21-21.2)²
= 1.44 + 0.64 + 4.84 + 7.84 + 0.04
= 14.8

肥料 B 组内

(28-29)² + (30-29)² + (27-29)² + (31-29)² + (29-29)²
= 1 + 1 + 4 + 4 + 0
= 10.0

肥料 C 组内

(32-34)² + (35-34)² + (33-34)² + (36-34)² + (34-34)²
= 4 + 1 + 1 + 4 + 0
= 10.0

总组内变异 (Total within-group variation)

SSW = 14.8 + 10.0 + 10.0 = 34.8

Step 4: 计算自由度 (Degrees of Freedom)

df_between = k - 1 = 3 - 1 = 2
df_within = N - k = 15 - 3 = 12

Step 5: 计算均方 (Mean Squares)

MSB = SSB / df_between = 416.1 / 2 = 208.05
MSW = SSW / df_within = 34.8 / 12 = 2.9

Step 6: 计算 F 统计量 (F-statistic)

F = MSB / MSW = 208.05 / 2.9 = 71.74

Step 7: 查 p-value

用 F(2, 12) 分布,F = 71.74 对应 p < 0.001(远小于 0.05)。


Step 8: 结论 (Conclusion)

拒绝原假设 (Reject H₀),3 种肥料对小麦产量的影响存在显著差异(F = 71.74, p < 0.001)。

但注意:我们只知道”有差异”,不知道:

  • 哪种肥料最好?
  • A 和 B 有差异吗?
  • B 和 C 有差异吗?

需要进一步做 post-hoc test / multiple comparisons(如 Tukey HSD)。


八、ANOVA 表 (ANOVA Table)

统计软件通常输出标准的 ANOVA 表:

Source of VariationSSdfMSFp-value
Between Groups416.12208.0571.74< 0.001
Within Groups (Error)34.8122.9
Total450.914

解读:

  • SS (Sum of Squares):平方和
  • df (degrees of freedom):自由度
  • MS (Mean Square):均方 = SS / df
  • F (F-statistic / F-ratio):F 统计量
  • p-value (significance level):显著性概率

九、ANOVA 的前提假设 (Assumptions)

ANOVA 的结果可靠性依赖于以下假设:

1. 独立性 (Independence of Observations)

要求:各组的观测值互相独立,一个观测值不影响另一个。

违反例子

  • 同一个人在不同时间点的测量(应该用 repeated measures ANOVA)
  • 同一家庭的多个成员(存在聚类效应 / clustering effect)

检验方法:通过研究设计 (study design) 保证,无统计检验。


2. 正态性 (Normality)

要求:每组数据应该服从正态分布 (normally distributed)。

检验方法

  • Shapiro-Wilk test:p > 0.05 说明符合正态分布
  • Q-Q plot (Quantile-Quantile plot):点应该大致在直线上
  • 直方图 (Histogram):应该呈钟形 (bell-shaped)

稳健性 (Robustness)

  • 样本量较大时(n > 30),ANOVA 对正态性违反比较稳健
  • 如果严重违反,可以用非参数方法 (non-parametric alternative)(Kruskal-Wallis test)

3. 方差齐性 (Homogeneity of Variance / Homoscedasticity)

要求:各组的方差 (variance) 应该大致相等。

检验方法

  • Levene’s test:p > 0.05 说明方差齐性
  • Bartlett’s test:对正态性敏感,不推荐

如果违反 (heteroscedasticity)

  • 可以用 Welch’s ANOVA(不假设方差齐性)
  • 或用非参数方法(Kruskal-Wallis test)

十、效应量 (Effect Size)

为什么需要效应量?

p-value 只告诉我们”是否有差异 (statistical significance)“,但不告诉我们”差异有多大 (practical significance)”。

样本量很大时,即使差异很小也可能显著(p < 0.05)。

Eta-squared (η² / Eta squared)

衡量组间变异占总变异的比例 (proportion of variance explained)

η² = SSB / SST

解释标准(Cohen’s guideline):

  • η² = 0.01:小效应 (small effect)
  • η² = 0.06:中等效应 (medium effect)
  • η² = 0.14:大效应 (large effect)

Omega-squared (ω² / Omega squared)

比 η² 更保守的估计(less biased estimator):

ω² = (SSB - (k-1)×MSW) / (SST + MSW)

示例计算

前面的肥料例子:

η² = SSB / SST = 416.1 / 450.9 = 0.923

解释:92.3% 的产量变异可以由肥料类型解释,这是非常大的效应 (very large effect)


十一、ANOVA 的局限性 (Limitations)

1. 只能判断”有差异”,不能判断”哪里有差异” (Omnibus Test)

ANOVA 显著只说明至少有一对组不同,但不告诉你:

  • 是哪些组不同?(Which groups differ?)
  • 差异的方向 (Direction of difference)(谁高谁低)?
  • 差异的大小 (Magnitude of difference)?

解决方案:用 post-hoc tests / multiple comparisons(Tukey HSD、Bonferroni、Scheffé 等)。


2. 对异常值敏感 (Sensitive to Outliers)

极端值 (extreme values / outliers) 会严重影响均值和方差,导致结果不准确。

解决方案

  • 检查并处理异常值(删除或转换 / transformation)
  • 使用稳健方法 (robust methods)(如 Kruskal-Wallis test)

3. 只能处理一个因子 (Single Factor)

如果有多个自变量(如肥料类型 + 灌溉方式),需要用:

  • Two-way ANOVA(双因素方差分析)
  • Factorial ANOVA(多因素方差分析)# Two-way ANOVA 和 Multi-way ANOVA 详解

十二、Two-way ANOVA(双因素方差分析)

什么是 Two-way ANOVA?

Two-way ANOVA 用于同时检验**两个分类自变量(因子)**对一个连续因变量的影响。

核心概念

Two-way ANOVA 不仅可以检验:

  1. 主效应 (Main Effect):每个因子单独的影响
  2. 交互效应 (Interaction Effect):两个因子共同作用的影响

适用场景

研究问题因子 A (Factor A)因子 B (Factor B)因变量 (Outcome)
药物和性别对血压的影响药物类型(A/B/C)性别(男/女)血压下降值
教学方法和学习时间对成绩的影响教学方法(传统/在线)学习时间(短/中/长)考试成绩
肥料和灌溉对产量的影响肥料类型(A/B/C)灌溉方式(滴灌/喷灌)作物产量
广告类型和投放时段对点击率的影响广告类型(图片/视频)时段(早/午/晚)点击率

Two-way ANOVA 的优势

相比做两次 One-way ANOVA:

  1. 更高效:一次分析同时检验两个因子
  2. 控制混淆 (Confounding):考虑了另一个因子的影响
  3. 发现交互效应:这是最重要的优势

交互效应 (Interaction Effect) 详解

交互效应:一个因子的效应取决于另一个因子的水平。

例子 1:药物 × 性别

假设研究药物 A 和 B 对男女血压的影响:

男性女性
药物 A降低 10 mmHg降低 10 mmHg
药物 B降低 5 mmHg降低 15 mmHg

分析

  • 药物 A:对男女效果一样(都是 10)
  • 药物 B:对女性效果更好(15 > 5)
  • 存在交互效应:药物效果取决于性别

图示

血压下降值
    |
 15 |              ● 药物B-女性
    |            /
 10 | ●--------●  药物A
    |          \
  5 |           ● 药物B-男性
    |________________
       男性    女性

如果两条线不平行,说明存在交互效应。


例子 2:教学方法 × 学习时间

短时间长时间
传统教学60 分70 分
在线教学55 分85 分

分析

  • 传统教学:学习时间增加,成绩提高 10 分
  • 在线教学:学习时间增加,成绩提高 30 分
  • 存在交互效应:在线教学更依赖学习时间

Two-way ANOVA 的数学模型

模型公式

yᵢⱼₖ = μ + αᵢ + βⱼ + (αβ)ᵢⱼ + εᵢⱼₖ

符号说明

  • yᵢⱼₖ:第 i 个 A 水平、第 j 个 B 水平、第 k 个观测值
  • μ:总均值 (grand mean)
  • αᵢ:因子 A 第 i 个水平的主效应 (main effect of Factor A)
  • βⱼ:因子 B 第 j 个水平的主效应 (main effect of Factor B)
  • (αβ)ᵢⱼ:交互效应 (interaction effect)
  • εᵢⱼₖ:随机误差 (random error)

变异分解 (Variance Decomposition)

Two-way ANOVA 把总变异分解成四部分

SST = SS_A + SS_B + SS_A×B + SS_error

总变异 = A的主效应 + B的主效应 + 交互效应 + 随机误差

各部分含义:

  1. SS_A (Sum of Squares for Factor A):因子 A 的主效应

    • 衡量因子 A 各水平均值的差异
  2. SS_B (Sum of Squares for Factor B):因子 B 的主效应

    • 衡量因子 B 各水平均值的差异
  3. SS_A×B (Sum of Squares for Interaction):交互效应

    • 衡量 A 和 B 共同作用产生的额外效应
  4. SS_error (Sum of Squares for Error):随机误差

    • 组内变异,无法被因子解释的部分

Two-way ANOVA 表

SourceSSdfMSFp-value
Factor ASS_Aa-1MS_AF_Ap_A
Factor BSS_Bb-1MS_BF_Bp_B
A × B (Interaction)SS_A×B(a-1)(b-1)MS_A×BF_A×Bp_A×B
ErrorSS_errorN-abMS_error
TotalSSTN-1

符号说明

  • a:因子 A 的水平数 (number of levels of Factor A)
  • b:因子 B 的水平数 (number of levels of Factor B)
  • N:总样本量 (total sample size)

三个 F 检验

Two-way ANOVA 需要进行三个独立的假设检验

1. 因子 A 的主效应检验

原假设 (H₀):因子 A 各水平的总体均值相等

H₀: μ_A1 = μ_A2 = ... = μ_Aa

检验统计量

F_A = MS_A / MS_error

2. 因子 B 的主效应检验

原假设 (H₀):因子 B 各水平的总体均值相等

H₀: μ_B1 = μ_B2 = ... = μ_Bb

检验统计量

F_B = MS_B / MS_error

3. 交互效应检验

原假设 (H₀):因子 A 和 B 之间无交互效应

H₀: (αβ)ᵢⱼ = 0 for all i, j

检验统计量

F_A×B = MS_A×B / MS_error

重要:如果交互效应显著,主效应的解释需要谨慎,因为一个因子的效应取决于另一个因子的水平。


完整计算示例:药物 × 性别

研究问题

比较两种降压药(A、B)对男女患者的效果。

数据(血压下降值,mmHg)

男性女性
药物 A8, 10, 912, 14, 13
药物 B15, 17, 1610, 12, 11

Step 1: 计算各单元格均值 (Cell Means)

男性女性行均值 (Row Mean)
药物 A9.013.011.0
药物 B16.011.013.5
列均值 (Column Mean)12.512.0

总均值 (Grand Mean):x̄ = 12.25


Step 2: 计算 SS_A(药物主效应)

SS_A = nb × Σ(x̄ᵢ. - x̄)²
     = 2×3 × [(11.0-12.25)² + (13.5-12.25)²]
     = 6 × [1.5625 + 1.5625]
     = 6 × 3.125
     = 18.75

Step 3: 计算 SS_B(性别主效应)

SS_B = na × Σ(x̄.ⱼ - x̄)²
     = 2×3 × [(12.5-12.25)² + (12.0-12.25)²]
     = 6 × [0.0625 + 0.0625]
     = 6 × 0.125
     = 0.75

Step 4: 计算 SS_A×B(交互效应)

SS_A×B = n × ΣΣ(x̄ᵢⱼ - x̄ᵢ. - x̄.ⱼ + x̄)²

单元格 (A, 男):(9.0 - 11.0 - 12.5 + 12.25)² = (-2.25)² = 5.0625
单元格 (A, 女):(13.0 - 11.0 - 12.0 + 12.25)² = (2.25)² = 5.0625
单元格 (B, 男):(16.0 - 13.5 - 12.5 + 12.25)² = (2.25)² = 5.0625
单元格 (B, 女):(11.0 - 13.5 - 12.0 + 12.25)² = (-2.25)² = 5.0625

SS_A×B = 3 × (5.0625 + 5.0625 + 5.0625 + 5.0625)
       = 3 × 20.25
       = 60.75

Step 5: 计算 SS_error(组内误差)

药物A-男性:(8-9)² + (10-9)² + (9-9)² = 1 + 1 + 0 = 2
药物A-女性:(12-13)² + (14-13)² + (13-13)² = 1 + 1 + 0 = 2
药物B-男性:(15-16)² + (17-16)² + (16-16)² = 1 + 1 + 0 = 2
药物B-女性:(10-11)² + (12-11)² + (11-11)² = 1 + 1 + 0 = 2

SS_error = 2 + 2 + 2 + 2 = 8

Step 6: 计算自由度

df_A = a - 1 = 2 - 1 = 1
df_B = b - 1 = 2 - 1 = 1
df_A×B = (a-1)(b-1) = 1×1 = 1
df_error = N - ab = 12 - 4 = 8

Step 7: 计算均方和 F 值

MS_A = SS_A / df_A = 18.75 / 1 = 18.75
MS_B = SS_B / df_B = 0.75 / 1 = 0.75
MS_A×B = SS_A×B / df_A×B = 60.75 / 1 = 60.75
MS_error = SS_error / df_error = 8 / 8 = 1.0

F_A = MS_A / MS_error = 18.75 / 1.0 = 18.75
F_B = MS_B / MS_error = 0.75 / 1.0 = 0.75
F_A×B = MS_A×B / MS_error = 60.75 / 1.0 = 60.75

Step 8: ANOVA 表

SourceSSdfMSFp-value
药物 (Drug)18.75118.7518.750.003**
性别 (Gender)0.7510.750.750.411
药物×性别 (Interaction)60.75160.7560.75< 0.001***
Error8.081.0
Total88.2511

Step 9: 结果解释

  1. 药物主效应显著 (F = 18.75, p = 0.003)

    • 两种药物的平均效果不同
    • 药物 B (13.5) > 药物 A (11.0)
  2. 性别主效应不显著 (F = 0.75, p = 0.411)

    • 男女患者的平均血压下降值相似
    • 男性 (12.5) ≈ 女性 (12.0)
  3. 交互效应显著 (F = 60.75, p < 0.001) ⭐

    • 这是最重要的发现
    • 药物效果取决于性别:
      • 药物 A:女性 (13) > 男性 (9)
      • 药物 B:男性 (16) > 女性 (11)

临床意义

  • 不能简单说”药物 B 更好”
  • 应该根据患者性别选择药物:
    • 男性患者:推荐药物 B
    • 女性患者:推荐药物 A

交互效应的可视化

交互图 (Interaction Plot)

血压下降值 (mmHg)
    |
 16 |           ● 药物B-男性
    |          /
 14 |         /  ● 药物A-女性
    |        /  /
 12 |       /  /
    |      /  /
 10 |     /  ● 药物B-女性
    |    /  /
  8 |   ● 药物A-男性
    |________________
       男性    女性

关键特征

  • 两条线交叉 (cross):强交互效应
  • 如果线平行 (parallel):无交互效应
  • 如果线不平行但不交叉:可能有弱交互效应

Two-way ANOVA 的前提假设

与 One-way ANOVA 相同,但更严格:

  1. 独立性 (Independence):所有观测值互相独立
  2. 正态性 (Normality):每个单元格 (cell) 的数据服从正态分布
  3. 方差齐性 (Homogeneity of Variance):所有单元格的方差相等

检验方法

  • Levene’s test:检验方差齐性
  • Shapiro-Wilk test:检验每个单元格的正态性

Two-way ANOVA 的类型

1. 平衡设计 (Balanced Design)

每个单元格的样本量相等:n₁₁ = n₁₂ = … = nₐᵦ

优点

  • 计算简单
  • 统计功效 (statistical power) 最大
  • 对假设违反更稳健

2. 非平衡设计 (Unbalanced Design)

各单元格样本量不等。

问题

  • SS_A 和 SS_B 不再独立
  • 需要选择 SS 的计算方法(Type I, II, III)

Type I, II, III SS 的区别

Type名称特点适用场景
Type ISequential SS顺序依赖很少使用
Type IIHierarchical SS不考虑交互效应无交互效应时
Type IIIMarginal SS考虑所有效应最常用,尤其是非平衡设计

建议:使用 Type III SS(R 中的 car::Anova(),SPSS 默认)。


Post-hoc Tests for Two-way ANOVA

如果主效应或交互效应显著,需要进一步分析:

1. 主效应显著 + 无交互效应

  • 对该因子进行 post-hoc test(如 Tukey HSD)

2. 交互效应显著

  • Simple Effects Analysis(简单效应分析)

    • 固定一个因子的某个水平,比较另一个因子的效应
    • 例如:在男性中比较药物 A vs B;在女性中比较药物 A vs B
  • Simple Comparisons(简单比较)

    • 比较特定单元格之间的差异
    • 例如:药物A-男性 vs 药物B-男性

Two-way ANOVA 的效应量

1. Partial Eta-squared (η²_p)

衡量某个因子解释的变异占该因子+误差的比例:

η²_p(A) = SS_A / (SS_A + SS_error)
η²_p(B) = SS_B / (SS_B + SS_error)
η²_p(A×B) = SS_A×B / (SS_A×B + SS_error)

解释标准

  • 0.01:小效应
  • 0.06:中等效应
  • 0.14:大效应

前面例子的效应量:

η²_p(药物) = 18.75 / (18.75 + 8) = 0.70 (大效应)
η²_p(性别) = 0.75 / (0.75 + 8) = 0.09 (中等效应)
η²_p(交互) = 60.75 / (60.75 + 8) = 0.88 (非常大效应)

Two-way ANOVA vs 两次 One-way ANOVA

比较项Two-way ANOVA两次 One-way ANOVA
效率一次分析需要两次分析
交互效应✅ 可以检测❌ 无法检测
控制混淆✅ 控制另一因子❌ 未控制
统计功效更高更低
结论准确性更准确可能误导

重要:如果存在交互效应,两次 One-way ANOVA 会得出错误结论!


十三、Multi-way ANOVA(多因素方差分析)

什么是 Multi-way ANOVA?

Multi-way ANOVA(也叫 Factorial ANOVA)用于同时检验三个或更多分类自变量对一个连续因变量的影响。


适用场景

研究问题因子 A因子 B因子 C因变量
药物、性别、年龄对血压的影响药物类型性别年龄组血压
教学方法、学习时间、学生类型对成绩的影响教学方法学习时间学生类型成绩
肥料、灌溉、土壤对产量的影响肥料类型灌溉方式土壤类型产量
广告、时段、平台对点击率的影响广告类型投放时段平台类型点击率

Three-way ANOVA 的数学模型

以三因素为例:

yᵢⱼₖₗ = μ + αᵢ + βⱼ + γₖ + (αβ)ᵢⱼ + (αγ)ᵢₖ + (βγ)ⱼₖ + (αβγ)ᵢⱼₖ + εᵢⱼₖₗ

符号说明

  • μ:总均值
  • αᵢ, βⱼ, γₖ:三个因子的主效应
  • (αβ)ᵢⱼ, (αγ)ᵢₖ, (βγ)ⱼₖ二阶交互效应 (two-way interactions)
  • (αβγ)ᵢⱼₖ三阶交互效应 (three-way interaction)
  • εᵢⱼₖₗ:随机误差

变异分解

Three-way ANOVA 把总变异分解成八部分

SST = SS_A + SS_B + SS_C 
    + SS_A×B + SS_A×C + SS_B×C 
    + SS_A×B×C 
    + SS_error

包括

  • 3 个主效应 (main effects)
  • 3 个二阶交互效应 (two-way interactions)
  • 1 个三阶交互效应 (three-way interaction)
  • 1 个误差项 (error term)

Three-way ANOVA 表

SourceSSdfMSFp-value
Factor ASS_Aa-1MS_AF_Ap_A
Factor BSS_Bb-1MS_BF_Bp_B
Factor CSS_Cc-1MS_CF_Cp_C
A × BSS_A×B(a-1)(b-1)MS_A×BF_A×Bp_A×B
A × CSS_A×C(a-1)(c-1)MS_A×CF_A×Cp_A×C
B × CSS_B×C(b-1)(c-1)MS_B×CF_B×Cp_B×C
A × B × CSS_A×B×C(a-1)(b-1)(c-1)MS_A×B×CF_A×B×Cp_A×B×C
ErrorSS_errorN-abcMS_error
TotalSSTN-1

三阶交互效应 (Three-way Interaction)

含义:A 和 B 的交互效应取决于 C 的水平。

例子:药物 × 性别 × 年龄

假设研究发现:

  • 年轻患者

    • 药物 A 对男性更好
    • 药物 B 对女性更好
  • 老年患者

    • 药物 A 对女性更好
    • 药物 B 对男性更好

解释:药物和性别的交互效应在不同年龄组中**方向


#相反**,这就是三阶交互效应。

可视化

年轻患者组:
血压下降值
    |
 16 |    ● 药物B-女性
    |   /
 12 |  /  ● 药物A-男性
    | /  /
  8 |/  /
    |  ● 药物A-女性
  4 | ● 药物B-男性
    |________________
       男性    女性

老年患者组:
血压下降值
    |
 16 |    ● 药物A-女性
    |   /
 12 |  /  ● 药物B-男性
    | /  /
  8 |/  /
    |  ● 药物B-女性
  4 | ● 药物A-男性
    |________________
       男性    女性

关键特征:两个年龄组中,药物×性别的交互模式完全不同


解释 Multi-way ANOVA 结果的层级原则

原则 1:从高阶交互效应开始检验

检验顺序

  1. 先看三阶交互效应 (A×B×C)
  2. 再看二阶交互效应 (A×B, A×C, B×C)
  3. 最后看主效应 (A, B, C)

原因:高阶交互效应显著时,低阶效应的解释会变得复杂或无意义。


原则 2:交互效应显著时的解释策略

显著效应解释策略
三阶交互显著需要分层分析:固定一个因子,分析另外两个因子的二阶交互
二阶交互显著进行简单效应分析 (simple effects analysis)
仅主效应显著直接比较该因子各水平的边际均值 (marginal means)

完整示例:药物 × 性别 × 年龄(Three-way ANOVA)

研究设计

  • 因子 A(药物):2 水平(药物 A, 药物 B)
  • 因子 B(性别):2 水平(男性, 女性)
  • 因子 C(年龄):2 水平(年轻 <50岁, 老年 ≥50岁)
  • 因变量:血压下降值 (mmHg)
  • 设计:2×2×2 完全析因设计 (full factorial design)
  • 每个单元格:n = 5 名患者

数据结构

药物性别年龄血压下降值 (n=5 的均值)
A年轻12
A老年8
A年轻10
A老年14
B年轻6
B老年15
B年轻16
B老年9

ANOVA 表(假设结果)

SourceSSdfMSFp-valueη²_p
药物 (A)2.512.50.830.3680.03
性别 (B)0.510.50.170.6850.01
年龄 (C)1.011.00.330.5680.01
A × B8.018.02.670.1110.08
A × C12.0112.04.000.0530.11
B × C4.014.01.330.2560.04
A × B × C240.01240.080.0<0.001*0.71
Error96.0323.0
Total364.039

结果解释

1. 三阶交互效应显著 ⭐⭐⭐

F(1, 32) = 80.0, p < 0.001, η²_p = 0.71

含义

  • 药物和性别的交互效应取决于年龄组
  • 不能简单说”哪种药物更好”或”哪种性别反应更好”
  • 需要分层分析

2. 分层分析:固定年龄,分析药物×性别

年轻患者组 (<50岁)

男性女性行均值
药物 A121011
药物 B61611
列均值913

简单交互效应分析

  • 药物 A:男性 (12) > 女性 (10)
  • 药物 B:女性 (16) >> 男性 (6)
  • 存在显著交互效应

临床建议(年轻患者)

  • 男性 → 药物 A
  • 女性 → 药物 B

老年患者组 (≥50岁)

男性女性行均值
药物 A81411
药物 B15912
列均值11.511.5

简单交互效应分析

  • 药物 A:女性 (14) >> 男性 (8)
  • 药物 B:男性 (15) >> 女性 (9)
  • 存在显著交互效应(但模式与年轻组相反!)

临床建议(老年患者)

  • 男性 → 药物 B
  • 女性 → 药物 A

3. 总结

个性化治疗方案

患者特征推荐药物预期效果
年轻男性药物 A12 mmHg
年轻女性药物 B16 mmHg
老年男性药物 B15 mmHg
老年女性药物 A14 mmHg

关键发现

  • 三个因子的主效应都不显著
  • 但三阶交互效应非常显著
  • 说明个体化治疗至关重要

Multi-way ANOVA 的复杂性

1. 单元格数量爆炸

因子数每个因子水平数单元格数所需样本量 (每格n=5)
233×3 = 945
333×3×3 = 27135
433×3×3×3 = 81405
533⁵ = 2431,215

问题

  • 样本量需求急剧增加
  • 数据收集成本高
  • 某些单元格可能缺失数据

2. 交互效应数量增加

因子数主效应二阶交互三阶交互四阶交互总效应数
221003
333107
4464115
551010531

公式:总效应数 = 2^k - 1(k 是因子数)

问题

  • 需要进行大量假设检验
  • 多重比较问题 (multiple comparison problem) 严重
  • 高阶交互效应难以解释

3. 高阶交互效应的解释困难

四阶交互效应 (A×B×C×D)

  • A、B、C 的三阶交互效应取决于 D 的水平
  • 几乎无法可视化
  • 实际意义难以理解

建议

  • 通常只考虑到三阶交互
  • 四阶及以上交互效应很少有实际意义
  • 如果出现显著的四阶交互,考虑简化模型

Multi-way ANOVA 的实际应用策略

策略 1:限制因子数量

建议

  • 尽量不超过 3-4 个因子
  • 优先选择最重要的因子
  • 其他因子可以作为协变量 (covariates) 处理(使用 ANCOVA)

策略 2:使用部分析因设计 (Fractional Factorial Design)

完全析因设计 (Full Factorial):测试所有可能的组合

部分析因设计:只测试部分组合

例子:5 因子,每个 2 水平

  • 完全设计:2⁵ = 32 个单元格
  • 半分设计 (half-fraction):2⁵⁻¹ = 16 个单元格
  • 四分之一设计:2⁵⁻² = 8 个单元格

代价:无法估计某些高阶交互效应


策略 3:分层分析 (Stratified Analysis)

如果某个因子特别重要(如年龄、疾病严重程度):

  1. 按该因子分层
  2. 在每层内进行低维度 ANOVA
  3. 比较各层的结果模式

优点

  • 结果更容易解释
  • 避免高阶交互的复杂性

策略 4:使用混合效应模型 (Mixed Effects Models)

当有随机因子 (random factors) 时(如:医院、批次、时间):

固定因子 (Fixed Factors)

  • 研究者关心的特定水平
  • 例如:特定的 3 种药物

随机因子 (Random Factors)

  • 从更大总体中随机抽取的水平
  • 例如:从 100 家医院中随机选 10 家

模型

yᵢⱼₖ = μ + αᵢ + bⱼ + (αb)ᵢⱼ + εᵢⱼₖ
  • αᵢ:固定效应
  • bⱼ:随机效应 ~ N(0, σ²_b)

优点

  • 可以推广到未测试的水平
  • 更准确地估计标准误

Multi-way ANOVA 的前提假设

与 Two-way ANOVA 相同,但更严格:

  1. 独立性:所有观测值互相独立
  2. 正态性:每个单元格的数据服从正态分布
  3. 方差齐性:所有单元格的方差相等

检验方法

  • Levene’s test:检验方差齐性
  • Shapiro-Wilk test:检验正态性(但单元格太多时不实用)

稳健性

  • 平衡设计 + 样本量足够大时,ANOVA 对假设违反较稳健
  • 非平衡设计对假设违反更敏感

Multi-way ANOVA 的替代方法

1. 非参数方法

Aligned Rank Transform (ART)

  • 对数据进行特殊的秩转换
  • 然后进行标准 ANOVA
  • 可以处理多因子和交互效应

优点:不假设正态分布 缺点:统计功效较低


2. 广义线性模型 (Generalized Linear Models, GLM)

当因变量不是正态分布时:

因变量类型分布链接函数例子
计数数据Poissonlog住院次数
二分类Binomiallogit治愈/未治愈
比例数据Betalogit改善比例

3. 多元方差分析 (MANOVA)

当有多个因变量时:

例子

  • 因子:药物类型(A, B, C)
  • 因变量:收缩压、舒张压、心率(3 个)

MANOVA 同时检验多个因变量,控制 Type I error。


报告 Multi-way ANOVA 结果的标准格式

1. 描述性统计

表1:各组描述性统计(均值 ± 标准差)

药物 | 性别 | 年龄 | n | 血压下降值 (mmHg)
-----|------|------|---|------------------
A    | 男   | 年轻 | 5 | 12.0 ± 1.2
A    | 男   | 老年 | 5 | 8.0 ± 1.5
...

2. ANOVA 表

表2:Three-way ANOVA 结果

效应          | F      | df    | p      | η²_p
-------------|--------|-------|--------|------
药物 (A)      | 0.83   | 1,32  | 0.368  | 0.03
性别 (B)      | 0.17   | 1,32  | 0.685  | 0.01
年龄 (C)      | 0.33   | 1,32  | 0.568  | 0.01
A × B        | 2.67   | 1,32  | 0.111  | 0.08
A × C        | 4.00   | 1,32  | 0.053  | 0.11
B × C        | 1.33   | 1,32  | 0.256  | 0.04
A × B × C    | 80.0   | 1,32  | <0.001 | 0.71

3. 文字描述

"Three-way ANOVA 显示,药物、性别、年龄的三阶交互效应显著,
F(1, 32) = 80.0, p < 0.001, η²_p = 0.71。

分层分析显示,在年轻患者中,药物 B 对女性更有效(16 mmHg),
而药物 A 对男性更有效(12 mmHg)。

相反,在老年患者中,药物 A 对女性更有效(14 mmHg),
而药物 B 对男性更有效(15 mmHg)。

这些结果表明,药物选择应根据患者的性别和年龄进行个性化调整。"

4. 可视化

推荐图表

  • 交互图 (Interaction plots):展示二阶交互
  • 分面图 (Faceted plots):按一个因子分层,展示其他因子的交互
  • 热图 (Heatmap):展示所有单元格的均值

示例代码(R)

# 交互图
library(ggplot2)
ggplot(data, aes(x = Gender, y = BP_reduction, 
                 color = Drug, linetype = Age)) +
  geom_line(aes(group = interaction(Drug, Age))) +
  geom_point() +
  facet_wrap(~ Age) +
  theme_minimal()

Multi-way ANOVA 的优缺点总结

优点

  1. 全面分析:同时考虑多个因子及其交互
  2. 控制混淆:考虑了其他因子的影响
  3. 发现复杂模式:揭示高阶交互效应
  4. 提高效率:一次分析代替多次单因素分析
  5. 个性化洞察:为精准医疗、个性化教育等提供依据

缺点

  1. 样本量需求大:单元格数量指数增长
  2. 解释复杂:高阶交互难以理解和可视化
  3. 多重比较问题:增加 Type I error 风险
  4. 假设更严格:对假设违反更敏感
  5. 数据收集困难:某些组合可能难以实现
  6. 过度拟合风险:因子太多可能导致模型过于复杂

实际应用的最佳实践

1. 研究设计阶段

先验功效分析 (A priori power analysis)

  • 确定所需样本量
  • 考虑预期效应量和统计功效 (通常 0.80)

平衡设计

  • 尽量让各单元格样本量相等
  • 提高统计功效和稳健性

预注册 (Pre-registration)

  • 事先声明主要假设和分析计划
  • 避免 p-hacking 和 HARKing

2. 数据分析阶段

探索性数据分析 (EDA)

  • 检查数据分布、异常值
  • 画箱线图、散点图

假设检验

  • 检验正态性、方差齐性
  • 如果违反,考虑转换或稳健方法

层级检验

  • 从高阶交互开始
  • 根据结果决定是否检验低阶效应

效应量报告

  • 不仅报告 p-value
  • 必须报告效应量(η²_p, Cohen’s d 等)

多重比较校正

  • 使用 Bonferroni、Holm、FDR 等方法
  • 控制 family-wise error rate

3. 结果报告阶段

完整报告

  • 描述性统计
  • ANOVA 表
  • 效应量
  • Post-hoc 检验结果

可视化

  • 交互图
  • 误差棒图 (error bar plots)
  • 置信区间

实际意义

  • 不仅说”统计显著”
  • 解释实际意义和应用价值

十四、ANOVA 家族方法对比总结

完整对比表

方法因子数因变量数样本类型主要用途
One-way ANOVA11独立比较 3+ 组均值
Two-way ANOVA21独立检验 2 因子及交互
Multi-way ANOVA3+1独立检验多因子及交互
Repeated Measures ANOVA1+1重复测量同一对象多次测量
MANOVA1+2+独立多个因变量
ANCOVA1+1独立 + 协变量控制连续变量
Mixed ANOVA2+1混合组间 + 组内因子

选择决策树

开始
  |
  ├─ 因变量是连续的?
  |    ├─ 是 → 继续
  |    └─ 否 → 考虑 GLM, 逻辑回归等
  |
  ├─ 有几个因变量?
  |    ├─ 1 个 → 继续
  |    └─ 2+ 个 → 考虑 MANOVA
  |
  ├─ 有几个分类自变量?
  |    ├─ 1 个 → One-way ANOVA
  |    ├─ 2 个 → Two-way ANOVA
  |    └─ 3+ 个 → Multi-way ANOVA
  |
  ├─ 样本是独立的吗?
  |    ├─ 是 → Between-subjects ANOVA
  |    └─ 否 → Repeated Measures ANOVA
  |
  └─ 需要控制连续变量吗?
       ├─ 是 → ANCOVA
       └─ 否 → 标准 ANOVA

十五、总结与展望

ANOVA 的核心价值

  1. 多组比较的基石:避免多次 t 检验的问题
  2. 揭示交互效应:发现复杂的因子关系
  3. 实验设计的基础:指导科学研究设计
  4. 广泛应用:医学、心理学、农业、工程等领域

从 ANOVA 到现代统计方法

ANOVA 是通向更高级方法的桥梁:

ANOVA

线性混合模型 (Linear Mixed Models)

广义线性混合模型 (Generalized Linear Mixed Models)

贝叶斯层级模型 (Bayesian Hierarchical Models)

学习建议

  1. 掌握基础:从 One-way ANOVA 开始,理解 F 检验的逻辑
  2. 理解交互:Two-way ANOVA 的交互效应是关键
  3. 实践应用:用真实数据练习,学会用 R/Python/SPSS
  4. 批判思维:理解 ANOVA 的局限性和假设
  5. 持续学习:探索混合模型、贝叶斯方法等现代技术

最后更新 · 2026-05-19 23:52