Изменение масштаба диаграммы ROC

Я использую следующий код для построения кривой ROC после выполнения логистической регрессии.

fit1 <- glm(formula=GB160M3~Behvscore, data=eflscr,family="binomial", na.action = na.exclude)
prob1=predict(fit1, type=c("response"))
eflscr$prob1 = prob1

library(pROC)
g1 <- roc(GB160M3~prob1, data=eflscr, plot=TRUE,  grid=TRUE, print.auc=TRUE)

Построенные кривые ROC выглядят следующим образом (см. Ссылку ниже)

введите описание изображения здесь

  1. Шкала оси X не заполняет диаграмму ВОЗ.
  2. Как я могу изменить ось x на отчет 1, в частности?

person Manfred    schedule 09.12.2016    source источник
comment
Обратите внимание, что вопрос 1 рассматривается более подробно, в частности, в stackoverflow.com/questions/42057979/   -  person Calimo    schedule 04.09.2020


Ответы (2)


  1. По умолчанию pROC устанавливает asp = 1, чтобы график был квадратным, а чувствительность и специфичность были в одном масштабе. Вы можете установить его на NA или NULL, чтобы освободить ось и заполнить диаграмму, но ваша кривая ROC будет искажена.

    plot(g1, asp = NA)
    

    Использование par(pty="s"), предложенное Джо, вероятно, лучший подход

  2. Это чисто проблема маркировки: обратите внимание, что ось x убывает от 1 до 0, что в точности совпадает с отображением 1-специфичности на возрастающей оси. Вы можете установить для аргумента legacy.axes значение TRUE, чтобы изменить поведение, если вас беспокоит аргумент по умолчанию.

    plot(g1, legacy.axes = TRUE)
    
person Calimo    schedule 24.04.2017

Хороший способ получить квадратный график - выполнить следующее перед построением:

par(pty="s")

Это заставляет форму области графика быть квадратной. Установите максимальное значение области построения, просто перезагрузив графическое устройство и очистив график.

dev.off()

Как указано в @Calimo, есть аргумент legacy.axes, чтобы перевернуть ось x, и метка также изменяется автоматически. Вы можете запустить ?plot.roc, чтобы увидеть все параметры построения графиков pROC.

Пример

# Get ROC object
data(aSAH)
roc1 <- roc(aSAH$outcome, aSAH$s100b)

# Plot
par(pty="s")
plot(roc1, grid = TRUE, legacy.axes = TRUE)

# Reset graphics device and clear plot
dev.off()
person Joe    schedule 09.12.2016
comment
Спасибо, Джо. Позволь мне попробовать это - person Manfred; 14.12.2016
comment
Еще один вопрос. Как изменить фактический масштаб. На данный момент это в порядке убывания от 1 до 0. Я хочу от 0 до 1. - person Manfred; 14.12.2016
comment
Ось x на рисунке OP действительно является специфичностью. Обозначение его как 1-Sp было бы неверным, если бы не поменять местами ось. - person Calimo; 24.04.2017
comment
Согласен с @ Calimo. Принуждение к изменению ярлыка может ввести в заблуждение. Никогда не делай этого. Лучше измените шкалу с 0 на 1 (в порядке возрастания), используя устаревшую версию. аргумент оси. - person Dr Nisha Arora; 29.05.2021
comment
наследие. ось принимает значение TRUE или FALSE (по умолчанию), указывающее, должна ли ось специфичности (ось x) отображаться как убывающая «специфичность» (FALSE, по умолчанию) или возрастающая «1 - специфичность» (TRUE), как в большинстве устаревших программ. Это влияет только на ось, а не на координаты графика. - person Dr Nisha Arora; 29.05.2021
comment
@Joe, расскажите, пожалуйста, как сбросить настройки графика после использования par (pty = s) для этого графика? - person Dr Nisha Arora; 29.05.2021
comment
par(pty="m"). Я добавил это к ответу выше. - person Joe; 30.05.2021
comment
Фактически, вы также можете просто сбросить настройки графического устройства dev.off(). - person Joe; 30.05.2021