Test de Student et test de Wilcoxon

Un fichier de données

Travaillons sur une enquête de satisfactions dans un hôpital, récupéré lors d’un cours de FUN (France Unité Numérique). Les fichiers sont disponibles ici.

Par la suite, ces données seront stockées dans la variable satis .

Dans ces données comme souvent, les observations sont en lignes et les variables en colonnes.

Un exemple

On cherche à savoir s’il y a une différence d’âge entre les patients recommandant l’hôpital et les autres.

Préparons les données.

satis$recommander.b<-ifelse(satis$recommander==2,1,0)

Le test de Student

Ce test sert à comparer les moyennes d’une variable quantitative pour deux groupes d’une population (déterminer par une variable binaire).

Pour pouvoir l’utiliser, il faut respecter les conditions suivantes :
– les effectifs doivent être raisonnables (n>30) ;
– la variable quantitative doit suivre une loi normale ;
– les variances des deux groupes doivent être voisines.

On utilise l’instruction t.test.

Vérifions les conditions

La loi normale de l’âge

hist(satis$age)

histo_age_01-2.png

On voit que l’âge suit environ une loi normale.

Les effectifs dans les sous-groupes

library(prettyR)
tapply(satis$age,satis$recommander.b,valid.n)


0 1
136 269

Les écart-types dans les sous-groupes

tapply(satis$age,satis$recommander.b,sd)


0 1
18.38549 16.10392

Les écart-types ne sont pas trop éloignés.

Toutes les conditions sont respectées

Application du test de Student

NB : attention au ~ qui remplace la virgule habituelle !

t.test(satis$age~satis$recommander.b,var.equal=TRUE)


Two Sample t-test


data: satis$age by satis$recommander.b
t = -1.2159, df = 403, p-value = 0.2247
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-5.658504 1.333772
sample estimates:
mean in group 0 mean in group 1
53.55882 55.72119

La moyenne d’âge est supérieure dans le groupe qui recommande l’établissement, mais la valeur de $p$ est supérieure à $5~\%$.

Le test de Wilcoxon

Si le test de Student n’est pas applicable, on peut utiliser le test de Wilcoxon.

Celui-ci ne donne pas les moyennes. Commençons par les calculer :

tapply(satis$age,satis$recommander.b,mean)


0 1
53.55882 55.72119

Appliquons le test.

NB : attention au ~ qui remplace la virgule habituelle !

wilcox.test(satis$age~satis$recommander.b)


Wilcoxon rank sum test with continuity correction


data: satis$age by satis$recommander.b
W = 17023.5, p-value = 0.2543
alternative hypothesis: true location shift is not equal to 0

La valeur de $p$ est aussi supérieure à $5~\%$.