Comment traiter des données catégorielles avec le Chi² de Pearson

Allégorie des données catégorielles

Le chi² va nous permettre de traiter des données de type catégorielles c’est à dire des données relatives à la fréquence d’une observation. Par exemple, si nous observons la répartition des membres d’un échantillon dans différentes catégories socio-professionnelles, ce test nous permettra de déterminer si cette répartition est différente de celle qu’on aurait pu observer dans l’ensemble de la population dont est issu l’échantillon.

Le Chi² de conformité

Ce test permet de comparer un effectif à une valeur théorique attendue.

Prenons un exemple : On sait que 5% de la population française possède des cheveux roux. On se demande si, du fait de sa proximité avec le Royaume-Uni, le département du Pas-de-Calais est peuplé davantage de personnes rousses que ce qui pourrait être attendu d’après les données connues au niveau national (effectif théorique attendu : 5% de personnes rousses). On tire au sort 10 000 individus dans l’ensemble du département du Pas-de-Calais. Sur cet échantillon, on dénombre 567 individus roux.

Nous pouvons traduire cet énoncé sous la forme du tableau suivant :

Couleur de cheveux Echantillon Proportions de l’échantillon Résultats attendus Proportions théoriques
Roux 567 5.67% (0.0567) 500 5% (0.05)
Non-Roux 9 433 94.33% (0.9433) 9 500 95% (0.95)
Totaux 10 000 100% (1) 10 000 100% (1)
Présentation de l’échantillon du département Pas-de-Calais en comparaison aux données nationales. (Données fictives)

Hypothèse nulle (HO) : La proportion de personnes rousses dans le département du Pas-de-Calais n’est pas différente de celle de la France en général.


Copier/coller les lignes de commandes et les commentaires ci-dessous dans un nouveau Script R, puis executer.

Packages nécessaires : packages de base

# Nous créons ici une liste des données obtenues grâce à la fonction « c() » que nous nommons « echantillon »
echantillon<- c(567, 9433)

# Nous créons ici une liste des probabilités théoriques que nous nommons « probabilité »
probabilite<- c(0.05, 0.95)

# Nous lançons le test à l’aide de la fonction « chisq.test() »
chisq.test(echantillon,p=probabilite)

Vous obtenez les résultats suivants :

  • chi² = 9.4505 => Ce nombre permet habituellement de valider ou de réfuter manuellement l’hypothèse nulle après lecture de la table de chi².
  • df = 1 => Le df ou ddl est également nécessaire pour la lecture de la table. Il se calcule par le biais de la formule suivante : ddl = (L-1)(C-1). L = nb de colonne et C = nb de colonnes.
  • p-value = 0.002111 => C’est la probabilité de rejeter l’hypothèse nulle alors qu’elle est vraie.

Conclusion

En nous basant sur un seuil conventionnel d’une valeur de p-value = .05 (appelé aussi α ou Erreur de type I), nous nous devons de rejeter l’hypothèse nulle (.002 < .05). Ce faisant, nous acceptons le risque (0.002111 *100 = 2%) de rejeter cette hypothèse dans le cas où elle se révèlerait être vraie.

Nous pouvons donc dire que le nombre de personnes rousses du département Pas-de-Calais est significativement supérieur à celui de la moyenne nationale.

Le Chi² d’indépendance

Le test du chi² d’indépendance sera utilisé lorsque la question sera de savoir s’il existe ou non une indépendance entre deux critères que nous souhaitons étudier.

Prenons un exemple. Des chercheurs en économie souhaitent savoir si les individus sont davantage enclins à créer une entreprise en fonction du lieu de leur résidence. A la suite d’un sondage national, ils obtiennent les résultats suivants.

  Ville Zone Urbaine Campagne Totaux
Entrepreneur 157 222 83 462
Non entrepreneur 567 382 122 1071
Totaux 724 604 205 1533
Répartition des entrepreneurs / non-entrepreneurs par zones territoriales. (Données fictives)

Hypothèse nulle (HO) : Le fait de connaître si un individu vit en ville, en zone urbaine ou en campagne ne nous aide pas à déterminer si celui-ci est entrepreneur ou non.


Copier/coller les lignes de commandes et les commentaires ci-dessous dans un nouveau Script R, puis executer.

Packages nécessaires : packages de base

# Création des listes entrepreneur / non entrepreneur
entrepreneur = c(157, 222, 83)
non_entrepreneur = c(567, 382, 122)

# Création du tableau de contingence (matrice comparative). Notez que ci-dessous, 2 est le nombre de lignes et 3 le nombre de colonnes
tableau = matrix(c(entrepreneur, non_entrepreneur),2,3,byrow=T)

# Réalisation du test khi-deux
chi_test = chisq.test(tableau)
chi_test

Vous obtenez les résultats suivants (pour l’interprétation voir chi² de conformité) :

  • chi² = 47.56
  • df = 2
  • p-value = 4.704e-11

Conclusion

