我假設你在集合{0,1}中有二元觀察值。
可以在柏變量的預測值轉換爲[0,1]採用分對數函數範圍:
phat_new = exp(phat)/(1+exp(phat))
現在,你知道的預測值,phat_new,觀測的真正價值,val_y_matrix,並且驗證數據集p中的1的百分比是。繪製ROC的一種方式如下:
修復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曲線上的不同點。
不'ROCR'包工作?如果不是,具體問題是什麼? – smci 2014-03-08 19:41:50