Kurs
Mehrere Gruppen zu vergleichen, ist simpel, wenn deine Daten normalverteilt sind. Das Problem: Die meisten Real-World-Daten sind es nicht.
Wenn ANOVA dein Standardtest ist, landest du schnell bei falschen Schlüssen, denn er setzt Normalverteilung voraus. Fehlt sie – etwa bei schiefen Verteilungen oder kleinen Stichproben – brauchst du einen anderen Ansatz.
Der Kruskal-Wallis-Test ist genau dieser Ansatz. Er ist die nichtparametrische Alternative zu ANOVA und arbeitet mit Rängen statt mit Rohwerten – eine Normalverteilung ist daher keine Voraussetzung.
In diesem Artikel zeige ich dir das Konzept, die dahinterstehende Mathematik, die Umsetzung in Python und R sowie die Interpretation der Ergebnisse.
Was ist der Kruskal-Wallis-Test?
Der Kruskal-Wallis-Test ist ein nichtparametrisches Verfahren zum Vergleich von drei oder mehr unabhängigen Gruppen. Er wandelt alle Beobachtungen in Ränge um und vergleicht diese Rangfolgen zwischen den Gruppen, statt mit Rohwerten zu arbeiten.
Du kannst ihn dir als Erweiterung des Mann-Whitney-U-Tests vorstellen, über den ich ebenfalls geschrieben habe.
Der Mann-Whitney-U-Test macht denselben rangbasierten Vergleich, aber nur für zwei Gruppen. Der Kruskal-Wallis-Test skaliert auf drei oder mehr Gruppen. Wenn du also mehrere Gruppen hast und ANOVA nicht in Frage kommt, ist er die richtige Wahl.
Weil er mit Rängen statt mit Rohwerten arbeitet, setzt er keine bestimmte Verteilung voraus. Das macht ihn in der Praxis so hilfreich – reale Daten folgen selten perfekt einer bestimmten Verteilungsform.
Wann setzt du den Kruskal-Wallis-Test ein?
Der Kruskal-Wallis-Test passt ideal, wenn du es mit Folgendem zu tun hast:
- Drei oder mehr unabhängige Gruppen, die du vergleichen willst
- Ordinale oder kontinuierliche Daten, z. B. Likert-Skalen oder Messwerte
- Nicht-normalverteilte Daten durch Schiefe, Ausreißer, kleine Stichproben – alles, womit ANOVA schlecht zurechtkommt
- Kleine Stichproben, bei denen Normalität schwer zu prüfen ist
Hier ein einfaches Beispiel.
Stell dir vor, du möchtest Prüfungsergebnisse über drei verschiedene Klassen hinweg vergleichen. Die Werte sind schief verteilt und die Stichproben klein – ANOVA fällt damit aus. Der Kruskal-Wallis-Test braucht keine Normalität und funktioniert hier. Er sagt dir, ob sich mindestens eine Klasse von den anderen unterscheidet – ohne Annahmen, die deine Daten nicht erfüllen.
Kruskal-Wallis-Test vs. ANOVA
Beide Tests vergleichen Gruppen, gehen aber unterschiedlich vor.
ANOVA vergleicht Gruppen-mittelwerte und setzt Normalverteilung sowie ungefähr gleiche Varianzen voraus. Sind diese Annahmen erfüllt, ist ANOVA die bessere Wahl – statistisch stärker und leichter zu interpretieren.
Der Kruskal-Wallis-Test vergleicht Gruppen-verteilungen über Ränge. Er ist unempfindlich gegenüber Normalität und gleichen Varianzen. Das macht ihn flexibler, kostet aber etwas Teststärke.
Hier ein schneller Vergleich in der Übersicht:

ANOVA im Vergleich zum Kruskal-Wallis-Test
Sind deine Daten normalverteilt, nutze ANOVA. Wenn nicht – oder wenn du es nicht prüfen kannst – nutze Kruskal-Wallis.
Formel des Kruskal-Wallis-Tests
Der Kruskal-Wallis-Test führt auf eine einzelne Teststatistik H hinaus. Hier ist die Formel:

