R Anleitungen

R: ANOVA, ANCOVA, MANOVA

Gerade wenn man eher grafische Programme wie SPSS gewohnt ist, mag die Durchführung einer ANOVA in SPSS weniger intuitiv erscheinen. Statt Dialogfenster bietet R vielleicht nur eine Konsole, allerdings lassen sich dafür auch alle grundlegenden (M)ANOVA-Modelle aus SPSS in R berechnen.

Für die meisten ANOVA-Modelle erwartet R die Daten im Long-Format, daher mit einer Spalte für die abhängige Variable (AV) und einer Spalte für die Gruppe bzw. den Teilnehmenden.

Achtung! R verwendet in der Funktion aov Quadratsummenzerlegung des Typ I. Diese ist nicht zu empfehlen, da es zu verfälschten und fehlerhaften Ergebnissen führen kann. Stattdessen empfehlen wir die Quadratsummenzerlegung des Typ III zu verwenden, die uns im Paket car zur Verfügung steht.

Einfaktorielle ANOVA

Eine einfaktorielle ANOVA kann einfach mit die Funktion oneway.test() durchgeführt werden. R berechnet standardmäßig die robustere Welch-ANOVA. Sollte dies nicht gewünscht sein, kann man mit var.equal=TRUE das klassische ANOVA-Modell berechnen lassen.

R Code
oneway.test(AV ~ Gruppe, data=Daten)

# Beide Modelle unterhalb sind identisch
oneway.test(AV ~ Gruppe, data=Daten, var.equal=TRUE)
summary(aov(AV ~ Gruppe, data=Daten))

Einfaktorielle ANCOVA

Wollen wir noch eine (oder mehrere) Kovariaten in unser Modell aufnehmen, müssen wir die Formel entsprechend erweitern.

R Code
library(car)

Modell <- aov(AV ~ Gruppe + Kovariate, data=Daten)
Anova(Modell, type=3)

Zweifaktorielle ANOVA (beides Zwischensubjektfaktoren)

Hier haben wir eine zweifaktorielle ANOVA mit zwei Zwischensubjektfaktoren, Faktor1 und Faktor2, sowie deren Interaktion.

R Code
library(car)

# Beide Modelle sind identisch
Modell <- aov(AV ~ Faktor1 + Faktor2 + Faktor1 : Faktor2, data=Daten)
Modell <- aov(AV ~ Faktor1 * Faktor2, data=Daten)
 
Anova(Modell, type=3)

ANOVA mit Messwiederholung

Unten haben wir eine ANOVA mit Messwiederholung, mit einem Innersubjektfaktor.

R Code
library(car)

Modell <- aov(AV ~ Faktor + Error(Subjekt/Faktor), data=Daten) 
Anova(Modell, type=3)

Zweifaktorielle ANOVA mit Messwiederholung

Unser Modell von oben können wir um einen (oder mehrere) Innersubjektfaktoren erweitern.

R Code
library(car)

Modell <- aov(AV ~ Faktor1 * Faktor2 + Error(Subjekt/(Faktor1*Faktor2)), data=Daten) 
Anova(Modell, type=3)

Mixed ANOVA

Wir können natürlich auch eine Varianzanalyse mit einem Innersubjektfaktor und einem Zwischensubjektfaktor durchführen, so hier.

R Code
library(car)

Modell <- aov(AV ~ Zwischensubjektfaktor * Innersubjektfaktor +
                   Error(Subjekt/Innersubjektfaktor) + 
                   Zwischensubjektfaktor, data=Daten) 
Anova(Modell, type=3)

Mixed ANOVA mit mehreren Faktoren

Wir können unser Modell auch noch so erweitern, dass wir zwei Innersubjektfaktoren und zwei Zwischensubjektfaktoren haben. Unser Modell wäre dann wie unten definiert.

R Code
library(car)

Modell <- aov(AV ~ Zwischensubjektfaktor1 * Zwischensubjektfaktor2 *
                   Innersubjektfaktor1 * Innersubjektfaktor2 +
                   Error(Subjekt/(Innersubjektfaktor1 * Innersubjektfaktor2)) +
                   Zwischensubjektfaktor1 * Zwischensubjektfaktor2, data=Daten) 
Anova(Modell, type=3)

MANOVA

Multivariate Varianzanalysen werden ganz ähnlich zu den oben genannten Modellen definiert. Der Hauptunterschied hier ist, dass wir statt aov() die Funktion manova() verwenden und mehr als eine abhängige Variable haben. Diese gruppieren wir über cbind() und definieren unser Modell wie gewohnt. In unseren Beispielen haben wir jeweils drei abhängige Variablen AV1, AV2 und AV3.

R Code
library(car)

# Einfaktorielle MANOVA mit drei abhängigen Variablen
Modell <- manova(cbind(AV1, AV2, AV3) ~ Faktor, data=Daten)
 
# Einfaktorielle MANOVA mit Messwiederholung
Modell <- manova(cbind(AV1, AV2, AV3) ~ Faktor + Error(Subjekt/Faktor), data=Daten)

# mixed MANOVA mit einem Innersubjektfaktor und einem Zwischensubjektfaktor
Modell <- manova(cbind(AV1, AV2, AV3) ~ Zwischensubjektfaktor * Innersubjektfaktor + 
                                        Error(Subjekt/Innersubjektfaktor) + 
                                        Zwischensubjektfaktor, data=Daten) 

Anova(Modell, type=3, test.statistic="Wilks")