Comment effectuer le test de McNemar en Python



Le test de McNemar est utilisé pour déterminer s’il existe une différence statistiquement significative dans les proportions entre les données appariées.

Ce didacticiel explique comment effectuer le test de McNemar en Python.

Exemple : le test de McNemar en Python

Supposons que les chercheurs souhaitent savoir si une certaine vidéo marketing peut changer l’opinion des gens sur une loi particulière. Ils interrogent 100 personnes pour savoir si elles soutiennent ou non la loi. Ensuite, ils montrent la vidéo marketing aux 100 personnes et les interrogent à nouveau une fois la vidéo terminée.

Le tableau suivant montre le nombre total de personnes qui ont soutenu la loi avant et après avoir visionné la vidéo :

Vidéo avant le marketing
Vidéo après le marketing Soutien Ne supporte pas
Soutien 30 40
Ne supporte pas 12 18

Pour déterminer s’il y avait une différence statistiquement significative dans la proportion de personnes qui soutenaient la loi avant et après le visionnage de la vidéo, nous pouvons effectuer le test de McNemar.

Étape 1 : Créez les données.

Tout d’abord, nous allons créer un tableau pour contenir nos données :

data = [[30, 40],
         [12, 18]]

Étape 2 : Effectuer le test de McNemar

Ensuite, nous pouvons utiliser la fonction mcnemar() de la bibliothèque Python statsmodels, qui utilise la syntaxe suivante :

mcnemar(tableau, exact=Vrai, correction=Vrai)

où:

  • table : Une table de contingence carrée
  • exact : si exact est vrai, alors la distribution binomiale sera utilisée. Si exact est faux, alors la distribution du Chi carré sera utilisée
  • correction : si vrai, une correction de continuité est utilisée. En règle générale, cette correction est généralement appliquée lorsque le nombre de cellules du tableau est inférieur à 5.

Le code suivant montre comment utiliser cette fonction dans notre exemple spécifique :

from statsmodels.stats.contingency_tables import mcnemar

#McNemar's Test with no continuity correction
print(mcnemar(data, exact=False))

pvalue      0.000181
statistic   14.019

#McNemar's Test with continuity correction
print(mcnemar(data, exact=False, correction=False))

pvalue      0.000103
statistic   15.077

Dans les deux cas – que l’on applique ou non la correction de continuité – la valeur p du test est inférieure à 0,05.

Cela signifie que dans les deux cas, nous rejetterions l’hypothèse nulle et conclurions que la proportion de personnes qui soutenaient la loi avant et après avoir regardé la vidéo marketing était statistiquement différente.

Ajouter un commentaire

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