基于MATLAB 的方差分析
(重庆科技学院 数理学院)
摘要:方差分析是重要的,应用广泛的实验数据统计分析方法,其实质是检验多个变量均
值的一致性。
运用MATLAB 软件进行单因子及双因子方差分析。
关键字:方差分析,MATLAB,单因子,双因子。
1 引言
方差分析是分析试验(或观测)数据的一种统计方法。
在工农业生产和科学研究中,
经常要分析各种因素及因素之间的交互作用对研究对象某些指标值的影响。
在方差分析中,把试验数据的总波动(总变差或总方差)分解为由所考虑因素引起的波动(各因素的变差)和随机因素引起的波动(误差的变差),然后通过分析比较这些变差来推断哪些因素对所考察指标的影响是显著的,哪些是不显著的。
2 单因子方差分析
某个可控制因素A 对结果的影响大小可通过如下实验来间接地反映,在其它所有可控制因素都保持不变的情况下,只让因素A 变化,并观测其结果的变化,这种试验称为“单因素试验”。
因素A 的变化严格控制在几个不同的状态或等级上进行变化,因素A 的每个状态或等级成为因素A 的一个水平。
若因素A 设定了s 个水平,则分别记为 A 1,A 2,…,A s 。
数学模型:
2(,),1,2,...,.i
i X N i s μσ= (1)
显著性影响问题转化为因素A 不同水平下各随机变量总体的均值是否相等问题,即检验假设
012:s H μμμ==
=是否成立 (2)
记号
ij x :
不同水平下的试验结果,i=1,2,…,s ;j=1,2,…,n i ; n=n 1+n 2+…+n s :试验总数;
总平均:11
1i
n s ij i j x x n ===∑∑;
总离差平方和:22
11
()i
n s T
ij
i j S x
x ===
-∑∑; 组内平方和(误差平方和):2
211()i
n s E
ij
i i j S x
x ===
-∑∑,随机因素的影响;
组间平方和(因素平方和):2
211
()i
n s
A i
i j S x
x ===
-∑∑,水平差异的影响;
H 0的拒绝域为:
2
2
()(1,)(1)A E n s S W F s n s s S α⎧⎫-=>--⎨⎬-⎩⎭
检验结果:
高度显著:2
0.012
()(1,)(1)A
E
n s S F s n s s S ->---; 显著:2
0.010.052
()(1,)(1,)(1)A
E n s S
F s n s F s n s s S ---≥>---; 有一定影响:2
0.050.12
()(1,)(1,)(1)A
E n s S
F s n s F s n s s S ---≥>---; 无显著影响:2
0.12
()(1,)(1)A
E
n s S F s n s s S -≤---。
3 单因子方差分析的MATLAB实现
单因素方差分析是比较两组或多组数据的均值,它返回原假设——均值相等的概率
函数anova1
格式p = anova1(X) %X的各列为彼此独立的样本观察值,其元素个数相同,p为各列均值相等的概率值,若p值接近于0,则原假设受到怀疑,说明至少有一列均值与其余列均值有明显不同.
p = anova1(X,group) %X和group为向量且group要与X对应
p = anova1(X,group,'displayopt') % displayopt=on/off表示显示与隐藏方差分析表图和盒图[p,table] = anova1(…) % table为方差分析表
[p,table,stats] = anova1(…) % stats为分析结果的构造
说明anova1函数产生两个图:标准的方差分析表图和盒图.
方差分析表中有6列:第1列(source)显示:X中数据可变性的来源;第2列(SS)显示:用于每一列的平方和;第3列(df)显示:与每一种可变性来源有关的自由度;第4列(MS)显示:是SS/df 的比值;第5列(F)显示:F统计量数值,它是MS的比率;第6列显示:从F累积分布中得到的概率,当F增加时,p值减少.
例一位教师想要检查3种不同的教学方法的效果,为此随机地选取水平相当的15位学生。
把他们分为3组,每组5人,每一组用一种方法教学,一段时间以后,这位教师给15位学生进行统考,成绩见下表1。
问这3种教学方法的效果有没有显著差异。
Matlab中可用函数
调用格式:p=anova1(X)
含义:比较样本m×n的矩阵X中两列或多列数据的均值。
其中,每一列表示一个具有m 个相互独立测量的独立样本。
返回:它返回X中所有样本取自同一总体(或者取自均值相等的不同总体)的零假设成立的概率p。
解释:若p值接近0(接近程度有解释这自己设定),则认为零假设可疑并认为至少有一个样本均值与其它样本均值存在显著差异。
Matlab程序:
Score=[75 62 71 58 73;81 85 68 92 90;73 79 60 75 81]’;
P=anova1(Score)
方差分析表
盒型图
由于p值小于0.05,拒绝零假设,认为3种教学方法存在显著差异。
4 双因素方差分析
上面讲解了单因素试验的方差分析问题,但在科研和实际生产中,常常需要同时研究两个以上因素对实验结果的影响情况。
若同时研究两个因素对实验结果的影响,就要对两个实验因素进行方差分析。
对于双因素方差分析,其基本思想和方法与单因素方差分析相似,前提条件仍然是要满足独立,方差具有齐性、正态。
不同的是,在双因素试验中,有可能出现交互作用。
按照是否进行重复试验,双因素方差分析又分为两种,即有重复和无重复,下面主要来介绍双因素重复试验的方差分析。
双因素方差分析可以用函数anova2()来实现,格式如
下:
P=anova2(X,reps);
[p,table,stats]=anova2
anova2(x)
进行均衡的双因素方差分析,比较数据X中两列或多列及两行或多行的均值。
不同列中的数据表示因素A引起的变化情况;不同行中的数据表示因素B引起的变化情况。
如果对于因素A和B的每一种水平组合都超过一个的观测值(这种
情况又称重复试验双因素方差分析,即因素A和B有交互),则输入reps表示每个单元(cell)(对应一个水平组合)中观察值的个数,它必须为常数(对于不均衡设计,使用函数anova)。
当reps为l(缺省值)时(即因素A和B没有交互),anova2返回的向量P中含有两个概率值(p一值)。
下面从不考虑交互作用和考虑交互作用,两方面举例说明anova2()的使用。
例
一火箭使用了4种燃料,3种推进器作射程试验,每种燃料与每种推进器的组合各发射火箭2次,得到结果如下:
推进器(B) B1 B2 B3
A1 58.2000 56.2000 65.3000
52.6000 41.2000 60.8000
A2 49.1000 54.1000 51.6000
燃料A 42.8000 50.5000 48.4000
A3 60.1000 70.9000 39.2000
58.3000 3.2000 40.7000
A4 75.8000 58.2000 48.7000
71.5000 51.0000 41.4000
考察推进器和燃料这两个因素对射程是否有显著的影响
MATLAB输入:
求得p=0.0035 0.0260 0.001,表明各试验均值相等的概率都为小概率,故可拒绝均值相等的假设。
即认为不同燃料(因子A).不同推进器(因子B)下的射程有显著的差异,交互作用也是显著的。
5 结束语
假设检验和方差分析是数理统计计算中重要的内容,但由于他们在实际计算与应用中,经常会遇到一些复杂繁琐的计算,这往往是我们力所不能及的。
面对这些难题,我们可以借助于MATLAB进行实现。
通过对假设检验以及方差分析问题的MA TLAB求解,我们可以清晰的看到,对于假设检验和方差分析中一些复杂繁琐的数据计算问题,可以通过MATLAB简便直观的处理,给予我们学习和工作带来极大的方便。
6 参考文献
[1] 赵静,但琦.数学建模与数学实验(第三版),北京:高等教育出版社.
[2] 薛定宇,陈阳泉. 高等应用数学问题的MATLAB求解(第二版).清华大学出版社.
[3] 张德丰等编著. MA TLAB概率与数理统计分析. 机械工业出版社.。