セット {0,1} にバイナリ観測があると仮定します。
ロジット関数を使用して、 phat 変数の予測値を [0, 1] 範囲に変換できます。
phat_new = exp(phat)/(1+exp(phat))
これで、予測値 phat_new、観測値の真の値 val_y_matrix、および検証データセット内の 1 の割合 p が何であるかがわかります。ROC をプロットする 1 つの方法は次のとおりです。
t を修正します。これは、モデルのカットオフしきい値 ([0,1]) です。以下を計算します。
# percentage of 1 observations in the validation set,
p = length(which(val_y_matrix==1))/length(val_y_matrix)
# probability of the model predicting 1 while the true value of the observation is 0,
p_01 = sum(1*(phat_new>=t & val_y_matrix==0))/dim(val_x_matrix)[1]
# probability of the model predicting 1 when the true value of the observation is 1,
p_11 = sum(1*(phat_new>=t & val_y_matrix==1))/dim(val_x_matrix)[1]
# probability of false-positive,
p_fp = p_01/(1-p)
# probability of true-positive,
p_tp = p_11/p
# plot the ROC,
plot(p_fp, p_tp)
ただし、これを行うためのより良い方法があるかどうかは疑問です。たとえば、分類木を使用している場合、損失行列をモデルへの入力として与えることができ、得られるモデルは損失行列のコスト比によって異なります。これは、コスト比を変更することによって、異なるモデルが得られ、異なるモデルが ROC 曲線上の異なるポイントになることを意味します。