第八章 方差分析方法
8.1 方差分析的基本概念
ANOVA方差分析通过检验各总体均值是否相等来判断分类型变量对数值因变量是否有显著影响的统计检验方法,最早由费歇尔提出也称F检验。尽管方差分析中感兴趣的指标是均值,但是在判断均值是否有差异时需要借助方差,即通过数据误差判断不同总体的均值是否有显著区别。(或许可以和6.4.1的线性回归的显著性比较着看)
反映总体数据误差大小的平方和称为总变异,用SST表示;因处理因素不同的组间变异用SSA表示,反映的是各组平均值与总平均值的离差情况;同一组数据内部差异的组内变异用SSE表示。SST=SSA+SSE,dfT=dfA+dfE(N-1=g-1+N-g),离均差平方和SST反映的是变异的绝对大小,变异程度还和自由度有关,常用均方差表现,MSE=SSE/dfE,MSA=SSA/dfA,F=MSA/MSE。(这样理解一下,先看MSE表明各组之间的差异是随机的,即不存在其他的干扰因素;其次看MSA,如果MSA的大小和MSE差不多,那么就说明各组间只有随机误差没有系统误差,其比值F就会接近1,所以最终是通过F分布来推断各研究因素对实验结果有无影响。)
ANOVA有三个假定:
1) 观测值是来自正态总体的随机样本;
2) 各观测值相互独立;
3) 各组方差相等,即各组观测数据是从方差相等的正态总体中抽取的。
ANOVA的F统计量检验原假设是:H0:u1=u2=u3
##临界值
qf(0.05,2,15,lower.tail=FALSE)
##p值
Pf(4.698,2,5,lower.tail=FALSE)
##R中的函数aov()可计算方差分析
ANOVA中也可以借鉴回归中的 R 2 R^2 R2判断处理因素对差异的强度,依然用 R 2 = S S A / S S T R^2=SSA/SST R2=SSA/SST,表现处理对变异的影响效应。
8.3 双因素方差分析法
认为两个影响因素均各自独立的作用于因变量,与随机区组设计(randomized block design)配对。各变异之间的关系:SST=SSA+SSB+SSE,dfT=dfA+dfB+dfE(kr-1=k-1+r-1+(k-1)(r-1)),此时对应的检验原假设:
H
01
:
b
1
=
b
2
=
…
=
b
r
=
0
&
H
02
:
c
1
=
c
2
=
…
=
c
k
=
0
H01:b1=b2=…=br=0 \& H02:c1=c2=…=ck=0
H01:b1=b2=…=br=0&H02:c1=c2=…=ck=0。
R中的操作一样,只是在数据结构上用到了gl()函数,其作用是生成因子水平。
实际应用时,常常会遇到“有交互作用的双因素方差分析”,除了其本身对因变量有影响外,其交互项也会对因变量有影响。
##两因素的交互作用图
Library(stats)
Interaction.plot(y,A,B)
交互作用图用于描述多因素间相互影响的统计图形,如果两因素间没有交互影响,那么各组对应的直线将不会相较,反之,各组的直线会有交点称为有交互作用,越不平行,交互作用越大。SST=SSE+SSA+SSB+SS(A×B)。
8.4 多重比较
方差分析得到结果可以知道总体是否有差异,而具体的组均值比较就需要多个样本均数的两两比较。多重比较(multiple comparison procedures)通过对总体均值之间的配对比较来进一步检验哪些均值之间存在差异。
多重t检验就是将t检验运用在每两个组之间,但是犯第一类错误的概率就会提升到
1
−
(
1
−
α
)
n
1-(1-α)^n
1−(1−α)n,所以需要对p值进行调整:
p.adjust.methods ##none表示不做修正,其他的都是对应的方法
pairwise.t.test(X,A, p.adjust.method = “Bonferroni”) ##x是响应变量,a是因子向量,method为p值修正方法,逻辑变量paired表示是否要进行配对t检验,alternative用于调整检验方向。
Dunnett检验:原假设H0:比较实验组与对照组总体均数相等。在R中的glht()函数可以完成Dunnett检验。
Libray(multcomp)
Mice.dunnett<-glht(mice.aov,linfct(mcp(group=”Dunnett”))
Summary(mice.Dunnett)
##绘图
Windows(width=5,height=3,pointsize=10)
Plot(mice.dunnett,sub=”Mice Data”)
Mtext(“Dunnett’s Method”,side=3,line=0.5)
多重比较方法还需要注意如何控制每一对比较的错误率,因为多重比较很容易对错误率进行叠加。Tukey提出的学生化极差分布,在比较样本均值的基础上,构造了检验最大与最小样本均值的检验统计量,缓解了多重t检验中错误率累加的问题。
##计算tukey的临界值
##qtukey(0.05,3,15,lower.tail=F)
Posthoc<-TukeyHSD(mice.aov,’group’)
Posthoc
##另一种是HSD.tset()函数
Library(agricolae)
Comparison<-HSD.test(mice.aov,’group’,console=T)
Print(comparison$groups) ##仅输出最终的字母标记结果
HSD.test用到的是标记字母法,凡是没有相同字母的即为存在显著差异
Newman-Keuls检验法也称SNK检验法,适用于多个均数两两之间的全面比较,与多重t检验相似,但是对HSD法进行了一些修正。SNK方法在决定观察到的样本差异显著时(依然依据均值排序),会参考这两个样本均值间排序的步宽,它既没有引入试验的错误率,也咩有每次比较的错误率,错误率是根据均值的相应步宽定义的。
Library(agricolae)
Comparison<-SNK.test(mice.aov,”group”,console=T)
8.5 方差齐性的检验方法
Bartlett检验法,其原假设: H 0 : σ 1 2 = … = σ 1 2 H_0:\sigma_1^2=…=\sigma_1^2 H0:σ12=…=σ12
Bartlett.test(X~A,data=my.data)
Levene检验法与Bartlett检验的不同在于,它不要求观测值具有正态性。研究证明,在使用蒙特卡洛法进行研究时,结果表明如果数据呈现柯西分布(重尾)时,最好使用切尾平均数,如果服从卡方分布(偏态)时,最好使用中位数。Levene检验的本质就是对随机变量Y的均值(中位数或切尾平均数)离差构成的新分组数据进行单因素方差分析,这些离差也能反映原数据的方差分布特征。
Library(car)
leveneTest(X~A,data=my.data,center=mean) ##center:median\mean
library(lawstat)
levene.test(X,A,location=”median”) ##location还有切位均值选项