Kappa pondéré en R : accord inter-juges pour des notes ordinales

Quand les catégories sont ordonnées, un écart léger doit compter moins qu’un écart important — le kappa pondéré avec pondérations linéaire et quadratique, à la façon de vcd

Apprenez à calculer le kappa pondéré en R — la version du kappa de Cohen pour les échelles de notes ordinales, où les désaccords sont pénalisés selon leur ampleur. Utilisez Kappa() de vcd avec des pondérations linéaire (Cicchetti-Allison) ou quadratique (Fleiss-Cohen), lisez l’intervalle de confiance et choisissez le bon schéma de pondération.

Date de publication

23 juin 2026

Modifié

11 juillet 2026

AstucePoints clés
  • Le kappa pondéré est le kappa de Cohen pour des catégories ordinales (ordonnées) — il pénalise un désaccord selon l’écart entre les deux notes, de sorte qu’un écart léger compte moins qu’un écart important.
  • Calculez-le avec vcd::Kappa(), qui rapporte à la fois le kappa non pondéré (celui de Cohen) et le kappa pondéré, avec confint() pour l’intervalle.
  • Deux schémas de pondération : linéaire (Cicchetti-Allison, "Equal-Spacing") traite chaque pas de façon égale ; quadratique (Fleiss-Cohen) pénalise plus lourdement les écarts importants.
  • Les catégories doivent être ordinales et dans le bon ordre, avec les mêmes niveaux pour les deux juges.
  • Pour des catégories nominales, utilisez le kappa de Cohen ; pour des tableaux 2 × 2, la pondération ne change rien.
Obtenez le livre — Inter-Rater Reliability Essentials (PDF)

Introduction

Le kappa de Cohen ordinaire ne compte que l’accord strict — chaque désaccord est également grave. Mais quand les catégories sont ordinales (ordonnées) — normal < modéré < élevé < très élevé — un désaccord d’un pas est bien moins sérieux qu’un désaccord de trois pas. Le kappa pondéré rend compte de cela en attribuant à chaque cellule hors diagonale une pondération fondée sur l’écart entre les deux notes.

Cette leçon calcule le kappa pondéré avec le paquet vcd et explique les deux schémas de pondération standard.

Note

Hypothèses du kappa pondéré. H₀ : kappa = 0 (accord pas meilleur que le hasard). Hₐ : kappa ≠ 0. Comme pour le kappa de Cohen, rapportez la magnitude et son intervalle de confiance, pas seulement la significativité.

Les données : deux médecins, quatre niveaux d’anxiété ordonnés

Deux médecins ont classé 50 personnes en quatre niveaux d’anxiété ordonnés — normal, modéré, élevé, très élevé. La diagonale du tableau de contingence correspond à l’accord strict ; les cellules juste à côté de la diagonale sont des écarts légers :

anxiety <- as.table(rbind(
  c(11, 3, 1, 0), c(1, 9, 0, 1),
  c(0, 1, 10, 0), c(1, 2, 0, 10)
))
levels4 <- c("Normal", "Moderate", "High", "Very high")
dimnames(anxiety) <- list(Doctor1 = levels4, Doctor2 = levels4)
anxiety
           Doctor2
Doctor1     Normal Moderate High Very high
  Normal        11        3    1         0
  Moderate       1        9    0         1
  High           0        1   10         0
  Very high      1        2    0        10
Avertissement

L’ordre des catégories compte — les niveaux doivent être listés du plus bas au plus haut. Le kappa pondéré utilise cet ordre pour décider quels désaccords sont « légers » et lesquels sont « importants » ; un mauvais ordre donne un mauvais résultat.

library(ggpubr)

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

A balloon-plot heatmap of the 4x4 ordinal anxiety agreement table; the diagonal cells are largest and darkest, with smaller near-diagonal disagreements.

Calculer le kappa pondéré

vcd::Kappa() rapporte côte à côte le kappa non pondéré (le kappa strict de Cohen) et le kappa pondéré. La pondération par défaut est linéaire (equal-spacing) :

library(vcd)

anxiety <- as.table(rbind(
  c(11, 3, 1, 0), c(1, 9, 0, 1), c(0, 1, 10, 0), c(1, 2, 0, 10)
))
levels4 <- c("Normal", "Moderate", "High", "Very high")
dimnames(anxiety) <- list(Doctor1 = levels4, Doctor2 = levels4)

res.k <- Kappa(anxiety)
res.k
            value     ASE     z  Pr(>|z|)
Unweighted 0.7335 0.07524 9.748 1.873e-22
Weighted   0.7475 0.07910 9.449 3.409e-21
confint(res.k)
            
Kappa              lwr       upr
  Unweighted 0.5860073 0.8809436
  Weighted   0.5924352 0.9025143

Le kappa pondéré (linéaire) vaut 0.75, avec un IC à 95 % d’environ [0.59, 0.90] — plus élevé que le kappa non pondéré de 0.73, parce que créditer les écarts légers récompense les quasi-accords des médecins. L’intervalle exclut 0, donc l’accord est significatif.

Pondérations linéaire et quadratique

Deux schémas sont standard — on bascule de l’un à l’autre avec l’argument weights :

library(vcd)

anxiety <- as.table(rbind(
  c(11, 3, 1, 0), c(1, 9, 0, 1), c(0, 1, 10, 0), c(1, 2, 0, 10)
))
levels4 <- c("Normal", "Moderate", "High", "Very high")
dimnames(anxiety) <- list(Doctor1 = levels4, Doctor2 = levels4)

# Linear (Cicchetti-Allison): each step apart is penalised equally
Kappa(anxiety, weights = "Equal-Spacing")$Weighted
     value        ASE 
0.74747475 0.07910327 
# Quadratic (Fleiss-Cohen): far-misses are penalised much more
Kappa(anxiety, weights = "Fleiss-Cohen")$Weighted
     value        ASE 
0.76635514 0.09021823 
  • Linéaire (Cicchetti-Allison) — la pondération est proportionnelle au nombre de catégories d’écart ; un écart d’un pas vaut « deux tiers d’accord », un écart de deux pas « un tiers ». À utiliser quand chaque pas est également important.
  • Quadratique (Fleiss-Cohen) — la pondération croît avec le carré de la distance, de sorte que les écarts importants sont pénalisés bien plus lourdement. À utiliser quand une différence entre catégories adjacentes compte moins qu’une différence entre catégories éloignées.

Ici, le kappa quadratique (0.77) est un peu plus élevé que le linéaire (0.75), parce que les désaccords des médecins sont pour la plupart d’un seul pas, ce que la pondération quadratique pardonne davantage.

Interpréter la magnitude

Utilisez la même échelle de Landis-Koch que pour le kappa de Cohen : 0.41–0.60 modéré, 0.61–0.80 substantiel, 0.81–1.00 quasi parfait. Notre κ pondéré = 0.75 correspond à un accord substantiel sur l’échelle d’anxiété ordinale.

Rapport

Un kappa pondéré avec pondérations linéaires a été calculé pour évaluer l’accord entre deux médecins classant 50 participants en quatre niveaux d’anxiété ordonnés. Il y avait un accord substantiel entre les médecins, κ_w = 0.75 (IC à 95 %, 0.59 à 0.90), p < 0.0001.