La p-value nous amène à rejeter l’hypothèse nulle. Ainsi nous pouvons en conclure que le fait de savoir si un individu vit en ville, en zone urbaine ou en campagne peut nous donner une indication sur le fait qu’il soit entrepreneur ou non. Évidemment, d’un point de vue théorique, cette donnée seule ne suffit pas mais nous voyons qu’il existe un lien entre ces deux facteurs.

Le chi² d’homogénéité

Ce test est une variante du chi² d’indépendance utilisé pour interroger l’équivalence de la répartition de différents effectifs.

Imaginons le test en laboratoire de 3 traitements (vs placebo) contre un virus mal connu provoquant une pandémie mondiale. Les résultats de ces tests se trouvent dans le tableau suivant.

  Baisse de la charge virale 8 jours après premiers symptômes Pas de baisse de la charge virale 8 jours après premiers symptômes Totaux
Groupe Placebo 44 (33.5%) 87 (66.5%) 131 (100 %)
Traitement 1 56 (36.1%) 99 (63.9%) 155 (100 %)
Traitement 2 34 (45.3%) 41 (54.7%) 75 (100 %)
Traitement 3 87  (52.7 %) 78 ( 47.3%) 165 (100 %)
Totaux 221 305 526
Répartition des individus en fonction du traitement et de la baisse ou non de la charge virale 8 semaines après les premiers symptômes. (Données fictives)

Hypothèse nulle (HO) : Aucune des conditions est plus performante quant à la diminution de la charge virale 8 jours après les premiers symptômes.


Copier/coller les lignes de commandes et les commentaires ci-dessous dans un nouveau Script R, puis executer.

Packages nécessaires : packages de base + chisq.posthoc.test

# Création du tableau de données sous R. Nous utilisons cette fois la fonction rbind.
tableau <- as.table(rbind(c(44, 87), c(56,99), c(34,41), c(87,78)))
dimnames(tableau) <- list(traitement = c("placebo", "T1", "T2", "T3"),
party = c("Baisse","Pas de Baisse"))
tableau # pour afficher le tableau réalisé ci-dessus

# Par la suite, le test du chi² est effectué
chi_test = chisq.test(tableau)
chi_test

Les résultats suivants sont obtenus (pour l’interprétation voir chi² de conformité) :

  • chi² = 14.134
  • df = 3
  • p-value = 0.002729

Nous voyons donc que nous pouvons rejeter l’hypothèse nulle avec, ce faisant, une probabilité de se tromper de 0.002729. Ces résultats indiquent clairement qu’au moins une des conditions engendre des résultats différents des autres. Toutefois, à ce stade, nous ne savons ni dans quel sens, ni de quel protocole il s’agit.

# Nous faisons appel à des sous-fonctions de chisq.test() pour investiguer plus en détail.

# résultats attendus/théoriques si les données sont le fruit du hasard.
chi_test$expected
# résultats observés. Il s'agit en fait du tableau présenté en amont.
chi_test$observed
# différence entre résultats attendus et observés
chi_test$residual
# différence normalisée entre résultats attendus et observés
chi_test$stdres

Ce qui nous intéresse le plus ici est l’analyse des différences entre les données attendues et celles observées (chi.test$residual et chi.test$stdres).

Ci-dessous les résultats bruts du chi.test$stdres (données normalisées) :

traitement    Baisse        Pas de Baisse
placebo     -2.2550929       2.2550929
T1              -1.7678473         1.7678473
T2               0.6287349      -0.6287349
T3               3.3650698      -3.3650698

Ces résultats nous permettent d’observer que les plus grandes différences se situent au niveau des traitements placebo et T3. Toutefois, à ce niveau de l’étude nous ne pouvons pas dire si ces différences sont significatives d’un point de vue statistique. Nous pourrions alors faire des comparaisons deux à deux afin de conclure sur une significativité des résultats. Cependant, en faisant cela, on augmenterait l’erreur de type 1, à savoir la probabilité de rejeter l’hypothèse nulle alors que celle-ci est vraie. Afin de se prémunir contre l’augmentation de ce risque, la correction de Bonferroni va être utilisée (il existe d’autres corrections de ce type). Ce dernier permettra de majorer le risque réel pour l’ensemble des tests par le niveau de test choisi (classiquement 5%).

# Execution du test de Bonferroni
chisq.posthoc.test(tableau, method = "bonferroni")

Les résultats bruts obtenus sont les suivants :

Dimension     Value       Baisse         Pas de Baisse
1 placebo     Residuals   -2.2550929     2.2550929
2 placebo     p values     0.1930200     0.1930200
3 T1          Residuals   -1.7678473     1.7678473
4 T1          p values     0.6166910     0.6166910
5 T2          Residuals    0.6287349    -0.6287349
6 T2          p values     1.0000000      1.0000000
7 T3          Residuals    3.3650698    -3.3650698
8 T3          p values     0.0061220     0.0061220

