Test du Chi2 et test de Fisher

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.

Présentation

$B$ $\overlineB$
$A$ $a$ $b$
$\overlineA$ $c$ $d$

Dans le tableau précédent, on cherche à savoir si le facteur $B$ influe sur le paramètre $A$.

Un exemple

Cherchons si le sexe des personnes a un rôle dans le fait de recommander l’établissement.

Commençons par préparer les variables.

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

On peut alors donner la répartition dans un tableau à double entrée :

tab<-table(satis$recommander.b,satis$sexe,deparse.level=2) 
tab


satis$sexe
satis$recommander.b 0 1
0 73 63
1 139 130

Pour obtenir les pourcentages, utilisons l’instrucion prop.table.

Par défaut, elle donne les pourcentages par rapport á l’effectif total :

prop.table(tab)


satis$sexe
satis$recommander.b 0 1
0 0.1802469 0.1555556
1 0.3432099 0.3209877

Pour avoir les pourcentages par rapport au total de chaque ligne, on rajoutera margin=1, ou margin=2 pour le total en colonnes.

prop.table(tab,margin=1)


satis$sexe
satis$recommander.b 0 1
0 0.5367647 0.4632353
1 0.5167286 0.4832714

On constate un écart entre les deux répartitions : légèrement plus d’hommes (0) recommandent l’établissement. Mais est-ce significatif ?

Test de Chi2 ou test de fisher ?

Par défaut, on utilisera le test du Chi2. Mais il faut que les deux conditions suivantes soient respectées :

– des effectifs pas trop petits ;
– des pourcentages pas trop extrêmes.

Si ces conditions ne sont pas respectées, ce que nous dira le test du Chi2, on utilisera le test de Fisher.

Les tests avec R

Pour le test du Chi2 :

chisq.test(satis$recommander.b,satis$sexe,correct=FALSE)


Pearson's Chi-squared test


data: satis$recommander.b and satis$sexe
X-squared = 0.1454, df = 1, p-value = 0.703

Pour le test de Fisher :

fisher.test(satis$recommander.b,satis$sexe)


Fisher's Exact Test for Count Data


data: satis$recommander.b and satis$sexe
p-value = 0.7523
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
0.7020996 1.6745388
sample estimates:
odds ratio
1.083487

Dans les deux cas, on constate que la p-value est trop élevée (supérieure à $5~\%$.)