統計ER

統計ソフトRの使い方を中心に、統計解析方法の解説をするブログ。ありそうでなかなか見つからないサンプルサイズ計算などニッチな方法について紹介しています。

カッパ係数とは?Cohen's Kappa

kaiseki daiko banner

二人の評価者のカテゴリ評価の一致度を見るのがいわゆるカッパ係数だ。カッパはギリシャ文字のkのカッパ(κ)のこと。Jacob Cohen先生が発明したので、Cohen's Kappaと呼ばれる。これを統計ソフトRで計算してみようと思う。

irr パッケージを使う方法

簡単な方法はパッケージを使う方法。irrパッケージを使う。評価者間信頼度 inter-rater reliability の指標を計算するパッケージだ。

まずはインストールする。インストールは最初の一回だけでOK。

install.packages("irr")

パッケージのインストール方法はこちらも参照。 toukeier.hatenablog.com

呼び出して使えるようにする。これで準備OK。

library(irr)

例としてirrパッケージに含まれるdiagnosesデータセットを使う。これは6人の評価者が30名の患者さんを診察して診断をつけたもの。今回のCohen's Kappaは、二名の評価者の一致度を見る方法なので、1番目と2番目の評価者の評価データを使うことにする。

> diagnoses[,1:2]
                    rater1                  rater2
1              4. Neurosis             4. Neurosis
2  2. Personality Disorder 2. Personality Disorder
3  2. Personality Disorder        3. Schizophrenia
4                 5. Other                5. Other
5  2. Personality Disorder 2. Personality Disorder
6            1. Depression           1. Depression
7         3. Schizophrenia        3. Schizophrenia
8            1. Depression           1. Depression
9            1. Depression           1. Depression
10                5. Other                5. Other
11           1. Depression             4. Neurosis
12           1. Depression 2. Personality Disorder
13 2. Personality Disorder 2. Personality Disorder
14           1. Depression             4. Neurosis
15 2. Personality Disorder 2. Personality Disorder
16        3. Schizophrenia        3. Schizophrenia
17           1. Depression           1. Depression
18           1. Depression           1. Depression
19 2. Personality Disorder 2. Personality Disorder
20           1. Depression        3. Schizophrenia
21                5. Other                5. Other
22 2. Personality Disorder             4. Neurosis
23 2. Personality Disorder 2. Personality Disorder
24           1. Depression           1. Depression
25           1. Depression             4. Neurosis
26 2. Personality Disorder 2. Personality Disorder
27           1. Depression           1. Depression
28 2. Personality Disorder 2. Personality Disorder
29           1. Depression        3. Schizophrenia
30                5. Other                5. Other

評価者1と2の評価を表にまとめると以下のようになる。対角線上の数字が診断が一致している人数だ。必ずしも対角線上だけではないことがわかる。つまり、診断が一致していない患者さんがいることがわかる。

> (tab12 <- table(diagnoses[,1:2]))
                         rater2
rater1                    1. Depression 2. Personality Disorder 3. Schizophrenia 4. Neurosis 5. Other
  1. Depression                       7                       1                2           3        0
  2. Personality Disorder             0                       8                1           1        0
  3. Schizophrenia                    0                       0                2           0        0
  4. Neurosis                         0                       0                0           1        0
  5. Other                            0                       0                0           0        4

カッパ係数を計算してみると0.651と計算された。kappa2()が本体の関数で、()内に二人の評価者の評価データを投入すれば計算終了。

> kappa2(diagnoses[,1:2])
 Cohen's Kappa for 2 Raters (Weights: unweighted)

 Subjects = 30 
   Raters = 2 
    Kappa = 0.651 

        z = 7 
  p-value = 2.63e-12 

0.651がどのような意味を持つかは、以下のような記述を参考にして、判断する。今回の場合は、0.61-0.80の間なのでsubstantial(かなり一致している)と判断できる。

Nonetheless, magnitude guidelines have appeared in the literature. Perhaps the first was Landis and Koch,[13] who characterized values < 0 as indicating no agreement and 0–0.20 as slight, 0.21–0.40 as fair, 0.41–0.60 as moderate, 0.61–0.80 as substantial, and 0.81–1 as almost perfect agreement.

出典: en.wikipedia.org

Step by stepで計算するならどうやるか

カッパ係数は以下のように計算する。

 \displaystyle \kappa = \frac{p_o - p_e}{1 - p_e}

 p_oは実際に一致している評価の割合(対角線上の数値の合計をサンプルサイズで割る)、 p_eは一致する評価の期待値を割合で表したものである。 p_eは以下のように計算する。つまり k番目のカテゴリと判断した評価の数を評価者1と2それぞれの合計を求め掛け合わせ和を計算する。和をサンプルサイズNの2乗で割ると算出される。

 \displaystyle p_e = \frac{1}{N^{2}}\sum_k n_{k1} n_{k2}

計算のスクリプトは以下の通り。期待値は5回同じ作業をするのでfor文を使った。

(po <- sum(diag(tab12))/sum(tab12))

pe.num <- rep(0,5)
for(i in 1:5){
pe.num[i] <- sum(tab12[i,])*sum(tab12[,i])
}
pe.num

(pe <- sum(pe.num)/sum(tab12)^2)

(kappa <- (po-pe)/(1-pe))

 p_o は0.733、 p_e は0.236と計算され、kappaは上記と同様に0.651 と計算された。

> (po <- sum(diag(tab12))/sum(tab12))
[1] 0.7333333

> (pe <- sum(pe.num)/sum(tab12)^2)
[1] 0.2355556

> (kappa <- (po-pe)/(1-pe))
[1] 0.6511628

まとめ

二人の評価者間のカテゴリ形式の評価の一致度を確認するのがいわゆるカッパ係数だ。Cohen's Kappaと呼ぶのが的確だ。統計ソフトRならirr パッケージを使うと簡単だ。

一致度の度合いは「< 0 as indicating no agreement (一致していない)and 0–0.20 as slight(わずかに一致している), 0.21–0.40 as fair(まあまあ一致している), 0.41–0.60 as moderate(中程度に一致している), 0.61–0.80 as substantial(かなり一致している), and 0.81–1 as almost perfect agreement(ほとんど完璧に一致している)」のような慣例に従って判断する。