Kappa de Cohen en R : accord inter-juges pour des notations catégorielles

Mesurez à quel point deux juges s’accordent sur une classification catégorielle — au-delà du hasard — avec le kappa de Cohen, son intervalle de confiance et une échelle claire de force d’accord

Apprenez à calculer le kappa de Cohen en R — la mesure d’accord corrigée du hasard entre deux juges qui classent des items en catégories. Utilisez Kappa() du package vcd pour le coefficient, son erreur standard et son intervalle de confiance, interprétez l’ampleur avec l’échelle de Landis-Koch, et calculez le kappa de Light pour plus de deux juges avec le package irr.

Date de publication

23 juin 2026

Modifié

11 juillet 2026

AstucePoints clés
  • Le kappa de Cohen mesure l’accord entre deux juges qui classent des items en catégories, corrigé de l’accord attendu par hasard — il est donc plus honnête que le pourcentage brut d’accord.
  • Calculez-le à partir du tableau de contingence des juges avec vcd::Kappa(), qui donne aussi l’erreur standard et (via confint()) un intervalle de confiance.
  • Interprétez l’ampleur avec l’échelle de Landis-Koch : < 0 faible, 0–0.2 léger, 0.2–0.4 passable, 0.4–0.6 modéré, 0.6–0.8 substantiel, 0.8–1 presque parfait.
  • Pour plus de deux juges, utilisez le kappa de Light (la moyenne de tous les kappas par paires) via irr::kappam.light().
  • Pour des catégories ordinales, utilisez le kappa pondéré ; pour de nombreux juges sur les mêmes items, le kappa de Fleiss.
Obtenez le livre — Inter-Rater Reliability Essentials (PDF)

Introduction

Lorsque deux personnes classent les mêmes items en catégories — deux médecins qui diagnostiquent des patients, deux codeurs qui annotent du texte — vous voulez savoir à quel point ils s’accordent. Le pourcentage brut d’accord est trompeur car une partie de l’accord se produit par hasard. Le kappa de Cohen corrige cela : il compare l’accord observé à l’accord attendu si les juges devinaient au hasard, sur une échelle où 1 est parfait et 0 n’est pas mieux que le hasard.

Cette leçon calcule le kappa de Cohen avec le package vcd, lit son intervalle de confiance, et l’étend à plus de deux juges avec irr.

Note

Hypothèses du kappa de Cohen. H₀ : kappa = 0 (l’accord n’est pas meilleur que le hasard). Hₐ : kappa ≠ 0. Une p-value significative signifie que l’accord est de façon fiable meilleur que le hasard — mais rapportez toujours l’ampleur (le kappa lui-même), pas seulement la significativité.

Les données : deux médecins, cinq diagnostics

Deux médecins cliniciens ont classé 30 patients en cinq catégories psychiatriques. Les données forment un tableau de contingence — les lignes sont le diagnostic du Médecin 1, les colonnes celui du Médecin 2, et la diagonale contient les cas sur lesquels ils se sont accordés :

diagnoses <- as.table(rbind(
  c(7, 1, 2, 3, 0), c(0, 8, 1, 1, 0),
  c(0, 0, 2, 0, 0), c(0, 0, 0, 1, 0),
  c(0, 0, 0, 0, 4)
))
categories <- c("Depression", "Personality Disorder", "Schizophrenia", "Neurosis", "Other")
dimnames(diagnoses) <- list(Doctor1 = categories, Doctor2 = categories)
diagnoses
                      Doctor2
Doctor1                Depression Personality Disorder Schizophrenia Neurosis
  Depression                    7                    1             2        3
  Personality Disorder          0                    8             1        1
  Schizophrenia                 0                    0             2        0
  Neurosis                      0                    0             0        1
  Other                         0                    0             0        0
                      Doctor2
Doctor1                Other
  Depression               0
  Personality Disorder     0
  Schizophrenia            0
  Neurosis                 0
  Other                    4

Une heatmap rend l’accord visible — les cellules les plus sombres devraient se situer sur la diagonale :

