井出草平の研究ノート

ケースに重みづけをするROC分析

WeightedROCパッケージを使う。

www.rdocumentation.org

書式は次の通り。

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")
}