Confronto delle funzioni di link per un dato cut-off
In questo ultimo esercizio, adatterai un modello usando ciascuna delle tre funzioni di link (logit, probit e cloglog), farai previsioni per il set di test, classificherai le previsioni nel gruppo corretto (in default vs non in default) per un dato cut-off, creerai una matrice di confusione e calcolerai accuracy e sensitivity per ciascun modello dato il valore di cut-off! Wow, hai imparato davvero tanto finora. E infine, proverai a identificare il modello che funziona meglio in termini di accuracy dato il valore di cut-off!
È importante sapere che le differenze tra i modelli saranno in genere molto piccole e, ancora una volta, i risultati dipenderanno dal valore di cut-off scelto. L’esito osservato (in default vs non in default) è memorizzato in true_val nella console.
Questo esercizio fa parte del corso
Credit Risk Modeling in R
Istruzioni dell'esercizio
- Adatta tre modelli di regressione logistica usando rispettivamente i link
logit,probitecloglog. Parte del codice è fornita. Usaage,emp_cat,ir_cateloan_amntcome predittori. - Fai le previsioni per tutti i modelli usando il
test_set. - Usa un valore di cut-off del 14% per generare le previsioni di ciascun modello, così da poterne valutare le prestazioni.
- Crea una matrice di confusione per i tre modelli.
- Infine, calcola la classification accuracy per tutti e tre i modelli.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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 <-