library(ggpubr)

diagnoses <- as.table(rbind(
  c(7, 1, 2, 3, 0), c(0, 8, 1, 1, 0),
  c(0, 0, 2, 0, 0), c(0, 0, 0, 1, 0), c(0, 0, 0, 0, 4)
))
cats <- c("Depression", "Personality Disorder", "Schizophrenia", "Neurosis", "Other")
dimnames(diagnoses) <- list(Doctor1 = cats, Doctor2 = cats)

df <- as.data.frame(diagnoses)
ggballoonplot(df, x = "Doctor2", y = "Doctor1", size = "Freq", fill = "Freq") +
  gradient_fill(c("white", "#3a86d4")) +
  labs(x = "Doctor 2", y = "Doctor 1")

A heatmap of the 5x5 two-doctor diagnosis table; the diagonal cells (where the doctors agreed) are the darkest, with a few off-diagonal disagreements for depression.

Calculer le kappa de Cohen

vcd::Kappa() prend le tableau de contingence et renvoie le kappa non pondéré (le kappa de Cohen) avec son erreur standard asymptotique (ASE) :

library(vcd)

diagnoses <- as.table(rbind(
  c(7, 1, 2, 3, 0), c(0, 8, 1, 1, 0),
  c(0, 0, 2, 0, 0), c(0, 0, 0, 1, 0), c(0, 0, 0, 0, 4)
))
cats <- c("Depression", "Personality Disorder", "Schizophrenia", "Neurosis", "Other")
dimnames(diagnoses) <- list(Doctor1 = cats, Doctor2 = cats)

res.k <- Kappa(diagnoses)
res.k
            value     ASE     z  Pr(>|z|)
Unweighted 0.6512 0.09968 6.532 6.474e-11
Weighted   0.6331 0.11939 5.303 1.140e-07

Le kappa non pondéré vaut 0.65. (La version pondérée est destinée aux catégories ordinales — voir la leçon sur le kappa pondéré.) Ajoutez l’intervalle de confiance avec confint() :

library(vcd)

diagnoses <- as.table(rbind(
  c(7, 1, 2, 3, 0), c(0, 8, 1, 1, 0),
  c(0, 0, 2, 0, 0), c(0, 0, 0, 1, 0), c(0, 0, 0, 0, 4)
))
cats <- c("Depression", "Personality Disorder", "Schizophrenia", "Neurosis", "Other")
dimnames(diagnoses) <- list(Doctor1 = cats, Doctor2 = cats)

confint(Kappa(diagnoses))
            
Kappa              lwr       upr
  Unweighted 0.4557884 0.8465372
  Weighted   0.3991025 0.8670846

L’IC à 95 % du kappa non pondéré est [0.46, 0.85] — il exclut 0, donc l’accord est significativement meilleur que le hasard.

Interpréter la magnitude

Un kappa se juge sur l’échelle de force d’accord de Landis-Koch :

L’échelle de force d’accord de Landis-Koch (1977).
Kappa Accord
< 0 faible (pire que le hasard)
0.0–0.20 léger
0.21–0.40 passable
0.41–0.60 modéré
0.61–0.80 substantiel
0.81–1.00 presque parfait

Notre κ = 0.65 correspond à un accord substantiel — les deux médecins classent les patients de façon cohérente, bien au-delà du hasard.

Une échelle plus stricte pour les décisions cliniques : McHugh (2012)

Landis-Koch est l’échelle classique, mais de nombreux domaines cliniques la jugent désormais trop indulgente — elle qualifie un κ = 0.61–0.80 de « substantiel », alors que McHugh considère tout ce qui est en dessous de 0.60 comme un accord inadéquat. McHugh (2012) propose une échelle plus stricte qui traduit aussi chaque kappa en proportion de notations auxquelles vous pouvez réellement vous fier :

