カッパ係数
投稿日2018.3.12 最終更新日2020.10.13
個人的によく利用させていただいております以下のHPをもとに、今回はカッパ係数について少し勉強してみます
統計学入門−第5章
まずはHPに掲載してある次のサンプルデータを使用して、Rを使って処理してみます
分類数が2つの場合
rater01<-c(rep(1,40),rep(2,40),rep(1,10),rep(2,10)) rater02<-c(rep(1,40),rep(2,40),rep(2,10),rep(1,10)) tk <- table(rater01,rater02) addmargins(tk) rater02 rater01 1 2 Sum 1 40 10 50 2 10 40 50 Sum 50 50 100
次にRの関数を使用して求めてみます
install.packages('vcd') library(vcd) Kappa(tk) value ASE z Pr(>|z|) Unweighted 0.6 0.08 7.5 6.382e-14 Weighted 0.6 0.08 7.5 6.382e-14
Z検定のp値を算出
library(irr) # irrの読み込み dk <- cbind(rater01,rater02) kappa2(dk) Cohen's Kappa for 2 Raters (Weights: unweighted) Subjects = 100 Raters = 2 Kappa = 0.6 z = 6 p-value = 1.97e-09 = (1-pnorm(6))*2
分散を求めて95%信頼区間を算出
n <- length(rater01) po <- (40+40)/100 pc <- (50/100)*(50/100)+(50/100)*(50/100) vk <- (po*(1-po))/(n*(1-pc)^2) as.numeric(kappa2(dk)[5])-1.96*sqrt(vk) as.numeric(kappa2(dk)[5])+1.96*sqrt(vk) 0.4432 ~ 0.7568
参考HPと比較してください
分類数が3つの場合
rater02<-c(rep(1,19),rep(2,26),rep(3,4),rep(1,17),rep(1,7),rep(2,7),rep(2,5),rep(3,3),rep(3,12)) rater03<-c(rep(1,19),rep(2,26),rep(3,4),rep(2,17),rep(3,7),rep(1,7),rep(3,5),rep(1,3),rep(2,12)) tk2 <- table(rater02,rater03) addmargins(tk2) rater03 rater02 1 2 3 Sum 1 19 17 7 43 2 7 26 5 38 3 3 12 4 19 Sum 29 55 16 100 d2 <-cbind(rater02, rater03) kappa2(d2) Cohen's Kappa for 2 Raters (Weights: unweighted) Subjects = 100 Raters = 2 Kappa = 0.198 z = 2.8 p-value = 0.00508 #95%信頼区間 n2 <- length(rater03) po2 <- (19+26+4)/100 pc2 <- (43/100)*(29/100)+(38/100)*(55/100)+(19/100)*(16/100) vk2 <- (po2*(1-po2))/(n2*(1-pc2)^2) as.numeric(kappa2(d2)[5])-1.96*sqrt(vk2) as.numeric(kappa2(d2)[5])+1.96*sqrt(vk2) 0.04390565~0.3520686
重み付けカッパ係数
上記の例で、解答1、2、3を順序尺度として考えているので、rankA=一致とした場合に、次のような順序が考えられます
rankA > rankB > rankC
1と3のペアよりも1と2のペアや2と3のペアの方が一致に近いという考え方です
[,1] [,2] [,3] [1,] "rankA" "rankB" "rankC" [2,] "rankB" "rankA" "rankB" [3,] "rankC" "rankB" "rankA"
この重み付けでカッパ係数をRで算出してみます
kappa2(d2, "squared") #自乗距離に応じた重み付け Cohen's Kappa for 2 Raters (Weights: squared) Subjects = 100 Raters = 2 Kappa = 0.196 z = 2 p-value = 0.0453 kappa2(d2, "equal") #均等に重み付け Cohen's Kappa for 2 Raters (Weights: equal) #評価者間の不一致を均等に重み付け Subjects = 100 Raters = 2 Kappa = 0.197 z = 2.67 p-value = 0.0076