Méthodologie statistiquePsychologie Quantitative

Comment réaliser le test de McNemar dans R

Guide académique complet pour réaliser, interpréter et rapporter le test de McNemar dans R pour l’analyse des données appariées en recherche psychologique.

PUBLIÉ

Dans le paysage contemporain de la recherche quantitative en sciences humaines, sociales et biomédicales, l’analyse des données catégorielles longitudinales occupe une place prépondérante. Qu’il s’agisse d’évaluer l’efficacité d’une psychothérapie brève sur l’état anxieux, de mesurer l’évolution d’une intention de vote à la suite d’un débat politique ou de quantifier le changement d’adhésion à une thérapie médicale, les chercheurs sont fréquemment confrontés à des protocoles où la variable d’intérêt est binaire et recueillie de manière répétée auprès des mêmes sujets. Face à cette configuration méthodologique, le recours erroné au test classique d’indépendance du chi-carré de Karl Pearson constitue l’un des écueils statistiques les plus répandus de la littérature empirique. En ignorant la corrélation intrasujet inhérente aux mesures appariées, cette pratique invalide les postulats fondamentaux d’indépendance et biaise gravement l’estimation du risque d’erreur de première espèce.

Le test développé par le psychologue et statisticien Quinn McNemar en 1947 répond précisément à cette impasse épistémologique et méthodologique. En déplaçant l’attention de l’ensemble de l’échantillon vers les seules trajectoires de changement individuel, ce test non paramétrique permet d’évaluer rigoureusement l’hypothèse d’homogénéité marginale au sein d’une table de contingence carrée. Dans l’écosystème du logiciel libre R, véritable standard de fait pour l’analyse statistique avancée, la mise en œuvre de cette méthode bénéficie d’une flexibilité remarquable, allant de la fonction native standard aux extensions contemporaines dédiées aux petits échantillons ou aux variables polytomiques. L’appropriation de ces outils informatiques exige néanmoins une compréhension intime des principes mathématiques sous-jacents, sans laquelle le praticien risque de méconnaître les subtilités liées aux corrections de continuité, au calcul des tailles d’effet ou à la gestion des cellules discordantes creuses.

Ce guide exhaustif a pour vocation de fournir aux chercheurs, statisticiens et étudiants avancés une référence théorique, pratique et computationnelle complète pour la réalisation du test de McNemar sous R. En abordant successivement les fondements axiomatiques du test, ses postulats d’application, sa programmation pas à pas, la gestion des faibles effectifs par des procédures exactes, l’estimation rigoureuse des tailles d’effet et les extensions multivariées comme le test de symétrie de Bowker, ce document vise à élever le niveau de rigueur méthodologique des analyses de transition d’état. Chaque étape conceptuelle sera illustrée par des protocoles d’exécution sous R, accompagnés de recommandations de rédaction conformes aux exigences éditoriales académiques internationales les plus strictes.

1. Fondements théoriques et épistémologiques du test de McNemar en psychologie

1.1 Origine historique et contextualisation biométrique

L’émergence du test de McNemar s’inscrit au cœur d’une période de transition méthodologique majeure dans l’histoire de la psychométrie et des sciences du comportement au milieu du vingtième siècle. En 1947, Quinn McNemar, alors professeur de psychologie et de statistique à l’Université de Stanford, publie dans la prestigieuse revue Psychometrika un article fondateur intitulé « Note on the sampling error of the difference between correlated proportions or percentages ». À cette époque, la recherche en psychologie sociale et expérimentale connaît un essor sans précédent dans l’utilisation de protocoles longitudinaux mesurant les changements d’attitude, l’impact des campagnes de propagande durant la Seconde Guerre mondiale ou encore les effets d’apprentissages éducatifs ciblés.

Face à ces données empiriques répétées, les chercheurs de l’époque commettaient quasi systématiquement l’erreur de traiter les mesures avant et après intervention comme si elles provenaient de deux cohortes indépendantes. Ils mobilisaient alors le test d’indépendance du chi-carré formulé par Karl Pearson en 1900 ou le test z de comparaison de deux pourcentages indépendants. McNemar prit conscience que cette modélisation ignorait la dépendance stochastique induite par le suivi des mêmes unités statistiques à travers le temps. La contribution pionnière de McNemar a consisté à démontrer que l’évaluation du changement marginal ne requiert pas une comparaison globale des distributions, mais une focalisation exclusive sur la dynamique interne des transitions d’états psychologiques.

Dans les paradigmes contemporains en sciences comportementales, le test de McNemar demeure l’outil pivot pour les plans d’expérience à mesures répétées à deux temps de mesure (pré-test et post-test) ainsi que pour les études cas-témoins appariées en épidémiologie psychiatrique. En fournissant une solution exacte à la prise en compte de la corrélation intra-individuelle, les travaux de McNemar ont posé les jalons de l’analyse moderne des trajectoires catégorielles, ouvrant la voie au développement ultérieur des modèles mixtes généralisés et des équations d’estimation généralisées.

1.2 Distinction fondamentale entre échantillons indépendants et dépendants

La distinction entre échantillons indépendants et dépendants constitue l’un des piliers de l’inférence statistique, dont la méconnaissance engendre des erreurs d’interprétation critiques dans la littérature scientifique. Deux échantillons sont considérés comme indépendants lorsque la sélection et la valeur prise par une unité d’observation n’exercent aucune influence prédictive sur les unités du second groupe. C’est le cas emblématique d’un essai randomisé contrôlé où des participants distincts sont affectés de façon aléatoire soit à un groupe expérimental recevant une psychothérapie, soit à un groupe témoin placé sur liste d’attente. Dans une telle situation, la variance de la différence entre les deux proportions estimées correspond strictement à la somme de leurs variances d’échantillonnage respectives.

À l’inverse, des échantillons sont dits dépendants, appariés ou corrélés lorsque chaque observation d’une condition est intrinsèquement liée à une observation spécifique de la seconde condition. Cette structure d’appariement découle soit d’un plan à mesures répétées, où chaque sujet constitue son propre témoin à travers le temps, soit d’un jumelage méthodologique strict, où des paires de sujets sont constituées sur la base de covariables confondantes majeures telles que l’âge, le genre ou le score de quotient intellectuel. Dans cette configuration, l’existence d’une autocorrélation intrasujet positive engendre une covariance non nulle entre les mesures pré- et post-intervention, modifiant fondamentalement la structure stochastique du terme d’erreur.

L’application fautive du test du chi-carré d’indépendance de Pearson à des données appariées produit des conséquences théoriques délétères sur la validité des conclusions. Lorsque la corrélation intrasujet est positive, ce qui représente la norme quasi universelle en psychologie empirique en raison de la stabilité des traits individuels, la variance réelle de la différence de proportions est nettement inférieure à la variance présumée sous l’hypothèse d’indépendance. Le test de Pearson surestime alors le terme d’erreur standard, ce qui réduit artificiellement la valeur de la statistique de test et gonfle de manière inacceptable le taux d’erreur de deuxième espèce, privant l’expérimentateur de la puissance statistique nécessaire pour détecter un changement comportemental authentique. Inversement, si une corrélation négative venait à émerger, le risque d’erreur de première espèce serait dramatiquement gonflé, conduisant à des faux positifs méthodologiques.

1.3 Formulation formelle des hypothèses statistiques

D’un point de vue formel, le test de McNemar évalue l’hypothèse nulle dite d’homogénéité marginale au sein d’une population parente dont les observations sont catégorisées selon une variable binaire à deux moments successifs. Soit une table de probabilités conjointes 2×2 où l’élément théorique $p_{ij}$ représente la probabilité qu’un individu appartienne à la catégorie $i$ lors du premier temps de mesure ($i in {1, 2}$) et à la catégorie $j$ lors du second temps ($j in {1, 2}$). La marge relative au premier temps est définie par $p_{1.} = p_{11} + p_{12}$ pour la première modalité et $p_{2.} = p_{21} + p_{22}$ pour la seconde. De manière analogue, les marges relatives au second temps de mesure sont formalisées par $p_{.1} = p_{11} + p_{21}$ et $p_{.2} = p_{12} + p_{22}$.

L’hypothèse nulle d’homogénéité marginale stipule que les distributions de probabilités marginales demeurent parfaitement invariantes entre les deux moments d’évaluation. Mathématiquement, cette proposition s’exprime par le système d’égalités :

$$H_0 : p_{1.} = p_{.1} \quad \text{et} \quad p_{2.} = p_{.2}$$

En substituant les probabilités conjointes dans la première égalité, nous obtenons $p_{11} + p_{12} = p_{11} + p_{21}$. En retranchant le terme diagonal $p_{11}$ des deux membres de l’équation, l’hypothèse nulle se réduit à une condition d’une remarquable simplicité et d’une puissance analytique singulière :

$$H_0 : p_{12} = p_{21}$$

Cette simplification fondamentale démontre que tester l’homogénéité marginale équivaut rigoureusement à tester la symétrie des seules cellules discordantes de la table de contingence. L’hypothèse alternative bilatérale postule quant à elle l’existence d’une asymétrie systématique entre les trajectoires de passage :

$$H_1 : p_{12} \neq p_{21}$$