L’échelle de McHugh (2012), avec la part de notations fiables (≈ κ²).
Kappa Accord % de données fiables
0.00–0.20 Aucun 0–4%
0.21–0.39 Minimal 4–15%
0.40–0.59 Faible 15–35%
0.60–0.79 Modéré 35–63%
0.80–0.90 Fort 64–81%
> 0.90 Presque parfait 82–100%

La colonne « % de données fiables » vaut à peu près κ² — élever le kappa au carré approxime la fraction de notations qui reflètent un véritable accord plutôt que le hasard. Pour notre κ = 0.65, cela fait environ 42%, dans la tranche 35–63% de McHugh. Ainsi, le même résultat est « substantiel » sur Landis-Koch mais seulement « modéré » sur l’échelle de McHugh — une lecture plus prudente qu’un clinicien pourrait préférer.

À retenir en pratique : McHugh fixe un plancher strict — « tout kappa inférieur à 0.60 indique un accord inadéquat… et l’on ne devrait accorder que peu de confiance aux résultats de l’étude. » Notre κ = 0.65 franchit ce plancher, mais il ne se situe que dans sa tranche « modérée » (environ 42% des notations fiables) là où Landis-Koch le qualifierait de « substantiel ». Pour des décisions qui touchent les patients, préférez la lecture la plus stricte, et rapportez le kappa avec à la fois l’échelle que vous avez utilisée et son intervalle de confiance, afin que les lecteurs puissent le juger au regard du seuil propre à leur domaine. (McHugh formule la même mise en garde en termes de pourcentage d’accord : parce qu’un accord brut de 61% signifie déjà que ~40% des données ne sont pas fiables, de nombreux ouvrages exigent un accord ≥ 80% avant de se fier à une notation — un repère de pourcentage d’accord, et non un seuil de kappa.)

Plus de deux juges : le kappa de Light

Lorsque plus de deux juges classent les mêmes items, le kappa de Light fait la moyenne de tous les kappas de Cohen par paires. Utilisez irr::kappam.light() sur une matrice où les colonnes sont les juges et les lignes les items (le package irr fournit un jeu de données diagnoses de 6 juges) :

library(irr)

data("diagnoses", package = "irr")
irr_diag <- diagnoses          # irr's 30x6 raw ratings (distinct from the 5x5 table above)
kappam.light(irr_diag[, 1:3])  # average pairwise kappa for the first 3 raters
 Light's Kappa for m Raters

 Subjects = 30 
   Raters = 3 
    Kappa = 0.555 

        z = NaN 
  p-value = NaN 

Le kappa de Light pour les trois premiers juges vaut 0.55 — un accord modéré entre les trois.

Rapport

Le kappa de Cohen a été calculé pour évaluer l’accord entre deux médecins diagnostiquant 30 patients en cinq catégories. Il y avait un accord substantiel entre les médecins, κ = 0.65 (IC à 95 %, 0.46 à 0.85), p < 0.0001.

Le kappa corrige l’accord observé pour le hasard : \(\kappa = \dfrac{p_o - p_e}{1 - p_e}\), où \(p_o\) est la proportion d’accord observée (le total de la diagonale ÷ N) et \(p_e\) l’accord attendu par hasard à partir des marges en lignes et en colonnes (\(p_e = \sum_i p_{i+}\,p_{+i}\)). Lorsque l’accord est parfait, \(p_o = 1\) donc \(\kappa = 1\) ; lorsqu’il correspond exactement à ce que le hasard prédit, \(p_o = p_e\) donc \(\kappa = 0\). Le dénominateur \(1 - p_e\) remet à l’échelle l’accord corrigé du hasard pour un maximum de 1.

vcd::Kappa() n’est pas une boîte noire — vous pouvez reproduire son 0.65 à partir du tableau en quelques lignes de R base. La diagonale est l’endroit où les deux médecins se sont accordés : 7 + 8 + 2 + 1 + 4 = 22 des 30 patients. Divisez par N pour obtenir l’accord observé, calculez l’accord dû au hasard à partir des marges, puis insérez les deux dans la formule :

