κ係数と重み付きκ係数(wカッパ):重み付きカッパはEZRで出来ないのでPythonでしてみた。
どうも。新居に引っ越ししたのですが、◯条工務店に出入りしているGuです。
いきなりのカミングアウトすみません。
κ係数と重み付きκ係数(wカッパ):重み付きカッパはEZRで出来ないのでPythonでしてみた。
(まず、タイトル長い。)
kappa(κ)係数は、順序尺度の検査の一致度をみるものです。
理学療法や作業療法だと、MAS(Modified Ashworth Scale)が有名でしょうか?
κ係数と重み付きκ係数の違いを文字で復習します。
MASを評価する場合、1と4って間違えます??
普通は間違えないですよね?
でも、1と1+であれば、間違えそうじゃないですか?
κ係数の場合は、1と4を間違えても、1と1+を間違えても同じように下がります。でも、1と4を間違える重さと、1と1+を間違える重さって違いますよね?
ということで、重み付きκ係数の登場です。1と4では、重み付きκ係数は下がりますが、1と1+だとあまり下がらないというのが重み付きκ係数です。
ということは、感覚的にですが、κ係数が0.3くらいで、重み付きκ係数が0.8の検査だと、完全に一致はしないかもしれないが、そこそこ近い値となるという感じで解釈しています。
Rコマンダーでκ係数を計算
非常に簡単です。(インポートして、κ係数を押すだなので、解説してもしかたがありません。一応、以前の記事を載せておくので参考にしてください。)
重み付きκ係数はEZRも改変Rコマンダーも出来なかったのでPythonでしてみました。
使用するデータはこちら↓。
検査者AとBが入っていますね。
先に完成形の写真を載せます。
正味、これをコピペするだけです。
scikit-learnはインストールしておいてください。
import pandas as pd
from sklearn.metrics import confusion_matrix, cohen_kappa_score
y_true = df["A"]
y_pred = df["B"]
print("#############Confusion Matrix#############")
conmat = confusion_matrix(y_true, y_pred)
print("RAW: y_true, COLUMN: y_label")
print(conmat)
print("##########################################\n")
k = cohen_kappa_score(y_true, y_pred, weights='quadratic')
print("Weighted Kappa k: {:.3f}".format(k))
これを実行すると、重み付きκ係数がでます。こんな感じにでます↓
Weighted Kappa k: 0.695
よければ、ダウンロードもあります↓
少し難しいかもしれませんが、解説サイトもありました。
https://www.stats-guild.com/analytics/5396