Dans des contextes expérimentaux directionnels précis, par exemple lorsqu’une intervention clinique vise exclusivement à faire régresser un symptôme sans pouvoir théoriquement l’induire chez des sujets sains, une hypothèse alternative unilatérale peut être formulée sous la forme $H_1 : p_{12} > p_{21}$ ou $H_1 : p_{12} < p_{21}$. L’élément cardinal à retenir réside dans l’exclusion totale des cellules concordantes ($p_{11}$ et $p_{22}$) de la formulation de la statistique décisionnelle, ces dernières n’apportant aucune information différentielle quant à la direction du changement temporel.

2. Conditions d’application et postulats méthodologiques

2.1 Nature et échelle des variables psychologiques

La validité des inférences tirées du test de McNemar dépend du respect de postulats méthodologiques relatifs au niveau de mesure des indicateurs psychométriques. Le test requiert impérativement une variable dépendante de nature catégorielle binaire, c’est-à-dire une variable qualitative ne comportant que deux modalités mutuellement exclusives et conjointement exhaustives. En psychométrie et en psychopathologie quantitative, ces états binaires peuvent correspondre à la présence ou l’absence d’un trouble selon les critères nosographiques du DSM-5 (par exemple, Rémission versus Rechute), au succès ou à l’échec à un item d’évaluation cognitive, ou encore à l’adhésion ou au refus face à une proposition d’attitude sociale (Favorable versus Défavorable).

Lorsqu’une variable continue sous-jacente est dichotomisée arbitrairement à des fins d’analyse catégorielle, le chercheur doit faire preuve d’une prudence épistémologique accrue. Le recours à un seuil de coupure clinique standardisé bénéficie d’une validité de contenu reconnue dans les bilans diagnostiques, mais la dichotomisation artificielle d’échelles d’intervalles psychologiques (comme le fractionnement selon la médiane d’un score d’anxiété) engendre une perte de sensibilité statistique et peut masquer des variations dimensionnelles subtiles. Le postulat fondamental réside ici dans la pertinence écologique de la classification binaire retenue pour décrire le fonctionnement psychologique de l’individu.

Par ailleurs, l’appariement des unités d’observation doit répondre à une rigueur d’assignation irréprochable. Dans un plan intra-individuel à mesures répétées, l’intégrité de l’appariement repose sur l’identification non ambiguë de chaque sujet à travers les vagues d’évaluation successives. Dans un plan de jumelage inter-individuel (appariement cas-témoins), l’équivalence des paires sur les facteurs d’ajustement doit être totale. Toute rupture dans le suivi d’un membre de la paire compromet la structure dyadique et exige des procédures de traitement spécifiques afin d’éviter d’introduire des biais d’attrition différentielle au sein de l’échantillon analysé.

2.2 Exigences relatives aux effectifs et cellules discordantes

À l’instar de l’ensemble des procédures d’inférence fondées sur des approximations asymptotiques vers la loi du chi-carré, le test standard de McNemar repose sur le théorème central limite et exige un volume d’observations suffisant. Toutefois, une confusion fréquente dans la pratique de recherche consiste à juger de la validité du test sur la base de la taille totale de l’échantillon $N$. En réalité, la puissance du test et la conformité de l’approximation distributionnelle ne dépendent aucunement de $N$, mais uniquement de la somme des effectifs observés dans les cases discordantes du tableau croisé, communément désignées par les lettres $b$ et $c$.

Une règle empirique robuste, préconisée dans les manuels de référence en statistique non paramétrique, stipule que l’approximation asymptotique par la loi du chi-carré à un degré de liberté n’est statistiquement acceptable que si la somme des effectifs discordants satisfait la condition minimale suivante :

$$b + c ge 25$$

Lorsque cette somme est inférieure à 25, la distribution d’échantillonnage de la statistique de McNemar s’écarte substantiellement de la distribution théorique continue du chi-carré. La discrétion intrinsèque de l’espace d’échantillonnage engendre alors des fluctuations majeures de la probabilité critique calculée, augmentant le risque d’erreurs d’inférence. Si cette somme chute en deçà de 10, l’approximation devient erratique et peut induire des distorsions massives des seuils de significativité réels.

Face à des cellules discordantes de faible effectif, le chercheur doit renoncer au test asymptotique classique au profit du test exact de McNemar, lequel repose directement sur la loi binomiale cumulative. Ce choix méthodologique garantit le contrôle strict du risque de première espèce quel que soit l’effectif disponible. L’arbitrage entre l’approche asymptotique standard, l’application d’une correction de continuité et la modélisation binomiale exacte constitue un enjeu méthodologique qui sera examiné de manière approfondie dans les sections ultérieures de ce manuel.

2.3 Structure matricielle d’une table de contingence 2×2

L’analyse d’un protocole apparié binaire nécessite la structuration des données au sein d’une table de contingence carrée de dimension 2×2. Cette matrice croise les modalités de la variable d’intérêt observées au premier temps de mesure (en lignes) avec celles observées au second temps de mesure (en colonnes). La formalisation standard des effectifs conjoints observés s’établit selon la typologie canonique suivante :

  • Cellule $a$ ($n_{11}$) : Sujets présentant la première modalité au temps 1 et conservant cette même modalité au temps 2 (paire concordante positive).
  • Cellule $b$ ($n_{12}$) : Sujets présentant la première modalité au temps 1 et basculant vers la seconde modalité au temps 2 (paire discordante de transition).
  • Cellule $c$ ($n_{21}$) : Sujets présentant la seconde modalité au temps 1 et basculant vers la première modalité au temps 2 (paire discordante de transition inverse).
  • Cellule $d$ ($n_{22}$) : Sujets présentant la seconde modalité au temps 1 et conservant cette même modalité au temps 2 (paire concordante négative).

La somme totale des unités statistiques analysées correspond à l’équation $N = a + b + c + d$. Au sein de cette architecture matricielle, les cellules diagonales ($a$ et $d$) incarnent la stabilité comportementale ou nosographique des participants à travers le temps. Bien que ces effectifs concordants fournissent une indication précieuse sur la fidélité test-retest ou sur la persistance temporelle du phénomène psychologique étudié, ils s’annulent algébriquement lors du calcul de la statistique de McNemar.

La mécanique inférentielle repose exclusivement sur les cellules non diagonales ($b$ et $c$). Ces deux cases capturent l’intégralité des dynamiques de conversion comportementale induites par le temps, la maturation ou l’intervention thérapeutique. Si les forces de transition s’équilibrent parfaitement au sein de la population parente, les fluctuations observées entre $b$ et $c$ ne traduisent que des aléas d’échantillonnage autour d’une proportion théorique d’équiprobabilité ($p = 0.5$). Le rôle nul des paires concordantes dans la statistique finale souligne la nature éminemment intra-individuelle du test, focalisé sur la seule dissymétrie des trajectoires de mutation.

3. Configuration de l’environnement R et importation des données

3.1 Installation et chargement des bibliothèques spécialisées

Le traitement des données appariées sous l’environnement statistique R repose sur un écosystème modulaire combinant des fonctionnalités natives hautement optimisées et des packages spécialisés issus du dépôt officiel CRAN. La fonction de base permettant de réaliser le test de McNemar se nomme mcnemar.test() et fait partie intégrante du package stats, préchargé à chaque initialisation de session R. Néanmoins, pour mener des investigations biostatistiques approfondies incluant le calcul d’intervalles de confiance exacts, l’estimation des rapports de cotes appariés et l’analyse de symétrie multivariée, le recours à des bibliothèques tierces s’avère indispensable.

Pour installer l’ensemble des bibliothèques requises pour une analyse complète et rigoureuse, l’analyste exécute les commandes d’installation standard :

install.packages(c("exact2x2", "rcompanion", "epitools", "vcd", "coin", "tidyr", "dplyr", "ggplot2", "ggalluvial"))

Le chargement séquentiel de ces modules au sein de l’environnement de travail s’effectue au début du script d’analyse, assurant ainsi la reproductibilité complète des procédures computationnelles :

library(stats)
library(exact2x2)
library(rcompanion)
library(epitools)
library(vcd)
library(coin)
library(tidyr)
library(dplyr)
library(ggplot2)
library(ggalluvial)

Dans une perspective de science ouverte et de reproductibilité empirique, il est recommandé de documenter systématiquement la version de l’interpréteur R ainsi que l’état précis des packages mobilisés au moyen de la commande sessionInfo(). Cette pratique prévient d’éventuelles discordances de résultats consécutives à des refontes d’algorithmes internes dans les versions futures des bibliothèques contributives.

3.2 Formatage des données : format long versus format large

L’organisation structurelle des données recueillies au sein d’un protocole longitudinal détermine directement les fonctions de manipulation mobilisables sous R. Deux formats coexistent dans la pratique méthodologique : le format large (wide format) et le format long (long format ou tidy data). La maîtrise du passage de l’un à l’autre constitue une compétence technique essentielle pour l’analyste quantitatif.

Dans le format large, chaque ligne du tableau de données correspond à une unité statistique unique (par exemple, un participant unique identifié par son identifiant ID). Les mesures répétées de la variable catégorielle binaire sont disposées dans des colonnes distinctes, typiquement désignées par Pre_Intervention et Post_Intervention. Ce format s’avère particulièrement intuitif pour l’extraction immédiate de la table de contingence matricielle au moyen de la fonction native table().

