MENU

R でカッパ係数を計算する方法

二人の評価者のカテゴリ評価の一致度を見るのがいわゆるカッパ係数だ。

カッパはギリシャ文字のkのカッパ(κ)のこと。

Jacob Cohen先生が発明したので、Cohen’s Kappaと呼ばれる。

これを R で計算してみようと思う。

>>もう統計で悩むのは終わりにしませんか? 

↑期間・数量限定で無料プレゼント中!

目次

irr パッケージを使う方法

簡単な方法はパッケージを使う方法。

irrパッケージを使う。

評価者間信頼度 inter-rater reliability の指標を計算するパッケージだ。

まずはインストールする。

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

install.packages("irr")

呼び出して使えるようにする。

これで準備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.

出典:https://en.wikipedia.org/wiki/Cohen%27s_kappa#Significance_and_magnitude

日本語にしてみると以下のような感じになる。

  • < 0 as indicating no agreement (一致していない)
  • 0–0.20 as slight(わずかに一致している)
  • 0.21–0.40 as fair(まあまあ一致している)
  • 0.41–0.60 as moderate(中程度に一致している)
  • 0.61–0.80 as substantial(かなり一致している)
  • 0.81–1 as almost perfect agreement(ほとんど完璧に一致している)

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

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

$$ \kappa = \frac{p_o – p_e}{1 – p_e} $$

$ p_o $ は実際に一致している評価の割合(対角線上の数値の合計をサンプルサイズで割る)、$ p_e $ は一致する評価の期待値を割合で表したものである。

$ p_e $ は以下のように計算する。

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

つまり k 番目のカテゴリと判断した評価の数を評価者1と2それぞれの合計を求め掛け合わせ和を計算する。

和をサンプルサイズ N の2 乗で割ると算出される。

計算のスクリプトは以下の通り。

期待値は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

>>もう統計で悩むのは終わりにしませんか? 

↑1万人以上の医療従事者が購読中

まとめ

二人の評価者間のカテゴリ形式の評価の一致度を確認するのがいわゆるカッパ係数だ。

Cohen’s Kappaと呼ぶのが的確だ。

R ならirr パッケージを使うと簡単だ。

参考になれば。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

リサーチクエスチョン探し?データ分析?論文投稿?、、、で、もう悩まない!

第1章臨床研究ではなぜ統計が必要なのか?計画することの重要性
  • 推定ってどんなことをしているの?
  • 臨床研究を計画するってどういうこと?
  • どうにかして標本平均を母平均に近づけられないか?
第2章:研究目的をどれだけ明確にできるのかが重要
  • データさえあれば解析でどうにかなる、という考え方は間違い
  • 何を明らかにしたいのか? という研究目的が重要
  • 研究目的は4種類に分けられる
  • 統計専門家に相談する上でも研究目的とPICOを明確化しておく
第3章:p値で結果が左右される時代は終わりました
  • アメリカ統計協会(ASA)のp値に関する声明で指摘されていること
  • そうは言っても、本当に有意差がなくてもいいの…?
  • なぜ統計専門家はp値を重要視していないのか
  • 有意差がない時に「有意な傾向があった」といってもいい?
  • 統計を放置してしまうと非常にまずい
第4章:多くの人が統計を苦手にする理由
  • 残念ながら、セミナー受講だけで統計は使えません。
  • インプットだけで統計が使えない理由
  • どうやったら統計の判断力が鍛えられるか?
  • 統計は手段なので正解がないため、最適解を判断する力が必要
第5章:統計を使えるようになるために今日から何をすれば良いか?
  • 論文を読んで統計が使えるようになるための5ステップ
第6章:統計を学ぶために重要な環境
  • 統計の3つの力をバランスよく構築する環境

以下のボタンをクリックして、画面に出てくる指示に従って、必要事項を記入してください。

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

統計解析が趣味

コメント

コメント一覧 (1件)

コメントする

目次