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.

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *