Comparaison de deux pourcentages avec le logiciel R

Après le post concernant l’analyse descriptive des variables catégorielles et celui dédié à la visualisation des variables catégorielles, cet article s’intéresse à la comparaison de deux pourcentages, autrement dit à la comparaison statistique des combinaisons de deux
variables catégorielles.

Le test statistique le plus couramment employé pour comparer deux pourcentages est le test non paramétrique du Khi2 (on peut aussi écrire Chi2). Cet article va donc s’intéresser à ce test en particulier.

Le test du Khi2 dispose de plusieurs variantes, selon que les échantillons sont indépendants ou appariés, et selon que les conditions d’utilisation sont remplies ou non. Nous allons voir tout cela en détail dans la suite.

Table des matières

Pourcentages et table de contingence

Le test du Khi2 peut être un peu déroutant au départ car sa statistique n’utilise pas directement les pourcentages que l’on souhaite comparer. La statistique du test du Khi2 repose sur une somme de différences entre des effectifs observés et des effectifs théoriques, et de ce fait, il se base sur une table de contingence.

Par exemple, dans le jeu de données Melanoma du package MASS, si l’on souhaite comparer le pourcentages de femmes ayant un ulcer (37.3%) au pourcentage d’hommes ayant cette affection (54.4%), les données nécesaires à la réaliisation du test du Khi2 ne seront pas directement ces pourcentages, mais la table de contingence suivante :

 

 Absence d’un ulcerPresence d’un ulcer
Female7947
Male3643

 

Echantillons indépendants vs. échantillons appariés

L’élément le plus important à définir avant de se lancer dans un test du Khi2 est celui de la nature des échantillons sur lesquels ont été estimés les 2 pourcentages à comparer. Est-ce qu’il s’agit d’échantillons indépendants ou d’échantillons appariés ?

Echantilllons indépendants

Des échantillons sont indépendants si les sujets (ou les unités expérimentales) sur lesquels ont été estimés les deux pourcentages sont différents. Pour fixer les idées, on pourrait par exemple imaginer une étude clinique visant à comparer 2 traitements contre la migraine (le Traitement A et le Traitement B). Deux groupes de 50 patients sont constitués aléatoirement : le premier groupe reçoit le traitement A, et le second groupe reçoit le traitement B. La réponse observée est de type binaire : soulagement des douleurs , ou pas de soulagement. Dans ce cas, les patients qui reçoivent le traitement A, et ceux qui reçoivent le traitement B sont différents, les échantillons sont donc indépendants.

Les données des échantillons indépendants peuvent être représentés sous la forme d’une table de contingence classique, comme ceci :

 

 Traitement ATraitement B
soulagé1535
pas soulagé3515

 

Echantilllons appariés

Des échantillons sont appariés si les sujets sur lesquels ont été estimés les deux pourcentages sont les mêmes.

Imaginons maintenant que ce sont les mêmes sujets qui reçoivent les traitements A et B : les sujets reçoivent le traitement A au cours d’une première période, puis le traitement B au cours d’une seconde période.

Dans cette situation on ne représente pas les résultats selon la même table de contingence que précédemment. On utilise une table de contingence qui permet de faire apparaître le nombre de sujets ayant des réponses identiques sur les deux périodes (toujours soulagés ou jamais soulagés) et des réponse différentes, comme ceci :

##                  Traitement B
## Traitement A Soulagé Pas soulagé
## Soulagé    45         15
## Pas soulagé 5         35 

On fait apparaître ces informations de réponses identiques (on parle de paires concordantes) et différentes (on parles de paires discordantes) parce que c’est intéressant en soi, mais aussi parce que les effectifs des paires discordantes sont utilisées dans la statistique du test de Mac Nemar, qui est le test du Khi2 pour échantillons appariés.

Les hypothèses

Quel que soit la variante du test du Khi2 employée, les hypothèses du test sont toujours les suivantes:

En bilatéral :

H0 : p1 = p2
H1 : p1 ≠ p2

En unilatéral :

H0 : p1 = p2

H1 : p1 > p2

ou

H1 : p1 < p2

Principe du test du Khi2

Les effectifs observés

La table de contingence contient les effectifs observés des croisements des 2 modalités des 2 variables étudiées (sexe et ulcer dans l’exemple du jeu de données Melanoma).On note généralement ces effectifs “O” pour “observés.

Les effectifs théoriques

La statistique du test du Khi2 nécessite de calculer un effectif théorique pour chacun des effectifs observés. Ces effectifs théoriques sont calculés sous l’hypothèse nulle, c’est à dire en faisant l’hypothèse que les pourcentages sont égaux. Ils sont généralement notés E pour “expected”.

Les effectifs théoriques de chaque combinaison (des modalités des variables catégorielles) sont obtenus en multipliant, dans la table de contingence, l’effectif total de la ligne (nb_l) par l’effectif total de la colonne (nb_c) et en divisant par l’effectif total de la table (nb_T) :

\[ E=\frac{\left(n b_{l} * n b_{c}\right)}{n b_{T}}\]

Le principe du calcul est assez intuitif. Pour l’illustrer, je reprends ici l’exemple de la table de contingence concernant la présence ou l’absence d’un ulcer chez les hommes et les femmes, en modifiant les effectifs de la table de contingence comme ceci :

##                      Femmes Hommes
## Présence d'un ulcer   10     40
## absence d'un ulcer    90    160 

Sous l’hypothèse nulle, les pourcentages d’ulcer chez les hommes et les femmes sont égaux. Cette hypothèse nulle se traduit alors en termes d’effectif. Il s’agit de répartir le nombre total d’ulcer (ici 50) en fonction de la fréquence d’hommes (200/300) et de femmes (100/300) dans l’échantillon étudié.

Au final, les effectifs théoriques de la table de contingence précédente sont :

##                          Femmes      Hommes
## Présence d'un ulcer      16.66667    33.33333
## absence d'un ulcer       83.33333    166.66667 

Statistiques et conditions d'application

Lorsque les échantillons sont indépendants

Dans ce cas, la statistique du test du Khi2 est :

\[ \chi_{1}^{2}=\sum_{i=1}^{4}\left(\frac{O_{i}-E_{i}}{E_{i}}\right)^{2}\]

Cette statistique suit une distribution à (nb_c-1) * (nb_l-1), soit un degrés de liberté.

Le test du Khi2 peut être employé si tous les effectifs théoriques sont >5.

Si au moins un effectif théorique est <5 alors, le test du Khi2 avec correction de Yates, ou bien le test exact de Fisher doivent être employés.

La correction de Yates consite à soustraire la quantité 0.5 à chaque différence Oi-Ei.

La statistique du test de Fisher est un peu complexe, mais peut être consultée ici.

Lorsque les effectifs sont appariés

Dans ce cas, c’est le test de Mac Nemar qui doit être employé.

Sa statistique est :

\[
\chi_{1}^{2}=\frac{(b-c)^{2}}{b+c}
\]

En utilisant la notation suivante des paires concordantes et discordantes :

##               Traitement B
## Traitement A Soulagé Pas soulagé
## Soulagé         "a"      "c"
## Pas soulagé     "b"      "d" 

Le test de Mac Nemar nécessite que le nombre de paires discordantes soient >10. Dans le cas contraire une correction, dite de de continuité doit être appliquée.

Synthèse des tests à employer

  • Les échantillons sont indépendants :
    • si tous les Ei ≥ 5 : test du Khi2 avec la fonction `chisq.test(TC, correct=FALSE)`
    • si au moins un Ei <5 : test du Khi2 avec correction de continuité (correction de Yates) , avec la fonction `chisq.test(TC, correct=TRUE)` ou test exact de Fisher* avec la fonction `fisher.test(TC)`.
  • Les échantillons sont appariés:
    • le nombre de paires discordantes ≥ 10 : test de Mac Nemar avec la fonction `mcnemar.test(TC, correct=FALSE)`
    • sinon : test Mac Nemar avec correction de continuité avec la fonction `mcnemar.test(TC, correct=TRUE)`

Exemple

Echantillons indépendants

Test du Khi2

Soit la table de contingence suivante :

##

##              Absence d'un ulcer      Presence d'un ulcer
## Female           79                    47
## Male             36                    43

chisq.test(TC, correct=FALSE)

##
## Pearson's Chi-squared test
##
## data: TC
## X-squared = 5.7845, df = 1, p-value = 0.01617 

Ici la pvalue est < 0.05, on conclue donc que le pourcentage d’ulcer chez les femmes est différent que le pourcentage d’ulcer chez les hommes, dans le sens d’un pourcentage plus faible.

Il est possible d’obtenir les effectifs théoriques en utilisant :

chisq.test(TC, correct=FALSE)$expected

##
##                   Absence d'un ulcer       Presence d'un ulcer
## Female            70.68293                 55.31707
## Male              44.31707                 34.68293 

Test du Khi2 avec correction de continuité

Imaginons que la table de contingence soit celle-ci :

##             Absence d'un ulcer            Presence d'un ulcer
## Female      10                            3
## Male        5                             7 

On applique le test du Khi2 :

chisq.test(TC2, correct=FALSE)

## Warning in chisq.test(TC2, correct = FALSE): Chi-squared approximation may
## be incorrect

##
## Pearson's Chi-squared test
##
## data: TC2
## X-squared = 3.2318, df = 1, p-value = 0.07222 

