混合Anova在R

时间:2016-11-07 18:08:01

标签: r statistics anova

我正在尝试在R中对数据集进行anova anaysis,其中一个在因子内,一个在因子之间。数据来自实验,以测试两种测试方法的相似性。在方法1和方法2(内因子)中测试每个受试者以及在4个不同组中的一个(因子之间)。我尝试过使用aov,Anova(在汽车包装中)和ezAnova功能。我尝试的每种方法都得到错误的值。我不确定我的错误在哪里,如果它缺乏对R或Anova本身的理解。我包含了我认为应该使用的代码。我已经尝试了大量的变种,希望能够找到答案。这组数据是平衡的,但我有很多类似的数据集,而且许多数据都没有。感谢您提供的任何帮助。

library(car)
library(ez)

#set up data
sample_data <- data.frame(Subject=rep(1:20,2),Method=rep(c('Method1','Method2'),each=20),Level=rep(rep(c('Level1','Level2','Level3','Level4'),each=5),2))
sample_data$Result <- c(4.76,5.03,4.97,4.70,5.03,6.43,6.44,6.43,6.39,6.40,5.31,4.54,5.07,4.99,4.79,4.93,5.36,4.81,4.71,5.06,4.72,5.10,4.99,4.61,5.10,6.45,6.62,6.37,6.42,6.43,5.22,4.72,5.03,4.98,4.59,5.06,5.29,4.87,4.81,5.07)
sample_data[, 'Subject'] <- as.factor(sample_data[, 'Subject'])
#Set the contrats if needed to run type 3 sums of square for unblanaced data
#options(contrats=c("contr.sum","contr.poly"))

#With aov method as I understand it 'should' work
anova_aov <- aov(Result ~ Method*Level + Error(Subject/Method),data=test_data)
print(summary(anova_aov))

#ezAnova method,
anova_ez = ezANOVA(data=sample_data, wid=Subject, dv = Result, within = Method, between=Level, detailed = TRUE, type=3)
print(anova_ez)

此外,我应该通过SAS输出值

SAS Anova

1 个答案:

答案 0 :(得分:0)

实际上,在这两种情况下,您的R代码都是正确的。通过SPSS运行这些数据产生了相同的结果。与SPSS一样,SAS似乎要求内部因子的级别出现在单独的列中。最终会有20行而不是40行。像下面这样的排列可能会给你带来SAS所需的结果:

学科水平方法1方法2