Kruskal-Wallis-Formel
Das bedeuten die Komponenten:
-
N– Gesamtzahl der Beobachtungen über alle Gruppen -
k– Anzahl der Gruppen -
n_i– Anzahl der Beobachtungen in Gruppei -
R_i– Summe der Ränge, die Gruppeizugeordnet sind
Die Formel misst, wie stark sich die Rangsummen der Gruppen von dem unterscheiden, was man erwarten würde, wenn alle Gruppen identisch wären. Ein großes H bedeutet, die Gruppen unterscheiden sich; ein kleines H spricht für ähnliche Gruppen.
Sobald du H berechnet hast, vergleichst du es mit einer Chi-Quadrat-Verteilung mit k - 1 Freiheitsgraden, um den p-Wert zu erhalten.
So funktioniert der Kruskal-Wallis-Test
Für den Kruskal-Wallis-Test brauchst du vier Schritte:
- Alle Gruppen zusammenführen: Nimm alle Beobachtungen aus allen Gruppen in einen gemeinsamen Datensatz auf
- Alle Beobachtungen rängen: Sortiere die kombinierten Daten von klein nach groß und vergib Ränge. Der kleinste Wert erhält Rang 1, der nächste Rang 2 usw. Bei gleichen Werten teilen sie sich den Durchschnitt der entsprechenden Ränge.
- Rangsummen berechnen: Teile die Ränge wieder in die ursprünglichen Gruppen auf. Addiere die Ränge je Gruppe. Das sind die Rangsummen –
R_iin der Formel - Teststatistik berechnen: Setze die Rangsummen in die
H-Formel ein. Sind die Gruppen ähnlich, liegen ihre Rangsummen nah beieinander undHist klein. Erhält eine Gruppe systematisch höhere oder niedrigere Ränge, wirdHgrößer
Und das war’s!
Du siehst: Der Test betrachtet nicht die eigentlichen Werte, sondern nur ihre relative Position.
Kruskal-Wallis-Test in Python
Pythons scipy-Bibliothek bringt eine fertige Funktion für den Kruskal-Wallis-Test mit – du musst die Formel nicht selbst implementieren. Schauen wir uns ein Beispiel an.
Angenommen, du vergleichst Prüfungsergebnisse aus drei Klassen. So führst du den Test aus:
from scipy import stats
# Exam scores
class_a = [78, 85, 90, 72, 88]
class_b = [65, 70, 68, 74, 60]
class_c = [88, 92, 95, 85, 91]
# Run the test
statistic, p_value = stats.kruskal(class_a, class_b, class_c)
print(f"H statistic: {statistic:.4f}")
print(f"P-value: {p_value:.4f}")

Python-Ausgabe
Der p-Wert liegt unter 0,05. Das heißt, mindestens eine Klasse unterscheidet sich von den anderen. Beachte: Der Test sagt dir nicht, welche – dafür brauchst du einen Post-hoc-Test, den ich im nächsten Abschnitt vorstelle.
Kruskal-Wallis-Test in R
Wie in Python gibt es auch in R eine eingebaute Funktion. Wir bleiben beim Beispiel mit den Prüfungsergebnissen.
# Exam scores
class_a <- c(78, 85, 90, 72, 88)
class_b <- c(65, 70, 68, 74, 60)
class_c <- c(88, 92, 95, 85, 91)
# Combine
scores <- c(class_a, class_b, class_c)
groups <- factor(rep(c("A", "B", "C"), each = 5))
# Run the test
kruskal.test(scores ~ groups)

