方差分析(Analysis of Variance,简称 ANOVA)是一种用于比较多个总体均值是否相等的统计方法。它在实际生产和生活中有广泛的应用,例如比较不同工艺生产的灯泡寿命、不同化肥和品种对小麦产量的影响等。本文将详细介绍单因素方差分析和双因素方差分析的理论基础,并通过 Matlab 实现具体的案例分析。

1. 单因素方差分析

1.1 数学模型

单因素方差分析只考虑一个因素 AAA 对所关心的指标的影响。设因素 AAA 有 rrr 个水平 A1,A2,⋯ ,ArA_1, A_2, \cdots, A_rA1​,A2​,⋯,Ar​,在水平 AiA_iAi​ 下总体 xix_ixi​ 服从正态分布 N(μi,σ2)N(\mu_i, \sigma^2)N(μi​,σ2),其中 μi\mu_iμi​ 和 σ2\sigma^2σ2 未知。在每个水平 AiA_iAi​ 下进行 nin_ini​ 次独立试验,得到样本 xij,j=1,⋯ ,nix_{ij}, j = 1, \cdots, n_ixij​,j=1,⋯,ni​,且 xijx_{ij}xij​ 服从 N(μi,σ2)N(\mu_i, \sigma^2)N(μi​,σ2)。

单因素方差分析的数学模型可以表示为:

xij=μ+αi+εij x_{ij} = \mu + \alpha_i + \varepsilon_{ij} xij​=μ+αi​+εij​

其中,μ\muμ 是总均值,αi\alpha_iαi​ 是水平 AiA_iAi​ 对指标的效应,εij\varepsilon_{ij}εij​ 是随机误差,且 εij∼N(0,σ2)\varepsilon_{ij} \sim N(0, \sigma^2)εij​∼N(0,σ2)。

原假设为:

H0:α1=α2=⋯=αr=0 H_0: \alpha_1 = \alpha_2 = \cdots = \alpha_r = 0 H0​:α1​=α2​=⋯=αr​=0

1.2 统计分析

记 xˉi\bar{x}_ixˉi​ 为第 iii 组数据的组平均值,xˉ\bar{x}xˉ 为总平均值。全体数据对 xˉ\bar{x}xˉ 的偏差平方和 STS_TST​ 可以分解为组间平方和 SAS_ASA​ 和组内平方和 SES_ESE​:

ST=SA+SE S_T = S_A + S_E ST​=SA​+SE​

其中,

SA=∑i=1rni(xˉi−xˉ)2 S_A = \sum_{i=1}^{r} n_i (\bar{x}_i - \bar{x})^2 SA​=i=1∑r​ni​(xˉi​−xˉ)2

SE=∑i=1r∑j=1ni(xij−xˉi)2 S_E = \sum_{i=1}^{r} \sum_{j=1}^{n_i} (x_{ij} - \bar{x}_i)^2 SE​=i=1∑r​j=1∑ni​​(xij​−xˉi​)2

当 H0H_0H0​ 成立时,SAS_ASA​ 和 SES_ESE​ 的期望分别为:

E(SA)=(r−1)σ2 E(S_A) = (r-1) \sigma^2 E(SA​)=(r−1)σ2

E(SE)=(n−r)σ2 E(S_E) = (n-r) \sigma^2 E(SE​)=(n−r)σ2

因此,检验统计量 FFF 为:

F=SA/(r−1)SE/(n−r)∼F(r−1,n−r) F = \frac{S_A / (r-1)}{S_E / (n-r)} \sim F(r-1, n-r) F=SE​/(n−r)SA​/(r−1)​∼F(r−1,n−r)

给定显著性水平 α\alphaα,若 F<F1−α(r−1,n−r)F < F_{1-\alpha}(r-1, n-r)F<F1−α​(r−1,n−r),则接受 H0H_0H0​,否则拒绝 H0H_0H0​。

1.3 方差分析表

将上述分析结果整理成方差分析表:

方差来源平方和自由度均方F 值概率
因素 ASAS_ASA​r−1r-1r−1S‾A=SAr−1\overline{S}_A = \frac{S_A}{r-1}SA​=r−1SA​​F=S‾AS‾EF = \frac{\overline{S}_A}{\overline{S}_E}F=SE​SA​​prp_rpr​
误差SES_ESE​n−rn-rn−rS‾E=SEn−r\overline{S}_E = \frac{S_E}{n-r}SE​=n−rSE​​
总和STS_TST​n−1n-1n−1

1.4 Matlab 实现

Matlab 中单因素方差分析的命令是 anova1。对于均衡数据,使用 p = anova1(x),其中 x 是 m×rm \times rm×r 的数据矩阵。对于非均衡数据,使用 p = anova1(x, group),其中 x 是数据向量,group 是组别向量。

例 1:为考察 5 名工人的劳动生产率是否相同,记录了每人 4 天的产量,数据如下:

x = [256 254 250 248 236; 
     242 330 277 280 252; 
     280 290 230 305 220; 
     298 295 302 289 252];
p = anova1(x)

求得 p=0.1109>0.05p = 0.1109 > 0.05p=0.1109>0.05,故接受 H0H_0H0​,即 5 名工人的生产率没有显著差异。

2. 双因素方差分析

2.1 数学模型

