ROC曲線を描く
Rの練習を兼ねて「血中Cペプチド値で1年後のインスリン使用の有無を予測する」という時のROC曲線を描いてみる。
ROCRパッケージを使う。
install.packages("ROCR") library(ROCR) # インスリン治療導入が必要かどうかを判定する時の血中CペプチドのROC曲線を描く。 # インスリン導入必要(0)とインスリン導入不要(1)であった人100人ずつ集めてきたとする。 n1 <- n2 <- 100 # ここではガンマ分布でCペプチドの練習用データを作成する # 血中Cペプチドの分布 sh <- c(2, 10) ra <- c(4, 6) for(i in 1:2){ curve(dgamma(x, shape = sh[i], ra = ra[i]), from = 0, to = 10, col =i, add = T, ylab = "probability", main = "serum C-peptide") } legend("topright", legend=c("insulin", "oral"), col=1:2, lty=1) # 1年後インスリン使用群、不使用群のCペプチド値のデータを作成 ins <- rgamma(n = n1, sh[1], ra[1]) ora <- rgamma(n = n2, sh[2], ra[2]) pred <- prediction(predictions = c(ins, ora), labels = c(rep(0, n1), rep(1, n2))) perf <- performance(pred, "tpr", "fpr") plot(perf) # aucを計算する auc. <- performance(pred,"auc") # performance関数に引数"auc"を入れる auc <- as.numeric(auc.@y.values) # auc.の中からy.valuesを取り出して数値データに auc
参考)
RでのROC解析:ROCRパッケージを使ったROC曲線とAUCの求め方 | K-Lab
[https://mumu.jpn.ph/forest/computer/2017/03/29/8279/:title=[R]{ROCR}チュートリアル | Dr.Clover's Computer Clinic]
久しぶりにRを使った。徐々にできることを増やしていきたい。
今後
・今回ROCRを使ったが、pROCの方ができることが多そう
・異なる判別器のAUCの差の検定
・ロジスティック回帰などの多変量解析からのROC
・カットオフ値の設定方法