参考资料:R语言实战【第2版】
1、aov()函数
aov()函数的语法为aov(formula,data=dataframe),下表中列举了表达式中可以使用的特殊符号。其中,y是因变量,字母A、B、C代表因子。如下:
符号 | 用法 |
~ | 分隔符,左边为响应变量,右边为解释变量。例如,用A、B和C预测y,表达式为y~A+B+C |
: | 表示变量的交互项。例如,用A、B和A与B的交互项来预测y,表达式为y~A+B+A:B |
* | 表示所有可能的交互项。表达式y~A*B*C等同于y~A+B+C+A:B+A:C+B:C+A:B:C |
^ | 表示交互项达到某个次数。表达式y~(A+B+C)^2等同于y~A+B+C+A:B+A:C+B:C |
. | 表示包含除因变量晚的所有变量。例如,若一个数据框包含变量y、A、B、C,表达式y~.等同于y~A+B+C |
下表中还列举了常见的研究设计表达式,表中的小写字母表示定量变量,大写字母表示组别因子,Subject是对被试者独有的标识变量。
设计 | 表达式 |
单因素ANOVA | y~A |
含单个协变量的单因素ANOVA | y~x+A |
双因素ANOVA(含交互项) | y~A*B |
含两个协变量的双因素ANOVA | y~x1+x2+A*B |
随机化区组 | y~B+A(其中B是区组因子) |
单因素组内ANOVA | y~A+Error(Subject/A) |
含单个组内因子(W)和单个组间因子(B)的重复测量ANOVA | y~B*W+Error(Subject/W) |
2、aov()函数表达式中各项的顺序
表达式中效应的顺序在两种情况下会造成影响:①因子不止一个,且是非平衡设计;②存在协变量。出现任意一种情况时,等式右边的变量都与其他每个变量相关。此时,我们无法清晰地划分它们对因变量的影响。例如,对于双因素方差分析,若不同处理方式中的观测数不同,那么模型y~A*B与模型y~B*A的结果不同。
R语言模型类型Ⅰ方法计算ANOVA效应。第一个模型可以这样写:y~A+B+A:B。R语言中ANOVA表的结果将评价:
①A对y的影响;
②控制A时,B对y的影响;
③控制A和B的主效应时,A与B的交互效应。
当自变量与其他自变量或协变量相关时,没有明确的方法可以评价自变量对因变量的贡献。例如,含因子A、B和因变量y的双因素不平衡因子设计,有三种效应:A的主效应、B的主效应、A和B的交互效应。假如我们正式用下面的表达式对数据进行建模:
y~A+B+A:B
有三种类型的方法可以分解等式右边各效应对y所解释的方差。
(1)类型Ⅰ(序贯型)
效应根据表达式中先出现的效应做调整。如上式中:A不做调整,B根据A做调整,A:B交互项根据A和B调整。
(2)类型Ⅱ(分层型)
效应根据同水平或低水平的效应做调整。A根据B调整,B依据A调整,A:B交互项同时根据A和B调整。
(3)类型Ⅲ(边界型)
每个效应根据模型其他各效应做相应调整。A根据B和A:B做调整,A:B交互项根据A和B调整。
R语言默认调用类型Ⅰ方法,而SAS和SPSS默认调用类型Ⅲ方法。
样本大小越不平衡,效应项的顺序对结果的影响越大。一般来说,越基础性的效应越需要放到表达式前面。具体来讲:首先是协变量,然后是主效应,接着是双因素的交互项,再是三因素的交互项,以此类推。对于主效应,越基础性的变量越应放在表达式前面,比如性别因子要放在处理方式的前面。有一个基本的准则:若研究设计不是正交(也就是说,因子和/或协变量相关),一定要谨慎设置效应的顺序。
注意:car包中的Anova()函数(不要与标准anova()函数混淆)提供了使用类型Ⅱ或类型Ⅲ方法的选项,而aov()函数使用的是类型Ⅰ方法。若想使结果与其他软件(如SAS和SPSS)提供的结果一致,可以使用car包中的Anova()函数。