Hoe voer je een mann-whitney u-test uit in r
Een Mann-Whitney U-test (ook wel een Wilcoxon-rangsomtest genoemd) wordt gebruikt om verschillen tussen twee onafhankelijke steekproeven te vergelijken wanneer de steekproefverdelingen niet normaal verdeeld zijn en de steekproefomvang klein is (n <30).
Het wordt beschouwd als het niet-parametrische equivalent van de onafhankelijke t-test met twee steekproeven .
In deze tutorial wordt uitgelegd hoe u een Mann-Whitney U-test uitvoert in R.
Voorbeeld: Mann-Whitney U-test in R
Onderzoekers willen weten of een nieuw medicijn effectief is bij het voorkomen van paniekaanvallen. In totaal worden twaalf patiënten willekeurig verdeeld in twee groepen van zes en toegewezen aan het nieuwe medicijn of de placebo. Patiënten registreren vervolgens het aantal paniekaanvallen dat ze in de loop van een maand hebben ervaren.
De resultaten worden hieronder weergegeven:
NIEUW MEDICIJN | PLACEBO |
---|---|
3 | 4 |
5 | 8 |
1 | 6 |
4 | 2 |
3 | 1 |
5 | 9 |
Voer een Mann-Whitney U-test uit om te bepalen of er een verschil is in het aantal paniekaanvallen tussen patiënten in de placebogroep in vergelijking met de nieuwe medicijngroep. Gebruik een significantieniveau van 0,05.
Er zijn twee verschillende manieren om de Mann-Whitney U-test uit te voeren, maar beide methoden gebruiken de functie wilcox.test() en beide leiden tot hetzelfde resultaat.
Optie 1: Voer de gegevens in als twee afzonderlijke vectoren.
#create a vector for each group new <- c(3, 5, 1, 4, 3, 5) placebo <- c(4, 8, 6, 2, 1, 9) #perform the Mann Whitney U test wilcox.test(new, placebo) #output Wilcoxon rank sum test with continuity correction data: new and placebo W = 13, p-value = 0.468 alternative hypothesis: true location shift is not equal to 0
Optie 2: Voer de gegevens in een dataframe met twee kolommen in. De ene kolom bevat het aantal paniekaanvallen en de andere de groep.
#create a data frame with two columns, one for each group drug_data <- data.frame(attacks = c(3, 5, 1, 4, 3, 5, 4, 8, 6, 2, 1, 9), drug_group = c(rep("old", 6), rep("placebo", 6))) #perform the Mann Whitney U test wilcox.test(attacks~drug_group, data = drug_data) #output data: attacks by drug_group W = 13, p-value = 0.468 alternative hypothesis: true location shift is not equal to 0
Merk op dat beide methoden tot exact hetzelfde resultaat leiden. De teststatistiek is namelijk W = 13 en de overeenkomstige p-waarde is 0,468 .
Omdat de p-waarde groter is dan 0,05, slagen we er niet in de nulhypothese te verwerpen.
Dit betekent dat we niet voldoende bewijs hebben om te zeggen dat het aantal paniekaanvallen bij patiënten in de placebogroep verschilt van dat in de nieuwe geneesmiddelengroep.
Opmerkingen over het gebruik van Wilcox.test()
Standaard gaat wilcox.test() ervan uit dat u een tweezijdige hypothesetest wilt uitvoeren. U kunt echter Alternative=”less” of Alternative=”more” opgeven als u in plaats daarvan een eenzijdige test wilt uitvoeren.
Stel dat we bijvoorbeeld de hypothese willen testen dat het nieuwe medicijn minder paniekaanvallen veroorzaakt dan de placebo. In dit geval kunnen we Alternative=”less” specificeren in onze wilcox.test() functie:
#create a vector for each group new <- c(3, 5, 1, 4, 3, 5) placebo <- c(4, 8, 6, 2, 1, 9) #perform the Mann Whitney U test, specify alternative="less" wilcox.test(new, placebo, alternative="less") #output Wilcoxon rank sum test with continuity correction data: new and placebo W = 13, p-value = 0.234 alternative hypothesis: true location shift is less than 0
Merk op dat de teststatistiek nog steeds W = 13 is, maar dat de p-waarde nu 0,234 is, wat precies de helft is van de vorige p-waarde voor de tweezijdige test.
Omdat de p-waarde altijd groter is dan 0,05, zullen we er nog steeds niet in slagen de nulhypothese te verwerpen.
We hebben niet voldoende bewijs om te zeggen dat het aantal paniekaanvallen bij patiënten in de nieuwe medicijngroep lager was dan bij patiënten in de placebogroep.
Aanvullende bronnen
Een gids voor de Mann-Whitney U-test
Mann-Whitney U-testcalculator