Специфичность / чувствительность по сравнению с точками среза с использованием пакета pROC
Мне нужно построить следующий график, чтобы я мог выбрать оптимальный порог для модели логистической регрессии.
Однако я не могу использовать пакеты (epi и roc), которые используются во многих исследованиях, которые я провел. У меня есть пакет PROC. Есть ли в любом случае для построения графика с помощью этого пакета. Также, как еще я могу выбрать оптимальный порог? Как это работает, используя только кривую ROC?
1 ответ
Если вы используете пакет pROC, первым шагом является извлечение координат кривой. Например:
library(pROC)
data(aSAH)
myroc <- roc(aSAH$outcome, aSAH$ndka)
mycoords <- coords(myroc, "all")
Когда у вас есть это, вы можете построить все что угодно. Это должно быть несколько близко к вашему примеру.
plot(mycoords["threshold",], mycoords["specificity",], type="l",
col="red", xlab="Cutoff", ylab="Performance")
lines(mycoords["threshold",], mycoords["sensitivity",], type="l",
col="blue")
legend(100, 0.4, c("Specificity", "Sensitivity"),
col=c("red", "blue"), lty=1)
Выбор "оптимальной" точки отсечения так же сложен, как и определение оптимального в первую очередь. Это сильно зависит от контекста и вашего приложения. Распространенным способом является использование индекса Юдена, который является просто точкой с отсечкой с максимумом (специфичность + чувствительность). Снова с PROC:
best.coords <- coords(myroc, "best", best.method="youden")
abline(v=best.coords["threshold"], lty=2, col="grey")
abline(h=best.coords["specificity"], lty=2, col="red")
abline(h=best.coords["sensitivity"], lty=2, col="blue")
С помощью pROC вы можете изменить критерии для "лучшего" порога. Смотрите страницу справки ?ordins и best.method
а также best.weights
Аргументы за быстрые способы настройки. Возможно, вы захотите взглянуть на пакет OptimalCutpoints для более продвинутых способов выбора собственного оптимума.
Выходной график должен выглядеть примерно так: