重复测量ANOVA:ezANOVA与aov vs. lme语法

时间:2014-08-27 06:30:45

标签: r syntax anova mixed-models nlme

这个问题是关于语法和语义的,因此请在交叉验证上找到一个(但尚未答复的)副本:https://stats.stackexchange.com/questions/113324/repeated-measures-anova-ezanova-vs-aov-vs-lme-syntax

在机器学习领域,我在相同的5个数据集上评估了4个分类器,即每个分类器返回数据集1,2,3,...和5的性能度量。现在我想知道分类器是否不同他们的表现显着。这是一些玩具数据:

Performance<-c(2,3,3,2,3,1,2,2,1,1,3,1,3,2,3,2,1,2,1,2)
Dataset<-factor(c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5))
Classifier<-factor(c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4))
data<-data.frame(Classifier,Dataset,Performance)

在教科书之后,我进行了重复测量的单因素方差分析。我将我的表现解释为因变量,将分类器解释为主体,将数据集解释为主体内因子。使用aov,我得到了:

model <- aov(Performance ~ Classifier + Error(factor(Dataset)), data=data)
summary(model)

产生以下输出:

Error: factor(Dataset)
           Df Sum Sq Mean Sq F value Pr(>F)
Residuals  4    2.5   0.625               

Error: Within
            Df Sum Sq Mean Sq F value Pr(>F)  
Classifier  3    5.2  1.7333   4.837 0.0197 *
Residuals  12    4.3  0.3583 

使用线性混合效果模型时,我得到了类似的结果:

model <- lme(Performance ~ Classifier, random = ~1|Dataset/Classifier,data=data)
result<-anova(model)

然后我尝试用ezANOVA重现结果,以便为Sphericity执行Mauchlys测试:

 ezANOVA(data=data, dv=.(Performance), wid=.(Classifier), within=.(Dataset), detailed=TRUE, type=3)

产生以下输出:

        Effect DFn DFd  SSn SSd         F          p p<.05       ges
 1 (Intercept)   1   3 80.0 5.2 46.153846 0.00652049     * 0.8938547
 2     Dataset   4  12  2.5 4.3  1.744186 0.20497686       0.2083333

这显然与aov / lme的先前输出不对应。然而,当我交换&#34; Performance&#34;用&#34;分类器&#34;在ezANOVA定义中,我得到了预期的结果。

我现在想知道我的教科书是错误的(aov定义)还是我误解了ezANOVA语法。此外,为什么我在重写ezANOVA语句时只获得Mauchly的测试结果,但在第一种情况下却没有?

1 个答案:

答案 0 :(得分:7)

由于您要比较分类器而不是数据集,因此内部因子是分类器,内部ID是数据集。因此,您的ezANOVA示例的正确语法是:

ezANOVA(data=data, dv=.(Performance), within=.(Classifier), wid=.(Dataset), detailed=TRUE)

顺便说一句,没有必要指定平方和的类型。由于你只有一个因素,所有类型的平方和都会产生相同的结果。