R-Ausgabe
Das Ergebnis entspricht dem in Python – gleiche H-Statistik, gleicher p-Wert. Bei p < 0,05 verwerfist du die Nullhypothese und folgerst, dass sich mindestens eine Gruppe unterscheidet.
So interpretierst du Kruskal-Wallis-Ergebnisse
Die Nullhypothese des Kruskal-Wallis-Tests lautet: Alle Gruppen haben die gleiche Verteilung. Der p-Wert zeigt dir, ob du sie verwerfen solltest. So liest du ihn:
- p < 0,05: Mindestens eine Gruppe unterscheidet sich – Nullhypothese verwerfen
- p ≥ 0,05: Kein starker Hinweis auf Unterschiede – Nullhypothese nicht verwerfen
Die 0,05-Schwelle ist Konvention. Je nach Fachgebiet oder Tragweite der Analyse kannst du strenger (0,01) oder großzügiger (0,10) wählen.
Beachte: Der Test sagt nicht, welche Gruppe sich unterscheidet. Ein signifikanter Befund heißt nur, dass nicht alle Gruppen gleich sind. Um herauszufinden, welche Paare den Unterschied treiben, brauchst du einen Post-hoc-Test.
Post-hoc-Tests nach Kruskal-Wallis
Der Test zeigt dir, dass mindestens eine Gruppe abweicht, aber nicht welche. Bei drei Gruppen und p < 0,05 kann es A gegen B, A gegen C, B gegen C oder eine Kombination sein. Für diese Paarvergleiche brauchst du einen Post-hoc-Test.
Dunns Test ist die gängigste Wahl. Er führt paarweise Vergleiche für alle Gruppen durch und passt die p-Werte für multiple Tests an – ohne Anpassung steigt die Gefahr von Fehlalarmen. Je mehr Vergleiche du ziehst, desto höher das Risiko, zufällig ein „signifikantes" Ergebnis zu finden.
Dunns Test in Python
Dafür brauchst du die Bibliothek scikit_posthocs. Falls nicht vorhanden, installiere sie mit pip install scikit-posthocs.
Die Berechnung ist dann einfach:
import scikit_posthocs as sp
import pandas as pd
# Same exam scores as before
class_a = [78, 85, 90, 72, 88]
class_b = [65, 70, 68, 74, 60]
class_c = [88, 92, 95, 85, 91]
# Combine
scores = class_a + class_b + class_c
groups = ["A"] * 5 + ["B"] * 5 + ["C"] * 5
df = pd.DataFrame({"score": scores, "group": groups})
# Run the test
result = sp.posthoc_dunn(df, val_col="score", group_col="group", p_adjust="bonferroni")
print(result)

Dunn-Test in Python
Jede Zelle zeigt den angepassten p-Wert für das jeweilige Paar. Hier überschreitet nur B gegen C (p = 0,004) die 0,05-Schwelle, diese beiden Gruppen unterscheiden sich also. A gegen B (p = 0,167) und A gegen C (p = 0,607) nicht – Klasse A unterscheidet sich statistisch nicht von den beiden anderen.
Dunns Test in R
Installiere bei Bedarf zunächst das Paket mit dem Befehl install.packages("dunn.test"):
library(dunn.test)
# Same exam scores as before
class_a <- c(78, 85, 90, 72, 88)
class_b <- c(65, 70, 68, 74, 60)
class_c <- c(88, 92, 95, 85, 91)
scores <- c(class_a, class_b, class_c)
groups <- factor(rep(c("A", "B", "C"), each = 5))
# Run the test
dunn.test(scores, groups, method = "bonferroni")