À l’inverse, le format long structure les données de sorte que chaque ligne corresponde à un événement d’observation unique. Un même sujet est donc représenté sur plusieurs lignes successives (deux lignes pour un plan pré/post standard), une variable indicatrice précisant le moment de la mesure (par exemple Temps prenant les valeurs « T1 » et « T2 ») tandis qu’une colonne unique recueille la modalité observée (Etat). Ce format est requis pour les modélisations longitudinales avancées telles que la régression logistique mixte ou les modèles d’équations d’estimation généralisées (GEE).

Le basculement dynamique entre ces deux représentations s’opère avec une élégance syntaxique remarquable grâce au package tidyr. La conversion d’un tableau large donnees_large vers un format long s’exécute via la fonction pivot_longer() :

donnees_long <- donnees_large %>%
  pivot_longer(cols = c(Pre_Intervention, Post_Intervention),
               names_to = "Temps",
               values_to = "Diagnostic")

Réciproquement, la reconstruction de la matrice large à partir de données longitudinales étirées fait appel à la fonction réciproque pivot_wider(), garantissant une flexibilité absolue dans les flux de prétraitement computationnel.

3.3 Nettoyage et validation de l’intégrité des vecteurs

Préalablement à toute démarche inférentielle, une validation rigoureuse de l’intégrité des vecteurs de données doit être opérée. L’un des risques méthodologiques majeurs dans l’analyse de données appariées réside dans la désynchronisation des paires de mesures, induite par un tri accidentel d’une colonne indépendamment de l’autre, ou par la présence asymétrique de données manquantes (missing values).

Le test de McNemar exigeant des paires complètes, la perte d’une observation à un temps donné entraîne nécessairement l’exclusion de l’observation correspondante pour le même sujet lors de la seconde vague. Cette procédure de suppression par liste appariée (listwise deletion) doit être explicitée et quantifiée afin d’en évaluer le potentiel biais d’attrition. Sous R, la filtration des observations non renseignées s’effectue couramment au moyen de la commande suivante :

donnees_propres <- donnees_large[complete.cases(donnees_large$Pre_Intervention, donnees_large$Post_Intervention), ]

Par ailleurs, les variables catégorielles doivent impérativement être converties au format factor en veillant à harmoniser rigoureusement l’ordre et l’étiquetage des modalités entre les deux colonnes d’observation. Si une modalité théorique possible n’est observée à aucun des temps de mesure chez un sous-groupe, l’omission de fixer explicitement les niveaux via l’argument levels peut générer des matrices non conformes de dimension 1×2 ou 2×1, provoquant le blocage immédiat des routines d’inférence. Le paramétrage préventif s’établit selon la syntaxe :

donnees_propres$Pre_Intervention <- factor(donnees_propres$Pre_Intervention, levels = c("Negatif", "Positif"))
donnees_propres$Post_Intervention <- factor(donnees_propres$Post_Intervention, levels = c("Negatif", "Positif"))

Ce verrouillage structurel des niveaux de facteurs assure une orientation dimensionnelle déterministe lors de la génération subséquente des tableaux de contingence croisés.

4. Construction manuelle et manipulation de la table de contingence sous R

4.1 Création directe d’une matrice 2×2 sous R

Dans de nombreuses situations professionnelles, l’analyste ne dispose pas du fichier de microdonnées individuelles brutes, mais uniquement du tableau de contingence synthétique publié dans un rapport d’évaluation ou un article scientifique. Dans ce cas de figure, l’environnement R permet l’instanciation directe d’une structure matricielle bidimensionnelle par le biais de la fonction native matrix().

La construction matricielle exige une vigilance quant à l’ordre de remplissage séquentiel des éléments vectoriels. Par défaut, la fonction matrix() popule les cellules par colonne (argument implicite byrow = FALSE). Considérons un protocole expérimental fictif évaluant l’efficacité d’une thérapie d’exposition sur des phobies spécifiques, où l’on observe 40 sujets stables en état phobique ($a$), 35 sujets guéris suite à la prise en charge ($b$), 5 sujets sains au départ devenus phobiques ($c$), et 20 sujets demeurés sains aux deux temps ($d$). La création matricielle s’articule comme suit :

matrice_phobie <- matrix(c(40, 5, 35, 20), nrow = 2, ncol = 2, byrow = FALSE)

Afin de rendre la lecture intelligible et d’éviter toute inversion interprétative lors de l’exécution du test, l’adjonction de métadonnées sémantiques via l’attribution de noms de dimensions est requise :

dimnames(matrice_phobie) <- list(
  "Pre_Intervention" = c("Phobique", "Sain"),
  "Post_Intervention" = c("Phobique", "Sain")
)

L’affichage de matrice_phobie dans la console R révèle une structure parfaitement balisée, prête pour les étapes ultérieures d’inférence computationnelle.

4.2 Génération de la table à partir d’un data frame brut

Lorsque les données individuelles sont disponibles au sein d’un data frame structuré en format large, la dérivation de la table de contingence repose sur l’utilisation combinée des fonctions table() ou xtabs(). La fonction table() effectue un comptage croisé exhaustif en recevant en arguments les deux vecteurs de facteurs préalablement harmonisés :

table_contingence <- table(donnees_propres$Pre_Intervention, donnees_propres$Post_Intervention)

L’alternative syntaxique offerte par xtabs() s’appuie sur le formalisme des formules mathématiques standard de R, particulièrement prisé pour son expressivité et son intégration naturelle au sein de pipelines de traitement :

table_contingence <- xtabs(~ Pre_Intervention + Post_Intervention, data = donnees_propres)

Il importe de contrôler systématiquement l’orientation spatiale de la matrice générée. Par convention statistique universelle, la première variable spécifiée dans la formule ou dans l’appel de fonction est allouée aux lignes du tableau (représentant le temps 1 ou la condition initiale), tandis que la seconde variable est attribuée aux colonnes (figurant le temps 2 ou la condition consécutive). Une inversion non maîtrisée de cet agencement transforme la cellule de conversion ascendante ($b$) en cellule descendante ($c$), ce qui, sans altérer la statistique globale d’un test bilatéral, inverserait radicalement l’interprétation clinique du sens de l’efficacité thérapeutique lors du calcul d’indices directionnels comme le rapport de cotes apparié.

4.3 Calcul des proportions marginales et conditionnelles

L’inspection exclusive des fréquences brutes absolues d’une table de contingence s’avère insuffisante pour appréhender l’amplitude concrète des phénomènes psychologiques étudiés. L’analyste doit procéder au calcul des totaux marginaux et à leur transformation en proportions relatives afin de caractériser avec clarté les taux d’incidence marginale.

Le calcul des marges d’une table bidimensionnelle est assuré sous R par la commande margin.table(), où l’indice directionnel 1 extrait la distribution marginale des lignes (temps 1) et l’indice 2 celle des colonnes (temps 2) :

marge_pre <- margin.table(table_contingence, margin = 1)
marge_post <- margin.table(table_contingence, margin = 2)

Pour convertir ces effectifs absolus en pourcentages ou proportions relatives globales, la fonction prop.table() constitue le standard analytique :

proportions_globales <- prop.table(table_contingence)
proportions_lignes <- prop.table(table_contingence, margin = 1)

La matrice issue de proportions_lignes fournit les probabilités de transition conditionnelles. Dans notre exemple clinique, elle permet de déterminer immédiatement la proportion d’individus initialement phobiques ayant accédé à la rémission au terme de l’intervention, comparativement au taux de dégradation observé chez les sujets initialement sains. Cette lecture désagrégée éclaire la clinique du changement comportemental, conférant une épaisseur théorique indispensable aux tests d’hypothèses subséquents.

5. Exécution du test standard de McNemar avec la fonction mcnemar.test()

5.1 Syntaxe de base et options de la fonction native

L’exécution computationnelle du test d’homogénéité marginale s’effectue dans l’environnement R au moyen de la fonction native mcnemar.test() appartenant au package stats. Cette routine bénéficie d’une conception polymorphique permettant de traiter soit directement une table de contingence matricielle 2×2 préconstruite, soit deux vecteurs de facteurs binaires de même longueur passés comme arguments distincts.

La signature formelle de la fonction se structure de la manière suivante :

mcnemar.test(x, y = NULL, correct = TRUE)

Lorsque le premier argument x est une matrice ou une table 2×2, l’argument y doit être laissé à sa valeur par défaut NULL. Dans l’éventualité où x et y sont fournis sous forme de vecteurs d’observations individuelles brutes, la fonction procède d’abord en interne à la construction automatique de la table de contingence croisée avant d’opérer le calcul inférentiel. L’argument booléen correct régit quant à lui l’application ou l’omission de la correction de continuité de Frank Yates, dont le comportement par défaut est fixé à TRUE.

L’appel de cette fonction produit un objet statistique de classe formelle htest, contenant des métadonnées détaillées qu’il est aisé d’assigner à une variable d’enregistrement :

resultat_mcnemar <- mcnemar.test(table_contingence)

L’interrogation de l’objet resultat_mcnemar révèle ses composantes internes via l’opérateur d’extraction $ : statistic (la valeur numérique du chi-carré observé), parameter (le degré de liberté associé, invariablement égal à 1 pour une table 2×2), p.value (la probabilité critique bilatérale) ainsi que method (l’intitulé de la méthode spécifique mise en œuvre).

5.2 Calcul mathématique sous-jacent sans correction

