On se propose dans cette section de reprendre toutes les connaissances acquises depuis le début de la formation, et de les réinvestir pour ajouter un peu plus de contenu au package.
Plus précisément, nous avons déjà écrit une fonction ccc() implémentant le calcul du coefficient de concordance de Lin (1989), afin de quantifier le degré d’accord entre les mesures produites par deux juges sur des variables numériques. Nous allons désormais une fonction kappa_cohen() implémentant le calcul du Kappa de Cohen (Cohen 1960, 1968), afin de quantifier le degré d’accord entre les mesures produites par deux juges sur des variables qualitatives.
1 Point théorique sur le Kappa de Cohen
Le Kappa de Cohen permet de quantifier l’accord entre deux juges sur la mesure d’un facteur à \(k\) niveaux. Pour simplifier, on n’implémentera ici qu’une version simplifiée du Kappa de Cohen, ne permettant de mesurer qu’un accord portant sur des variables binaires.
Considérons par exemple le dataframe suivant (généré au hasard), où chaque colonne représente les observations effectuées par un juge sur les 15 individus d’un échantillon :
set.seed(17062024)## Créer un dataframe avec deux colonnes binaires :bindat <-data.frame(Obs1 =sample(c("Oui", "Non"), size =15, replace =TRUE),Obs2 =sample(c("Oui", "Non"), size =15, replace =TRUE)) |> dplyr::mutate(across(everything(), as.factor))## Visualiser les 6 premières lignes :head(bindat)
Obs1 Obs2
1 Oui Non
2 Non Oui
3 Oui Oui
4 Oui Oui
5 Oui Oui
6 Oui Oui
La matrice de confusion entre ces deux juges ne montre (assez logiquement !) qu’un accord assez peu satisfaisant entre eux :
## Matrice de confusion entre les deux juges :table(bindat)
Obs2
Obs1 Non Oui
Non 4 1
Oui 5 5
Le but est décrire une fonction kappa.cohen() calculant un degré d’accord entre les deux juges dans une telle situation. Notons sous forme générale la matrice de confusion entre les deux juges pour une variable binaire :
2 Implémenter une fonction pour le calcul du Kappa
Exercice. Ajoutons désormais dans le package {errormes} une fonction implémentant le calcul du Kappa de Cohen. Pour cela :
Commencer par ajouter dans le package le jeu de données bindat ci-dessus. Documenter ce jeu de données et faire les vérifications d’usage.
Écrire une fonction kappa_cohen(scores) pour traduire l’Équation 1. Elle prendra en argument un unique argument scores qui doit être un dataframe à \(n\) lignes et 2 colonnes. On prendra soin d’y ajouter une vérification élémentaire : les 2 colonnes doivent être des facteurs binaires.
Documenter la fonction kappa_cohen() ; se servir du jeu de données bindat pour écrire un exemple.
Écrire un test unitaire pour vérifier le bon fonctionnement de kappa_cohen(). Indice : la valeur du \(\kappa\) pour le jeu de données bindat est censée être égale à \(0.25\).
Bien sûr, tout au long de ce processus, il est conseillé d’effectuer des commits réguliers. À l’issue de ce processus, vous pourrez “checker” une dernière fois le package.
Cohen, Jacob. 1960. « A Coefficient of Agreement for Nominal Scales ». Educational and Psychological Measurement 20 (1): 37‑46. https://doi.org/10.1177/001316446002000104.