Le kappa pondéré généralise le kappa de Cohen en attribuant à chaque cellule une pondération \(w_{ij}\) pour le désaccord entre les catégories \(i\) et \(j\) (avec \(w_{ii} = 1\) sur la diagonale). Il compare l’accord pondéré observé à l’accord pondéré dû au hasard : \(\kappa_w = 1 - \dfrac{\sum_{ij} w'_{ij}\, p_{ij}}{\sum_{ij} w'_{ij}\, p_{i+} p_{+j}}\)\(w'_{ij}\) est la pondération de désaccord. Les pondérations linéaires posent \(w'_{ij} = |i - j|/(k-1)\) ; les pondérations quadratiques posent \(w'_{ij} = (i - j)^2/(k-1)^2\) — le carré fait dominer les désaccords éloignés. Pour un tableau 2 × 2, la seule distance hors diagonale est 1, donc la pondération ne change rien et le kappa pondéré égale le kappa de Cohen.

Essayez en direct

Calculez le kappa pondéré à partir de notes ordinales brutes avec irr::kappa2() et son argument weight ("equal" = linéaire, "squared" = quadratique). Le bac à sable démarre au premier Run.

🟢 Avec un agent IA

Demandez à Prova « mes deux juges ont utilisé une échelle ordinale — calcule le kappa pondéré, choisis entre pondérations linéaire et quadratique, et dis-moi s’ils sont d’accord » — 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 courants

Vos catégories ne sont pas ordinales. Le kappa pondéré n’a de sens que pour des catégories ordonnées. Pour des catégories nominales (non ordonnées), la pondération n’a pas de sens — utilisez le kappa de Cohen ordinaire.

Vos niveaux sont dans le mauvais ordre. Le kappa pondéré utilise l’ordre des niveaux pour mesurer l’écart entre deux notes. Si les niveaux du facteur ne sont pas ordonnés du plus bas au plus haut, les pondérations — et le résultat — sont faux. Définissez l’ordre explicitement.

Vous vous attendiez à ce que la pondération change un résultat 2 × 2. C’est impossible : avec seulement deux catégories, chaque désaccord est d’un seul pas, donc le kappa pondéré égale le kappa non pondéré.

Questions fréquentes

Le kappa pondéré est une version du kappa de Cohen pour les échelles de notes ordinales. Au lieu de traiter chaque désaccord comme également grave, il pondère chaque désaccord selon le nombre de catégories d’écart entre les deux notes, de sorte qu’un écart léger réduit le score moins qu’un écart important. C’est la bonne mesure d’accord lorsque les catégories ont un ordre significatif.

Les pondérations linéaires (Cicchetti-Allison) pénalisent un désaccord proportionnellement au nombre de catégories d’écart — chaque pas compte de façon égale. Les pondérations quadratiques (Fleiss-Cohen) pénalisent selon le carré de la distance, de sorte que les écarts importants sont bien plus pénalisés que les écarts légers. Utilisez les pondérations linéaires quand chaque pas est également important, les quadratiques quand les désaccords éloignés comptent disproportionnellement plus.

Utilisez le kappa pondéré quand vos catégories sont ordinales (ordonnées) et que les désaccords diffèrent en gravité. Utilisez le kappa de Cohen ordinaire pour des catégories nominales où tous les désaccords sont également faux. Pour un tableau 2 × 2, ils donnent la même valeur.

Testez vos connaissances

  1. Exécutez-le. Dans la cellule interactive, calculez le kappa non pondéré, pondéré linéaire et pondéré quadratique pour les notes ordinales. Remplissez le blanc. Comment le kappa change-t-il à mesure que vous ajoutez des pondérations ?
  2. Conceptuel. Deux juges ne sont jamais exactement d’accord mais restent toujours à un niveau d’écart sur une échelle à 5 points. Pourquoi le kappa pondéré serait-il bien plus élevé que le kappa non pondéré dans ce cas ?

Remplissez le blanc avec "equal" (linéaire) ou "squared" (quadratique). Comparez à "unweighted". Pour la question 2, rappelez-vous que la pondération crédite les écarts légers.

kappa2(ratings, weight = "equal")
#> weighted kappa > unweighted, because near-misses get partial credit.

Pour la question 2 : le kappa non pondéré compte chaque « à un niveau près » comme un désaccord complet, ce qui tire le score vers le bas. Le kappa pondéré accorde à ces écarts légers l’essentiel du crédit d’accord, il est donc bien plus élevé — les juges sont réellement d’accord sur l’ordre, ce que le kappa pondéré récompense.

AstuceQuelle mesure d’accord, et quand ?

Conclusion

Vous savez désormais calculer le kappa pondéré en R pour des notes ordinales : construisez le tableau de contingence ordonné, lancez vcd::Kappa() pour le coefficient pondéré et confint() pour son intervalle, et choisissez des pondérations linéaires (equal-spacing) ou quadratiques (Fleiss-Cohen) selon la sévérité avec laquelle les écarts importants doivent être pénalisés. Le kappa pondéré est la mesure d’accord honnête dès lors que les catégories ont un ordre significatif.

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 pondéré en R : accord inter-juges pour des notes
    ordinales},
  date = {2026-06-23},
  url = {https://www.datanovia.com/learn/biostatistics/inter-rater-reliability/weighted-kappa-in-r},
  langid = {fr}
}
Veuillez citer ce travail comme suit :
“Kappa pondéré en R : accord inter-juges pour des notes ordinales.” 2026. June 23. https://www.datanovia.com/learn/biostatistics/inter-rater-reliability/weighted-kappa-in-r.