MENU

R で 3 人以上の評価者のカッパ係数 フライスのカッパ係数を計算する方法

フライス(Fleiss)のカッパ係数(kappa)は、3人以上の評価者の評価が一致している度合いを測定する係数。

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

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

目次

カッパ係数には 2 人の場合と 3 人以上の場合の 2 種類がある

Cohen’s kappa が二人の評価者の一致度を判断するのに対して、Fleiss’ kappa は三人以上の評価者の一致度を計算することができる。

いわゆるカッパ係数(Cohen’s kappa)はこちら。

カッパ係数 3 人以上の場合 フライスのカッパ係数 Fleiss’ kappa の計算式

Fleiss’ kappa は以下のとおり計算する。

$ \bar{P} $ は被験者内の評価者一致度の平均、 $ \bar{P_e} $ は各評価カテゴリへの集中度合いと解釈できる。

$$ \kappa = \frac{\bar{P} – \bar{P_e}}{1 – \bar{P_e}} $$

ここで、$ \bar{P} $ と $ \bar{P_e} $ は以下のように計算できる。

i は被験者番号、N は被験者数、n は評価者数、j は評価カテゴリ番号、k は評価カテゴリ数。

$$ \bar{P} = \frac{1}{N} \sum_{i=1}^N P_i $$

$$ \bar{P_e} = \sum_{j=1}^k p_i^2

さらに、$ P_i $ と $ p_j $ は以下の通り計算する。

$$ P_i = \frac{1}{n(n – 1)} \sum_{j=1}^k n_{ij} (n_{ij} – 1) $$

$$ p_j = \frac{1}{Nn} \sum_{i=1}^N n_{ij} $$

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

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

カッパ係数 3 人以上の場合 Fleiss論文のデータを使って計算してみる

統計ソフトRのirrパッケージにdiagnosesというデータセットがある。

これはFleiss’ kappaを発明した時のデータである。

これを使うことにする。

まず、irr パッケージをインストールする。

一回インストールすれば、その次からはいらない。

install.packages("irr")

library()で呼び出し、data()でデータセットを使えるようにする。これで準備完了。

library(irr)
data(diagnoses)

diagnosesの構造をstr()で見てみると、6人の評価者の30人の患者さんに対する評価が格納されていることがわかる。

> str(diagnoses)
'data.frame':   30 obs. of  6 variables:
$ rater1: Factor w/ 5 levels "1. Depression",..: 4 2 2 5 2 1 3 1 1 5 ...
$ rater2: Factor w/ 5 levels "1. Depression",..: 4 2 3 5 2 1 3 1 1 5 ...
$ rater3: Factor w/ 5 levels "1. Depression",..: 4 2 3 5 2 3 3 3 4 5 ...
$ rater4: Factor w/ 5 levels "1. Depression",..: 4 5 3 5 4 3 3 3 4 5 ...
$ rater5: Factor w/ 5 levels "1. Depression",..: 4 5 3 5 4 3 5 3 4 5 ...
$ rater6: Factor w/ 4 levels "2. Personality Disorder",..: 3 4 4 4 3 2 4 3 3 4 ...

データの構造を変えて、30人分の id、6人の評価者 rater、それぞれの評価 rating1 というデータセットにする。

id <- rep(1:30,6)
rater <- sort(rep(1:6,30))
rating <- matrix(rep(0,180),nc=6)
rating
for (i in 1:6){
rating[,i] <- as.numeric(strtrim(diagnoses[,i],1))
}
rating
rating1 <- c(rating[,1],rating[,2],rating[,3],rating[,4],rating[,5],rating[,6])
rating1
dat <- data.frame(id,rater,rating1)
dat

出来上がりはこちら。全部を掲示すると180行になるので、先頭40行で割愛。

> dat
id rater rating1
1    1     1       4
2    2     1       2
3    3     1       2
4    4     1       5
5    5     1       2
6    6     1       1
7    7     1       3
8    8     1       1
9    9     1       1
10  10     1       5
11  11     1       1
12  12     1       1
13  13     1       2
14  14     1       1
15  15     1       2
16  16     1       3
17  17     1       1
18  18     1       1
19  19     1       2
20  20     1       1
21  21     1       5
22  22     1       2
23  23     1       2
24  24     1       1
25  25     1       1
26  26     1       2
27  27     1       1
28  28     1       2
29  29     1       1
30  30     1       5
31   1     2       4
32   2     2       2
33   3     2       3
34   4     2       5
35   5     2       2
36   6     2       1
37   7     2       3
38   8     2       1
39   9     2       1
40  10     2       5

この180行のデータを、患者さん x 評価カテゴリの30 x 6 の分割表にする。