Afin de démystifier les processus de calcul interne de R et de garantir une maîtrise conceptuelle totale, il convient de décomposer la formule analytique de la statistique asymptotique du chi-carré de McNemar sans correction de continuité. Sous l’hypothèse nulle d’homogénéité marginale ($H_0 : p_{12} = p_{21}$), l’espérance mathématique conditionnelle des effectifs discordants est rigoureusement identique : $E(b) = E(c) = (b + c) / 2$.

En appliquant la formule générale du chi-carré de Pearson aux seules cellules discordantes génératrices de variation, la statistique de test se formalise comme suit :

$$\chi^2 = \frac{\left(b – \frac{b + c}{2}\right)^2}{\frac{b + c}{2}} + \frac{\left(c – \frac{b + c}{2}\right)^2}{\frac{b + c}{2}}$$

En développant et en simplifiant algébriquement cette expression, nous aboutissons à l’équation canonique sans correction :

$$\chi^2 = \frac{(b – c)^2}{b + c}$$

Sous $H_0$ et lorsque la condition asymptotique est respectée, cette statistique d’échantillonnage suit rigoureusement une distribution théorique du chi-carré à un degré de liberté ($\chi^2 \sim \chi^2_1$). Il est particulièrement formateur de répliquer ce calcul de façon computationnelle manuelle sous la console R sans faire appel au package stats :

b <- table_contingence[1, 2]
c <- table_contingence[2, 1]
chi2_manuel <- (b - c)^2 / (b + c)
pval_manuelle <- pchisq(chi2_manuel, df = 1, lower.tail = FALSE)

Cette implémentation pas à pas met en exergue l’extrême élégance de la modélisation mathématique de McNemar, qui réduit la complexité d’un protocole longitudinal multidimensionnel à un ratio simple confrontant la déviation nette des conversions à la variance totale du sous-système discordant.

5.3 Désactivation de la correction de continuité

L’interpréteur R appliquant systématiquement la correction de continuité lors de l’exécution par défaut de la fonction mcnemar.test(), le chercheur désireux d’obtenir l’estimation asymptotique pure doit expliciter l’argument correct = FALSE dans son script :

mcnemar_pur <- mcnemar.test(table_contingence, correct = FALSE)

La désactivation délibérée de cette correction repose sur des considérations épistémiques et statistiques solides. Lorsque le volume global des paires discordantes est massif (par exemple $b + c > 100$ ou dans les cohortes épidémiologiques incluant des milliers de sujets), la granularité discrète de la distribution d’échantillonnage s’estompe pour converger vers la fluidité d’un continuum mathématique. Dans ces contextes à haute puissance, le maintien mécanique de la correction n’apporte aucun bénéfice d’ajustement distributionnel et introduit un conservatisme numérique inutile.

La comparaison systématique des sorties console obtenues avec et sans l’argument correct = FALSE illustre concrètement l’impact numérique de la correction. La valeur du chi-carré corrigé est invariablement inférieure à celle du chi-carré brut, ce qui se traduit corrélativement par une valeur de probabilité critique ($p$-valeur) légèrement supérieure. La rigueur documentaire impose à tout chercheur publiant ses travaux de spécifier explicitement dans sa méthodologie statistique si l’inférence a été menée avec ou sans ajustement de continuité, garantissant ainsi l’exacte reproductibilité de ses coefficients rapportés.

6. La correction de continuité de Yates : justification et implémentation

6.1 Fondement statistique de la correction de continuité

La justification théorique de la correction de continuité, introduite par le biostatisticien britannique Frank Yates en 1934 pour les tables 2×2 indépendantes puis transposée aux plans appariés, découle d’une incongruité géométrique fondamentale entre la nature des variables observées et la loi théorique mobilisée pour l’inférence. Les effectifs d’une table de contingence sont par essence des grandeurs discrètes appartenant à l’ensemble des entiers naturels, générant une distribution de probabilité sous forme d’échelons disjoints. À l’opposé, la distribution théorique du chi-carré est une fonction mathématique continue définie sur l’ensemble des nombres réels positifs.

Lorsque l’on calcule une aire sous la courbe continue pour estimer une probabilité discrète, une distorsion d’approximation apparaît, particulièrement marquée au niveau des queues de distribution où les probabilités sont faibles. La correction de continuité vise à rétablir une meilleure adéquation en contractant la distance absolue séparant la valeur observée de son espérance théorique d’un demi-intervalle discret, ce qui équivaut à retrancher la valeur $1$ du numérateur avant d’élever au carré. La formulation analytique corrigée s’énonce ainsi :

$$\chi^2_{\text{Yates}} = \frac{(|b – c| – 1)^2}{b + c}$$

L’introduction du terme $-1$ à l’intérieur de la valeur absolue réduit systématiquement la grandeur du numérateur. Cette pénalisation a pour effet direct de comprimer la statistique de test, ce qui décale la distribution vers la gauche et élève le seuil de significativité requis pour franchir la valeur critique $\alpha$. La correction de continuité agit donc comme un mécanisme intrinsèquement conservateur, limitant drastiquement les rejets abusifs de l’hypothèse nulle.

6.2 Mise en œuvre pratique dans l’environnement R

L’exécution de la version corrigée sous R requiert la spécification formelle de l’argument correct = TRUE, bien que cette option corresponde au comportement natif implicite de la fonction mcnemar.test() :

mcnemar_yates <- mcnemar.test(table_contingence, correct = TRUE)

L’affichage généré par la console R modifie son intitulé descriptif pour mentionner explicitement « McNemar’s Chi-squared test with continuity correction ». L’analyste peut disséquer la machinerie algorithmique en vérifiant la conformité de l’équation algébrique de Yates par une séquence computationnelle manuelle :

b <- table_contingence[1, 2]
c <- table_contingence[2, 1]
chi2_yates_manuel <- (abs(b - c) - 1)^2 / (b + c)
pval_yates_manuelle <- pchisq(chi2_yates_manuel, df = 1, lower.tail = FALSE)

Cette manipulation permet de constater la sensibilité numérique de l’estimation. Si la valeur absolue $|b – c|$ est relativement petite, la soustraction unitaire exerce une influence proportionnellement plus lourde sur la statistique résultante que si l’écart était massif. En milieu clinique où les effectifs de transition sont souvent modestes, cette réduction de la statistique de test peut fréquemment transformer un résultat tendanciellement significatif ($p \approx 0.04$) en un résultat non significatif ($p \approx 0.06$). Cette instabilité aux frontières décisionnelles impose une réflexion méthodologique approfondie sur l’opportunité réelle d’activer cette option.

6.3 Débats méthodologiques contemporains autour de Yates

L’emploi systématique de la correction de continuité de Yates fait l’objet de vives controverses au sein de la communauté des biostatisticiens et psychométriciens contemporains. Si cette correction a longtemps été enseignée comme une règle canonique incontournable, une littérature méthodologique abondante démontre que la correction de Yates tend à opérer une « sur-correction » disproportionnée de la distribution asymptotique.

En comprimant de manière excessive la statistique de test, la correction de Yates réduit le taux d’erreur de type I bien en deçà du seuil nominal conventionnel $\alpha = 0.05$, l’abaissant fréquemment aux alentours de 0.02 ou 0.03. Ce conservatisme méthodologique engendre une conséquence fâcheuse : une perte substantielle de puissance statistique (augmentation de l’erreur de type II). Dans des protocoles de recherche en psychologie clinique ou en neurosciences appliquées, où les recrutements de patients sont particulièrement laborieux, sacrifier la puissance statistique du dispositif expérimental pour corriger artificiellement une approximation asymptotique est difficilement justifiable.

Le consensus méthodologique actuel suggère une directive d’arbitrage claire :

  • Si le nombre total de cellules discordantes est grand ($b + c ge 25$), il est préférable d’exécuter le test de McNemar sans correction de continuité (correct = FALSE), l’approximation du chi-carré étant parfaitement stable et robuste.
  • Si le nombre total de cellules discordantes est restreint ($b + c < 25$), il convient de ne pas recourir à l'artifice de la correction de Yates, mais d'adopter d'emblée une procédure exacte binomiale (exact2x2 ou binom.test), qui calcule la distribution combinatoire sans recourir à une approximation continue.

La correction de Yates apparaît ainsi de plus en plus comme un vestige historique de l’ère pré-informatique, époque où le calcul des factorielles exactes de la loi binomiale s’avérait hors de portée des capacités de calcul manuel des chercheurs.

7. Traitement des petits échantillons : le test exact de McNemar

7.1 Limites de l’approximation asymptotique

Lorsque la taille effective des effectifs discordants s’effondre en deçà du seuil critique ($b + c < 25$), les distributions théoriques continues du chi-carré se révèlent inaptes à modéliser la structure stochastique réelle de l’échantillonnage. Dans de nombreux domaines de la recherche clinique de pointe, comme les essais thérapeutiques pilotes en psychiatrie portant sur des pathologies rares ou les études d’intervention neurochirurgicale hautement invasives, des tailles d’échantillons totales restreintes ($N < 30$) sont courantes, conduisant inéluctablement à un nombre infime de transitions discordantes.

Sous de telles contraintes, invoquer l’approximation asymptotique revient à postuler une fluidité distributionnelle là où seules quelques valeurs discrètes de chi-carré sont arithmétiquement réalisables. Les probabilités critiques calculées par l’intermédiaire de pchisq() perdent alors toute fidélité biométrique. Le risque d’induire le clinicien en erreur quant à l’efficacité d’un protocole innovant devient substantiel.

