フライス(Fleiss)のカッパ係数(kappa)は、3人以上の評価者の評価が一致している度合いを測定する係数。
- カッパ係数 3 人以上の場合 フライスのカッパ係数 Fleiss’ kappa の計算式
- カッパ係数 3 人以上の場合 Fleiss論文のデータを使って計算してみる
- カッパ係数 3 人以上の場合 irr パッケージの関数を使う場合
- カッパ係数 3 人以上の場合 フライスのカッパ係数の解釈
- まとめ
- 参考サイト
- 参考文献
Cohen’s kappaが二人の評価者の一致度を判断するのに対して、Fleiss’ kappaは三人以上の評価者の一致度を計算することができる。
いわゆるカッパ係数(Cohen’s kappa)はこちら。
https://toukeier.hatenablog.com/entry/2019/05/06/205812toukeier.hatenablog.com
カッパ係数 3 人以上の場合 フライスのカッパ係数 Fleiss’ kappa の計算式
Fleiss’ kappaは以下のとおり計算する。
は被験者内の評価者一致度の平均、は各評価カテゴリへの集中度合いと解釈できる。
ここで、 と は以下のように計算できる。
は被験者番号、 は被験者数、 は評価者数、 は評価カテゴリ番号、 は評価カテゴリ数。
さらに、 と は以下の通り計算する。
カッパ係数 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
この分割表を使って、 と を計算する。
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
よって、は以下のように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) に示された基準によって解釈する。
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) で示されているような慣例的な基準を用いて解釈する。
参考サイト
参考文献
Landis and Koch. The Measurement of Observer Agreement for Categorical Data
コメント