WeightedROCパッケージを使う。
書式は次の通り。
WeightedROC(guess, label, weight = rep(1, length(label)))
- guess: スコアの数値ベクトル
- label: 真正/負ラベル。一意な2つの値を持つ因子、またはすべての値が0=マイナス,1=プラスまたは1=マイナス,2=プラスまたは-1=マイナス,1=プラスの整数/数値。
- weight: 正のウェイト、デフォルトは1。
guessには尺度で測った得点、labelには診断、weightにはウェイトをいれる。
library(WeightedROC) ## この重み付けされたデータセットのAUCを計算する y <- c(0, 0, 1, 1, 1) w <- c(1, 1, 1, 4, 5) y.hat <- c(1, 2, 3, 1, 1) tp.fp <- WeightedROC(y.hat, y, w) tp.fp
TPR FPR threshold FN FP 1 1.0 1.0 1 0 2 2 0.1 0.5 2 9 1 3 0.1 0.0 3 9 0 4 0.0 0.0 Inf 10 0
- TPR: true positive rate 真陽性率
- FPR: false positive rate 偽陽性率
- FN: false negative count 偽陰性数
- FP: false positive count 偽陽性数
AUC
wauc <- WeightedAUC(tp.fp) wauc
0.325
プロット
if(require(ggplot2)){ gg <- ggplot()+ geom_path(aes(FPR, TPR), data=tp.fp)+ coord_equal() print(gg) }else{ plot(TPR~FPR, tp.fp, type="l") }