【SAS】ROC曲線を描く
PROC LOGISTICのオプションではなくて、予測値と実績値が揃っているデータセットに対し、ROC曲線を描く方法。
ここを参考にしました。
http://www2.sas.com/proceedings/sugi22/POSTERS/PAPER219.PDF
DATAIN = データセット名
LOWLIM = データ分割範囲の下限
UPLIM = データ分割範囲の上限
PROB = 予測契約確率
TF = 実績値("0"か"1"の数値)
NINC = 分割数
デフォルトではデータ範囲を20分割してROC曲線を描きます。
PROC GPLOTで図を描いてますが、ROCのデータセットをエクセルにコピーして、エクセルで図を書いた方がそれっぽくなります。
%MACRO ROC(DATAIN, LOWLIM, UPLIM, PROB, TF, NINC = 20); OPTION MTRACE MPRINT; DATA ROC; SET &DATAIN; LOWLIM = &LOWLIM; UPLIM = &UPLIM; NINC = &NINC; DO I = 1 TO NINC + 1; CUTOFF = LOWLIM + (I - 1) * ((UPLIM - LOWLIM) / NINC); IF &PROB > CUTOFF THEN TEST = 1; ELSE TEST = 0; OUTPUT; END; DROP I; RUN; PROC SORT; BY CUTOFF; RUN; PROC FREQ; BY CUTOFF; TABLES TEST * &TF / OUT = PCTS1 OUTPCT NOPRINT; RUN; DATA TRUEPOS; SET PCTS1; IF &TF = 1 AND TEST = 1; TP_RATE = PCT_COL; DROP PCT_COL; RUN; DATA FALSEPOS; SET PCTS1; IF &TF = 0 AND TEST = 1; FP_RATE = PCT_COL; DROP PCT_COL; RUN; DATA ROC; MERGE TRUEPOS FALSEPOS; BY CUTOFF; IF TP_RATE = . THEN TP_RATE = 0.0; IF FP_RATE = . THEN FP_RATE = 0.0; RUN; PROC GPLOT DATA = ROC; PLOT TP_RATE * FP_RATE = CUTOFF; RUN; %MEND;