Mann-Whitney-U-Test/Wilcoxon-Test in R rechnen

von | Jan 12, 2022 | Mittelwertvergleich, R

Ziel des Mann-Whitney-U-Test in R

Der Mann-Whitney-U-Test (auch Mann-Whitney-Wilcoxon-Test für unabhängige Stichproben) ist ein nicht parametrischer „Mittelwertvergleich“ für 2 voneinander unabhängigen Stichproben. Er verwendet Ränge anstatt der tatsächlichen Werte, vergleicht also nicht wirklich Mittelwerte, sondern die zentralen Tendenzen der Gruppen. Er ist das nichtparametrische Gegenstück zum t-Test bei zwei unabhängigen Stichproben, hat also nicht solche strengen Voraussetzungen.

 

Nullhypothese und Alternativhypothese des Mann-Whitney-U-Tests / Mann-Whitney-Wilcoxon-Tests
  • Nullhypothese: Es liegen keine Unterschiede bzgl. der zentralen Tendenz der beiden Gruppen vor.
  • Alternativhypothese: Es liegen Unterschiede bzgl. der zentralen Tendenz der beiden Gruppen vor.

 

Voraussetzungen des Mann-Whitney-U-Test in R

  • zwei voneinander unabhängige Stichproben/Gruppen – drei oder mehr Gruppen über den Kruskal-Wallis-Test
  • ordinal oder metrisch skalierte y-Variable
  • normalverteilte y-Variable innerhalb der Gruppen nicht nötig

 

Durchführung des Mann-Whitney-U-Test in R

Das Beispiel

Im vorliegenden Beispiel wird für die Gruppierungsvaribale „Geschlecht“ das Gewicht verglichen. Ich untersuche also, ob es über die Geschlechter hinweg einen Unterschied bzgl. des Gewichts gibt. Die Variable Geschlecht ist dichotom, Männer sind mit 0 codiert, Frauen mit 1, was bei den deskriptiven Statistiken (unten) noch wichtig wird. Die Nullhypothese des Mann-Whitney-U-Tests bzw. Mann-Whitney-Wilcoxon-Tests geht von keinen Unterschieden aus. Demzufolge unterstellt die Alternativhypothese Unterschiede bezüglich der abhängigen Variable über die Geschlechter hinweg.  

 

Deskriptive Voranalyse

Nach dem Einlesen der Daten empfiehlt sich das Durchführen eines deskriptiven Vergleichs. Er ist nicht notwendig, hilft aber bei der Interpretation der Ergebnisse. Hierzu nutze ich am liebsten das Paket „psych“, was ich mit install.packages(„psych“) installiere und mit library(psych) lade. Dann lasse ich mir die deskriptiven Statistiken ausgeben. Das Format ist describeBy(Testvariable, Gruppenvariable). Ich schreibe „data_xls$“ vor die Variablen, da ich die in den Dataframe data_xls eingelesenen Variablen nicht attached habe.

Zusätzlich kann man sich mit der Funktion boxplot() einen Boxplot erstellen lassen, was bei intervallskalierten Testvariablen gut funktioniert. Zur ausführlichen Interpretation des Boxplots.

 


install.packages("psych")
library(psych)

describeBy(data_xls$Gewicht, data_xls$Geschlecht) boxplot(Gewicht~Geschlecht, data=data_xls)

 

Hierfür erhält man folgenden Output:


Descriptive statistics by group
group: 0
vars  n   mean   sd     median  trimmed  mad    min  max  range  skew  kurtosis  se
1     26  73.27  15.53  67.5    72.18    17.79  55   105  50     0.45  -1.2      3.05
------------------------------------------------------------------------------
group: 1
vars  n   mean   sd    median  trimmed  mad    min  max  range  skew  kurtosis  se
1     25  58.56  6.16  58      58.19    7.41   50   72   22     0.37  -0.92     1.23

 

mann whitney boxplot

Man kann bereits anhand der Mittelwerte erkennen, dass sich die Gruppe 0 (Männer) von der Gruppe 1 (Frauen) unterscheidet. Die Männer sind im Schnitt 73,27 kg schwer, die Frauen 58,56 kg schwer. Die Boxplots zeigen dies ebenfalls, dass die Box der Gruppe 0 deutlich über der Box der Gruppe 1 liegt – bei gleichzeitig höherer Streuung. Die Frage ist nun, ist dieser beobachtete Unterschied statistisch signifikant?  

 

Den Mann-Whitney-U-Test/Wilcoxon-Test rechnen und interpretieren

Für die Berechnung des Mann-Whitney-U-Tests bzw. Wilcoxon-Tests in R bedarf des lediglich einer Codezeile. Die angewandte Funktion lautet wilcox.test().  


