MODELO CREDIT SCORING - LAGOBO LIBRANZAS

1. INTRODUCCIÓN

Este informe presenta el desarrollo de un modelo de credit scoring (Sistema automatizado de calificación de crédito), que le permitirá a la entidad identificar la probabilidad de incumplimiento de un cliente en la etapa de otorgación del crédito por libranza y se desarrollará con la información de los clientes que han solicitado algún crédito entre los años 2020 y 2022. La metodología a implementar pretende identificar las principales variables a tener en cuenta al momento de medir la probabilidad de ocurrencia en pago de estos clientes y así poderlos clasificar en diferentes perfiles de riesgo.

Finalmente, con los resultados que se obtengan, se pretende emitir una serie de recomendaciones hacía la entidad con el fin de evaluar la implementación del modelo dentro del proceso de otorgación de crédito por libranza.

2. OBJETIVOS

2.1 Objetivo general:

Diseñar un modelo de scoring que permita identificar a probabilidad de incumplimiento en la etapa de otorgamiento de un crédito por libranza.

2.2 Objetivos específicos:

  • Proporcionar una evaluación más precisa del riesgo crediticio asociado con cada solicitante. Este enfoque tiene la intención de reducir las pérdidas asociadas con la concesión de crédito a clientes de alto riesgo y, al mismo tiempo, facilitar el acceso al crédito para aquellos con un menor riesgo crediticio.

  • Aumentar la eficiencia operativa al automatizar la evaluación de riesgos. Al reducir la carga de trabajo manual asociada con la toma de decisiones, se espera mejorar los tiempos de respuesta y reducir los costos operativos.

  • Garantizar el cumplimiento normativo. El modelo de scoring se diseñará considerando las regulaciones aplicables, contribuyendo así a un proceso de toma de decisiones que cumple con los estándares legales y éticos.

  • Desarrollar un modelo que sea adaptable a cambios en los datos y que mantenga su rendimiento predictivo a lo largo del tiempo.

  • Realizar las pruebas correspondientes a los modelos estimados, con el fin de seleccionar el modelo que estadísticamente refleje la realidad.

3. MODELO LOGIT:

El modelo logístico arroja un resultado binario, en donde la variable dependiente toma el valor de 0 o de 1, siendo un modelo de predicción de probabilidad de ocurrencia de una variable dicotómica categórica. La regresión binaria es un tipo de análisis de regresión, donde la variable dependiente es una variable dummy, ejemplo: Buen cliente (0) o Mal cliente (1)

A continuación se describen las variables a utilizar en el modelo.

Variables cuantitativas.

Variables Descripción
Edad Edad del cliente al momento de la otorgación del crédito
Ingresos Valor de la mesada pensional
Descuentos Valor de los descuentos registrados en despendible de pago
Monto Valor aprobado del crédito
Score Puntaje en centrales de riesgo
Plazo Número de meses pactados con el cliente.

Variables cualitativas (categoricas):

Variables Descripción
Genero Sexo del cliente (Masculino o Femenino)
Nivel_Academico Nivel de escolaridad del cliente
Estado_Civil Estado civil actual descrito por el cliente
Tipo_Vivienda Tipo familiar, propia o arrendada
Estrato Estrato sociodemografico (1 al 6)
Empresa Pagaduría del cliente
Region Region donde reside el cliente
Region_Nacimiento Region donde nació el cliente
Perfil Perfil de riesgo designado al cliente (Tipo A, B C o D)
Canal Canal de originación del crédito (Interno, extero, almacen)
Destino Destino del crédito (Libre inversión, retanqueo, compra)
Default Variable que toma valores de 0 o 1 (0 = Al día/1 = En Mora)
Dpto_Residencia Departamento de residencia del cliente
Entidad Agrupa las pagadurias por tipo de convenio

Transformación de variables categoricas a factores (nominales).

Como recomendación todas aquellas variables cualitativas deben ser transformadas a tipo factor, es decir, asignarles un valor que las identifica, por ejemplo:

  • 1 = Masculino
  • 2 = Femenino
datos = datos %>% 
  mutate(Genero= as.factor(Genero),
         Estado_Civil = as.factor(Estado_Civil),
         Perfil = as.factor(Perfil),
         Canal = as.factor(Canal),
         Region = as.factor(Region),
         Destino = as.factor(Destino),
         Estrato = as.factor(Estrato),
         Empresa = as.factor(Empresa),
         Entidad = as.factor(Entidad),
         Dpto_Residencia = as.factor(Dpto_Residencia),
         Tipo_Vivienda = as.factor(Tipo_Vivienda))

Transformación de variables categoricas a factores (ordinales).

Por otro lado se realiza la transformación de variables categoricas a factores ordinales, en este caso, se le da une jerarquia a la variable. El nivel educativo puede ser categorizada como variable ordinal ya que se puede jerarquizar por niveles de la siguiente manera:

  1. Ninguna
  2. Primaria
  3. Bachillerato
  4. Tecnico
  5. Profesional
  6. Maestria

ANALISIS EXPLORATORIO DE DATOS

