Test de Wilcoxon-Mann-Witney sous R

L'essentiel de cette page

Quand comparer deux moyennes est impossible par un test  de Student (données non normales), on peut comparer les données par un test de Wilcoxon.

La différence pourra alors être calculée par l'estimateur de Hodges-Lehmann.

Faire un test de Wilcoxon

# Simulons des poids qui ne seraient pas normaux pour les "M"

poids<- c(rnorm(50,55,5),rnorm(50,95,8),rnorm(100,55,10))

sexe <- rep(c("M","F"),each=100)

by(poids,sexe,shapiro.test)

library(vioplot)

vioplot(poids~sexe)

Comme les données ne sont pas normales, on va faireun testde Wilxon.

wilcox.test(poids~sexe)

La p-value est inférieur à 0,05 donc il y a une différence entre filles et garçons.

Cette  différence peut être estimée par l’estimateur de Hodges-Lehmann, puisque ici on ne peut faire la différence entre les deux moyennes.

Cette estimateur comparer la valeure médianes des différences entre toutes les paires possibles.

difference <- outer(poids[sexe=="M"],poids[sexe=="F"], "-") 

print(median(difference))

[1] 18.04626

On voit ainsi une différence de 18 kg entre  ces deux populations.

De façon générique, cette estimateur est donné si on ajoute l'argment conf.int = TRUE.

wilcox.test(poids~sexe, conf.int=TRUE)

        Wilcoxon rank sum test with continuity correction


data:  poids by sexe

W = 2289, p-value = 3.524e-11

alternative hypothesis: true location shift is not equal to 0

95 percent confidence interval:

 -26.42182 -11.43074

sample estimates:

difference in location 

             -18.04013 <- ICI !!!

L'estimateur de Hodges-Lehman est calculé automatiquement par wilcox.test() pour des données appariées avec les arguments conf.int=T et paired=T.