La résolution de cette défaillance repose sur une réévaluation probabiliste du problème d’inférence. En conditionnant l’analyse statistique sur le nombre total de paires ayant démontré un changement effectif ($n^* = b + c$), la distribution d’échantillonnage du nombre de transitions observées dans un sens donné ($b$) se réduit formellement à une variable aléatoire binomiale univariée. L’inférence ne dépend plus alors d’un cadre asymptotique artificiel, mais de la combinatoire mathématique discrète exacte.

7.2 Exécution via le test binomial natif binom.test()

La transposition du test de McNemar en un test exact repose sur une élégante propriété probabiliste formulée initialement sous l’hypothèse nulle. Si les deux transitions possibles sont équiprobables dans la population ($H_0 : p_{12} = p_{21}$), alors conditionnellement au nombre total de transitions observées ($n^* = b + c$), le nombre de changements d’un type déterminé (par exemple $b$) suit rigoureusement une loi binomiale de paramètres $n^*$ et $p = 0.5$ :

$$b mid (b + c) \sim \mathcal{B}(b + c, 0.5)$$

Dès lors, l’évaluation de l’hypothèse nulle ne requiert aucune fonction complexe dédiée, mais s’exécute directement par l’appel de la fonction native standard binom.test() du package stats. Soit un protocole thérapeutique dans lequel les cellules discordantes observées sont $b = 9$ et $c = 2$. Le nombre total de transitions s’établit à $n^* = 11$, ce qui rend toute approximation par le chi-carré méthodologiquement invalide. L’analyse exacte s’exécute selon la syntaxe suivante :

test_exact_binomial <- binom.test(x = 9, n = 11, p = 0.5, alternative = "two.sided")

L’objet retourné renvoie une probabilité critique bilatérale exacte basée sur la somme des probabilités ponctuelles binomiales dont la densité est inférieure ou égale à celle de l’événement observé. Dans cette configuration, R fournit une valeur de $p = 0.0654$. Si le chercheur avait exécuté à tort un test de McNemar asymptotique standard non corrigé sur ces mêmes données, la console aurait affiché une statistique $\chi^2 = (9 – 2)^2 / 11 = 4.45$, associée à une probabilité critique de $p = 0.0348$. L’analyste imprudent aurait ainsi conclu prématurément à un effet thérapeutique statistiquement significatif au seuil standard $\alpha = 0.05$, commettant une erreur de type I directe imputable à l’effondrement de l’approximation distributionnelle.

7.3 Utilisation du package dédié exact2x2

Bien que la commande binom.test() fournisse une réponse rigoureuse au test d’hypothèse ponctuelle, elle présente la limite ergonomique d’exiger l’extraction manuelle des effectifs $b$ et $c$ et ne fournit pas d’estimation directe du rapport de cotes apparié (matched odds ratio) assorti de ses intervalles de confiance spécifiques. Pour combler cette lacune opérationnelle, Michael P. Fay a développé le package spécialisé exact2x2.

Ce module propose la fonction exact2x2(), spécifiquement paramétrée pour ingérer directement une table de contingence matricielle et lui appliquer un test de McNemar exact tout en modulant la définition computationnelle de la valeur critique bilatérale :

resultat_exact <- exact2x2(table_contingence, paired = TRUE, tsmethod = "minlike")

L’argument fondamental paired = TRUE informe impérativement l’algorithme qu’il s’agit de données corrélées, activant le test de McNemar exact au lieu du test exact de Fisher réservé aux échantillons indépendants. L’argument tsmethod régit la méthode de calcul de la probabilité bilatérale (two-sided method), offrant trois approches mathématiques :

  • "minlike" : Méthode standard sommant la probabilité de toutes les tables dont la vraisemblance est inférieure ou égale à la table observée (approche conventionnelle de Fisher-McNemar).
  • "central" : Méthode doublant la probabilité unilatérale minimale, garantissant un intervalle de confiance strictement inversible et centralisé.
  • "blaker" : Méthode développée par Blaker (2000), reconnue pour produire des intervalles de confiance plus étroits tout en maintenant un respect absolu du niveau de couverture nominal $1 – \alpha$.

La sortie fournie par exact2x2() délivre non seulement la probabilité critique exacte, mais extrait l’intervalle de confiance non paramétrique exact pour le rapport de cotes de transition, offrant un cadre inférentiel robuste et complet pour la publication clinique.

8. Quantification de la taille d’effet et indices d’association

8.1 Rapport de cotes apparié (Matched Odds Ratio)

L’inférence statistique contemporaine exige que la présentation d’une valeur de probabilité critique soit systématiquement corroborée par la quantification rigoureuse de la taille d’effet (effect size). Dans le cadre des plans d’expérience appariés portant sur des variables binaires, l’indice d’association standard par excellence est le rapport de cotes apparié, désigné dans la littérature internationale sous le vocable de Matched-Pairs Odds Ratio ($OR_{\text{apparié}}$).

Il est impératif de souligner qu’un rapport de cotes apparié ne se calcule pas sur les totaux marginaux de la même manière qu’un rapport de cotes standard issu d’un échantillonnage indépendant. Sa formulation mathématique théorique dépend exclusivement du quotient des fréquences relatives aux cellules discordantes :

$$OR_{\text{apparié}} = \frac{b}{c}$$

Ce ratio s’interprète comme la cote (odds) qu’un individu manifeste un changement d’état dans une direction déterminée (par exemple, passage de Phobique à Sain), comparativement à la cote qu’il subisse une transition rigoureusement inverse (passage de Sain à Phobique). Si l’intervention est dépourvue de tout effet différentiel, les transitions d’un sens et de l’autre s’équilibrent, conduisant à un rapport théorique $OR = 1.00$. Une valeur substantiellement supérieure à l’unité témoigne d’une asymétrie favorable à la première trajectoire de conversion.

L’estimation automatisée de cet indicateur peut être conduite sous R en mobilisant le package d’épidémiologie epitools via sa fonction dédiée aux séries appariées :

rapport_cotes <- epimatch(table_contingence)

Alternativement, le calcul algébrique direct sous R demeure d’une extrême limpidité :

or_point <- table_contingence[1, 2] / table_contingence[2, 1]

Ce paramètre synthétique traduit l’intensité clinique du déséquilibre de transition, fournissant aux praticiens une mesure compréhensible du bénéfice direct imputable au protocole d’intervention.

8.2 Différence absolue de proportions marginales

Bien que le rapport de cotes apparié constitue un estimateur relatif fondamental, les recommandations de l’American Psychological Association (APA) et de l’initiative médicale CONSORT préconisent d’assortir systématiquement les mesures relatives d’estimations absolues du changement. Dans le test de McNemar, la taille d’effet absolue fondamentale réside dans la différence des proportions marginales ($\Delta p$).

Cet indicateur quantifie l’accroissement ou la réduction nette du taux de prévalence du comportement ou de la pathologie entre les deux temps d’évaluation, rapportée à l’ensemble de la cohorte $N$. Mathématiquement, l’estimation non biaisée de la différence des proportions marginales s’établit par l’équation :

$$\Delta p = p_{1.} – p_{.1} = \frac{a + b}{N} – \frac{a + c}{N} = \frac{b – c}{N}$$

Cette formulation démontre une nouvelle fois que l’évolution nette de l’ensemble de l’échantillon résulte exclusivement de la différence algébrique entre les transitions ascendantes et descendantes, diluée au sein du collectif total. En psychologie clinique, cet indice s’apparente directement à la Réduction Absolue du Risque (RAR) ou au Gain Absolu d’Efficacité. Son inverse algébrique, $1 / |\Delta p|$, définit le Nombre de Sujets à Traiter (Number Needed to Treat ou NNT), une métrique de première importance pour l’évaluation médico-économique et clinique.

L’estimation de l’intervalle de confiance encadrant cette différence absolue peut s’effectuer sous R via l’approche de Wald ou, préférentiellement pour des raisons de couverture statistique optimale sur petits et moyens échantillons, via la méthode des scores de Robert Newcombe implémentée au sein de diverses extensions épidémiologiques ou programmée analytiquement :

diff_marg <- (table_contingence[1, 2] - table_contingence[2, 1]) / sum(table_contingence)

L’énonciation claire d’un gain marginal absolu assorti de son intervalle de confiance permet d’ancrer les conclusions scientifiques dans une réalité comportementale tangible, prévenant l’écueil d’une surinterprétation d’un rapport de cotes élevé qui porterait en réalité sur des transitions d’effectifs extrêmement marginaux.

8.3 Coefficient g de Cohen pour les proportions appariées

Dans l’arsenal classique des tailles d’effet standardisées formulées par Jacob Cohen (1988), le coefficient $g$ est spécifiquement réservé aux plans appariés portant sur des proportions dichotomiques. Alors que le $d$ de Cohen mesure l’écart standardisé entre moyennes continues et que le $w$ évalue l’association globale dans une table multidimensionnelle, le coefficient $g$ quantifie l’ampleur de la divergence par rapport au postulat d’équiprobabilité des paires discordantes.

Soit $P$ la proportion observée de transitions orientées dans la cellule $b$ relativement à l’ensemble des cas discordants :

$$P = \frac{b}{b + c}$$

Sous l’hypothèse nulle d’homogénéité marginale, cette proportion théorique attendue est de $0.50$. Le coefficient $g$ de Cohen se définit formellement comme l’écart absolu séparant la proportion observée $P$ de sa valeur d’indifférence théorique :

