方差分析
- 方差分析的定义:用数理统计分析实验结果、鉴别各因素对结果影响程度的方法称为方差分析,记作ANOVA,实验中需要考察、可以控制的条件称为因素或因子,因素所处的状态称为水平。
一、 单因素方法分析法
-
数学模型
-
模型建立:
设A取r个水平,分别记为 A 1 , A 2 , … , A r A_1,A2,\dots,A_r A1,A2,…,Ar若在水平 A i A_i Ai下总体 X i X_i Xi服从正态分布 N ( μ i , σ 2 ) , i = 1 , … , r N(\mu_i,\sigma^2),i=1,\dots,r N(μi,σ2),i=1,…,r这里 μ i , σ 2 \mu_i,\sigma^2 μi,σ2未知, u i u_i ui可以互不相同,但假定 X i X_i Xi有相同的方差
设在水平 A i A_i Ai下作了 n i n_i ni次独立实验,即从总体 X i X_i Xi中抽取样本容量为 n i n_i ni的样本,记作 X i j , j = 1 , … , n i X_{ij},j=1,\dots,n_i Xij,j=1,…,ni
其中, X i j ∼ N ( μ i , σ 2 ) , i = 1 , … , r , j = 1 , … , n j X_{ij} \sim N(\mu_i,\sigma^2) , i=1,\dots,r,j=1,\dots,n_j Xij∼N(μi,σ2),i=1,…,r,j=1,…,nj,且相互独立。水平 观测值 A 1 A_1 A1 x 11 x 12 … x 1 n 1 x_{11} \ \ \ \ \ x_{12} \ \ \ \ \ \dots \ \ \ \ \ x_{1n_1} x11 x12 … x1n1 A 2 A_2 A2 x 21 x 22 … x 2 n 2 x_{21} \ \ \ \ \ x_{22} \ \ \ \ \ \dots \ \ \ \ \ x_{2n_2} x21 x22 … x2n2 ⋮ \vdots ⋮ ⋮ ⋮ ⋮ \vdots \ \ \ \ \ \ \ \ \ \ \ \vdots \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \vdots ⋮ ⋮ ⋮ A r A_r Ar x r 1 x r 2 … x r n r x_{r1} \ \ \ \ \ x_{r2} \ \ \ \ \ \dots \ \ \ \ \ x_{rn_r} xr1 xr2 … xrnr 表中对应 A i A_i Ai行的数据称为第 i i i组数据,判断A的r个水平对指标有无显著性影响,相当于要作以下的假设检验: 原假设 H 0 : μ 1 = μ 2 = ⋯ = μ n 原假设 \ H_0:\mu_1=\mu_2=\dots=\mu_n 原假设 H0:μ1=μ2=⋯=μn 备择假设 H 1 : μ 1 , μ 2 , … , μ r 不全相等 备择假设 \ H_1:\mu_1,\mu_2,\dots,\mu_r不全相等 备择假设 H1:μ1,μ2,…,μr不全相等 -
模型建立:
由于假设了 X i j ∼ N ( μ i , σ 2 ) X_{ij} \sim N(\mu_i,\sigma^2) Xij∼N(μi,σ2),即 X i j − μ i ∼ N ( 0 , σ 2 ) X_{ij}-\mu_i \sim N(0,\sigma^2) Xij−μi∼N(0,σ2)。由此将实验结果改写为:
x i j = μ i + ε i j , i = 1 , … , r , j = 1 , … , n i x_{ij}=\mu_i+\varepsilon_{ij},i=1,\dots,r,j=1,\dots,n_i xij=μi+εij,i=1,…,r,j=1,…,ni其中 ε ∼ N ( 0 , σ 2 ) \varepsilon \sim N(0,\sigma^2) ε∼N(0,σ2)为观测随机误差,且相互独立 -
模型优化
引入记号 n = ∑ i = 1 r n i , μ = 1 n ∑ i = 1 r n i μ i , α = μ i − μ , i = 1 , 2 , … , r n=\sum_{i=1}^{r}n_i,\mu=\frac{1}{n}\sum_{i=1}^{r}n_i\mu_i,\alpha=\mu_i-\mu,i = 1,2,\dots,r n=i=1∑rni,μ=n1i=1∑rniμi,α=μi−μ,i=1,2,…,r规定上述变量 μ \mu μ为总平均值, α i \alpha_i αi是水平 A i A_i Ai下总体的平均值 μ i \mu_i μi与总平均值 μ \mu μ的差异,习惯上称为指标 A i A_i Ai的效应。n = ∑ i = 1 r n i n=\sum_{i=1}^{r}n_i n=∑i=1rni的含义是统计了所有水平的样本数的和,也就是真正的总数。因为在 A i A_i Ai水平下,样本服从正态分布( μ i , σ 2 \mu_i,\sigma^2 μi,σ2),因此同一水平下,随机变量的均值是相同的。因此可以算出所有水平,所有随机变量 X i j X_{ij} Xij的均值: μ = 1 n ∑ i = 1 r \mu=\frac{1}{n}\sum_{i=1}^{r} μ=n1∑i=1r。
因此, x i j = μ i + ε i j , i = 1 , … , r , j = 1 , … , n i x_{ij}=\mu_i+\varepsilon_{ij},i=1,\dots,r,j=1,\dots,n_i xij=μi+εij,i=1,…,r,j=1,…,ni可以表示为:
{ x i j = μ + α i + ε i j ∑ i = 1 r n i α i = 0 ε ∼ N ( 0 , σ 2 ) , i = 1 , … , r , j = 1 , … , n i \begin{cases} x_{ij}=\mu+\alpha_i+\varepsilon_{ij}\\ \sum_{i=1}^{r}n_i\alpha_i=0\\ \varepsilon \sim N(0,\sigma^2),i=1,\dots,r,j=1,\dots,n_i \end{cases} ⎩ ⎨ ⎧xij=μ+αi+εij∑i=1rniαi=0ε∼N(0,σ2),i=1,…,r,j=1,…,ni
原假设相应地变为(以后略去备择假设)
H 0 : α 1 = α 2 = ⋯ = α r = 0 H_0:\alpha_1=\alpha_2=\dots=\alpha_r=0 H0:α1=α2=⋯=αr=0关于模型中 ∑ i = 1 r n i α i = 0 \sum_{i=1}^{r}n_i\alpha_i=0 ∑i=1rniαi=0的解释,这是因为 μ = 1 n ∑ i = 1 r n i μ i \mu=\frac{1}{n}\sum_{i=1}^{r}n_i\mu_i μ=n1∑i=1rniμi式导出的,本身 μ \mu μ就是 μ i \mu_i μi的平均。
-
-
数据统计与分析
- 组平均值: X i ‾ = 1 n i ∑ j = 1 n i X i j \overline{X_i}=\frac{1}{n_i}\sum_{j=1}^{n_i}X_{ij} Xi=ni1∑j=1niXij是第 i i i组数据的组平均值
- 总平均值: X ‾ = 1 n ∑ i = 1 r n i X ‾ \overline{X}=\frac{1}{n}\sum_{i=1}^{r}n_i\overline{X} X=n1∑i=1rniX是全体数据的总平均值
- 总偏差平方和:考察全体数据对 X ‾ \overline{X} X的偏差平方和 S T = ∑ i = 1 r ∑ j = 1 n i ( X i j − X ‾ ) 2 S_T = \sum_{i=1}^{r}\sum_{j=1}^{n_i}(X_{ij}-\overline{X})^2 ST=i=1∑rj=1∑ni(Xij−X)2
对于总偏差平方和进行分解,可得: S T = ∑ i = 1 r n i ( X i ‾ − X ‾ ) 2 + ∑ i = 1 r ∑ j = 1 n i ( X i j − X i ‾ ) 2 S_T=\sum_{i=1}^{r}n_i(\overline{X_i}-\overline{X})^2+\sum_{i=1}^{r}\sum_{j=1}^{n_i}(X_{ij}-\overline{X_i})^2 ST=i=1∑rni(Xi−X)2+i=1∑rj=1∑ni(Xij−Xi)2可记 S A = ∑ i = 1 r n i ( X i ‾ − X ‾ ) 2 S_A = \sum_{i=1}^{r}n_i(\overline{X_i}-\overline{X})^2 SA=i=1∑rni(Xi−X)2 S E = ∑ i = 1 r ∑ j = 1 n i ( X i j − X i ‾ ) 2 S_E = \sum_{i=1}^{r}\sum_{j=1}^{n_i}(X_{ij}-\overline{X_i})^2 SE=i=1∑rj=1∑ni(Xij−Xi)2则 S T = S A + S E S_T = S_A+S_E ST=SA+SE
- S A S_A SA为组间平方和: S A S_A SA是各组均值对总方差的偏差平方和,反映A不同水平间的差异,反映自变量对因变量的影响
- S E S_E SE为组内平方和: S E S_E SE是各组内的数据对样本均值偏差平方和的综合,反映了样本观测值与样本均值的差异反映其他的误差(抽样误差,测量误差等)对因变量的影响。这种差异认为是由随机误差引起的,因此也称为误差平均和
对于 S A S_A SA和 S E S_E SE作进一步分析可得 E ( S E ) = ( n − r ) σ 2 E(S_E)=(n-r)\sigma^2 E(SE)=(n−r)σ2即 S E / ( n − r ) S_E/(n-r) SE/(n−r)为 σ 2 \sigma^2 σ2的一个无偏估计。
类似的,可得 E ( S A ) = ( r − 1 ) σ 2 + ∑ i = 1 r n i α i 2 E(S_A)=(r-1)\sigma^2+\sum^{r}_{i=1}n_i\alpha_i^2 E(SA)=(r−1)σ2+i=1∑rniαi2进一步,如果原假设 H 0 H_0 H0成立时,则有 H 0 H_0 H0成立, S A S_A SA只反映随机波动;而若 H 0 H_0 H0假设不成立,那么 S A S_A SA还反映A的不同指标的效应 α i \alpha_i αi- 假设检验:
当 H 0 H_0 H0成立时,该比值服从自由度 n 1 = r − 1 , n 2 = n − r n_1=r-1,n_2=n-r n1=r−1,n2=n−r的F分布。即 F = S A / ( r − 1 ) S E / ( 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)
为了检验 H 0 H_0 H0,给定显著性水平 α \alpha α,记F分布的 α \alpha α分位数为 F α ( r − 1 , n − r ) F_\alpha(r-1,n-r) Fα(r−1,n−r),检验规则为:
F ≤ F α ( r − 1 , n − r ) F \leq F_\alpha(r-1,n-r) F≤Fα(r−1,n−r)时接受 H 0 H_0 H0,否则拒绝 H 0 H_0 H0
以上对 S A , S E S_A,S_E SA,SE的分析相当于对组件、组内方差分析,所以这种假设检验方法称为方差分析
-
-
方差分析表
- 方差分析表:
方差来源 平方和 自由度 平方均值 F比值 概率 因素A S A S_A SA r-1 S A ‾ = S A r − 1 \overline{S_A}=\frac{S_A}{r-1} SA=r−1SA S A ‾ S E ‾ \frac{\overline{S_A}}{\overline{S_E}} SESA p p p 误差 S E S_E SE n-r S E ‾ = S E n − r \overline{S_E}=\frac{S_E}{n-r} SE=n−rSE 总和 S T S_T ST n-1 最后一列给出的概率 p = P ( F < F α ( r − 1 , n − r ) ) p=P(F \lt F_\alpha(r-1,n-r)) p=P(F<Fα(r−1,n−r)),一般数学软件中并不去比较计算F值和分位数的概率,而是计算p值。其基本思想是,假设 H 0 H_0 H0成立的条件下,计算F值落在拒绝域即拒绝假设 H 0 H_0 H0的概率,方差分析一般用的显著性水平是:
- p < α = 0.01 p \lt \alpha =0.01 p<α=0.01,拒绝 H 0 H_0 H0,称因素A的影响(或A各水平的差异)非常显著
- p = α = 0.01 p = \alpha =0.01 p=α=0.01,不拒绝 H 0 H_0 H0,但取 α = 0.05 \alpha=0.05 α=0.05此时拒绝0.05,称因素A的影响非常显著;
- p > α = 0.01 p \gt \alpha =0.01 p>α=0.01,不拒绝 H 0 H_0 H0,称因素A的影响不显著
- 方差分析表:
-
MATLAB实现
MATLAB统计工具箱中,用于单因素方差分析的函数为 a n o v a l ( ) anoval() anoval()-
案例1:
-
问题描述
研究不同工艺对灯泡使用寿命的影响序号 工艺 生产工艺 A 1 A 2 A 3 A 4 A_1 \ \ \ \ \ A_2 \ \ \ \ \ A_3 \ \ \ \ \ A_4 A1 A2 A3 A4 1 1620 1580 1460 1500 1620 \ \ \ \ \ 1580 \ \ \ \ \ 1460 \ \ \ \ \ 1500 1620 1580 1460 1500 2 1670 1600 1540 1550 1670 \ \ \ \ \ 1600 \ \ \ \ \ 1540 \ \ \ \ \ 1550 1670 1600 1540 1550 3 1700 1640 1620 1610 1700 \ \ \ \ \ 1640 \ \ \ \ \ 1620 \ \ \ \ \ 1610 1700 1640 1620 1610 4 1750 1720 1680 1750 \ \ \ \ \ 1720 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 1680 1750 1720 1680 5 1800 1800 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \quad \quad\quad\quad\quad\quad 1800 -
代码实现
x = [1620 1580 1460 1500 1670 1600 1540 1550 1700 1640 1620 1610 1750 1720 1680 1800]; x = [x(1:4),x(16),x(5:8),x(9:11),x(12:15)];%提取各组数据 % 此处的语法值得注意,首先第一个x生成的是一各4x4 % double类型的数据,而x(1:4)生成的是一个行向量。 %其所包含的元素是原x矩阵的1到4行的第一个元素,即[1620,1670,1700,1750] g = [ones(1,5),2*ones(1,4),3*ones(1,3),4*ones(1,4)];%标记数据组别 % 这主要是为了区分不同水平的数据,其中行向量的1至5的元素是A1水平的数据 p = anova1(x,g);
-
结果分析:
箱形图 -
-
- 由方差分析表可知: 0.01 < p = 0.0331 < 0.05 0.01 \lt p=0.0331 \lt 0.05 0.01<p=0.0331<0.05。说明在显著性水平 α = 0.01 \alpha = 0.01 α=0.01无显著差异,但在显著性水平 α = 0.05 \alpha = 0.05 α=0.05下差异显著
- 多重比较
暂不清楚具体用法,只知道之前的所有分析是对整体进行分析的。如果在显著性水平取得0.01的情况下,整体上差异是不太显著的。但是从箱形图上观察可以发现,各组均值之间还是有差异的。
二、 双因素方差分析
考虑两个因素A和B对某指标的影响,将A,B各划分为几个水平,对每一个水平组合作若干次抽烟实验,对所得数据进行方差分析,检验这两因素分别对指标有显著影响,或者还要进一步检验两因素是否对指标有显著的交互影响
- MATLAB 实现
MATLAB 统计工具箱中双因素方差分析函数为 a n o v a 2 ( ) anova2( \ ) anova2( )-
调用格式
p = anova2(x,reps)
具体 x 和 reps的含义可以根据案例分析
-
案例分析
一火箭使用了4种燃料,3种推进器作射程试验,每种燃料与每种推进器的组合各发射火箭2次,得到的结果如图:试在显著性水平0.05下,检验不同燃料(因素A)、不同推进器(因素B)下的射程是否有显著性差异?交互作用是否显著B1 B2 B3 A1 58.2 , 52.6 58.2,52.6 58.2,52.6 56.2 , 41.2 56.2,41.2 56.2,41.2 65.3 , 60.8 65.3,60.8 65.3,60.8 A2 49.1 , 42.8 49.1,42.8 49.1,42.8 54.1 , 50.5 54.1,50.5 54.1,50.5 51.6 , 48.4 51.6,48.4 51.6,48.4 A3 60.1 , 58.3 60.1,58.3 60.1,58.3 70.9 , 73.2 70.9,73.2 70.9,73.2 39.2 , 40.7 39.2,40.7 39.2,40.7 A4 75.8 , 71.5 75.8,71.5 75.8,71.5 58.2 , 51.0 58.2,51.0 58.2,51.0 48.7 , 41.4 48.7,41.4 48.7,41.4 -
代码
x0 = [58.2 52.6 56.2 41.2 65.3 60.8 49.1 42.8 54.1 50.5 51.6 48.4 60.1 58.3 70.9 73.2 39.2 40.7 75.8 71.5 58.2 51.0 48.7 41.4]; x1 = x0(:,1:2:5); % 第一次发射火箭试验 x2 = x0(:,2:2:6);% 第二次发射火箭试验 for i = 1:4 x(2*i-1,:)=x1(i,:); x(2*i,:)=x2(i,:); end p = anova2(x,2)
-