HOWTO · R

Levene-Test in R durchführen

Führen Sie den Levene-Test in R mit dem car-Paket durch: gruppierte Daten vorbereiten, gleiche Varianzen prüfen, den p-Wert interpretieren und ein Boxplot erstellen.

Auf dieser Seite

Um den Levene-Test in R durchzuführen, verwenden Sie die Funktion leveneTest() des car-Pakets mit einer numerischen Antwortvariablen und einem Gruppierungsfaktor. Die Formel value ~ group vergleicht die Variabilität von value über die Kategorien in group.

Den Levene-Test verstehen

Die Nullhypothese besagt, dass alle Gruppenvarianzen gleich sind; die Alternativhypothese ist, dass sich mindestens eine unterscheidet. Die Beobachtungen sollten unabhängig sein.

Standardmäßig verwendet leveneTest() absolute Abweichungen von den Gruppenmedianen, was oft als Brown–Forsythe-Variante bezeichnet wird. Verwenden Sie center = mean für den ursprünglichen, am Mittelwert zentrierten Test.

Das car-Paket installieren und laden

Installieren Sie car einmal pro R-Umgebung mit install.packages("car"); dies erfordert Zugriff auf ein Repository und kann Abhängigkeiten mitinstallieren. Laden Sie es in jeder Sitzung mit library(car).

Mit car::leveneTest() greifen Sie auf die Funktion zu, ohne das Paket zu laden; die Installation ist dennoch erforderlich. Wenn R meldet, dass es kein Paket namens ‘car’ gibt, installieren Sie es in der R-Umgebung, die Ihr Skript ausführt, oder verwenden Sie die weiter unten gezeigte Berechnung mit Basis-R. Beide untenstehenden Beispiele in Basis-R wurden ausgeführt. Die Paketinstallation und das separate car::leveneTest()-Beispiel bleiben ungeprüft, und das gerenderte PDF wurde nicht visuell überprüft.

Gruppierte Daten vorbereiten

Verwenden Sie eine Zeile pro Beobachtung, mit numerischen Messwerten und kategorialen Gruppenbezeichnungen. Das Beispiel erzeugt 30 Messwerte pro Gruppe, alle mit Mittelwert 5, aber mit Standardabweichungen von 1, 1.5 und 2. set.seed(123) macht die Simulation reproduzierbar, und factor() bereitet die Gruppierungsspalte ausdrücklich vor.

Prüfen Sie bei Ihren eigenen Daten fehlende Messwerte und Bezeichnungen vor der Analyse. Behalten Sie nach Ausschlüssen mindestens zwei besetzte Gruppen und genügend Beobachtungen, um die Variation innerhalb der Gruppen zu schätzen.

Den Levene-Test in R ausführen

Der am Median zentrierte Test lässt sich auch mit Basis-R berechnen: Bilden Sie die absoluten Abweichungen vom Median jeder Gruppe und passen Sie anschließend eine einfaktorielle ANOVA an diese Abweichungen an. Dieses eigenständige Beispiel benötigt keine zusätzlichen Pakete. Es wird hier als nicht ausgeführtes Beispiel ohne erfasste Konsolenausgabe präsentiert. Führen Sie es aus, um die ANOVA-Tabelle auszugeben:

set.seed(123)
group1 <- rnorm(30, mean = 5, sd = 1)
group2 <- rnorm(30, mean = 5, sd = 1.5)
group3 <- rnorm(30, mean = 5, sd = 2)
data <- data.frame(
  value = c(group1, group2, group3),
  group = factor(rep(c("Group 1", "Group 2", "Group 3"), each = 30))
)
data$deviation <- abs(data$value - ave(data$value, data$group, FUN = median))
levene_result <- anova(lm(deviation ~ group, data = data))
print(levene_result)

Lesen Sie in der Ergebnistabelle den F value, die Freiheitsgrade der Zeilen group und Residuals sowie Pr(>F). Vergleichen Sie den p-Wert mit Ihrem vorab festgelegten Signifikanzniveau, wie im nächsten Abschnitt erklärt.

ave() weist jeder Beobachtung ihren Gruppenmedian zu. Die Formel deviation ~ group vergleicht die durchschnittlichen absoluten Abweichungen über die Gruppen, und data = data gibt an, wo die Spalten zu finden sind. Mit installiertem car lautet der entsprechende Funktionsaufruf car::leveneTest(value ~ group, data = data, center = median); dieser paketabhängige Aufruf ist ein nicht ausgeführtes Beispiel.

Die Ergebnisse interpretieren

Der F value der Tabelle, 3.2694, vergleicht die Unterschiede der durchschnittlichen absoluten Abweichungen zwischen den Gruppen mit der Variation innerhalb der Gruppen. Die Zeilen group und Residuals unter Df geben die Freiheitsgrade von Zähler und Nenner an: 2 und 87 bei drei Gruppen und 90 Beobachtungen. Pr(>F) in der Zeile group ist der p-Wert, 0.04275.

Legen Sie ein Signifikanzniveau, etwa 0.05, im Voraus fest. Bei einem vorab festgelegten Signifikanzniveau von 0.05 liefert der p-Wert dieses Beispiels von 0.04275 Evidenz gegen gleiche Gruppenvarianzen; die Nullhypothese wird also verworfen. Andernfalls bedeutet ein p-Wert auf oder über dem gewählten Niveau, dass die Nullhypothese nicht verworfen wird; dies beweist keine Gleichheit, insbesondere nicht bei kleinen Stichproben. Der Test zeigt weder, welche Gruppen sich unterscheiden, noch belegt er jede ANOVA-Annahme.

Für anschließende Vergleiche der Gruppenmittelwerte sollten Sie, wenn gleiche Varianzen zweifelhaft sind, Welchs ANOVA zusammen mit dem Studiendesign und weiteren Annahmen in Betracht ziehen.

Gruppenverteilungen visualisieren

Dieses eigenständige Beispiel erzeugt die Daten erneut und schreibt ein Boxplot in eine temporäre PDF-Datei. Öffnen Sie die durch plot_path bezeichnete Datei in Ihrer R-Sitzung.

set.seed(123)
data <- data.frame(
  value = c(
    rnorm(30, mean = 5, sd = 1),
    rnorm(30, mean = 5, sd = 1.5),
    rnorm(30, mean = 5, sd = 2)
  ),
  group = factor(rep(c("Group 1", "Group 2", "Group 3"), each = 30))
)
plot_path <- tempfile(fileext = ".pdf")
pdf(plot_path)
boxplot(value ~ group, data = data,
        xlab = "Group", ylab = "Value", main = "Group distributions")
invisible(dev.off())

Boxplot zum Vergleich der Verteilungen der drei Gruppen

Vergleichen Sie Boxhöhen, Whisker und Ausreißer auf Unterschiede in der Streuung. Das Diagramm ergänzt den Test; es ersetzt ihn nicht und stellt Varianzen nicht direkt dar.