$$g = |P – 0.5| = left|\frac{b}{b + c} – 0.5right|$$

L’indice $g$ varie dans un intervalle borné compris entre $0.00$ (symétrie absolue, absence totale d’effet) et $0.50$ (asymétrie totale, où l’une des cellules discordantes est égale à zéro). Cohen a établi des balises heuristiques conventionnelles d’interprétation pour le coefficient $g$, largement adoptées dans la littérature psychologique :

  • Effet faible : $g \approx 0.05$ (ce qui équivaut à un ratio de transitions de $55%$ contre $45%$).
  • Effet moyen : $g \approx 0.15$ (ce qui correspond à un ratio de transitions de $65%$ contre $35%$).
  • Effet fort : $g ge 0.25$ (ce qui traduit un ratio de transitions d’au moins $75%$ contre $25%$).

L’implémentation algorithmique d’une fonction R personnalisée dédiée à l’extraction immédiate du coefficient $g$ et de sa qualification qualitative s’établit selon la syntaxe vectorielle suivante :

calculer_g_cohen <- function(matrice) {
  b <- matrice[1, 2]
  c <- matrice[2, 1]
  if ((b + c) == 0) return(0)
  P <- b / (b + c)
  g <- abs(P - 0.5)
  qualification <- cut(g, breaks = c(-Inf, 0.05, 0.15, 0.25, Inf),
                      labels = c("Négligeable", "Faible", "Moyen", "Fort"))
  return(list(P = P, g_Cohen = g, Interpretation = qualification))
}

La mobilisation conjointe du rapport de cotes, de la différence marginale absolue et du coefficient $g$ garantit un compte rendu statistique complet, conforme aux exigences de métrologie expérimentale les plus rigoureuses.

9. Diagnostics post-hoc et intervalles de confiance avancés

9.1 Intervalles de confiance pour le rapport de cotes apparié

L’estimation ponctuelle du rapport de cotes apparié ($OR = b/c$) demeure incomplète si elle n’est pas assortie d’un intervalle de confiance délimitant l’incertitude d’échantillonnage à un niveau de confiance fixé (habituellement $95%$). Pour calculer cet intervalle sur des échantillons discordants de taille suffisante, la méthode asymptotique standard repose sur une transformation logarithmique népérienne.

La distribution d’échantillonnage de $ln(OR)$ converge vers une loi normale avec une erreur-type asymptotique ($SE$) formulée élégamment comme suit :

$$SE(\ln OR) = \sqrt{\frac{1}{b} + \frac{1}{c}}$$

Les bornes inférieure ($L$) et supérieure ($U$) de l’intervalle de confiance à $95%$ pour le logarithme du rapport de cotes s’obtiennent en appliquant le quantile normal standard $Z_{1 – alpha/2} = 1.96$ :

$$\ln L, \ln U = \ln(OR) \pm 1.96 \times \sqrt{\frac{1}{b} + \frac{1}{c}}$$

L’intervalle de confiance final pour l’indice $OR$ s’obtient par l’exponentiation des bornes obtenues : $[L, U] = [exp(ln L), exp(ln U)]$. L’implémentation de cette procédure sous R s’articule par les lignes de code suivantes :

b <- table_contingence[1, 2]
c <- table_contingence[2, 1]
or_est <- b / c
se_ln_or <- sqrt(1/b + 1/c)
ic_inf <- exp(log(or_est) - 1.96 * se_ln_or)
ic_sup <- exp(log(or_est) + 1.96 * se_ln_or)

Lorsque l’un des effectifs discordants est faible ou nul, la formule de Wald asymptotique s’effondre (l’erreur-type tendant vers l’infini). Il est alors impératif d’extraire les bornes exactes basées sur la distribution $F$ de Fisher-Snedecor, opérationnellement exécutée par la fonction exact2x2() déjà mentionnée. L’inclusion de la valeur pivot $1.00$ au sein de l’intervalle de confiance indique l’absence d’asymétrie statistiquement significative au seuil retenu.

9.2 Analyse de résidus et modélisation log-linéaire de symétrie

D’un point de vue théorique avancé, le test de McNemar ne constitue pas un cas isolé de statistique non paramétrique, mais correspond rigoureusement à l’évaluation d’un modèle log-linéaire de symétrie sous contrainte appliquée à une table de contingence carrée. Comprendre cette passerelle conceptuelle permet de mobiliser les outils sophistiqués de la modélisation linéaire généralisée sous R pour mener des diagnostics résiduels post-hoc.

Dans un cadre log-linéaire de Poisson, le modèle de symétrie postule que l’espérance de l’effectif $\mu_{ij}$ dans la cellule $(i, j)$ est identique à l’espérance $\mu_{ji}$ de la cellule transposée $(j, i)$. Pour estimer ce modèle sous R, on convertit la matrice 2×2 en un tableau long recensant les effectifs de chaque case, puis on crée un facteur d’identification symétrique non orienté :

df_sym <- as.data.frame(as.table(table_contingence))
colnames(df_sym) <- c("Pre", "Post", "Freq")
df_sym$Paire <- factor(c("1-1", "1-2", "1-2", "2-2"))

L’estimation du modèle s’effectue au moyen de la fonction glm() de la famille de Poisson :

modele_symetrie <- glm(Freq ~ Paire, data = df_sym, family = poisson)

La déviance résiduelle (residual deviance) de ce modèle correspond exactement à la statistique du rapport de vraisemblance ($G^2$) du test de McNemar, associée à 1 degré de liberté. L’inspection des résidus de Pearson standardisés issus de ce modèle via la commande residuals(modele_symetrie, type = "pearson") permet de localiser précisément les cellules du tableau croisé génératrices de tensions distributionnelles, confirmant que l’intégralité de l’inadéquation du modèle se concentre exclusivement sur les deux cellules de transition hors-diagonale.

9.3 Sensibilité méthodologique et analyse de puissance a posteriori

L’analyse statistique d’un résultat non significatif soulève inévitablement la question de la puissance statistique rétrospective : le protocole expérimental disposait-il de la sensibilité nécessaire pour déceler une asymétrie de transition si celle-ci existait au sein de la population parente ? Dans les plans appariés binaires, la puissance dépend de deux facteurs : la taille absolue de la sous-cohorte discordante ($n^* = b + c$) et la discordance proportionnelle marginale.

Le calcul de puissance peut être modélisé sous R au moyen des routines d’approximation binomiale ou via la bibliothèque spécialisée pwr. En mobilisant l’analogie du test binomial équivalent à une comparaison d’une proportion à la valeur centrale $0.50$, la détermination du nombre de paires discordantes requis pour atteindre une puissance cible de $80%$ ($1 – \beta = 0.80$) face à un effet moyen de Cohen ($g = 0.15 \rightarrow P = 0.65$) s’opère par :

library(pwr)
h_cohen <- 2 * asin(sqrt(0.65)) - 2 * asin(sqrt(0.50))
puissance_discordants <- pwr.p.test(h = h_cohen, sig.level = 0.05, power = 0.80, alternative = "two.sided")

Cette commande révèle qu’environ 88 paires discordantes réelles sont strictement nécessaires pour détecter une asymétrie de conversion de ratio 65/35 avec une puissance de $80%$. Si un chercheur observe un échantillon total de $N = 200$ sujets mais que son taux de concordance temporelle est massif (par exemple $90%$ des participants demeurant stables dans les cases $a$ et $d$), le nombre effectif de paires discordantes mobilisables ne sera que de 20. Dès lors, le test souffre d’une sous-puissance structurelle critique, rendant le non-rejet de l’hypothèse nulle dénué de portée concluante.

L’analyse de sensibilité pré-expérimentale doit donc anticiper non pas la taille brute de l’échantillon à recruter, mais le taux attendu de transition intrasujet, condition sine qua non de la robustesse inférentielle du dispositif empirique.

10. Extensions du test : variables polytomiques et test de Bowker

10.1 Passage des tables 2×2 aux tables KxK

Dans la pratique de la recherche psychologique et sociale, les indicateurs d’évaluation comportementale ou clinique dépassent fréquemment le cadre strict de la dichotomie élémentaire. Les échelles de cotation psychiatrique (telles que les stades de sévérité d’un épisode dépressif selon l’échelle de Hamilton : Léger, Modéré, Sévère), les échelles de Likert multi-niveaux employées dans les inventaires de personnalité ou les catégorisations de profils vocationnels constituent des variables polytomiques nominales ou ordinales à $K$ modalités distinctes, avec $K ge 3$.

Dans cette configuration à états multiples évalués de manière répétée, le test standard de McNemar 2×2 s’avère inopérant. Tenter de fractionner la table carrée résultante de dimension $K \times K$ en une multitude de sous-comparaisons binaires non coordonnées engendre une déstructuration de l’architecture stochastique globale et expose l’analyste à une inflation dramatique de l’erreur globale de type I.

Pour résoudre cette problématique, Albert H. Bowker a proposé en 1948 une généralisation matricielle directe du test de McNemar, connue sous la désignation de test de symétrie de Bowker (Bowker’s Test of Symmetry). Ce test évalue l’hypothèse nulle globale selon laquelle la table carrée conjointe $K \times K$ est rigoureusement symétrique par rapport à sa diagonale principale. Formellement, l’hypothèse nulle s’énonce :

