I am attempting to do a repeated measures anova using r with the aov() command from the {car} package. I wanted to be sure that I wrote my code for this approach correctly (see below), so I cross-checked the results against same repeated measures anova model using the ezANOVA() command from the {ez} package.
What I found was that the results from each anova were the same, but the residuals of each model using the respective packages were distributed differently. Using the aov() command, the residuals were non-normally distributed whereas using ezANOVA() they were normally distributed.
############################### #aov() using the {car} package# ############################### mod.aov <-aov(rating~(factor1*factor2) + Error(id/(factor1*factor2)), data=datalong) shapiro.test(residuals(mod.aov)) Shapiro-Wilk normality test data: residuals(mod.aov) W = 0.9961, p-value = 0.036 pearson.test(residuals(mod.aov)) Pearson chi-square normality test data: residuals(gain.aov) P = 50.4, p-value = 0.004086
################################## #ezANOVA() using the {ez} package# ################################## mod.ez <- ezANOVA(data = datalong, dv = .(rating), wid = .(id), within = .(factor1, factor2), detailed = TRUE, return_aov = TRUE) shapiro.test(residuals(mod.ez$aov)) Shapiro-Wilk normality test data: residuals(mod.ez$aov) W = 0.9876, p-value = 0.449 pearson.test(residuals(mod.aov$aov)) Pearson chi-square normality test data: residuals(mod.ez$aov) P = 7.75, p-value = 0.6532
I do not understand whether the residuals of each model are different because of my code, or because of the differences between way the packages perform the analyses. Can anybody help? I can provide additional information if needed. Thanks.
Best Answer
First, there is no aov
function in the car
package, so I'm guessing you are referring to aov
from the stats
package.
Second, by comparing the QQ-plots of the residuals obtained via aov
and ezANOVA
, you are apparently not using the same data – the aov
plot shows many more data points than the ezANOVA
plot.
Third, I suspect that since you're not using identical data, this is the reason why you get different residuals. I just compared the residuals with a toy example, and both aov
and ezANOVA
yield identical results:
library(ez) rating <- c(8, 9, 6, 5, 8, 7, 10, 12, 7, 5, 2, 3, 4, 5, 2, 6, 1, 2, 3, 1, 5, 6, 7, 8, 6, 5, 8, 9, 8, 7, 2, 1) group <- factor(rep(1:4, each=8, len=32)) id <- factor(rep(1:8, times=4)) df <- data.frame(id, group, rating) mod.ez <- ezANOVA(df, rating, id, within=group, return_aov=T) mod.aov <- aov(rating ~ group + Error(id/group), df) res.ez <- sort(proj(mod.ez$aov)[[3]][, "Residuals"]) res.aov <- sort(proj(mod.aov)[[3]][, "Residuals"]) res.ez - res.aov plot(res.ez, res.aov)
So except for numerical errors, the residuals from the two methods are identical.
Similar Posts:
- Solved – Difference between aov() and ezANOVA when using a subset of DataFrame in repeated measures ANOVA
- Solved – Difference between aov() and ezANOVA when using a subset of DataFrame in repeated measures ANOVA
- Solved – Non normal distribution for 4-way mixed ANOVA
- Solved – ezAnova vs. lme for factorial repeated-measures design: results differ, why
- Solved – Error within the dependent variable while running a RM ANOVA using ezANOVA