diagnoses <- as.table(rbind(
  c(7, 1, 2, 3, 0), c(0, 8, 1, 1, 0),
  c(0, 0, 2, 0, 0), c(0, 0, 0, 1, 0), c(0, 0, 0, 0, 4)
))

N  <- sum(diagnoses)                                   # 30 patients
po <- sum(diag(diagnoses)) / N                         # observed agreement = 22/30
pe <- sum(rowSums(diagnoses)/N * colSums(diagnoses)/N) # expected by chance
kappa <- (po - pe) / (1 - pe)

round(c(po = po, pe = pe, kappa = kappa), 3)
   po    pe kappa 
0.733 0.236 0.651 

L’accord observé est de 73%, mais le hasard seul produirait déjà 24% d’accord, donc le kappa remet à l’échelle les 73% par rapport à ce plancher : \((0.733 - 0.236) / (1 - 0.236) = 0.65\). C’est exactement le nombre que Kappa() a rapporté — vous voyez maintenant que ce n’est pas magique.

Essayez en direct

Calculez le kappa à partir de données de notation brutes avec irr::kappa2() (deux colonnes = deux juges). Modifiez les notations et relancez ; le bac à sable démarre au premier Run.

🟢 Avec un agent IA

Demandez à Prova « J’ai deux juges qui classent des items en catégories — calcule le kappa de Cohen, donne-moi l’intervalle de confiance, et dis-moi si l’accord est bon » — elle répond avec du code que vous pouvez exécuter sur vos propres données. The runtime is the judge. Demander à Prova →

Problèmes fréquents

Vous avez rapporté le pourcentage d’accord au lieu du kappa. L’accord brut ignore le hasard — deux juges qui choisissent tous deux le plus souvent la catégorie commune peuvent sembler en fort accord alors qu’ils sont à peine meilleurs que le hasard. Le kappa corrige cela ; rapportez-le.

Vous avez des catégories ordinales. Le kappa de Cohen (non pondéré) traite tous les désaccords comme également graves. Pour des catégories ordonnées (p. ex. léger/modéré/sévère), un quasi-accord devrait compter moins qu’un écart important — utilisez le kappa pondéré.

Vous avez plus de deux juges. Le kappa de Cohen concerne deux juges. Pour plusieurs juges sur les mêmes items, utilisez le kappa de Fleiss, ou le kappa de Light (la moyenne des kappas de Cohen par paires) présenté ci-dessus.

Questions fréquentes

Le kappa de Cohen est une statistique qui mesure l’accord entre deux juges qui classent des items en catégories, corrigé de l’accord qui surviendrait par hasard. Il varie de 1 (accord parfait) à 0 (niveau du hasard) jusqu’à des valeurs négatives (pire que le hasard), ce qui le rend plus honnête que le pourcentage brut d’accord.

Utilisez l’échelle de Landis-Koch : en dessous de 0 c’est faible, 0–0.20 léger, 0.21–0.40 passable, 0.41–0.60 modéré, 0.61–0.80 substantiel, et 0.81–1.00 presque parfait. Rapportez toujours la valeur du kappa (l’ampleur) avec son intervalle de confiance, pas seulement le fait qu’il soit significativement différent de zéro.

Le kappa de Cohen mesure l’accord entre exactement deux juges. Le kappa de Fleiss le généralise à trois juges ou plus classant les mêmes items. Si vous avez plusieurs juges et voulez un indice global unique, utilisez le kappa de Fleiss ; pour la moyenne de tous les kappas par paires à deux juges, utilisez le kappa de Light.

Cela dépend de l’échelle à laquelle vous vous fiez. Sur l’échelle classique de Landis-Koch, un κ = 0.61–0.80 est « substantiel », mais McHugh (2012) soutient que c’est trop indulgent pour des décisions qui touchent les patients : elle considère tout κ inférieur à 0.60 comme un accord inadéquat, et sur son échelle κ = 0.65 n’est que « modéré » (environ 42% des notations fiables). Visez bien au-dessus du minimum absolu pour un travail clinique, et rapportez toujours l’intervalle de confiance à côté de l’estimation ponctuelle.

