2017/05/15
2020/05/04
RでYouden Indexを用いたROC曲線の最適カットオフ
ROC曲線のカットオフの値を決める方法は様々ですが、今回はYouden Indexを用いた、最適カットオフをR言語を用いて探索するプログラムをご紹介します。
R言語について、さらに学びたい方はR言語入門をご覧ください。
Youden Indexによるカットオフとは?
ROC曲線のカットオフの決め方の一つです。具体的には 感度+特異度-1 が最大となるようなカットオフを指します。
感度とは、疾患のある人が陽性になる確率。特異度とは、疾患のない人が陰性となる確率です。この感度と特異度の和を最大にするカットオフがYouden Indexによる方法となります。(下図)
Youden Indexを用いたROC曲線の最適カットオフを見つけ、フィッシャーの正確確率検定を行う自作関数
Youden Indexによるカットオフを探索して、フィッシャーの正確確率検定を行い、結果をcsv形式のファイルで出力する自作関数を作成しました。
yoden_fun(解析データ,出力ファイル名)
としてご利用ください。
出力内容は、名前、カットポイント、分割表の各要素(4つ)、感度、特異度、感度+特異度、正答率、サンプルサイズ
になっております。
※解析データは2列のデータフレーム型で、1列目にカットオフを探索したい列、2列目に真の値を入れるようにしてください。
yoden_fun <- function(data,filename)
{
sum = 0
cut = sort(unique(data[,1]))
for(i in 1:length(sort(unique(data[,1]))))
{
dat = table(data[,2],data[,1]<cut[i])
if(ncol(dat)==1)
{
dat = cbind(dat,0)
}
tokuido =dat[1,2]/(dat[1,1]+dat[1,2])
kando = dat[2,1]/(dat[2,1]+dat[2,2])
if((kando+tokuido)>sum)
{
sum = kando + tokuido
dat2 = dat
cutpoint = cut[i]
}
}
ans <- fisher.test(dat2)
p_value <- ans[1]
tokuido =dat2[1,2]/(dat2[1,1]+dat2[1,2])
kando = dat2[2,1]/(dat2[2,1]+dat2[2,2])
N <- dat2[1]+dat2[2]+dat2[3]+dat2[4]
seitou = (dat2[1,2] + dat2[2,1])/N
result = cbind(colnames(data)[1],cutpoint,dat2[1,2],dat2[2,2],dat2[1,1],dat2[2,1],p_value,kando,tokuido,kando+tokuido,seitou,N)
colnames(result) = c(“名前”,“カットポイント”,“a”,“b”,“c”,“d”,“p値”,“感度”,“特異度”,“感度+特異度”,“正答率”,“N”)
write.table(result,filename,append=T,quote=F,sep=“,”,row.names=F,col.names=T,fileEncoding=“CP932”)
write.table(“”,filename,append=T,quote=F,sep=“,”,row.names=F,col.names=F,fileEncoding=“CP932”)
}
使用例
データフレーム型のdfの2列目と4列目について、探索を行う場合以下のようなプログラムになります。
fn = “yoden.csv”
data = df[,c(2,4)]
yoden_fun(data,fn)
R言語について、さらに学びたい方はR言語入門をご覧ください。
最新投稿記事
-
AIプロジェクトの企画と失敗しない進め方を解説 2021年1月19日
-
AVILEN人材育成コース受講体験談:山田裕之さん「E資格の”その先”を目指して」 2021年1月8日
-
AI導入とは?RPAとの関係、プロセス、事例、メリット、費用を詳細に解説 2020年12月7日
-
注目のAI開発企業11社!支援領域や提供方法など検証! 2020年10月28日
-
AI人材を育成できる研修プログラムを一挙紹介! 2020年10月20日
-
【2021年版】期待のAI資格11選!就職・転職にも使える! 2020年10月18日
-
JDLAとは?G検定、E資格の認定プログラム、合格者の会など紹介! 2020年10月14日
-
G検定(2020#3)受験申し込み開始、11月7日(土)実施-JDLA 2020年10月1日
-
【独占】コロナ禍で人材登録急増、アノテーション単月売上高は4倍超-パソナJOB HUB 2020年10月1日
-
E資格を転職に活用!評判とデータを徹底調査! 2020年9月29日
週間ランキング
【2021年版】コスパ重視のG検定対策!おすすめの本・講座・教材を一挙紹介! 2020年6月6日
G検定に短期間・独学で合格した勉強法を解説! 2020年8月3日
【2021年版】期待のAI資格11選!就職・転職にも使える! 2020年10月18日
G検定は難しい?難易度・合格ライン・問題を徹底解説! 2020年6月19日
注目のAI開発企業11社!支援領域や提供方法など検証! 2020年10月28日
G検定に落ちた人、合格した人。勉強法の違いはどこにある? 2020年6月25日
最弱オセロを初めて攻略した天才オセロ高校生。負け方を解説! 2020年7月31日
【2021年版】E資格とは?大注目のディープラーニングの資格を解説! 2020年9月29日
E資格の難易度を、合格率と問題から徹底分析! 2020年8月11日
MLOpsとは|定義、メリット、課題、ツール、ワークフローを分かりやすく解説 2020年9月18日