$$H_0 : p_{ij} = p_{ji} \quad \text{pour tout } i ne j$$

Cette formalisation postule que pour toute paire de catégories $(i, j)$, la probabilité théorique d’effectuer une transition ascendante de l’état $i$ vers l’état $j$ est strictement égale à la probabilité de manifester la transition rétrograde inverse de l’état $j$ vers l’état $i$. L’hypothèse alternative postule quant à elle qu’au moins une paire symétrique viole cette condition de réversibilité temporelle.

10.2 Exécution du test de Bowker sous R

L’environnement computationnel R assure l’exécution du test de symétrie de Bowker par plusieurs vecteurs algorithmiques. La fonction native mcnemar.test() dispose d’une adaptabilité interne remarquable : lorsqu’une matrice carrée de dimension $K \times K$ (avec $K > 2$) lui est transmise en argument, elle bascule automatiquement sur l’algorithme généralisé de Bowker.

Considérons une table de contingence 3×3 croisant le niveau de sévérité dépressive d’une cohorte de 150 patients évalués avant et après un protocole de méditation de pleine conscience :

table_3x3 <- matrix(c(
  25, 10,  2,
  30, 40,  8,
  12, 18,  5
), nrow = 3, byrow = TRUE)
dimnames(table_3x3) <- list(
  "Pre" = c("Leger", "Modere", "Severe"),
  "Post" = c("Leger", "Modere", "Severe")
)

L’exécution de la procédure s’effectue par la syntaxe standard :

test_bowker <- mcnemar.test(table_3x3)

La statistique de Bowker additionne les écarts symétriques standardisés selon l’équation :

$$\chi^2_{\text{Bowker}} = \sum_{i < j} \frac{(n_{ij} – n_{ji})^2}{n_{ij} + n_{ji}}$$

Cette statistique suit asymptotiquement une distribution du chi-carré dont le nombre de degrés de liberté correspond au nombre de paires hors-diagonale uniques, soit formellement :

$$df = \frac{K(K – 1)}{2}$$

Pour une table 3×3, le nombre de degrés de liberté s’établit à $3(2)/2 = 3$. L’affichage de test_bowker fournit la valeur du chi-carré global, les degrés de liberté associés et la probabilité critique asymptotique. Une implémentation alternative encore plus flexible est disponible via le package coin et sa fonction symmetry_test(), capable d’intégrer la nature ordinale des catégories sous-jacentes pour déployer des tests de tendance de marginalité (test de Stuart-Maxwell ou de quasi-symétrie).

10.3 Stratégies de décomposition et contrastes post-hoc

Lorsque le test global de symétrie de Bowker conclut au rejet de l’hypothèse nulle ($p < alpha$), l'analyste se trouve dans une situation méthodologique analogue à celle d'une Analyse de Variance (ANOVA) omnibus significative : le test atteste de l'existence d'une asymétrie temporelle quelque part au sein du système matriciel, mais s'avère incapable d'isoler quelles paires de catégories spécifiques en sont les moteurs.

Il est dès lors nécessaire de mettre en œuvre une procédure d’analyses post-hoc par décomposition matricielle. Cette stratégie consiste à extraire chacune des $K(K – 1)/2$ sous-tables de dimension 2×2 formées par les combinaisons deux à deux des modalités, et à leur appliquer individuellement le test de McNemar élémentaire. Pour notre table 3×3, trois comparaisons appariées ciblées doivent être conduites : Léger versus Modéré, Léger versus Sévère, et Modéré versus Sévère.

La multiplication de ces tests d’hypothèses univariés impose impérativement l’application d’un protocole d’ajustement des probabilités critiques afin d’endiguer l’inflation de l’erreur globale de type I (Family-Wise Error Rate). Le package de base R fournit la fonction p.adjust() permettant de moduler les p-valeurs calculées selon diverses méthodes de contrôle :

  • Correction de Bonferroni : Approche classique conservatrice multipliant chaque p-valeur brute par le nombre total de comparaisons ($p_{\text{adj}} = p \times m$).
  • Procédure séquentielle de Holm-Bonferroni : Méthode strictement plus puissante que Bonferroni, maintenant un contrôle irréprochable du risque $\alpha$ global sans sacrifier excessivement la puissance d’analyse.
  • Taux de fausse découverte (FDR) de Benjamini-Hochberg : Méthode particulièrement adaptée aux décompositions matricielles étendues, optimisant la sensibilité de détection des sous-transitions psychologiques réelles.

L’articulation scriptée de ces contrastes post-hoc permet d’identifier formellement les trajectoires motrices du changement clinique (par exemple en montrant que l’asymétrie globale est exclusivement portée par le glissement de « Modéré » vers « Léger », tandis que le niveau « Sévère » demeure réfractaire à l’intervention).

11. Visualisation graphique professionnelle des données appariées sous R

11.1 Graphiques en mosaïque et diagrammes d’association

La transmission des conclusions statistiques requiert une communication visuelle de haute qualité. Pour représenter la distribution conjointe et mettre en exergue les structures d’asymétrie au sein d’une table appariée, les graphiques en mosaïque (mosaic plots) constituent un standard sémiologique particulièrement puissant.

Dans un graphique en mosaïque, l’espace bidimensionnel est fractionné en rectangles dont les aires surfaciques sont strictement proportionnelles aux fréquences conjointes observées dans chaque case du tableau. Le package de visualisation catégorielle vcd (Visualizing Categorical Data) propose la fonction mosaic(), permettant d’associer un ombrage chromatique standardisé aux écarts statistiques observés :

vcd::mosaic(table_contingence,
            shade = TRUE,
            legend = TRUE,
            main = "Symétrie de transition pré/post intervention")

L’argument shade = TRUE calcule en arrière-plan les résidus de Pearson standardisés sous le modèle d’indépendance et applique un dégradé chromatique intuitif (nuances de bleu pour les cellules en sur-représentation statistique, nuances de rouge pour les sous-représentations). Pour l’analyse spécifique de symétrie, l’observation des asymétries de taille et de teinte entre les deux rectangles situés hors de la diagonale principale permet au lecteur d’appréhender d’un seul regard le sens et l’ampleur du rééquilibrage comportemental.

11.2 Diagrammes de flux alluviaux avec ggalluvial

Si les mosaïques capturent la structure matricielle globale, elles n’illustrent que partiellement le sentiment de déplacement et de trajectoire individuelle inhérent aux études longitudinales. Pour visualiser la dynamique de transformation avec une force pédagogique supérieure, les diagrammes de flux alluviaux (alluvial diagrams), dérivés des diagrammes industriels de Sankey, s’imposent désormais dans les publications de premier plan.

Grâce à l’extension ggalluvial intégrée à l’écosystème graphique ggplot2, il est possible de matérialiser les sujets sous forme de rubans de flux dont l’épaisseur correspond aux effectifs de chaque trajectoire, connectant les strates du pré-test à celles du post-test. Considérons un data frame structuré en format long :

ggplot(data = donnees_flux,
       aes(axis1 = Pre, axis2 = Post, y = Frequence)) +
  geom_alluvium(aes(fill = Trajectoire), width = 1/12, alpha = 0.8) +
  geom_stratum(width = 1/6, fill = "grey80", color = "black") +
  geom_text(stat = "stratum", aes(label = after_stat(stratum)), size = 4) +
  scale_x_discrete(limits = c("Pré-Test", "Post-Test"), expand = c(0.1, 0.1)) +
  scale_fill_manual(values = c("Stable" = "#7f7f7f", "Amélioration" = "#2ca02c", "Détérioration" = "#d62728")) +
  theme_minimal() +
  labs(title = "Dynamique individuelle des transitions diagnostiques",
       y = "Nombre cumulé de participants",
       fill = "Statut clinique")

Ce type de rendu met en scène de manière lumineuse la masse des flux concordants stables s’écoulant horizontalement, traversée par les flux diagonaux discordants dont l’asymétrie de volume incarne directement la matérialité statistique du test de McNemar.

11.3 Visualisation des estimations d’effet et de leurs intervalles

La finalisation d’un manuscrit scientifique requiert également la représentation normalisée de la taille d’effet ponctuelle et de son degré d’incertitude sous la forme d’un graphique en forêt (forest plot) ou d’un diagramme de barres couplées avec barres d’erreur.

Pour représenter graphiquement le rapport de cotes apparié ($OR_{\text{apparié}}$) issu d’une série d’interventions ou de sous-groupes cliniques, l’utilisation combinée des fonctions géométriques de ggplot2 offre un rendu conforme aux normes internationales :

df_effet <- data.frame(
  Indicateur = "Rapport de cotes apparié (OR)",
  OR = or_est,
  IC_Bas = ic_inf,
  IC_Haut = ic_sup
)

ggplot(df_effet, aes(x = OR, y = Indicateur)) +
  geom_vline(xintercept = 1, linetype = "dashed", color = "red", linewidth = 0.8) +
  geom_errorbarh(aes(xmin = IC_Bas, xmax = IC_Haut), height = 0.2, linewidth = 0.8, color = "navy") +
  geom_point(size = 3.5, color = "navy") +
  scale_x_log10() +
  theme_classic() +
  labs(x = "Rapport de cotes apparié (échelle logarithmique)", y = NULL,
       title = "Taille d'effet de transition thérapeutique et IC à 95%")

Pour satisfaire les exigences des comités éditoriaux imposant des résolutions graphiques optimales pour l’impression, l’exportation vectorielle standardisée s’opère via la fonction ggsave() :