El análisis exploratorio de datos (AED) es una fase inicial en el proceso de análisis de datos que tiene como objetivo examinar y comprender la naturaleza de los datos antes de realizar inferencias estadísticas formales o modelado. El AED se realiza típicamente utilizando técnicas gráficas y descriptivas para resumir y visualizar los datos. En este punto se puede identificar los patrones o tendencias que tienen las variables a analizar, así mismo se pretende detectar anomalías o errores en la base de datos.

Para el caso en estudio contamos con un set de datos de 25 variables y 9.866 observaciones. A continuación se mostrará la distribución de los clientes buenos y malos que serán caso de estudio.

## 
##    0    1 
## 9147  719
## 
##    0    1 
## 92.7  7.3

La base cuenta con 719 (7.3%) registros de clientes morosos y 9147 (92.7%) clientes al día.

Después de validada la variable Defautl, lo mismo se realizará con las demás variables categóricas.

## 
##  Femenino Masculino 
##      4445      5421
## 
##  Femenino Masculino 
##      45.1      54.9

Se encuentran 5421 hombres y 4445 mujeres en la base de estudio.

VARIABLES NUMERICAS

Así como se analizó previamente las variables categoricas, se requiere dentro del AED, validar como se comportan cada una de las variables cuantitativas que serán motivo de análisis. Incialmente se realiza el cálculo de algunas estadisticas relevantes, a continuación se dará una breve descripción de cada una de ellas.

  • Media: También llamada promedio hace referencia a la suma de todos los valores en un conjunto de datos dividida por el número de valores.
  • Mediana: El valor medio de un conjunto de datos, tal que la mitad de los valores son mayores y la otra mitad son menores.
  • Desviacion estandar: Medida de la dispersión o variabilidad de un conjunto de datos con respecto a su media.
  • Maximo: El valor más grande en un conjunto de números o la cima de una función en un punto específico.
  • Minimo: El valor más pequeño en un conjunto de números o la cima de una función en un punto específico.
  • Deciles: Los deciles son medidas estadísticas que dividen un conjunto de datos en diez partes iguales.

Medidas estadísticas de la edad del cliente.

datatable(estadisticas(datos$Edad), options = list(pageLength = 5, lengthMenu = c(5, 10, 15, 20)))

Medidas estadísticas del monto solicitado por el cliente.

datatable(estadisticas(datos$Monto), options = list(pageLength = 5, lengthMenu = c(5, 10, 15, 20)))

Medidas estadísticas según el plazo solicitado.

datatable(estadisticas(datos$Plazo),options = list(pageLength = 5, lengthMenu = c(5, 10, 15, 20)))

Medidas estadísticas según el ingreso solicitado.

datatable(estadisticas(datos$Ingresos),options = list(pageLength = 5, lengthMenu = c(5, 10, 15, 20)))

Medidas estadísticas según el score de Datacredito

datatable(estadisticas(datos$Score),options = list(pageLength = 5, lengthMenu = c(5, 10, 15, 20)))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

PARTICION DATOS A TRAIN Y TEST:

La partición permite dividir el conjunto de datos en dos partes: una para entrenar el modelo y otra para evaluar su rendimiento. La primera parte (conjunto de entrenamiento) se utiliza para ajustar los parámetros del modelo, mientras que la segunda parte (conjunto de prueba o validación) se utiliza para evaluar su capacidad predictiva en datos no utilizados durante el entrenamiento.

Al tener un conjunto de datos de prueba independiente, se obtiene una estimación más realista del rendimiento general del modelo en nuevos datos no vistos. Esto ayuda a evaluar la capacidad del modelo para generalizar patrones en lugar de simplemente memorizar el conjunto de datos de entrenamiento.

## Loading required package: lattice
## 
## Attaching package: 'caret'
## The following object is masked from 'package:purrr':
## 
##     lift
dim(train)
## [1] 6907   25
dim(test)
## [1] 2959   25
tasa_de_malos = mean(train$Default)
tasa_de_malos
## [1] 0.07354857
## `summarise()` has grouped output by 'Genero'. You can override using the
## `.groups` argument.

train %>%
        group_by(Genero, Default) %>% 
        summarise(total = n())
## `summarise()` has grouped output by 'Genero'. You can override using the
## `.groups` argument.
## # A tibble: 4 × 3
## # Groups:   Genero [2]
##   Genero    Default total
##   <fct>       <dbl> <int>
## 1 Femenino        0  2903
## 2 Femenino        1   175
## 3 Masculino       0  3496
## 4 Masculino       1   333
## `summarise()` has grouped output by 'Perfil'. You can override using the
## `.groups` argument.

## `summarise()` has grouped output by 'Nivel_Academico'. You can override using
## the `.groups` argument.

## `summarise()` has grouped output by 'Region'. You can override using the
## `.groups` argument.

## `summarise()` has grouped output by 'Entidad'. You can override using the
## `.groups` argument.

train %>%
group_by(Genero) %>% 
  summarise(riesgo = mean(Default),
            contribucion = riesgo/riesgo_global)
## # A tibble: 2 × 3
##   Genero    riesgo contribucion
##   <fct>      <dbl>        <dbl>
## 1 Femenino  0.0569        0.773
## 2 Masculino 0.0870        1.18