医療統計で用いられるYouden indexについて、pythonを用いる方法についてプログラムを提示します。
カットオフ値を求める方法
カットオフ値を求めるには、ROC曲線を用いる方法とYouden indexを用いる方法があります。
ROC曲線は左上に近づくほど良い判定方法ということになるため、左上の隅っこと一番距離が短くなる点をカットオフ値と考えます。
(ROC曲線を用いる方法はこちら)
一方、Youden indexは、ROC曲線とは逆に、AUC=0.5となる右上から左下への斜線から、一番遠い点をカットオフ値にする方法です。
解析するデータ数が少ないと、この2つの方法でカットオフ値の結果は変わってきます。
独学でPythonを学ぶ方におすすめ
リンク
プログラム
プログラム作成
pythonプログラム(例)。
from sklearn import metrics
import pandas as pd
import numpy as np
df = pd.read_csv("ファイル.csv")
y_true = df["X"]
y_score = df["Y"]
fpr, tpr, thresholds = metrics.roc_curve(y_true, y_score)
Youden_index_candidates = tpr-fpr
index = np.where(Youden_index_candidates==max(Youden_index_candidates))[0][0]
cutoff = thresholds[index]
kando = tpr[index]
tokuido = 1 - fpr[index]
print(cutoff,"感度:",kando,"特異度:",tokuido)
このプログラムで、「感度」「特異度」「カットオフ値」が求められます。
実行
キーボード「F5」をクリック
もしくは、「Run」→「Run Module」をクリックしてプログラムを実行
結果
このように別ページで結果(青字)が表示されます↓
2.3 感度:0.953 特異度:0.950
>>>
まとめ
Youden indexにより感度、特異度、カットオフ値を求めるために、pythonを用いる方法、プログラムを紹介しました。
上記プログラムをコピー&ペーストで使用できます。