Ich habe mit der aov()
Funktion eine ANOVA mit wiederholten Messungen innerhalb der Probanden durchgeführt . Meine abhängige Variable ist nicht normal verteilt, daher bin ich sehr daran interessiert, Annahme-Tests für meine Analyse durchzuführen. Es scheint, dass das bloße Aufrufen plot()
der Ausgabe bei wiederholten Messungen nicht funktioniert. Daher habe ich die Residuen und die angepassten Werte für ein interessierendes Modell manuell genommen und gegeneinander aufgetragen. Ich gehe davon aus, dass ich auf diese Weise planen würde, die Annahme der Homoskedastizität zu testen.
Das Diagramm enthält 2 vertikale Bänder (siehe Abbildung unten). Es stellt sich heraus, dass die angepassten Werte alle um 2 Werte zentriert sind (obwohl ==
sie nicht genau gleich sind), wobei einer der negative des anderen ist.
Ich habe 2 Fragen:
1) Ist dies der richtige Weg, um die Annahme der Homoskedastizität manuell zu testen? Wenn nicht, wie würde ich bei Designs mit wiederholten Messungen vorgehen (da nur das Aufrufen plot()
nicht funktioniert)?
2) Wenn es richtig ist, was sagt mir diese Handlung? Warum sind die angepassten Werte so gruppiert? Was kann ich daraus schließen?
Vielen Dank für jede Eingabe hier. Wenn Sie bessere Möglichkeiten kennen, um Annahmen in rm-ANOVAs zu überprüfen (vorzugsweise zu zeichnen), wären dies ebenfalls nützliche Informationen.
Ich habe hier einige Scheindaten eingefügt, um das Szenario zu replizieren:
#Create mock data (there's probably a more efficient way to do this.. would also be nice to know! :) )
p <- sort(rep(1:20,8))
y <- rep(rep(1:2,4),20)
z <- rep(rep(c(1,1,2,2),2),20)
w <- rep(c(1,1,1,1,2,2,2,2),20)
x <- rnorm(160,10,2)
d <- data.frame(x,p=factor(p),y=factor(y),z=factor(z),w=factor(w))
#Run repeated-measures ANOVA
ex.aov <- aov(x ~ y*z*w + Error(p/(y*z*w)), d)
#Try to plot full object (doesn't work)
plot(ex.aov)
#Try to plot section of object (doesn't work)
plot(ex.aov[["p:y:z"]])
#Plot residuals against fitted (custom "skedasticity" plot - works)
plot(residuals(ex.aov[["p:y:z"]])~fitted(ex.aov[["p:y:z"]]))
Beginnen Sie mit der Bearbeitung
In Anbetracht der von @Stefan bereitgestellten Informationen habe ich nachfolgend einige zusätzliche Details hinzugefügt, wobei ich die von ihm vorgeschlagene verbesserte Datenstruktur verwendet habe:
# Set seed to make it reproducible
set.seed(12)
#New variable names and generation
subj <- sort(factor(rep(1:20,8)))
x1 <- rep(c('A','B'),80)
x2 <- rep(c('A','B'),20,each=2)
x3 <- rep(c('A','B'),10, each=4)
outcome <- rnorm(80,10,2)
d3 <- data.frame(outcome,subj,x1,x2,x3)
#Repeated measures ANOVA
ex.aov <- aov(outcome ~ x1*x2*x3 + Error(subj/(x1*x2*x3)), d3)
#proj function
ex.aov.proj <- proj(ex.aov)
# Check for normality by using last error stratum
qqnorm(ex.aov.proj[[9]][, "Residuals"])
# Check for heteroscedasticity by using last error stratum
plot(ex.aov.proj[[9]][, "Residuals"])
Die resultierenden Diagramme sind unten:
Kann jemand die Bilder oben interpretieren (besonders das letzte)? Es sieht so aus, als ob es Clustering und Musterstruktur gibt. Kann es verwendet werden, um auf das Vorhandensein von Heteroskedastizität zu schließen?