Kruskal-Wallis-Test: Mehrere Gruppen ohne Normalverteilung vergleichen
Ein praktischer Leitfaden zum Kruskal-Wallis-Test – was er ist, wie er funktioniert, wann er ANOVA ersetzt und wie du ihn in Python und R durchführst und interpretierst.
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 Gruppe i
R_i – Summe der Ränge, die Gruppe i zugeordnet 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_i in der Formel
Teststatistik berechnen: Setze die Rangsummen in die H-Formel ein. Sind die Gruppen ähnlich, liegen ihre Rangsummen nah beieinander und H ist klein. Erhält eine Gruppe systematisch höhere oder niedrigere Ränge, wird H größ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}")Bereitgestellt von
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)Bereitgestellt von
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)Bereitgestellt von
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")Bereitgestellt von
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.
Senior Data Scientist mit Sitz in Kroatien. Top Tech Writer mit über 700 veröffentlichten Artikeln, die mehr als 10 Millionen Mal aufgerufen wurden. Buchautor von Machine Learning Automation with TPOT.
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.
Erforsche Pythons match-case: eine Anleitung zu seiner Syntax, Anwendungen in Data Science und ML sowie eine vergleichende Analyse mit dem traditionellen switch-case.
Mach dich mit Python-Datenstrukturen vertraut: Lerne mehr über Datentypen und primitive sowie nicht-primitive Datenstrukturen wie Strings, Listen, Stapel usw.
Lerne, wie du Python-Listen mit Techniken wie Slicing, List Comprehensions und itertools aufteilen kannst. Finde heraus, wann du welche Methode für die beste Datenverarbeitung nutzen solltest.
Lerne mehr über Python-Lambda-Funktionen, wozu sie gut sind und wann man sie benutzt. Enthält praktische Beispiele und bewährte Methoden für eine effektive Umsetzung.
Ein umfassendes Einführungs-Tutorial zu Python-Schleifen. Lerne und übe while- und for-Schleifen, verschachtelte Schleifen, die Schlüsselwörter break und continue, die Range-Funktion und vieles mehr!
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:
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
Hhinaus. Hier ist die Formel:Kruskal-Wallis-Formel
Das bedeuten die Komponenten:
N– Gesamtzahl der Beobachtungen über alle Gruppenk– Anzahl der Gruppenn_i– Anzahl der Beobachtungen in GruppeiR_i– Summe der Ränge, die Gruppeizugeordnet sindDie 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
Hspricht für ähnliche Gruppen.Sobald du
Hberechnet hast, vergleichst du es mit einer Chi-Quadrat-Verteilung mitk - 1Freiheitsgraden, um den p-Wert zu erhalten.So funktioniert der Kruskal-Wallis-Test
Für den Kruskal-Wallis-Test brauchst du vier Schritte:
R_iin der FormelH-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ößerUnd 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:
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.
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:
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 mitpip install scikit-posthocs.Die Berechnung ist dann einfach:
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"):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:
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:
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.