Test de McNemar
Pour les effectifs appariés 59, 6, 16 et 80, le test de McNemar n'utilise que les 22 paires discordantes et donne une valeur p juste au-dessus de 0,05 : pas significatif au seuil de 5 %. La correction de continuité est activée par défaut. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- A
- 59
- B
- 6
- C
- 16
- D
- 80
- N
- 161
- Nombre de paires discordantes
- 22
- Khi-deux
- 3,6818181818
- Valeur P
- 0,0550088336
Le test de McNemar demande si deux classifications binaires appariées divergent de façon systématique. Vous observez les mêmes sujets deux fois —avant et après un traitement, deux évaluateurs notant les mêmes dossiers, ou deux tests diagnostiques sur les mêmes patients— et vous rassemblez ces paires en un tableau 2x2. Les paires concordantes occupent la diagonale et n'informent pas l'hypothèse nulle ; seules les deux cellules discordantes, conventionnellement nommées b et c, entrent dans la statistique du khi-deux. Ce calculateur accepte les quatre effectifs entiers non négatifs de ce tableau apparié, refuse un effectif négatif au lieu de le tronquer en silence, et renvoie la statistique du khi-deux de McNemar à un degré de liberté avec la p-valeur de queue supérieure correspondante. La correction de continuité est active par défaut, selon la forme d'Edwards utilisée par les logiciels statistiques courants ; vous pouvez la désactiver pour retrouver le rapport original de 1947 du carré de la différence discordante sur le total discordant.
Comment le test de McNemar se définit sur un tableau 2x2 apparié
Inscrivez les quatre effectifs de paires observés dans la disposition habituelle des manuels : a dans la cellule en haut à gauche pour premier-oui et second-oui, b en haut à droite pour premier-oui et second-non, c en bas à gauche pour premier-non et second-oui, et d en bas à droite pour premier-non et second-non. Les cellules a et d sont concordantes : ces sujets n'ont pas changé de classification, elles s'annulent donc dans le test d'homogénéité marginale.
Les cellules b et c sont les effectifs de paires discordantes, et l'argument de McNemar conditionne à leur somme. Sous la nulle selon laquelle les deux probabilités marginales d'un résultat positif sont égales, chaque paire discordante a la même chance de tomber dans b ou dans c, de sorte que les effectifs attendus sont égaux et que le résidu de Pearson se réduit au khi-deux à un degré de liberté (b moins c) au carré sur (b plus c).
La correction de continuité d'Edwards, appliquée par défaut lorsque la différence absolue de b et c est supérieure à un, remplace ce numérateur par le carré de la différence absolue moins un, ce qui réduit un peu la statistique et constitue le défaut de plusieurs logiciels statistiques largement utilisés.
La p-valeur est la queue supérieure d'une loi du khi-deux à un degré de liberté, de façon équivalente la fonction d'erreur complémentaire de la racine carrée de la moitié de la statistique, calculée ici via la fonction gamma incomplète régularisée afin qu'aucune table imprimée ne soit nécessaire. Lorsque b plus c vaut zéro, le rapport est indéfini et la requête est refusée plutôt que d'inventer une p-valeur de un.
Où le khi-deux apparié de McNemar apparaît dans le travail réel
Les cours d'introduction à la biostatistique et les classes de statistique du secondaire assignent sans relâche des exercices binaires avant-après —traitement contre témoin sur les mêmes sujets, exposé contre non exposé à deux visites, rétabli contre encore malade après une cure— où un test du khi-deux d'indépendance traiterait les deux marges comme des échantillons non liés et où un test t apparié exigerait un score numérique de changement qui n'existe pas.
Les équipes cliniques et d'épidémiologie rapportent encore le khi-deux de McNemar pour des paires cas-témoins appariées, deux tests diagnostiques sur les mêmes patients et des drapeaux d'événements indésirables avant-après lorsque la question scientifique est de savoir si les deux marges appariées diffèrent. Les ingénieurs qualité et fiabilité comparent succès ou échec sur les mêmes unités avant et après un changement de procédé et ont besoin de la statistique des paires discordantes plutôt que d'un test z de deux proportions non apparié qui ignore l'appariement.
Deux évaluateurs notant les mêmes items en oui ou non produisent un 2x2 apparié dont les cellules hors diagonale sont exactement les entrées de McNemar. Si vous avez ensuite besoin du test exact de Fisher sur un 2x2 non apparié, d'un test t apparié sur des mesures numériques avant-après, ou d'un intervalle de confiance pour une différence moyenne appariée, traitez-les comme des intentions de recherche et des pages distinctes plutôt que de surcharger cette page de calculateur du test de McNemar.
Cas d’usage
Vérifications de devoirs sur un 2x2 apparié
Élèves et correcteurs vérifient le khi-deux de McNemar et la p-valeur à un degré de liberté à partir de quatre cellules entières sans consulter une table du khi-deux ni mélanger les effectifs discordants.
Tableaux cliniques et diagnostiques appariés
Les analystes testent si deux marges binaires appariées diffèrent —deux tests sur les mêmes patients, ou des paires cas-témoins— lorsque seules b et c informent la nulle.
Succès ou échec avant-après sur les mêmes unités
Les ingénieurs comparent une classification binaire sur les mêmes items avant et après un changement de procédé et publient le khi-deux et la p-valeur des paires discordantes.
Questions fréquentes
Quelles cellules du tableau 2x2 entrent dans la statistique ?
Seuls les effectifs de paires discordantes b (premier oui, second non) et c (premier non, second oui). Les cellules concordantes a et d sont répétées dans la réponse et dans le total général n, mais elles s'annulent dans le khi-deux.
La correction de continuité est-elle appliquée ?
Oui par défaut. Lorsque correction vaut true et que |b−c| est supérieur à un, le moteur utilise la forme d'Edwards (|b−c|−1)²/(b+c). Mettez correction à false pour la statistique originale (b−c)²/(b+c).
Que se passe-t-il si une cellule est négative ou non entière ?
Le test de McNemar se définit sur des effectifs de paires entiers non négatifs ; les fractions et les fréquences négatives sont refusées au lieu d'être arrondies ou tronquées.
En quoi cela diffère-t-il du test exact de Fisher ou d'un t apparié ?
Le test exact de Fisher traite un 2x2 non apparié d'échantillons indépendants. Un test t apparié exige des mesures numériques avant-après. Le test de McNemar est le khi-deux de deux classifications binaires appariées sur les mêmes sujets.
Combien cela coûte-t-il ?
L'outil du navigateur est gratuit et s'exécute en local.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/stat/mcnemars-test \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":59,"b":6,"c":16,"d":80}'const res = await fetch("https://api.kit.forhosting.com/stat/mcnemars-test", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 59,
"b": 6,
"c": 16,
"d": 80
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/stat/mcnemars-test",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 59,
"b": 6,
"c": 16,
"d": 80
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/stat/mcnemars-test", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":59,"b":6,"c":16,"d":80}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":59,"b":6,"c":16,"d":80}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/stat/mcnemars-test", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"a": 59,
"b": 6,
"c": 16,
"d": 80
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.mcnemars_test",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_cell | 10000000 |
max_n | 40000000 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Les appels API réussis sont facturés à la base publiée de $0.002 par élément ; une entrée invalide n'est pas facturée.
Ce que vous envoyez et ce que vous recevez
Envoyez quatre effectifs de cellule entiers non négatifs obligatoires nommés a, b, c et d. Un effectif négatif est refusé parce qu'un tableau de contingence ne peut pas contenir une fréquence négative. Un effectif non entier est refusé parce que le test de McNemar se définit sur des effectifs de paires discrets, non sur des mesures arrondies en silence. Si les deux cellules discordantes sont nulles, la statistique est indéfinie et la requête échoue au lieu de diviser par zéro. Les vérifications classiques comprennent le tableau apparié cinquante-neuf, six, seize, quatre-vingts, dont le khi-deux corrigé pour la continuité vaut quatre-vingt-un sur vingt-deux, et une cellule négative délibérée qui doit échouer. Le moteur accepte aussi les alias de matrice n11, n12, n21, n22 et a11, a12, a21, a22 afin qu'un script qui stocke déjà une matrice numérique n'ait pas à renommer les champs. Un booléen optionnel correction, aussi accepté comme continuity_correction ou correct, vaut true par défaut et sélectionne la forme d'Edwards ; mettez-le à false pour la statistique de 1947 non corrigée. Chaque effectif peut arriver comme entier JSON ou comme chaîne de chiffres ; les fractions, les booléens, NaN, Infinity, les chaînes vides et les champs manquants échouent avec invalid_input qui nomme la cellule fautive. En cas de succès, la réponse répète les quatre cellules, le total général n, le total discordant n_discordant, la statistique chi_square arrondie à douze décimales, la p_value à un degré de liberté, df égal à un, le drapeau correction qui a été appliqué, un indicateur significant_at_05 au seuil alpha conventionnel de 0.05, une étiquette de méthode et une courte chaîne de formule. Branchez le formulaire gratuit du navigateur pour les devoirs et les démonstrations, puis appelez le même contrat depuis des scripts lorsque vous avez besoin de nombreux tests 2x2 appariés sous une seule forme JSON. Le tarif API des appels réussis est la base publiée de $0.002 par élément ; les échecs de validation ne consomment pas de solde et n'inventent jamais un substitut de khi-deux pour forcer un nombre.
Où le khi-deux apparié de McNemar apparaît dans le travail réel
Un unique oracle de confiance qui renvoie du JSON propre accélère la correction sans consulter à la main des queues à un degré de liberté. Comme cette capacité est un moteur parse pur, le tarif API est la base publiée de $0.002 par élément réussi et une validation échouée ne consomme pas de solde.