Howto Clyt Roc Curve в R с только известной информацией SN/PPV/Sutoff

StackOverflow https://stackoverflow.com/questions/9308227

  •  25-10-2019
  •  | 
  •  

Вопрос

Приведены такие данные:

#Cutpoint         SN   (1-PPV)
5       0.56    0.01
7       0.78    0.19
9       0.91    0.58

Как я могу построить кривую ROC с помощью R, которые дают такой же результат, как прикрепленный image?

Я знаю пакет ROCR, но это не требует такого вклада.

Это было полезно?

Решение

Если вы просто хотите создать график (без этого глупого интерполяционного сплайна между точками), то просто постройте данные, которые вы даете стандартным способом, подготовив точку на (0,0) и добавив один в (1,1), чтобы дать Конечные точки кривой.

## your data with different labels
dat <- data.frame(cutpoint = c(5, 7, 9),
                  TPR = c(0.56, 0.78, 0.91),
                  FPR = c(0.01, 0.19, 0.58))

## plot version 1    
op <- par(xaxs = "i", yaxs = "i")
plot(TPR ~ FPR, data = dat, xlim = c(0,1), ylim = c(0,1), type = "n")
with(dat, lines(c(0, FPR, 1), c(0, TPR, 1), type = "o", pch = 25, bg = "black"))
text(TPR ~ FPR, data = dat, pos = 3, labels = dat$cutpoint)
abline(0, 1)
par(op)

Чтобы объяснить код: Первый plot() Call устанавливает регион построения, не делая заговора вообще. Обратите внимание, что я заставляю график покрыть диапазон (0,1) по обеим осям. А par() Call сообщает R оси, которые охватывают диапазон данных - по умолчанию расширяет их на 4 процента от диапазона на каждой оси.

Следующая строка, with(dat, lines(....)) рисует кривую ROC, и здесь мы предпочитаем и добавляем точки в (0,0) и (1,1), чтобы дать полную кривую. Здесь я использую type = "o" Чтобы дать переполненные точки, так и линии, точки представлены символом 25, который позволяет заполнить его цветом, здесь черный.

Затем я добавляю этикетки в точки, используя text(....); а pos Аргумент используется для определения метки от фактических координат построения построения. Я беру этикетки из cutpoint объект в кадре данных.

А abline() вызов рисует линию 1: 1 (здесь 0, а также 1 означать перехват 0 И наклон 1 соответственно.

Последняя строка сбрасывает параметры построения по умолчанию, которые мы сохранили op Перед графиком (в первой строке).

Полученный сюжет выглядит так:

enter image description here

Это не точное факсимиле, и я предпочитаю график, используя по умолчанию для диапазонов оси (добавление 4 процента):

plot(TPR ~ FPR, data = dat, xlim = c(0,1), ylim = c(0,1), type = "n")
with(dat, lines(c(0, FPR, 1), c(0, TPR, 1), type = "o", pch = 25, bg = "black"))
text(TPR ~ FPR, data = dat, pos = 3, labels = dat$cutpoint)
abline(0, 1)

enter image description here

Опять же, не настоящий факсимильный, но близкий.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top