方差分析主要通过F检验来进行效果评测,若治疗方案的F检验显著,则说明检验样本组间均值不同。
ANOVA模型拟合
从函数形式上看,ANOVA和回归方法都是广义线性模型的特例。因此回归分析章节中提到的lm()函数也能分析ANOVA模型。不过,在这个章节中,我们基本使用aov()函数。最后,会提供了个lm()函数的例子。
aov()函数
aov()函数的语法为aov(formula, data=dataframe)。下表列举了表达式可以使用的特殊符号。
符号
用途
~
分隔符号,左边为响应变量(因变量),右边为解释变量(自变量)
:
表示预测变量的交互项
*
表示所有可能交互项的简洁方式
^
表示交互项达到某个次数
.
表示包含除因变量外的所有变量
下面是常见研究设计的表达式
设计
表达式
单因素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)和单个组间因子的重复测量ANOVA
y ~ B * W + Error(Subject/W)
表达式中各项的顺序
当
因子不止一个,并且是非平衡设计;
存在协变量
两者之一时,等式右边的变量都与其他变量相关。此时,我们无法清晰地划分它们对因变量的影响。
例如,对于双因素方差分析,若不同处理方式中的观测数不同,那么模型y ~ A*B与模型y ~ B*A的结果不同。
R默认类型I(序贯型)方法计算ANOVA效应(类型II和III分别为分层和边界型,详见R实战(第2版)202页)。R中的ANOVA表的结果将评价:
A对y的影响
控制A时,B对y的影响
控制A和B的主效应时,A与B的交互影响。
一般来说,越基础性的效应需要放在表达式前面。
car包的Anova()函数提供了三种类型方法,若想与其他软件(如SAS SPSS)提供的结果保持一致,可以使用它,细节可参考helo(Anova, package="car")。
单因素方差分析
单因素方法分析中,你感兴趣的是比较分类因子定义的两个或多个组别中的因变量均值。以multcomp包中cholesterol数据集为例(包含50个患者接收5种降低胆固醇疗法的一种,前三种是同样的药物不同的用法,后二者是候选药物)。哪种药物疗法降低胆固醇最多呢?
> library(mvtnorm)
> library(survival)
> library(TH.data)
> library(MASS)
> library(multcomp)
>