数学建模与MATLAB实现: 方差分析(ANOVA)从理论到实践
方差分析(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∑rni(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∑rj=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 值 | 概率 |
|---|---|---|---|---|---|
| 因素 A | SAS_ASA | r−1r-1r−1 | S‾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=SESA | prp_rpr |
| 误差 | SES_ESE | n−rn-rn−r | S‾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 等工具,方差分析能够为我们提供有力的数据支持。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)