Python:Youden index-カットオフ値、感度・特異度を求める

エンジニア

医療統計で用いられる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を用いる方法、プログラムを紹介しました。

上記プログラムをコピー&ペーストで使用できます。

スポンサーリンク
スポンサーリンク
スポンサーリンク
エンジニアPython
スポンサーリンク
スポンサーリンク
スポンサーリンク
シェアする
kirinをフォローする