フライス(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} $$
カッパ係数 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 |
---|---|
< 0 | Poor |
0.01 – 0.20 | Slight |
0.21 – 0.40 | Fair |
0.41 – 0.60 | Moderate |
0.61 – 0.80 | Substantial |
0.81 – 1.00 | Almost 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
コメント