使用的包有car、gplots、HH、rrcov和mvoutlier。
方差分析的基本原理是认为不同处理组的均数间的差别基本来源有两个:
-
实验条件,即不同的处理造成的差异,称为组间差异。用变量在各组的均值与总均值之偏差平方和的总和表示,记作SSb,组间自由度dfb。
-
随机误差,如测量误差造成的差异或个体间的差异,称为组内差异,用变量在各组的均值与该组内变量值之偏差平方和的总和表示, 记作SSw,组内自由度dfw。
总偏差平方和 SSt = SSb + SSw。
组内SSw、组间SSb除以各自的自由度(组内dfw=n-m,组间dfb=m-1,其中n为样本总数,m为组数),得到其均方MSw和MSb,一种情况是处理没有作用,即各组样本均来自同一总体,MSb/MSw≈1。另一种情况是处理确实有作用,组间均方是由于误差与不同处理共同导致的结果,即各样本来自不同总体。那么,MSb>>MSw(远远大于)。 MSb/MSw比值构成F分布。用F值与其临界值比较,推断各样本是否来自相同的总体。
术语速成
单因素方差分析
多因素方差分析
因素(组内、组间、混淆)
协方差分析(单、多)
以焦虑症治疗为例,现有两种治疗方案:认知行为疗法(CBT)和眼动脱敏再加工法(EMDR)。我们招募10个焦虑症患者作为志愿者,随机分配一半的人接受为期五周的CBT,另外一半接受为期五周的EMDR。在治疗结束时,要求每个患者都填写状态特质焦虑问卷(STAI),也就是一份焦虑度测量的自我评测报告。
方差分析主要通过F检验来进行效果评测,若治疗方案的F检验显著,则说明五个星期后两种疗法的STAI得分均值不同。
当时间的F检验显著时,说明患者的STAI得分均值在五周和六个月间 发生了改变。
疗法(therapy)和时间(time)都作为因子时,我们既可分析疗法的影响(时间跨度上的平 均)和时间的影响(疗法类型跨度上的平均),又可分析疗法和时间的交互影响。前两个称作主效应,交互部分称作交互效应。
本例中,你将做三次F检验:疗法因素一次,时间因素一次,两者交互因素一次。若疗法结 果显著,说明CBT和EMDR对焦虑症的治疗效果不同;若时间结果显著,说明焦虑度从五周到六 个月发生了变化;若两者交互效应显著,说明两种疗法随着时间变化对焦虑症治疗影响不同(也就是说,焦虑度从五周到六个月的改变程度在两种疗法间是不同的)。
ANOVA 模型拟合
aov()函数
aov()函数的语法为aov(formula, data = dataframe)
小写字母表示定量变量,大写字母表示组别因子,Subject是对被试者独有的标识变量。
随机化区组:依据数学上概率的原理,将被试材料按相等机会原则分组。理论上可使不同组的被试材料除实验处理之外,其他无关变量保持相等,可弥补配对法顾此失彼的特点,是控制无关变量较好的方法。
表达式中各项的顺序
表达式中效应的顺序在两种情况下会造成影响:
(a)因子不止一个,并且是非平衡设计;
(b)存在协变量。出现任意一种情况时,等式右边的变量都与其他每个变量相关。
此时,我们无法清晰地划分它们对因变量的影响。例如,对于双因素方差分析,若不同处理方式中的观测数不同,那么模型y~ A∗B A∗B与模型y ~ B∗A B∗A的结果不同。 R默认类型I(序贯型)方法计算ANOVA效应。第一个模型可以这样写:y ~ A + B + A:B。
R中的ANOVA表的结果将评价:
A对y的影响;
控制A时,B对y的影响;
控制A和B的主效应时,A与B的交互效应。
样本大小越不平衡,效应项的顺序对结果的影响越大。一般来说,越基础性的效应越需要放在 表达式前面。具体来讲,首先是协变量,然后是主效应,接着是双因素的交互项,再接着是三因素的交互项,以此类推。对于主效应,越基础性的变量越应放在表达式前面。
car包中的Anova()函数(不要与标准anova()函数混淆)提供了使用类型II或类型III方法的选项,而aov()函数使用的是类型I方法。
单因素方差分析
单因素方差分析中,你感兴趣的是比较分类因子定义的两个或多个组别中的因变量均值。以multcomp包中的cholesterol数据集为例(取自Westfall,Tobia,Rom,Hochberg,1999),50个患者均接受降低胆固醇药物治疗(trt)五种疗法中的一种疗法。其中三种治疗条件使用药物相同,分别是20 mg一天一次(1time)、10mg一天两次(2times)和5mg一天四次(4times)。剩下的两种方式(drugD和drugE)代表候选药物。哪种药物疗法降低胆固醇(响应变量)最多呢?
library(multcomp)
## Loading required package: mvtnorm
## Loading required package: survival
## Loading required package: TH.data
## Loading required package: MASS
##
## Attaching package: 'TH.data'