Ici, le warning nous indique qu’au moins un des effectifs théorique est <5. La consultation des effectifs théoriques nous montre qu’effectivement une des valeurs est < 5 :

chisq.test(TC2, correct = FALSE)$expected

## Warning in chisq.test(TC2, correct = FALSE): Chi-squared approximation may
## be incorrect

## Absence d'un ulcer Presence d'un ulcer
## Female 7.8 5.2
## Male 7.2 4.8 

Dans ce cas, il suffit alors d’utiliser l’argument correct=TRUE

chisq.test(TC2, correct = TRUE)

## Warning in chisq.test(TC2, correct = TRUE): Chi-squared approximation may
## be incorrect

##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: TC2
## X-squared = 1.9298, df = 1, p-value = 0.1648 

Nous aurions également pu utiliser le test exact de Fisher.

  

 7.1.3 Le test de Fisher

Pour utiliser le test de Fisher, il suffit d’employer :

##fisher.test(TC2)
## Fisher's Exact Test for Count Data
##
## data: TC2
## p-value = 0.1107
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
## 0.6418917 38.5812360
## sample estimates:
## odds ratio
## 4.361899

7.2 Echantillons appariés

7.2.1 Test de Mac Nemar

L’exemple ici est tiré de la page d’aide sur la fonction mcnemar.test

## 2nd Survey
## 1st Survey Approve Disapprove
## Approve 794 150
## Disapprove 86 570

##
## McNemar's Chi-squared test
##
## data: Performance
## McNemar's chi-squared = 17.356, df = 1, p-value = 3.099e-05

7.2.1 Test de Mac Nemar avec correction de continuité

Avec la table de contingence suivante:

##                        Traitement B
## Traitement A       Soulagé       Pas soulagé
## Soulagé            8             7
## Pas soulagé        2             3

Ici, le nombre de paires discordantes (2+7) est < 10, il faut donc utiliser la correction de continuité :

mcnemar.test(mat.app, correct=FALSE)

##
## McNemar's Chi-squared test
##
## data: mat.app
## McNemar's chi-squared = 2.7778, df = 1, p-value = 0.09558

Une dernière chose à noter : bien que les hypothèses puissent être bilatérales, les tests du Khi2 sont toujours unilatéraux.

J’espère que cet article permettra au plus grand nombre d’avoir une meilleure vision des tests à utiliser pour comparer deux pourcentages, et comment les employer sous R.

Si cet article vous a plu, ou vous a été utile, et si vous le souhaitez, vous pouvez soutenir ce blog en faisant un don sur sa page Tipeee 🙏

👉 Cliquez ici pour soutenir le blog Statistiques et Logiciel R

Crédits photos : rawpixel

Poursuivez votre lecture

7 Responses

  1. Bonjour, merci pour votre article. Petite question : comment choisir entre un test de Fisher et un test du Chi2 avec correction de continuité ?
    J’ai le cas où les deux tests ne mènent pas à la même conclusion et je ne sais donc pas lequel choisir, mes effectifs sont trop petits pour un test du Chi2

  2. Bonjour,
    J’ai réalisé un questionnaire adressé à 2 populations différentes (pop1 =50 personnes / pop2=65 personnes) contenant les memes questions (échelle de likert)
    Je souhaite comparer les résultats des 2 populations.
    Je pense réaliser un test de Fisher mais ne sait pas comment remplir le tableau de contingence.
    Dois-je indiquer les données en pourcentage (les populations n’étant pas égales) ou en données (chiffre) ?
    Je débute et suis un peu perdue.
    Merci bcp pour votre aide

  3. Bonjour,
    Merci pour cet article très clair 🙂
    Je suis sur SPSS mais ma question est d’ordre théorique.

    Dans le cas du test exact de Fisher, peut-on remplacer le calcul du coefficient de Phi et V de Cramer ?
    Et si oui, par lequel ?
    SPSS m’offre les options suivantes avec les données nominales : coefficient de contingence, lambda et coefficient d’incertitude.

    Merci de votre aide,

    1. Bonjour,

      je n’ai pas compris votre question. Les coefficients phi et V de cramer sont des effect size qui mesurent la force de la liaison entre 2 variables qualitatives, et le test de Fisher permet d’évaluer si cette liaison est significative.

Laisser un commentaire

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

Bonjour !

vous venez souvent ?

Identifiez-vous pour avoir accès à toutes les fontionnalités !

Aide mémoire off'R ;)

Enregistrez vous pour recevoir gratuitement mes fiches “aide mémoire” (ou cheat sheets) qui vous permettront de réaliser facilement les principales analyses biostatistiques avec le logiciel R et pour être informés des mises à jour du site.