Dunn-Test in R
Die Ergebnisse decken sich – wie zu erwarten – mit Python. Nur B gegen C ist signifikant, A gegen B und A gegen C nicht. Klasse B und Klasse C treiben den vom Kruskal-Wallis-Test gefundenen Unterschied.
Annahmen des Kruskal-Wallis-Tests
Der Kruskal-Wallis-Test ist flexibler als ANOVA, hat aber drei Voraussetzungen, die du vorab prüfen solltest:
- Unabhängige Stichproben: Beobachtungen in einer Gruppe beeinflussen nicht die in einer anderen. Bei gepaarten Daten oder Messwiederholungen ist dieser Test ungeeignet
- Ordinale oder kontinuierliche Daten: Der Test braucht Daten, die sich rängen lassen. Nominale Kategorien (z. B. Farben, Labels) sind ungeeignet
- Ähnliche Verteilungsformen: Willst du die Ergebnisse als Medianvergleich deuten (statt als Verteilungsvergleich), sollten die Gruppen ähnlich geformte Verteilungen haben. Bei stark unterschiedlichen Formen bleibt der Verteilungsvergleich möglich, aber die Median-Interpretation nicht
Wenn du die ersten beiden Annahmen verletzt, sind die Testergebnisse nicht valide. Die dritte ist weicher – sie betrifft die Interpretation, nicht die Durchführbarkeit.
Wann du den Kruskal-Wallis-Test nicht verwenden solltest
Drei Fälle sprechen für ein anderes Verfahren:
- Gepaartes Design oder Messwiederholungen: Wenn dieselben Probanden in mehreren Gruppen auftreten, nutze stattdessen den Friedman-Test. Er ist das nichtparametrische Pendant für abhängige Stichproben. Kruskal-Wallis auf gepaarten Daten ignoriert Zusammenhänge und führt zu falschen Schlüssen
- ANOVA-Annahmen sind erfüllt: Sind deine Daten normalverteilt und die Varianzen ähnlich, ist ANOVA die bessere Wahl. Sie hat mehr Teststärke und erkennt echte Unterschiede zuverlässiger
- Sehr große Stichproben: Bei großen Stichproben funktionieren parametrische Methoden oft gut, auch ohne perfekte Normalität. Das Gesetz der großen Zahlen wirkt, und ANOVA liefert verlässlichere Ergebnisse als der rangbasierte Ansatz. Arbeitest du mit Hunderten oder Tausenden Beobachtungen pro Gruppe, ist Kruskal-Wallis nicht das passende Werkzeug
Fazit
Der Kruskal-Wallis-Test vergleicht drei oder mehr unabhängige Gruppen, wenn deine Daten nicht der Normalverteilung folgen, die Tests wie ANOVA verlangen. Das gelingt, weil er mit Rängen statt mit Rohwerten arbeitet.
Er ist jedoch kein Ersatz für ANOVA. Wenn deine Daten normalverteilt sind, ist ANOVA wegen höherer Teststärke im Vorteil. Sind deine Daten gepaart, nutze den Friedman-Test. Wie immer hängt die richtige Wahl von deinen Daten ab.
Sind die Voraussetzungen erfüllt, ist der Kruskal-Wallis-Test eine zuverlässige, unkomplizierte Wahl. Führe ihn aus, prüfe den p-Wert und hänge bei Bedarf Dunns Test an, um die Gruppen zu identifizieren, die den Unterschied ausmachen.
Deine Statistik ist etwas eingerostet? Mach unseren Introduction to Statistics Kurs und komm in einem Nachmittag wieder rein.
Kruskal-Wallis-Test: Häufige Fragen
Wofür wird der Kruskal-Wallis-Test verwendet?
Der Kruskal-Wallis-Test wird eingesetzt, um drei oder mehr unabhängige Gruppen zu vergleichen, wenn du nicht von einer Normalverteilung deiner Daten ausgehen kannst. Er ist die nichtparametrische Alternative zu ANOVA und arbeitet mit Rängen statt Rohwerten. Besonders hilfreich ist er bei schiefen Verteilungen oder ordinalen Daten.
Was bedeutet ein signifikantes Kruskal-Wallis-Ergebnis?
Ein signifikantes Ergebnis – typischerweise p < 0,05 – bedeutet, dass sich mindestens eine Gruppe von den anderen unterscheidet. Es verrät nicht, welche Gruppen sich unterscheiden, nur dass nicht alle gleich sind. Um herauszufinden, welche Paare den Unterschied ausmachen, brauchst du einen Post-hoc-Test wie Dunns Test.
Was sind die Annahmen des Kruskal-Wallis-Tests?
Der Test setzt unabhängige Stichproben voraus – Beobachtungen in einer Gruppe dürfen die in einer anderen nicht beeinflussen. Deine Daten müssen ordinal oder kontinuierlich sein, also rängbar. Willst du die Ergebnisse als Medianvergleich deuten, sollten die Verteilungsformen der Gruppen zudem ähnlich sein.
Worin unterscheidet sich der Kruskal-Wallis-Test vom Mann-Whitney-U-Test?
Der Mann-Whitney-U-Test vergleicht zwei unabhängige Gruppen, während der Kruskal-Wallis-Test diesen Ansatz auf drei oder mehr Gruppen ausweitet. Beide arbeiten mit Rängen und setzen keine Normalverteilung voraus. Bei genau zwei Gruppen ist Mann-Whitney U richtig – Kruskal-Wallis ist das Pendant für mehrere Gruppen.
Wann solltest du nach Kruskal-Wallis Dunns Test verwenden?
Führe Dunns Test durch, wenn dein Kruskal-Wallis-Ergebnis signifikant ist und du wissen willst, welche konkreten Gruppenpaare sich unterscheiden. Er liefert paarweise Vergleiche zwischen allen Gruppen und passt die p-Werte an, um Fehlalarme zu reduzieren. In Python erledigt das scikit_posthocs.posthoc_dunn(), in R bietet das Paket dunn.test die gleiche Funktionalität.


