Comparando funções de ligação para um cut-off dado
Neste último exercício, você vai ajustar um modelo usando cada uma das três funções de ligação (logit, probit e cloglog), fazer previsões para o conjunto de teste, classificar as previsões no grupo adequado (inadimplente versus não inadimplente) para um cut-off dado, criar uma matriz de confusão e calcular a acurácia e a sensibilidade para cada um dos modelos considerando esse valor de cut-off! Uau, você aprendeu muita coisa até aqui. E, por fim, vai tentar identificar o modelo que tem o melhor desempenho em termos de acurácia dado o valor de cut-off!
É importante saber que as diferenças entre os modelos geralmente serão muito pequenas e, novamente, os resultados dependem do valor de cut-off escolhido. O resultado observado (inadimplente versus não inadimplente) está armazenado em true_val no console.
Este exercício faz parte do curso
Modelagem de Risco de Crédito em R
Instruções do exercício
- Ajuste três modelos de regressão logística usando as ligações
logit,probitecloglog, respectivamente. Parte do código já é fornecida. Useage,emp_cat,ir_cateloan_amntcomo preditores. - Faça previsões para todos os modelos usando o
test_set. - Use um cut-off de 14% para gerar as previsões de cada modelo, de modo que o desempenho possa ser avaliado.
- Crie uma matriz de confusão para os três modelos.
- Por fim, calcule a acurácia de classificação para os três modelos.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# Fit the logit, probit and cloglog-link logistic regression models
log_model_logit <- glm(loan_status ~ age + emp_cat + ir_cat + loan_amnt,
family = binomial(link = logit), data = training_set)
log_model_probit <-
log_model_cloglog <-
# Make predictions for all models using the test set
predictions_logit <- predict(log_model_logit, newdata = test_set, type = "response")
predictions_probit <-
predictions_cloglog <-
# Use a cut-off of 14% to make binary predictions-vectors
cutoff <- 0.14
class_pred_logit <- ifelse(predictions_logit > cutoff, 1, 0)
class_pred_probit <-
class_pred_cloglog <-
# Make a confusion matrix for the three models
tab_class_logit <- table(true_val,class_pred_logit)
tab_class_probit <-
tab_class_cloglog <-
# Compute the classification accuracy for all three models
acc_logit <- sum(diag(tab_class_logit)) / nrow(test_set)
acc_probit <-
acc_cloglog <-