statforclinicians

Mann-Whitney U test (Wilcoxon rank-sum test)

Toetst of waarden in een van twee onafhankelijke groepen hoger zijn dan in de andere, aan de hand van rangen in plaats van ruwe waarden. Gebruikt voor scheve metingen en geordende scores.

Statistisch beoordeeld door Daniel Wolff op 5 november 2026 (op basis van de Engelse versie).

Klinisch voorbeeld

Een pijnscore van 0 tot 10 vergeleken tussen twee gerandomiseerde behandelarmen. Elke patiënt zit in slechts één arm, en de scores hebben veel ties.

Wanneer te gebruiken

  • De uitkomst is een scheve meting of een geordende score zoals een pijnscore.
  • U vergelijkt precies twee groepen, en elke patiënt zit in slechts één ervan.
  • U wilt weten of een patiënt uit de ene groep een hogere waarde heeft dan een patiënt uit de andere. Dat is vaak de juiste vraag voor een geordende score.
  • Voor een scheve meting waarbij het gemiddelde ertoe doet (opnameduur of kosten: totaal aantal bedden-dagen, budget) beantwoordt de t-test van Welch met genoeg patiënten, een bootstrap-BI of een logtransformatie de eigenlijke vraag beter.
  • U hoeft niet te corrigeren voor andere variabelen. Bij observationele vergelijkingen, zoals tussen afdelingen, is de casemix meestal een confounder.

Aannames om te controleren

Onafhankelijke waarnemingen

Eén waarde per patiënt. Herhaalde metingen of geclusterde patiënten vragen een gemengd model.

Het toetst of waarden hoger zijn

De toets vraagt of de kans dat een patiënt uit de ene groep een hogere waarde heeft dan een patiënt uit de andere afwijkt van een half. Het is alleen een vergelijking van medianen als de twee verdelingen een vergelijkbare vorm hebben. Groepen met verschillende verdelingen maar een kans van een half, bijvoorbeeld dezelfde mediaan en een zeer verschillende spreiding, worden niet opgemerkt (Divine et al. 2018).

Niet robuust bij ongelijke spreiding

Bij duidelijk verschillende spreidingen en ongelijke groepsgroottes klopt de kans op fout-positieven niet als de toets wordt gelezen als 'waarden zijn hoger'. De Brunner-Munzel-toets lost dit op.

Ties

Geordende scores en afgeronde metingen hebben veel ties. De toets gebruikt gemiddelde rangen, maar exacte p-waarden en exacte BI's zijn dan niet beschikbaar, dus de p-waarde is een normale benadering. R waarschuwt hiervoor, en de waarschuwing is normaal.

Controleer eerst

  • Overweeg eerst een log-transformatie als de gegevens rechtsscheef zijn en u ook regressieanalyses plant; blijf in het hele artikel bij één aanpak

Wat te rapporteren

  • Mediaan met interkwartielafstand, en het aantal geanalyseerde patiënten, per groep, en een boxplot of puntendiagram van beide groepen, zodat lezers kunnen zien of de vormen vergelijkbaar zijn
  • De kans op superioriteit, U / (n1 × n2), met 95%-BI. Bijvoorbeeld: een patiënt in arm A heeft 64% kans op een hogere score dan een patiënt in arm B (ties tellen half)
  • De Hodges-Lehmann-schatting met 95%-BI, als de vormen vergelijkbaar zijn, en de richting ervan (welke groep min welke). Het is de mediaan van alle paarsgewijze verschillen tussen de groepen, en alleen een 'verschuiving' als de vormen vergelijkbaar zijn
  • De exacte p-waarde, en of die exact is of een normale benadering (bij ties is die altijd een benadering)

Veelgemaakte fouten

Laat geen normaliteitstoets beslissen

Bij kleine steekproeven wijst die zelden een probleem aan; bij grote steekproeven markeert die onschuldige afwijkingen. Kijk in plaats daarvan naar de histogrammen en denk na over de meting.

Wees voorzichtig met een score als meting