Utilisez le kappa pondéré lorsque vos catégories sont ordinales (ordonnées), de sorte que les désaccords diffèrent en gravité — noter « léger » plutôt que « modéré » est une erreur plus petite que « léger » plutôt que « sévère ». Le kappa pondéré pénalise moins les quasi-accords que les écarts importants ; le kappa de Cohen non pondéré traite tous les désaccords de la même manière.

Testez vos connaissances

  1. Exécutez-le. Dans la cellule interactive, calculez le kappa de Cohen avec kappa2() pour les deux juges. Remplissez le blanc. Quel est le kappa, et où se situe-t-il sur l’échelle de Landis-Koch ?
  2. Conceptuel. Deux juges étiquettent tous deux 95 % des items « négatif » et s’accordent 92 % du temps, pourtant le kappa est proche de 0. Pourquoi ?

Remplissez le blanc avec kappa2. Comparez le kappa à l’échelle de Landis-Koch. Pour la question 2, réfléchissez à la quantité d’accord que vous attendriez par hasard lorsqu’une catégorie domine.

kappa2(ratings)
#> kappa ≈ 0.7 — substantial agreement.

Pour la question 2 : lorsqu’une catégorie domine (95 % « négatif »), l’accord attendu par hasard est déjà très élevé (~90 %), donc 92 % d’accord observé est à peine au-dessus du hasard — et le kappa, qui divise l’accord au-dessus du hasard par la marge restante au-dessus du hasard, ressort proche de 0. C’est le célèbre « paradoxe du kappa » avec des catégories déséquilibrées.

AstuceQuelle mesure d’accord, et quand ?

Conclusion

Vous savez maintenant calculer le kappa de Cohen en R : construire le tableau de contingence des deux juges, exécuter vcd::Kappa() pour le coefficient corrigé du hasard et confint() pour son intervalle, et lire l’ampleur sur l’échelle de Landis-Koch. Pour plus de deux juges, utilisez le kappa de Light (irr::kappam.light()). Le kappa est la façon honnête de rapporter l’accord catégoriel — toujours avec son intervalle de confiance et l’étiquette de force d’accord.

Leçons connexes

Vous préférez un livre ? Inter-Rater Reliability Essentials est disponible en PDF téléchargeable — toutes les leçons de cette série, hors ligne et à vous.

Obtenir le livre (PDF) →Les leçons restent gratuites en ligne.
Cette page vous a-t-elle été utile ?

Prouvez que vous savez le faire. Maîtrisez toute la série Fidélité inter-juges en R — suivez votre parcours, construisez des projets et obtenez un certificat.

Commencer gratuitement →

Passez à Pro — Prova illimité sur vos propres données et un certificat vérifiable qui atteste la compétence.

dès 15 $/mois facturé annuellement

Passer à Pro →

✓ Vous êtes Pro — continuez. The runtime is the judge.

Recevez les nouvelles leçons R & Python par e-mail

Pratique, reproductible, sans spam. Désinscription à tout moment.

Double opt-in. Nous ne partageons jamais votre e-mail.

Partager cette pageXLinkedInRedditHN
Note

Chaque résultat de cette page a été produit par le code montré, exécuté au moment du build contre un environnement R figé — modifiez n’importe quel bloc et faites Run pour le reproduire vous-même.

Réutilisation

Citation

BibTeX
@online{2026,
  author = {},
  title = {Kappa de Cohen en R : accord inter-juges pour des notations
    catégorielles},
  date = {2026-06-23},
  url = {https://www.datanovia.com/learn/biostatistics/inter-rater-reliability/cohens-kappa-in-r},
  langid = {fr}
}
Veuillez citer ce travail comme suit :
“Kappa de Cohen en R : accord inter-juges pour des notations catégorielles.” 2026. June 23. https://www.datanovia.com/learn/biostatistics/inter-rater-reliability/cohens-kappa-in-r.