wilcox.test(Gewicht~Geschlecht, data = data_xls, exact = FALSE, correct = FALSE, conf.int = FALSE)

Gewicht~Geschlecht kann ich deswegen ohne data_xls$ schreiben, weil ich das Argument data = data_xls hinzugefügt habe. Für die Funktion wilcox.test() ist das anzugeben. Folgende Argumente sollten zusätzlich verwendet werden:

  • exact: bei weniger als 30 Gesamtbeobachtungen sollte die exakte Signifikanz angefordert werden. Die asymptotische Signifikanz ist dann nicht mehr ausreichend, weil diese erst ab ca. 30 hinreichend genau ist. In meinem Falle habe ich mit n=51 ausreichend Beobachtungen, dass ich exact = FALSE schreiben kann. Habt ihr weniger als 30 Beobachtungen, schreibt ihr exact = TRUE.
  • correct: Approximation einer diskreten Verteilung über eine kontinuierliche durch Anwenden einer Kontinuitätskorrektur – streitbar und wird eher weggelassen bzw. auf correct = FALSE gesetzt. 
  • conf.int: sollten Konfidenzintervalle gewünscht sein, wird conf.int = TRUE angegeben. Ich verzichte hier aber darauf.

 

Nun kann man den Output interpretieren:


Wilcoxon rank sum test
data: Gewicht by Geschlecht W = 513.5, p-value = 0.0003741 
alternative hypothesis: true location shift is not equal to 0

 

Hier interessiert zunächst einzig der p-Wert. Dieser ist mit 0,0003741 deutlich unter der Verwerfungsgrenze von Alpha=0,05. Das bedeutet, dass die Nullhypothese keines Unterschiedes zwischen den Gruppen verworfen werden kann. Die Alternativhypothese eines Unterschiedes wird entsprechend angenommen. Demzufolge unterscheiden sich die beiden Geschlechter hinsichtlich ihres Gewichtes statistisch signifikant voneinander. Die Männer sind im Mittel statistisch signifikant schwerer (73,27) als die Frauen (58,56).

Achtung: Wenn bereits eine Wirkungsvermutung vor dem Test existiert – die plausible Annahme, dass Männer aufgrund einer größeren Körpergröße schwerer sind, wäre so eine – dann würde man 1-seitig testen. Hierzu darf die asymptotische bzw. exakte Signifikanz halbiert werden und erneut mit Alpha=0,05 verglichen werden. In diesem Falle ändert sich entsprechend nichts an der Verwerfung der Nullhypothese und der eben bereits geschilderten Aussage.  

 

Ermittlung der Effektstärke des Mann-Whitney-U-Tests

Die Effektstärke r wird mit folgender Formel berechnet. Der z-Wert wird durch die Wurzel der Stichprobengröße geteilt. Aufgrund der Betragsstriche wird dieser Quotient immer positiv sein.

    \[  r = \lvert \frac{z}{\sqrt{N}}\\]

 

Wo bekommt man nun aber den z-Wert her? Der z-Wert wird anhand der Funktion qnorm() aus dem p-Wert ermittelt. Er beträgt -3,37 und wird anschließend in die r-Formel eingesetzt. sqrt(51) ist die Wurzel aus 51.


z <- qnorm(0.0003741)
r <- z/sqrt(51)

 

Das Ergebnis der Berechnung lautet 0,472.

 

    \[  r = \lvert \frac{z}{\sqrt{N}}\rvert= \lvert \frac{-3,37}{\sqrt{51}} \rvert=0,472 \]

 

Laut Cohen: Statistical Power Analysis for the Behavioral Sciences (1988), S. 79-81 sind die Effektgrenzen:

  • ab 0,1 (schwach)
  • ab 0,3 (mittel)
  • ab 0,5 (stark).

Im vorliegenden Beispiel ist die Effektstärke mittel, da 0,472 < 0,5. Es handelt sich also um einen mittleren Effekt hinsichtlich des Unterschiedes des Gewichtes über die Geschlechter hinweg. Die Tendenz geht aber zu einem großen Effekt, da es schon recht nahe an der Grenze zum großen Effekt ist.

 

Videotutorial

Dieses Video ansehen auf YouTube.

Fragen können unter dem verlinkten Video gerne auf YouTube gestellt werden.

 

Hat dir der Beitrag geholfen?

Dann würde ich mich über eine kleine Spende freuen, die es mir erlaubt, weiterhin kostenfreie Inhalte zu veröffentlichen.

Vielen Dank und viel Erfolg!

Über mich

Björn Walther

Excel- und SPSS-Experte

YouTube-Kanal

Excel Online-Kurs

YouTube-Kanal