Como criar uma matriz de confusão em r (passo a passo)
A regressão logística é um tipo de regressão que podemos usar quando a variável de resposta é binária.
Uma forma comum de avaliar a qualidade de um modelo de regressão logística é criar uma matriz de confusão , que é uma tabela 2×2 que mostra os valores previstos do modelo versus os valores reais do conjunto de dados de teste.
O exemplo passo a passo a seguir mostra como criar uma matriz de confusão em R.
Passo 1: Ajustar o modelo de regressão logística
Para este exemplo, usaremos o conjunto de dados padrão do pacote ISLR . Usaremos o status de estudante, o saldo bancário e a renda anual para prever a probabilidade de uma determinada pessoa deixar de pagar seu empréstimo.
O código a seguir mostra como ajustar um modelo de regressão logística a este conjunto de dados:
#load necessary packages library (caret) library (InformationValue) library (ISLR) #load dataset data <-Default #split dataset into training and testing set set. seeds (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 model <- glm(default~student+balance+income, family=" binomial ", data=train)
Etapa 2: Crie a Matriz de Confusão
A seguir, usaremos a função confusãoMatrix() do pacote circunflexo para criar uma matriz de confusão:
#use model to predict probability of default
predicted <- predict(model, test, type="response")
#convert defaults from "Yes" and "No" to 1's and 0's
test$default <- ifelse(test$default==" Yes ", 1, 0)
#find optimal cutoff probability to use to maximize accuracy
optimal <- optimalCutoff(test$default, predicted)[1]
#create confusion matrix
confusionMatrix(test$default, predicted)
0 1
0 2912 64
1 21 39
Etapa 3: avaliar a matriz de confusão
Também podemos calcular as seguintes métricas usando a matriz de confusão:
- Sensibilidade: A “taxa de positividade verdadeira” – a percentagem de indivíduos que o modelo previu corretamente que entrariam em incumprimento.
- Especificidade: A “taxa verdadeiramente negativa” – a percentagem de indivíduos que o modelo previu corretamente que não entrariam em incumprimento.
- Taxa total de erros de classificação: Porcentagem do total de erros de classificação cometidos pelo modelo.
O código a seguir mostra como calcular essas métricas:
#calculate sensitivity
sensitivity(test$default, predicted)
[1] 0.3786408
#calculate specificity
specificity(test$default, predicted)
[1] 0.9928401
#calculate total misclassification error rate
misClassError(test$default, predicted, threshold =optimal)
[1] 0.027
A taxa total de erro de classificação é de 2,7% para este modelo.
Em geral, quanto menor esta taxa, melhor o modelo é capaz de prever os resultados. Este modelo específico revela-se, portanto, muito eficaz para prever se um indivíduo entrará em incumprimento ou não.