双因素方差分析考虑两个因素 AAA 和 BBB 对指标的影响。设因素 AAA 有 rrr 个水平,因素 BBB 有 sss 个水平,在水平组合 (Ai,Bj)(A_i, B_j)(Ai​,Bj​) 下总体 xijx_{ij}xij​ 服从正态分布 N(μij,σ2)N(\mu_{ij}, \sigma^2)N(μij​,σ2)。进行 ttt 次试验,得到样本 xijkx_{ijk}xijk​,且 xijk∼N(μij,σ2)x_{ijk} \sim N(\mu_{ij}, \sigma^2)xijk​∼N(μij​,σ2)。

双因素方差分析的数学模型为:

xijk=μ+αi+βj+γij+εijk x_{ijk} = \mu + \alpha_i + \beta_j + \gamma_{ij} + \varepsilon_{ijk} xijk​=μ+αi​+βj​+γij​+εijk​

其中,μ\muμ 是总均值,αi\alpha_iαi​ 是水平 AiA_iAi​ 的效应,βj\beta_jβj​ 是水平 BjB_jBj​ 的效应,γij\gamma_{ij}γij​ 是交互效应,εijk\varepsilon_{ijk}εijk​ 是随机误差。

原假设为:

H01:αi=0(i=1,⋯ ,r) H_{01}: \alpha_i = 0 \quad (i = 1, \cdots, r) H01​:αi​=0(i=1,⋯,r)

H02:βj=0(j=1,⋯ ,s) H_{02}: \beta_j = 0 \quad (j = 1, \cdots, s) H02​:βj​=0(j=1,⋯,s)

H03:γij=0(i=1,⋯ ,r;j=1,⋯ ,s) H_{03}: \gamma_{ij} = 0 \quad (i = 1, \cdots, r; j = 1, \cdots, s) H03​:γij​=0(i=1,⋯,r;j=1,⋯,s)

2.2 无交互影响的双因素方差分析

如果两因素之间没有交互影响,模型简化为:

xij=μ+αi+βj+εij x_{ij} = \mu + \alpha_i + \beta_j + \varepsilon_{ij} xij​=μ+αi​+βj​+εij​

检验统计量为:

FA=SA/(r−1)SE/(r−1)(s−1)∼F(r−1,(r−1)(s−1)) F_A = \frac{S_A / (r-1)}{S_E / (r-1)(s-1)} \sim F(r-1, (r-1)(s-1)) FA​=SE​/(r−1)(s−1)SA​/(r−1)​∼F(r−1,(r−1)(s−1))

FB=SB/(s−1)SE/(r−1)(s−1)∼F(s−1,(r−1)(s−1)) F_B = \frac{S_B / (s-1)}{S_E / (r-1)(s-1)} \sim F(s-1, (r-1)(s-1)) FB​=SE​/(r−1)(s−1)SB​/(s−1)​∼F(s−1,(r−1)(s−1))

2.3 有交互影响的双因素方差分析

当考虑交互影响时,总平方和 STS_TST​ 分解为:

ST=SE+SA+SB+SAB S_T = S_E + S_A + S_B + S_{AB} ST​=SE​+SA​+SB​+SAB​

其中,SABS_{AB}SAB​ 是交互作用的平方和。检验统计量为:

FAB=SAB/(r−1)(s−1)SE/rs(t−1)∼F((r−1)(s−1),rs(t−1)) F_{AB} = \frac{S_{AB} / (r-1)(s-1)}{S_E / rs(t-1)} \sim F((r-1)(s-1), rs(t-1)) FAB​=SE​/rs(t−1)SAB​/(r−1)(s−1)​∼F((r−1)(s−1),rs(t−1))

2.4 Matlab 实现

Matlab 中双因素方差分析的命令是 anova2。对于无重复试验,使用 p = anova2(x);对于有重复试验,使用 p = anova2(x, reps)。

例 2:用 4 种工艺生产灯泡,测量其寿命,数据如下:

x = [1620 1580 1460 1500; 
     1670 1600 1540 1550; 
     1700 1640 1620 1610; 
     1750 1720 1680 1800];
[p, t, st] = anova2(x)

求得 p=0.0331<0.05p = 0.0331 < 0.05p=0.0331<0.05,故拒绝 H0H_0H0​,即几种工艺制成的灯泡寿命有显著差异。

3. 正交试验设计与方差分析

当因素较多时,全面试验的次数会非常大。正交试验设计通过选择部分组合进行试验,减少试验次数,同时保证结果的可靠性。

3.1 用正交表安排试验

正交表是一种规格化的表格,如 L9(34)L_9(3^4)L9​(34) 表,有 9 行 4 列,每列中数字 1, 2, 3 出现次数相同,且任两列数字的搭配均衡。

例 3:为提高某种化学产品的转化率,考虑反应温度、反应时间和催化剂含量三个因素,每个因素有三个水平。使用 L9(34)L_9(3^4)L9​(34) 表安排 9 次试验,数据如下:

y = [31 54 38 53 49 42 57 62 64];
g1 = [1 2 3 1 2 3 1 2 3];
g2 = [1 1 1 2 2 2 3 3 3];
g3 = [2 1 3 1 3 2 3 2 1];
[p, t, st] = anovan(y, {g1, g2, g3})

求得 p=0.0283p = 0.0283p=0.0283 和 0.07140.07140.0714,表明因素 BBB 和 CCC 的各水平对转化率有显著影响。

结论

方差分析是一种强大的统计工具,能够帮助我们分析多个因素对指标的影响。通过单因素和双因素方差分析,我们可以判断不同因素及其交互作用是否对结果有显著影响。正交试验设计则进一步优化了试验方案,减少了试验次数,提高了效率。在实际应用中,结合 Matlab 等工具,方差分析能够为我们提供有力的数据支持。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