> (tab <- table(id,rating1))
rating1
id   1 2 3 4 5
1  0 0 0 6 0
2  0 3 0 0 3
3  0 1 4 0 1
4  0 0 0 0 6
5  0 3 0 3 0
6  2 0 4 0 0
7  0 0 4 0 2
8  2 0 3 1 0
9  2 0 0 4 0
10 0 0 0 0 6
11 1 0 0 5 0
12 1 1 0 4 0
13 0 3 3 0 0
14 1 0 0 5 0
15 0 2 0 3 1
16 0 0 5 0 1
17 3 0 0 1 2
18 5 1 0 0 0
19 0 2 0 4 0
20 1 0 2 0 3
21 0 0 0 0 6
22 0 1 0 5 0
23 0 2 0 1 3
24 2 0 0 4 0
25 1 0 0 4 1
26 0 5 0 1 0
27 4 0 0 0 2
28 0 2 0 4 0
29 1 0 5 0 0
30 0 0 0 0 6

この分割表を使って、$ \bar{P} $ と $ \bar{P_e} $ を計算する。

N <- 30
n <- 6
k <- 5
pj <- rep(0,k)
pj
for (j in 1:k){
pj[j] <- 1/(N*n)*sum(tab[,j])
}
pj
Pi <- rep(0,N)
Pi
Pij <- rep(0,k)
Pij
for (i in 1:N){
for (j in 1:k){
Pij[j] <- tab[i,j]*(tab[i,j]-1)
}
Pi[i] <- 1/(n*(n-1))*sum(Pij)
}
Pi
(P.bar <- sum(Pi)/N)
(Pe.bar <- sum(pj^2))

結果は、以下の通り。

> (P.bar <- sum(Pi)/N)
[1] 0.5555556
>
> (Pe.bar <- sum(pj^2))
[1] 0.2199383

よって、$ \kappa $ は以下のように0.430と計算される。

> (fleiss.kappa <- (P.bar - Pe.bar)/(1 - Pe.bar))
[1] 0.4302445

カッパ係数 3 人以上の場合 irr パッケージの関数を使う場合

この場合はとても簡単に計算できる。

diagnosesの形式(評価者ごとの被験者の評価が列になった形式)のデータセットをkappam.fleiss()に投入するだけで計算結果が出力される。

diagnosesの形式をもう少し理解するために、先頭と最後の部分を表示してみると以下の通り。

> head(diagnoses)
rater1                  rater2                  rater3           rater4           rater5           rater6
1             4. Neurosis             4. Neurosis             4. Neurosis      4. Neurosis      4. Neurosis      4. Neurosis
2 2. Personality Disorder 2. Personality Disorder 2. Personality Disorder         5. Other         5. Other         5. Other
3 2. Personality Disorder        3. Schizophrenia        3. Schizophrenia 3. Schizophrenia 3. Schizophrenia         5. Other
4                5. Other                5. Other                5. Other         5. Other         5. Other         5. Other
5 2. Personality Disorder 2. Personality Disorder 2. Personality Disorder      4. Neurosis      4. Neurosis      4. Neurosis
6           1. Depression           1. Depression        3. Schizophrenia 3. Schizophrenia 3. Schizophrenia 3. Schizophrenia
> tail(diagnoses)
rater1                  rater2                  rater3                  rater4                  rater5           rater6
25           1. Depression             4. Neurosis             4. Neurosis             4. Neurosis             4. Neurosis         5. Other
26 2. Personality Disorder 2. Personality Disorder 2. Personality Disorder 2. Personality Disorder 2. Personality Disorder      4. Neurosis
27           1. Depression           1. Depression           1. Depression           1. Depression                5. Other         5. Other
28 2. Personality Disorder 2. Personality Disorder             4. Neurosis             4. Neurosis             4. Neurosis      4. Neurosis
29           1. Depression        3. Schizophrenia        3. Schizophrenia        3. Schizophrenia        3. Schizophrenia 3. Schizophrenia
30                5. Other                5. Other                5. Other                5. Other                5. Other         5. Other

Fleiss’ kappaを計算すると0.43と表示される。

> kappam.fleiss(diagnoses)
Fleiss' Kappa for m Raters
 Subjects = 30 
   Raters = 6 
    Kappa = 0.43 
        z = 17.7 
  p-value = 0 

カッパ係数 3 人以上の場合 フライスのカッパ係数の解釈

例えば、Landis and Koch (1977) に示された基準によって解釈する。

$ \kappa $Interpretation
< 0Poor
0.01 – 0.20Slight
0.21 – 0.40Fair
0.41 – 0.60Moderate
0.61 – 0.80Substantial
0.81 – 1.00Almost perfect

まとめ

三人以上の評価者による評価の一致度を測る係数はフライスのカッパ係数 Fleiss’ kappa と呼ばれる数値である。

統計ソフトRのirr パッケージに含まれるkappam.fleiss()を使えば簡単に計算できる。

結果はLandis and Koch (1977) で示されているような慣例的な基準を用いて解釈する。

参考サイト

https://en.wikipedia.org/wiki/Fleiss%27_kappa#Interpretation

参考文献

Landis and Koch. The Measurement of Observer Agreement for Categorical Data

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

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

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

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

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

統計解析が趣味

コメント

コメントする

目次