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.