ggsave("Figure1_Taille_Effet.tiff", width = 180, height = 100, units = "mm", dpi = 300, compression = "lzw")

Ce protocole assure la préservation d’une netteté graphique absolue sans pixellisation lors du processus d’édition typographique.

12. Rédaction académique selon les normes APA et pièges méthodologiques

12.1 Directives de rédaction des résultats aux normes APA (7e édition)

L’intégration des résultats d’un test de McNemar au sein d’une publication scientifique évaluée par les pairs doit se conformer aux prescriptions typographiques et stylistiques de l’American Psychological Association (normes APA, 7e édition). La règle fondamentale exige de ne jamais se limiter à la simple mention d’une p-valeur dichotomique, mais de contextualiser l’analyse en rapportant systématiquement les fréquences absolues, les proportions marginales, la valeur exacte de la statistique de test, ses degrés de liberté ainsi que la taille d’effet assortie de son intervalle de confiance.

Le format typographique formel d’un chi-carré de McNemar impose la mise en italique de la lettre grecque $\chi^2$ (ou de la lettre latine majuscule non soulignée X2 selon les typographies), suivie entre parenthèses du degré de liberté et de la taille totale de l’échantillon analysé, de la valeur numérique de la statistique arrondie à deux décimales, et de la probabilité critique exacte rapportée à trois décimales (sauf si $p < .001$) :

X2(1, N = 120) = 8.64, p = .003, OR = 3.25, IC 95% [1.45, 7.28]

Un modèle de rédaction intégrée au sein du paragraphe de résultats d’un article de recherche clinique peut être formalisé comme suit :

« Afin d’évaluer l’efficacité de l’intervention cognitive basée sur la pleine conscience sur le statut de rémission de l’insomnie chronique, un test d’homogénéité marginale de McNemar sans correction de continuité a été conduit sur les 120 participants ayant complété les deux temps de mesure. L’analyse révèle une modification statistiquement significative de la proportion de patients en rémission entre le pré-test (22.5 %, n = 27) et le post-test (48.3 %, n = 58), X2(1, N = 120) = 16.42, p < .001. Parmi les individus manifestant un changement diagnostique effectif (n = 43), 37 ont accédé à la rémission tandis que 6 ont connu une dégradation de leur état clinique. Le rapport de cotes apparié indique que les participants avaient 6.17 fois plus de chances de progresser vers la rémission que de régresser vers l’insomnie (OR = 6.17, IC 95% [2.55, 14.93]), ce qui représente une réduction absolue du risque marginal de 25.8 % (IC 95% [13.7 %, 37.9 %]) et une taille d’effet standardisée forte selon les critères de Cohen (g = 0.36). »

Cette rédaction conjugue clarté narrative, précision numérique et rigueur descriptive, répondant à l’ensemble des critères de transparence scientifique contemporains.

12.2 Erreurs méthodologiques et informatiques fréquentes

L’expérience pédagogique et l’audit statistique de manuscrits soumis révèlent la récurrence de plusieurs fautes conceptuelles et informatiques lors de la mise en œuvre du test de McNemar sous R. L’analyste averti veillera à neutraliser ces risques systématiques :

  • La confusion majeure entre indépendance et homogénéité : Appliquer la commande chisq.test() au lieu de mcnemar.test() sur un tableau 2×2 apparié constitue l’erreur la plus préjudiciable. Cette méprise ignore la dépendance sérielle et génère une statistique fondamentalement fausse.
  • L’inversion spatiale de la table de contingence : Structurer la matrice de contingence en positionnant accidentellement le post-test en lignes et le pré-test en colonnes permute les cellules $b$ et $c$. Si la statistique $\chi^2$ bilatérale demeure inchangée, le rapport de cotes résultant est inversé ($OR_{\text{inversé}} = 1 / OR_{\text{vrai}}$), conduisant à conclure à l’aggravation d’un état là où l’intervention produit une amélioration thérapeutique.
  • L’ignorance de la règle des cellules discordantes creuses : Maintenir l’exécution d’un test asymptotique avec ou sans Yates lorsque $b + c < 25$ produit une inférence dégradée. Le recours à exact2x2() ou binom.test() doit constituer un automatisme méthodologique impératif.
  • L’inclusion illicite de données d’attrition non appariées : Conserver des sujets n’ayant renseigné qu’un seul des deux temps d’évaluation en codant la mesure manquante par une modalité arbitraire altère la nature même de l’appariement. Les procédures de suppression par liste (complete cases) doivent être strictement appliquées avant toute instanciation matricielle.

La vigilance face à ces sources de distorsion méthodologique conditionne la validité écologique des résultats et préserve l’intégrité de la démarche de recherche empirique.

12.3 Synthèse procédurale et flux de décision pour le chercheur

Pour guider le chercheur à travers l’ensemble des ramifications statistiques présentées au fil de ce traité, le protocole décisionnel séquentiel suivant résume les choix informatiques optimaux à opérer au sein de l’environnement R :

  • Étape 1 : Définition dimensionnelle des données
    • Variable binaire appariée à 2 modalités : Poursuivre vers l’Étape 2.
    • Variable multinomiale ou polytomique appariée à $K ge 3$ modalités : S’orienter vers le test de symétrie de Bowker (mcnemar.test(matrice_KxK)) assorti de décompositions post-hoc corrigées via p.adjust().
  • Étape 2 : Quantification du volume discordant effectif
    • Calculer la somme des cellules de transition : $S_{\text{disc}} = b + c$.
  • Étape 3 : Sélection de l’algorithme d’inférence sous R
    • Si $S_{text{disc}} < 25$ : Sélectionner impérativement le test exact au moyen du package exact2x2 (exact2x2(table, paired = TRUE)) ou du test binomial natif (binom.test(b, b + c, p = 0.5)).
    • Si $S_{\text{disc}} ge 25$ : Exécuter le test asymptotique de McNemar sans correction de continuité (mcnemar.test(table, correct = FALSE)) afin de préserver la puissance statistique maximale du protocole expérimental.
  • Étape 4 : Métrologie de la taille d’effet
    • Calculer systématiquement le rapport de cotes apparié ($OR = b/c$) et son intervalle de confiance à $95%$.
    • Rapporter la différence absolue des proportions marginales ($\Delta p = (b – c)/N$) et le coefficient $g$ de Cohen ($g = |b/(b + c) – 0.5|$).
  • Étape 5 : Visualisation et publication normalisée
    • Générer un diagramme alluvial (ggalluvial) ou une mosaïque ombrée (vcd::mosaic) pour la restitution visuelle.
    • Rédiger le paragraphe de synthèse selon les standards stricts de l’APA 7e édition.

En observant rigoureusement cette chaîne d’opérations méthodologiques et computationnelles, les chercheurs en psychologie, psychiatrie et sciences comportementales disposent d’un cadre d’analyse d’une robustesse mathématique irréprochable, conférant à leurs investigations longitudinales la portée et la précision requises par la science contemporaine.

Références

  • Benjamini, Y., & Hochberg, Y. (1995). Controlling the false discovery rate: A practical and powerful approach to multiple testing. Journal of the Royal Statistical Society: Series B (Methodological), 57(1), 289–300. https://doi.org/10.1111/j.2517-6161.1995.tb02031.x
  • Blaker, H. (2000). Confidence curves and improved exact confidence intervals for discrete distributions. The Canadian Journal of Statistics / La Revue Canadienne de Statistique, 28(4), 783–798. https://doi.org/10.2307/3315916
  • Bowker, A. H. (1948). A test for symmetry in contingency tables. Journal of the American Statistical Association, 43(244), 572–574. https://doi.org/10.1080/01621459.1948.10483284
  • Cohen, J. (1988). Statistical power analysis for the behavioral sciences (2e éd.). Lawrence Erlbaum Associates.
  • Fay, M. P. (2010). Two-sided exact tests and matching confidence intervals for discrete data: The exact2x2 and exactci packages in R. R Journal, 2(1), 53–58. https://doi.org/10.32614/RJ-2010-008
  • McNemar, Q. (1947). Note on the sampling error of the difference between correlated proportions or percentages. Psychometrika, 12(2), 153–157. https://doi.org/10.1007/BF02295996
  • Newcombe, R. G. (1998). Improved confidence intervals for the difference between binomial proportions based on paired data. Statistics in Medicine, 17(22), 2635–2650. https://doi.org/10.1080/14786440009463897
  • R Core Team. (2023). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. https://www.R-project.org/
  • Yates, F. (1934). Contingency tables involving small numbers and the $\chi^2$ test. Supplement to the Journal of the Royal Statistical Society, 1(2), 217–235. https://doi.org/10.2307/2983604

Citer cet article

memjavad (2026, septembre 6). Comment réaliser le test de McNemar dans R. Base de données de psychologie en français. https://fr.arabpsychology.com/statistics/comment-realiser-test-mcnemar-dans-r/
memjavad. “Comment réaliser le test de McNemar dans R.” Base de données de psychologie en français, 6 septembre 2026, https://fr.arabpsychology.com/statistics/comment-realiser-test-mcnemar-dans-r/.
memjavad. “Comment réaliser le test de McNemar dans R.” Base de données de psychologie en français. septembre 6, 2026. https://fr.arabpsychology.com/statistics/comment-realiser-test-mcnemar-dans-r/.