De stappen van een ordinale score zijn niet noodzakelijk gelijk. Gemiddelden en t-tests gaan daar wel van uit.

'De medianen verschillen' als de vormen verschillen

Een significant resultaat kan voorkomen bij gelijke medianen, en andersom. Zeg dat waarden in de ene groep hoger zijn.

Het is geen niet-parametrische t-test

De toets vergelijkt geen gemiddelden.

Geen oplossing voor ongelijke spreiding

Die is er niet robuust tegen. Gebruik de t-test van Welch voor gemiddelden, of de Brunner-Munzel-toets.

Niet voor gepaarde gegevens

Gebruik de Wilcoxon signed-rank-toets voor dezelfde patiënten die twee keer zijn gemeten.

Een verschuiving alleen bij vergelijkbare vormen

De Hodges-Lehmann-schatting rapporteren als 'verschuiving', of als verschil in medianen, terwijl de verdelingen duidelijk een verschillende vorm hebben.

Ongecorrigeerde vergelijkingen zijn geen kwaliteitsverschillen

Verschillen in casemix tussen afdelingen bepalen de opnameduur. Een ongecorrigeerde toets kan geen conclusie over kwaliteit van zorg ondersteunen.

Alternatieven

Als uw situatie is…Gebruik
Ongeveer symmetrische gegevens of grotere groepen, en het gemiddelde is waar het om gaat (een bootstrap-BI voor het gemiddelde verschil is een andere optie)Welch's t-test
Scheve, altijd positieve meting en het gemiddelde doet ertoe (ratio van geometrische gemiddelden)Unpaired t-test on log-transformed data
Scheve meting en u moet corrigeren voor andere variabelen (regressie op logschaal, of kwantielregressie voor medianen)Linear regression
Geordende score en u moet corrigeren voor andere variabelenProportional odds (ordinal logistic) regression
Dezelfde patiënten twee keer gemetenWilcoxon signed-rank test
Drie of meer groepenKruskal-Wallis test
Patiënten zijn geclusterdLinear mixed model

In uw software

R
# R (dezelfde toets als de Wilcoxon rank-sum test)
d$arm <- factor(d$arm, levels = c("control", "treatment"))   # de volgorde bepaalt de richting
# exact = FALSE: bij ties zijn een exacte p-waarde en BI niet te berekenen, en zonder dit waarschuwt R
res <- wilcox.test(pain ~ arm, data = d, conf.int = TRUE, exact = FALSE)
res   # W is de Mann-Whitney U van de eerste groep.
      # "difference in location" is de Hodges-Lehmann-schatting (de mediaan van alle
      # paarsgewijze verschillen), niet het verschil in medianen
tapply(d$pain, d$arm, quantile, c(.25, .5, .75), na.rm = TRUE)   # mediaan en IQR per groep
# kans op superioriteit (ties tellen half), met een bootstrap 95%-BI
d2 <- d[complete.cases(d$pain, d$arm), ]
ps <- function(x, y) mean(outer(x, y, ">") + 0.5 * outer(x, y, "=="))
x <- d2$pain[d2$arm == "control"]; y <- d2$pain[d2$arm == "treatment"]
ps(x, y)
set.seed(1)
boot <- replicate(2000, ps(sample(x, replace = TRUE), sample(y, replace = TRUE)))
quantile(boot, c(0.025, 0.975))
SPSS
* NPTESTS toont de resultaten in de modelviewer: dubbelklik erop voor U, Z en de p-waarde.
* De groepsvariabele moet meetniveau nominaal of ordinaal hebben, anders draait NPTESTS niet.
* EXAMINE geeft de medianen en kwartielen per groep.
EXAMINE VARIABLES=pain BY arm
  /PLOT=BOXPLOT
  /STATISTICS=DESCRIPTIVES
  /PERCENTILES(25,50,75) HAVERAGE.
NPTESTS
  /INDEPENDENT TEST (pain) GROUP (arm) MANN_WHITNEY.

Bronnen