One-Way ANOVA in R durchführen

Du weißt bereits, was eine Varianzanalyse (ANOVA) ist und wann man sie verwendet. Jetzt wird’s praktisch: Du bekommst einen vollständigen Workflow für die One-Way ANOVA in R – inklusive Voraussetzungstests, Modell, Post-hoc-Tests und Grafiken.


Das Beispiel: Lernmethoden und Prüfungserfolg

Stell Dir vor, Du willst herausfinden, ob sich verschiedene Lernmethoden auf die Testergebnisse von Studierenden auswirken. Du hast drei Gruppen:

  • Karteikarten
  • Videos
  • Gruppenarbeit

Hier sind die fiktiven Daten dazu:

# Beispiel-Daten erstellen
lerndaten <- data.frame(
methode = factor(rep(c("Karteikarten", "Videos", "Gruppenarbeit"), each = 10)),
punkte = c(78, 85, 80, 82, 75, 79, 84, 81, 77, 76, # Karteikarten
72, 70, 68, 74, 69, 71, 67, 73, 70, 69, # Videos
90, 88, 87, 85, 91, 89, 92, 90, 86, 88) # Gruppenarbeit
)

1. Daten erkunden

Ein erster Überblick hilft, die Daten zu verstehen:

summary(lerndaten)

boxplot(punkte ~ methode, data = lerndaten,
col = "lightblue", main = "Punkte nach Lernmethode",
ylab = "Punktzahl", xlab = "Methode")

Du bekommst eine erste Idee, ob Unterschiede sichtbar sind.


2. Voraussetzungen testen

Bevor wir loslegen: Die ANOVA setzt bestimmte Bedingungen voraus. Prüfen wir die Schritt für Schritt.

Definition (Box):
Voraussetzungen für die One-Way ANOVA:

  • Normalverteilung der Residuen
  • Varianzhomogenität
  • Unabhängigkeit der Beobachtungen

a) Normalverteilung prüfen

# Residuen extrahieren
modell <- aov(punkte ~ methode, data = lerndaten)
residuen <- residuals(modell)

# QQ-Plot
qqnorm(residuen)
qqline(residuen, col = "red")

# Shapiro-Wilk-Test
shapiro.test(residuen)

Interpretation:

  • Punkte auf QQ-Linie → gut
  • $p > 0{,}05$ beim Shapiro-Test → Normalverteilung ok

b) Varianzhomogenität prüfen

install.packages("car")  # nur beim ersten Mal
library(car)

leveneTest(punkte ~ methode, data = lerndaten)

Interpretation:

  • $p > 0{,}05$ → gleiche Varianzen
  • $p < 0{,}05$ → besser Welch-ANOVA verwenden

c) Unabhängigkeit prüfen

Diese Voraussetzung muss inhaltlich geprüft werden.
Wichtig: Jede Person darf nur einer Gruppe zugeordnet sein und nur einmal gemessen werden.


3. One-Way ANOVA durchführen

# ANOVA rechnen
modell <- aov(punkte ~ methode, data = lerndaten)
summary(modell)

Beispielausgabe:

            Df Sum Sq Mean Sq F value Pr(>F)    
methode 2 1022.1 511.1 24.52 1.2e-06 ***
Residuals 27 562.2 20.8

Definition (Box):
F-Wert: Verhältnis von erklärter zu unerklärter Varianz.
p-Wert: Wahrscheinlichkeit, dass ein so großer F-Wert zufällig entsteht.

Ergebnis:
Die Unterschiede sind statistisch signifikant ($p < 0{,}001$).


4. Post-hoc-Test: Welche Gruppen unterscheiden sich?

TukeyHSD(modell)

Beispielausgabe:

cssCopyEdit                       diff      lwr      upr     p adj
Videos-Karteikarten   -9.40   -13.97   -4.83    0.0002
Gruppenarbeit-Kartei   9.80     5.23   14.37    0.0001
Gruppenarbeit-Videos  19.20    13.63   24.77    0.0000

Interpretation:
Alle Gruppen unterscheiden sich signifikant voneinander.


5. Bonus: Visualisierung mit ggplot2

library(ggplot2)

ggplot(lerndaten, aes(x = methode, y = punkte)) +
geom_boxplot(fill = "lightgreen") +
theme_minimal() +
labs(title = "Prüfungserfolg nach Lernmethode",
x = "Lernmethode", y = "Punkte")

Zusammenfassung: One-Way ANOVA in 5 Schritten

SchrittWas passiert?
1.Daten vorbereiten und anschauen
2.Voraussetzungen testen (Normalität, Varianz, Unabhängigkeit)
3.aov() verwenden
4.Ergebnisse interpretieren
5.TukeyHSD() für Post-hoc-Vergleiche

Q&A – Teste Dein Wissen

Frage 1: Warum prüft man die Voraussetzungen vor der ANOVA?
Antwort: Weil sonst die Testergebnisse verzerrt oder ungültig sein können.

Frage 2: Was bedeutet ein signifikanter F-Wert?
Antwort: Dass sich mindestens eine Gruppe signifikant vom Rest unterscheidet.

Frage 3: Wann brauchst Du einen Post-hoc-Test?
Antwort: Wenn die ANOVA signifikant ist und Du wissen willst, welche Gruppen sich unterscheiden.

Frage 4: Wie testest Du die Normalverteilung der Residuen in R?
Antwort: Mit shapiro.test(residuen) oder einem QQ-Plot.

Frage 5: Wie überprüfst Du die Varianzhomogenität?
Antwort: Mit dem leveneTest() aus dem car-Paket.

Alles klar?

Ich hoffe, der Beitrag war für dich soweit verständlich. Wenn du weitere Fragen hast, nutze bitte hier die Möglichkeit, eine Frage an mich zu stellen!

Stelle Dominik eine Frage