Matlab 方差分析(T检验)
在工农业生产和科学研究中,经常遇到这样的问题:影响产品产量、质量的因素很多,我们需要了解在这众多的因素中,哪些因素对影响产品产量、质量有显著影响.为此,要先做试验,然后对测试的结果进行分析.方差分析就是分析测试结果的一种方法.在方差分析中,把在试验中变化的因素称为因子,用A、B、C、…表示;因子在试验中所取的不同状态称为水平,因子A的r个不同水平用A1、A2、…、Ar表示.
方差分析需要满足的条件
样本独立的服从同方差正态分布,方差分析的目的就是检验样本间均值是否相同。在建模时,注意写出0假设, 模型方程式以及方差齐次性检验结果。
单因素方差分析
设在某试验中,因子A有r个不同水平A1,A2,…,Ar,在Ai水平下的试验结果Xi服从正态分布N(μi,σ2),i=1,2,…,r,且X1,X2,…,Xr间相互独立.现在水平Ai下做了ni次试验,获得了ni个试验结果Xij,j=1,2,…,ni这可以看成是取自Xi的一个容量为ni的样本,i=1,2,…,r.
例:为寻求适应本地区的高产油菜品种,今选了五种不同品种进行试验,每一品种在四块试验田上得到在每一块田上的亩产量如下:
我们要研究的问题是诸不同品种的平均亩产量是否有显著差异。
在本例中只考虑品种这一因子对亩产量的影响,五个不同品种就是该因子的五个不同水平.由于同一品种在不同田块上的亩产量不同,我们可以认为一个品种的亩产量就是一个总体,在方差分析中总假定各总体独立地服从同方差正态分布,即第i个品种的亩产量是一个随机变量,它服从分布N(μi,σ2), i=1,2,3,4,5.
试验的目的就是要检验假设
----------------------------------H0:μ1=μ2=μ3=μ4=μ5---------------------
是否成立.若是拒绝 ,那么我们就认为这五种品种的平均亩产量之间有显著差异;反之,就认为各品种间产量的不同是由随机因素引起的.方差分析就是检验假设的一种方法.
在实际问题中影响总体均值的因素可能不止一个.我们按试验中因子的个数,可以有单因子方差分析,双因子分析,多因子分析等.例中是一个单因子方差分析问题.
单因素方差分析的Matlab实现
单因素方差分析:anova1
调用格式:
(1) p=anova1(X)
(2) p=anova1(X,group) %group用于不均衡样本
(3) p=anova1(X,group,displayopt)
(4) [p,table]=anova1(…) %table显示方差表
(5) [p,table,stats]=anova1(…) %stats显示箱图
例1(均衡样本). 某水产研究所为了比较四种不同配合饲料对鱼的饲喂效果,选取了条件基本相同的鱼20尾,随机分成四组,投喂不同饲料,经一个月试验以后,各组鱼的增重结果列于下表。
四种不同饲料对鱼的增重效果是否显著 ?
A=[31.927.931.828.435.9
24.825.726.827.926.2
22.123.627.324.925.8
]; %原始数据输入
B=A';% 将矩阵转置,Matlab中要求各列为不同水平
p=anova1(B)
运行后得到一表一图,表是方差分析表(重要);图是各列数据的盒子图,离盒子图中心线较远的对应于较大的F值,较小的概率p.
各项含义如下:
因为p=0.0029<0.01,故不同饲料对鱼的增重效果极为显著 .
四种不同饲料对鱼的增重效果极为显著 ,那么哪一种最好呢?请看下图
此时,第一个图对应第一种饲料且离盒子图中心线较远,效果最突出。如果从原始数据中去掉第一种饲料的试验数据,得到的结果为各种饲料之间对鱼的增重效果不显著 .
例2(不均衡样本).为比较同一类型的三种不同食谱的营养效果,将19支幼鼠随机分为三组,各采用三种食谱喂养. 12周后测得体重,三种食谱营养效果是否有显著差异?
A=[164 190 203 205 206 214 228 257 185 197 201 231 187 212 215 220 248 265 281];
group=[ones(1,8),2*ones(1,4),3*ones(1,7)];
p=anova1(A, group)
多重比较的matlab实现
为了便于解决实际问题,我们给出多重比较的MATLAB命令。
c=multcompare(s)
其中输入s,由[p,c,s]=anova1(B);得到
输出C共有6列,每一行给出均值差的置信区间
例3. 四个实验室试制同一型号纸张,为了比较光滑度每个实验室测量了8张纸,进行方差分析
A=[38.7,41.5,43.8,44.5,45.5,46,47.7,58
39.2,39.3,39.7,41.4,41.8,42.9,43.3,45.8
34,35,39,40,43,43,44,45
34,34.8,34.8,35.4,37.2,37.8,41.2,42.8]; %输入数据
B=A’; % MATLAB只对各列进行分析
[p,c,s]=anova1(b); % 方差分析
c=multcompare(s) % 多重比较
由下图知,1,4有显著差异。
双因子方差分析
分为有交互作用和无交互作用的双因子方差分析。
双因素方差分析:anova2
调用格式:
(1) p=anova2(X)
(2) p=anova2(X,reps)
(3) p=anova2(X,reps,displayopt)
(4) [p,table]=anova1(…)
(5) [p,table,stats]=anova1(…)
其中输入X是一个矩阵;resp表示试验的重复次数输出的p值有三个,分别为各行、各列以及交互作用的概率.
若p<0.05,有显著差异
若p<0.01,有高度显著差异
例 4一火箭使用了4种燃料,3种推进器作射程试验,
每种燃料与每种推进器的组合各发射火箭2次,
得到结果如下:
试在水平0.05下,检验不同燃料(因素A)、
不同推进器(因素B )下的射程是
否有显著差异?交互作用是否显著?
clc,clear
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)
求得p=0.0035 0.0260 0.001,表明各试验均值相等的概率都
为小概率,故可拒绝均值相等假设。即认为不同燃料(因
素A)、不同推进器(因素B)下的射程有显著差异,
交互作用也是显著的。
例6 为了解3名修理工工作效率,每人修理三种磁盘系统各5个,时间如下:
x=[62 48 63 57 69 57 45 39 54 44 59 53 67 66 47
51 57 45 50 30 61 58 70 66 51 55 58 50 69 49
59 65 55 52 70 58 63 70 53 60 47 56 51 44 50];
p=anova2(x',5);
方差分析的SPSS实现
spss->分析->比较均值->单因素AVOAL->选项->事后比较(LSD)->选项(方差其次检验+均值+描述)
其中一列为value,一列为gruop.