trazar ROC en R con ROCR vs pROC
(3)
Estoy trazando los ROC y midiendo el AUC parcial como una métrica de la calidad del modelo de nicho ecológico. Mientras trabajo en R, estoy usando los paquetes ROCR y pROC. Me conformaré con uno para usar, pero por ahora, solo quería ver cómo se desempeñaban, y si uno satisfacía mejor mis necesidades.
Una cosa que me confunde es que, al trazar una ROC, los ejes son los siguientes:
ROCR
x axis: ''true positive rate'' 0 -> 1
y axis: ''false positive rate'', 0 -> 1
pROC
x axis: ''sensitivity'' 0 -> 1
y axis: ''specificity'' 1 -> 0.
Pero si grafico la ROC usando ambos métodos, se ven idénticos. Así que solo quiero confirmar que:
true positive rate = sensitivity
false positive rate = 1 - specificity.
Aquí hay un ejemplo reproducible:
obs<-rep(0:1, each=50)
pred<-c(runif(50,min=0,max=0.8),runif(50,min=0.3,max=0.6))
plot(roc(obs,pred))
ROCRpred<-prediction(pred,obs)
plot(performance(ROCRpred,''tpr'',''fpr''))
Para confirmar, tiene razón en que la tasa verdadera positiva = sensibilidad y la tasa falsa positiva = 1 - especificidad. En su ejemplo, el orden en el que grafica los componentes del objeto de rendimiento ROCR
paquete ROCR
es clave. En la última línea, la primera medida de rendimiento, la tasa verdadera positiva, ''tpr'' se traza en la measure = ''tpr''
eje y measure = ''tpr''
y la segunda medida de rendimiento, la tasa de falsos positivos, se traza en el eje x x. x.measure = ''fpr''
plot(performance(ROCRpred, measure = ''tpr'', x.measure = ''fpr''))
Por lo que sé:
TPR = sensitivity = TP/(TP/FN) -> y axis: [0, 1]
FPR = 1 - specificity = 1 - (TN/(FP+TN)) -> x axis: [0, 1]
Pero, cuando el gráfico muestra la especificidad (tasa negativa verdadera) en el eje x, el rango es [1, 0].
En ambos casos, la gráfica es la misma.
Puedes comprobarlo here en la página de wikipedia.
Solo para decir, para el paquete pROC
si incluye lo siguiente en su código de parcela:
plot(roc(obs,pred), legacy.axes = TRUE)
entonces terminas con un eje x invertido.