Credit Scoring é definido como sendo um modelo estatístico/econométrico o qual atribui uma medida de risco aos clientes de uma instituição financeira ou aos futuros clientes.
Usualmente, a avaliação dos clientes é realizada por meio de um Credit Scorecard o qual é um modelo estatístico para avaliação do risco estruturado de maneira a facilitar a tomada de decisão quanto a liberação do crédito ou não.
O uso de credit scorecard é muito popular principalmente para as organizações que lidam empréstimos como bancos.
Dentre as vantagens da utilização de um credit scorecard podemos listar:
- Credit Scorecard é implementado facilmente e pode ser monitorado ao longo do tempo.
- Pessoas sem o conhecimento técnico em estatística ou econometria podem utilizar facilmente o credit scorecard para tomar decisões.
As principais questões em Credit Score são:
- Quem receberá o crédito ?
- Quanto deverá ser esse crédito ?
- Quais as estratégias para a distribuição e cobrança do crédito ?
Em outras palavras, Credit Score é um conjunto de modelos de decisão e técnicas estatísticas subjacentes que auxiliam os credores na tomada de decisão quanto a concessão de crédito ao consumidor.
Estas técnicas informam quem receberá o crédito, quanto crédito deverá ser fornecido e quais estratégias operacionais melhorarão a rentabilidade dos devedores para os credores (Thomas, Eldelman e Crook, 2002).
Credit Score usando o R.
Para demonstrar como o Credit Score pode ser formulado usando o R, iremos trabalhar com os dados German.csv o qual representa um conjunto de dados de crédito para uma instituição financeira Alemã.Os dados são compostos por 300 empréstimos "ruins" (por exemplo, ausência de pagamento ou atraso) e 700 empréstimos "bons" (por exemplo, pagamentos sem atraso). O objetivo é fornecer insumos para a tomada de decisão quanto aos futuros empréstimos com base nos padrões anteriormente observados.
É comum em Credit Score classificar as contas "ruins" como aquelas contas que em algum período de tempo apresentaram inadimplência por 60 dias ou mais (em empréstimos hipotecários, 90 dias ou mais é por vezes utilizado).
Vamos importar os dados para o R:
1 2 3 4 5 6 7 8 9 10 11 | #Limpa o Workspace rm (list= ls ()) #Importa os dados German.csv #Apresenta as variáveis do DataFrame names (dados.df) #Apresenta a estrutura do DataFrame str (dados.df) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #Transforma em fatores as variáveis categóricas e "dummies" dados.df[, "CHK_ACCT" ] <- as.factor (dados.df[, "CHK_ACCT" ]) dados.df[, "HISTORY" ] <- as.factor (dados.df[, "HISTORY" ]) dados.df[, "NEW_CAR" ] <- as.factor (dados.df[, "NEW_CAR" ]) dados.df[, "USED_CAR" ] <- as.factor (dados.df[, "USED_CAR" ]) dados.df[, "FURNITURE" ] <- as.factor (dados.df[, "FURNITURE" ]) dados.df[, "RADIO.TV" ] <- as.factor (dados.df[, "RADIO.TV" ]) dados.df[, "EDUCATION" ] <- as.factor (dados.df[, "EDUCATION" ]) dados.df[, "RETRAINING" ] <- as.factor (dados.df[, "RETRAINING" ]) dados.df[, "SAV_ACCT" ] <- as.factor (dados.df[, "SAV_ACCT" ]) dados.df[, "EMPLOYMENT" ] <- as.factor (dados.df[, "EMPLOYMENT" ]) dados.df[, "MALE_DIV" ] <- as.factor (dados.df[, "MALE_DIV" ]) dados.df[, "MALE_SINGLE" ] <- as.factor (dados.df[, "MALE_SINGLE" ]) dados.df[, "MALE_MAR" ] <- as.factor (dados.df[, "MALE_MAR" ]) dados.df[, "CO.APPLICANT" ] <- as.factor (dados.df[, "CO.APPLICANT" ]) dados.df[, "GUARANTOR" ] <- as.factor (dados.df[, "GUARANTOR" ]) dados.df[, "TIME_RES" ] <- as.factor (dados.df[, "TIME_RES" ]) dados.df[, "REAL_ESTATE" ] <- as.factor (dados.df[, "REAL_ESTATE" ]) dados.df[, "PROP_NONE" ] <- as.factor (dados.df[, "PROP_NONE" ]) dados.df[, "OTHER_INSTALL" ]<- as.factor (dados.df[, "OTHER_INSTALL" ]) dados.df[, "RENT" ] <- as.factor (dados.df[, "RENT" ]) dados.df[, "OWN_RES" ] <- as.factor (dados.df[, "OWN_RES" ]) dados.df[, "NUM_CREDITS" ] <- as.factor (dados.df[, "NUM_CREDITS" ]) dados.df[, "JOB" ] <- as.factor (dados.df[, "JOB" ]) dados.df[, "NUM_DEPEND" ] <- as.factor (dados.df[, "NUM_DEPEND" ]) dados.df[, "TELEPHONE" ] <- as.factor (dados.df[, "TELEPHONE" ]) dados.df[, "FOREIGN" ] <- as.factor (dados.df[, "FOREIGN" ]) #Variável dependente dados.df[, "RESPONSE" ] <- as.factor (dados.df[, "RESPONSE" ]) #Transforma em numeric dados.df[, "AMOUNT" ] <- as.numeric (dados.df[, "AMOUNT" ]) dados.df[, "INSTALL_RATE" ] <- as.numeric (dados.df[, "INSTALL_RATE" ]) dados.df[, "AGE" ] <- as.numeric (dados.df[, "AGE" ]) dados.df[, "NUM_DEPEND" ] <- as.numeric (dados.df[, "NUM_DEPEND" ]) dados.df[, "DURATION" ] <- as.numeric (dados.df[, "DURATION" ]) |
- Dados para estimação. (Treinamento)
- Dados para teste. (Validação)
1 2 3 4 5 6 7 8 | #Índices obtidos após a aleatorização ordena <- sort ( sample ( nrow (dados.df), nrow (dados.df)*.6)) #Dados para o treinamento treinamento<-dados.df[ordena,] #Dados para a validação validacao<-dados.df[-ordena,] |
1 2 3 4 5 6 7 8 | #Índices obtidos após a aleatorização ordena = sort ( sample ( nrow (dados.df), nrow (dados.df)*.6)) #Dados para o treinamento treinamento<-dados.df[ordena,] #Dados para a validação validacao<-dados.df[-ordena,] |
1 2 3 4 5 | #Regressão Logística modelo.completo <- glm (RESPONSE ~ . ,family=binomial,data=treinamento) #Abordagem Stepwise para seleção de variáveis stepwise <- step (modelo.completo,direction= "both" ) |
1 2 3 4 5 6 7 | #Modelo com as variáveis indicadas pelo Stepwise stepwise <- glm (RESPONSE ~ JOB+NUM_CREDITS+EMPLOYMENT+RETRAINING+NEW_CAR+TELEPHONE+MALE_DIV+ FURNITURE+PROP_NONE+MALE_MAR+RENT+NUM_DEPEND+REAL_ESTATE+EDUCATION+FOREIGN+ TIME_RES, family=binomial,data=treinamento) #Resume os resultados do modelo summary (stepwise) |
1 2 | #Calcula a razão de chances exp ( cbind (OR = coef (stepwise), confint (stepwise))) |
1 2 3 4 5 6 7 8 | #Faz a previsão para a base de validação (probabilidade) predito<- predict (stepwise,validacao,type= "response" ) #Escolhe quem vai ser "1" e quem vai ser "0" predito<- ifelse (predito>=0.8,1,0) #Compara os resultados table (predito,validacao$RESPONSE) |
Logo a nossa taxa de acerto (acurácia) nesse modelo é dada por:
$
Tx.Acerto=\frac{75+166}{400}=\frac{241}{400} \approx 60\%
$
Podemos melhorar a taxa de acerto refinando o modelo por meio da exclusão de variáveis não significantes e pela inclusão de componentes estatisticamente significantes.