Conclusion

Nous constatons, à la lecture de ces résultats et du tableau de présentation des données, que seul le traitement 3 peut être considéré comme davantage efficace pour impacter négativement la charge virale 8 jours après l’apparition des premiers symptômes.

Tailles d’effet

S’il est important en sciences de savoir si la relation entre deux variables est statistiquement significative, cela ne nous dit rien sur la force du lien qui unit ces variables. L’importance de ce lien est appelée la taille d’effet. Nous allons voir ici comment la déterminer avec R et dans le cadre du test de chi².

Une première solution consiste à comparer les résultats du tableau de contingence et d’en faire une interprétation en terme de probabilité. Reprenons par exemple notre dernier tableau. Nous souhaitons comparer le traitement 3 et le traitement placebo. Le premier permet une observation de la baisse de la charge virale 8 jours après l’apparition des premiers symptômes dans 52,7 % des cas alors que le second, seulement dans 33,5 % des cas. On peut donc en conclure que le traitement 3 est (0,527/0,335) = 1.57 fois plus efficace pour faire baisser la charge virale 8 jours après l’apparition des premiers symptômes que le placebo. En outre, nous avons déjà déterminé que cette différence était significative. Toutefois, cette nouvelle donnée sera plus parlante auprès de spécialistes habitués à de tels rapports de grandeur qu’auprès de profanes.

Une seconde solution et de faire appel à d’autres mesures permettant de se focaliser davantage sur la corrélation entre les deux variables tels que le coefficient Phi (dans le cas de tables 2*2) ou le V de Cramér (dans le cas de tables supérieures à 2*2). En reprenant l’exemple ci-dessus (Placebo vs Traitement 3), nous allons montrer comment calculer ces deux valeurs avec R et comment en interpréter les résultats.

Packages nécessaires : packages de base + effectsize

# Taille de l'effet en prenant la totalité des données (tables 4*2)

# Utilisation du V de Cramer

chisq_to_cramers_v(14.134,   # On entre manuellement la valeur du Chi²
n = sum(tableau),            # On demande une lecture de l'effectif total
nrow = nrow(tableau),        # On demande une lecture du nb de lignes
ncol = ncol(tableau),        # On demande une lecture du nb de colonnes
ci = 0.95,                  # On précise l'interval de confiance souhaité
adjust = FALSE              # On ne demande pas de correction de biais
)     

# Les données peuvent également être entrées manuellement.

convert_chisq_to_cramers_v(
14.134,
n = 526,
nrow = 4,
ncol= 2,
ci = 0.95,
adjust = FALSE,
)    

Les résultats obtenus sont les suivants :

cramers_v | 95% CI
0.16 | [0.06, 0.24]

Le V de Cramèr est ici égale à 0.16. Plus ce résultat se rapproche de 1 et plus le lien est important. Classiquement, on évalue l’intensité du V de Cramèr en se référant au tableau suivant.

V de Cramèr Relation entre les deux variables
< 0.10 Relation nulle ou très faible
>= 0.10 et < 0.20 Relation faible
>= 0.20 et < 0.30 Relation moyenne
>= 0.30 Relation forte
Intensité de la relation de deux variable en fonction de la valeur du V de Cramèr.

L’intervalle de confiance signifie que l’on peut avoir une confiance de 95% sur le fait que le V de Cramèr appartienne à l’intervalle [0.06, 0.24].

Conclusion

Il semble donc que le lien observé dans cette étude soit relativement faible et qu’il conviendrait d’être prudent en essayant, par exemple, de le répliquer.

Conditions d’application du chi²

L’indépendance :  » il s’agit par exemple de la condition d’application selon laquelle le choix d’une personne entre différentes marques de café n’a pas d’influence sur le choix d’une autre personne  » (Howell, 2009).

L’inclusion des non-occurrences : Prenons l’exemple d’une étude dans laquelle les chercheurs tentent de déterminer si le fait d’être pour la peine de mort est lié au fait d’avoir plus ou moins de 50 ans.

Non inclusion des non-occurrences

– 50 ans + 50 ans Total
Pour la peine
de mort
168 180 348
Attendu si idépendance 174 174 348
Répartition des individus pour la peine de mort en fonction du fait d’avoir plus ou moins de 50 ans. (Données fictives)

Inclusion des non-occurrences

– 50 ans + 50 ans Total
Pour la peine
de mort
168 180 348
Contre la peine
de mort
188 178 366
Total 356 358 714
Répartition des individus pour ou contre la peine de mort en fonction du fait d’avoir plus ou moins de 50 ans. (Données fictives)

« Ne pas prendre en compte les non-occurrence (réponses négatives) a pour effet d’invalider le test et de réduires la valeur du chi², ce qui nous conduit à rejeter moins souvent H0 » (Howell, 2009).

L’auteur recommande de toujours s’assurer que le total (N) est égal au nombre de participants inclus dans l’étude afin d’éviter cette erreur.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *