Repeated Measures ANOVA in R

In vielen psychologischen Studien misst man mehrmals dieselben Personen – z. B. vor, während und nach einer Intervention. Du möchtest wissen: Gibt es über die Zeit hinweg einen Effekt?

Dann brauchst Du die ANOVA mit Messwiederholung, auch Repeated Measures ANOVA genannt.


Beispiel: Achtsamkeitstraining und Stress

Fragestellung:
Verändert sich das Stressniveau bei Teilnehmenden über die Zeit hinweg – also vor, während und nach einem Achtsamkeitstraining?


1. Beispieldaten erzeugen

# Simulierte Daten: 15 Personen, 3 Messzeitpunkte
set.seed(123)
daten <- data.frame(
id = factor(1:15),
vor = rnorm(15, mean = 75, sd = 5),
waehrend = rnorm(15, mean = 70, sd = 5),
nach = rnorm(15, mean = 65, sd = 5)
)

# Daten ins Long-Format umwandeln
library(tidyr)
daten_long <- pivot_longer(daten, cols = vor:nach,
names_to = "zeitpunkt", values_to = "stress")
daten_long$zeitpunkt <- factor(daten_long$zeitpunkt, levels = c("vor", "waehrend", "nach"))

2. Erste Visualisierung

library(ggplot2)

ggplot(daten_long, aes(x = zeitpunkt, y = stress, group = id)) +
geom_line(alpha = 0.5) +
stat_summary(aes(group = 1), fun = mean, geom = "line", color = "red", size = 1.2) +
theme_minimal() +
labs(title = "Stressniveau über die Zeit", y = "Stress", x = "Messzeitpunkt")

Interpretation: Die rote Linie zeigt den Mittelwert über alle Personen hinweg – sinkt sie, wirkt das Training!


3. Modell mit aov() berechnen

modell_rm <- aov(stress ~ zeitpunkt + Error(id/zeitpunkt), data = daten_long)
summary(modell_rm)

Beispielausgabe:


Df Sum Sq Mean Sq F value Pr(>F)
Residuals 14 2850 203.57

Error: id:zeitpunkt
Df Sum Sq Mean Sq F value Pr(>F)
zeitpunkt 2 750 375.0 18.34 0.00012 ***
Residuals 28 572 20.4

4. Interpretation

Definition (Box):
Messwiederholungs-ANOVA prüft, ob sich die Mittelwerte einer Gruppe über verschiedene Zeitpunkte hinweg signifikant verändern – unter Berücksichtigung der Abhängigkeit der Messwerte (gleiche Personen).

  • Der F-Wert ist 18.34
  • Der p-Wert ist sehr klein ($p < 0{,}001$)

Fazit: Das Stressniveau hat sich signifikant verändert – vermutlich gesunken!


5. Voraussetzungen prüfen

a) Normalverteilung der Differenzen

Die ANOVA geht davon aus, dass die Differenzen zwischen Zeitpunkten normalverteilt sind. Eine einfache Möglichkeit:

with(daten, shapiro.test(vor - waehrend))
with(daten, shapiro.test(waehrend - nach))

$p > 0{,}05$ → Normalverteilung ok


b) Sphärizität (nur bei ≥ 3 Zeitpunkten)

Sphärizität bedeutet, dass die Varianzen der Differenzen zwischen allen Zeitpunkten gleich sind.
Wird mit dem Mauchly-Test geprüft.

# Paket installieren:
install.packages("ez")
library(ez)

# Repeated Measures ANOVA mit Mauchly-Test
ezANOVA(data = daten_long, dv = .(stress), wid = .(id),
within = .(zeitpunkt), detailed = TRUE)

Falls Sphärizität verletzt ist, liefert Dir ezANOVA() gleich die Greenhouse-Geisser-Korrektur mit.


6. Post-hoc-Tests: Welche Zeitpunkte unterscheiden sich?

pairwise.t.test(daten_long$stress, daten_long$zeitpunkt, 
paired = TRUE, p.adjust.method = "bonferroni")

Interpretation: Du siehst alle paarweisen Vergleiche (vor – während, vor – nach, während – nach) und erkennst, welche Unterschiede signifikant sind.


Zusammenfassung: Repeated Measures ANOVA in R

SchrittWas Du machst
1.Datensatz im Wide-Format erstellen und ins Long-Format bringen
2.Visualisieren mit ggplot2
3.aov() mit Error(id/zeitpunkt)
4.Voraussetzungen prüfen (Normalverteilung, Sphärizität)
5.pairwise.t.test() für Post-hoc-Vergleiche

Q&A – Teste Dein Wissen

Frage 1: Wann brauchst Du eine Messwiederholungs-ANOVA?
Antwort: Wenn Du mehrmals dieselben Personen misst (z. B. vor, während, nach einer Intervention).

Frage 2: Was bedeutet Sphärizität?
Antwort: Dass die Varianz der Differenzen zwischen Zeitpunkten gleich ist.

Frage 3: Welche Funktion nutzt Du für Repeated Measures in R?
Antwort: aov(... + Error(id/zeitpunkt))

Frage 4: Wie visualisierst Du Veränderungen über Zeitpunkte in R?
Antwort: Mit ggplot2 und Linien für jede Person plus Durchschnitt.

Frage 5: Was zeigt Dir ein signifikanter Post-hoc-Test?
Antwort: Welche einzelnen Zeitpunkte sich signifikant voneinander unterscheiden.