Como traçar uma curva roc usando ggplot2 (com exemplos)
A regressão logística é um método estatístico que usamos para ajustar um modelo de regressão quando a variável de resposta é binária. Para avaliar quão bem um modelo de regressão logística se ajusta a um conjunto de dados, podemos observar as duas métricas a seguir:
- Sensibilidade: probabilidade de o modelo prever um resultado positivo para uma observação quando o resultado é realmente positivo.
- Especificidade: a probabilidade de o modelo prever um resultado negativo para uma observação quando o resultado é realmente negativo.
Uma maneira simples de visualizar essas duas métricas é criar uma curva ROC , que é um gráfico que mostra a sensibilidade e a especificidade de um modelo de regressão logística.
Este tutorial explica como criar e interpretar uma curva ROC em R usando o pacote de visualização ggplot2.
Exemplo: curva ROC usando ggplot2
Suponha que ajustemos o seguinte modelo de regressão logística em R:
#load Default dataset from ISLR book data <- ISLR::Default #divide dataset into training and test set set.seed(1) sample <- sample(c( TRUE , FALSE ), nrow (data), replace = TRUE , prob =c(0.7,0.3)) train <- data[sample, ] test <- data[!sample, ] #fit logistic regression model to training set model <- glm(default~student+balance+income, family=" binomial ", data=train) #use model to make predictions on test set predicted <- predict(model, test, type=" response ")
Para visualizar o desempenho do modelo de regressão logística no conjunto de teste, podemos criar um gráfico ROC usando a função ggroc() do pacote pROC :
#load necessary packages library (ggplot2) library (pROC) #define object to plot rocobj <- roc(test$default, predicted) #create ROC plot ggroc(rocobj)
O eixo y exibe a sensibilidade (a taxa verdadeiramente positiva) do modelo e o eixo x exibe a especificidade (a taxa verdadeiramente negativa) do modelo.
Observe que podemos adicionar estilo ao gráfico e também fornecer um título contendo a AUC (área sob a curva) do gráfico:
#load necessary packages library (ggplot2) library (pROC) #define object to plot and calculate AUC rocobj <- roc(test$default, predicted) auc <- round (auc(test$default, predicted), 4 ) #create ROC plot ggroc(rocobj, color = ' steelblue ', size = 2 ) + ggtitle( paste0 (' ROC Curve ', ' (AUC = ', auc, ' ) '))
Observe que você também pode modificar o tema da trama:
#create ROC plot with minimal theme ggroc(rocobj, color = ' steelblue ', size = 2 ) + ggtitle( paste0 (' ROC Curve ', ' (AUC = ', auc, ' ) ')) + theme_minimal()
Consulte este artigo para obter um guia com os melhores temas do ggplot2.