Universidad del Valle Facultad de Ingeniería Machine Learning para Gestión Financiera Profesor: Iván Mauricio Bermúdez Vera
Estudiantes:
Valeria Saldaña Benavides - 2500106
Juan Sebastián Chacón Correa - 2500417
Jhon Fernando Tascón Velasco -2500665
El análisis del riesgo crediticio es una herramienta fundamental para las entidades financieras, ya que permite evaluar la capacidad de pago de los solicitantes y reducir la probabilidad de incumplimiento. En este trabajo se utiliza el conjunto de datos German Credit, compuesto por información financiera, laboral y sociodemográfica de 1.000 clientes, junto con una variable objetivo (default) que clasifica su comportamiento crediticio como bueno (good) o malo (bad).
Con el fin de preparar la información para futuras tareas de modelado predictivo, se realizó un proceso de diagnóstico y preprocesamiento de datos, seguido de un análisis exploratorio que permitió caracterizar las variables del conjunto de datos e identificar patrones relevantes asociados al comportamiento crediticio de los clientes.
El conjunto de datos German Credit presenta información sobre 1000 solicitantes de crédito. Cada variable en el conjunto permite una aproximación a las características financieras y socioeconómicas del potencial cliente a su vez que permite construir un análisis de estas variables con respecto a su comportamiento crediticio.
## V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18
## 1 A11 6 A34 A43 1169 A65 A75 4 A93 A101 4 A121 67 A143 A152 2 A173 1
## 2 A12 48 A32 A43 5951 A61 A73 2 A92 A101 2 A121 22 A143 A152 1 A173 1
## 3 A14 12 A34 A46 2096 A61 A74 2 A93 A101 3 A121 49 A143 A152 1 A172 2
## 4 A11 42 A32 A42 7882 A61 A74 2 A93 A103 4 A122 45 A143 A153 1 A173 2
## 5 A11 24 A33 A40 4870 A61 A73 3 A93 A101 4 A124 53 A143 A153 2 A173 2
## 6 A14 36 A32 A46 9055 A65 A73 2 A93 A101 4 A124 35 A143 A153 1 A172 2
## V19 V20 V21
## 1 A192 A201 1
## 2 A191 A201 2
## 3 A191 A201 1
## 4 A191 A201 1
## 5 A191 A201 2
## 6 A192 A201 1
Como se logra evidenciar en la estructura anterior, hay registros que están codificados, además de que no se tienen el nombre de las columnas. En la siguiente sección, se realizará la limpieza y el preprocesamiento de los datos.
Se asignaron nombres descriptivos a las 21 variables del conjunto de datos German Credit con el fin de facilitar su interpretación y análisis posterior.
| Variable | Descripción |
|---|---|
| checking_status | Estado de la cuenta corriente |
| duration | Duración del crédito (meses) |
| credit_history | Historial crediticio |
| purpose | Propósito del crédito |
| credit_amount | Monto del crédito |
| savings | Cuenta de ahorros / bonos |
| employment | Antigüedad laboral |
| installment_rate | Tasa de cuota respecto al ingreso disponible |
| personal_status_sex | Estado civil y sexo |
| other_debtors | Otros deudores o garantes |
| residence_since | Tiempo de residencia actual |
| property | Tipo de propiedad |
| age | Edad |
| other_installment_plans | Otros planes de pago |
| housing | Tipo de vivienda |
| existing_credits | Número de créditos existentes en este banco |
| job | Ocupación |
| people_liable | Número de personas a cargo |
| telephone | Disponibilidad de teléfono |
| foreign_worker | Trabajador extranjero |
| default | Variable objetivo (Good / Bad) |
Se inicia verificando la estructura general de los datos, en los que se presentan 1000 observaciones y 20 variables. A continuación se presentan los tipos de variables donde se identifican 13 variables tipo caracter y 7 variables numéricas:
## 'data.frame': 1000 obs. of 21 variables:
## $ checking_status : chr "A11" "A12" "A14" "A11" ...
## $ duration : int 6 48 12 42 24 36 24 36 12 30 ...
## $ credit_history : chr "A34" "A32" "A34" "A32" ...
## $ purpose : chr "A43" "A43" "A46" "A42" ...
## $ credit_amount : int 1169 5951 2096 7882 4870 9055 2835 6948 3059 5234 ...
## $ savings : chr "A65" "A61" "A61" "A61" ...
## $ employment : chr "A75" "A73" "A74" "A74" ...
## $ installment_rate : int 4 2 2 2 3 2 3 2 2 4 ...
## $ personal_status_sex : chr "A93" "A92" "A93" "A93" ...
## $ other_debtors : chr "A101" "A101" "A101" "A103" ...
## $ residence_since : int 4 2 3 4 4 4 4 2 4 2 ...
## $ property : chr "A121" "A121" "A121" "A122" ...
## $ age : int 67 22 49 45 53 35 53 35 61 28 ...
## $ other_installment_plans: chr "A143" "A143" "A143" "A143" ...
## $ housing : chr "A152" "A152" "A152" "A153" ...
## $ existing_credits : int 2 1 1 1 2 1 1 1 1 2 ...
## $ job : chr "A173" "A173" "A172" "A173" ...
## $ people_liable : int 1 1 2 2 2 2 1 1 1 1 ...
## $ telephone : chr "A192" "A191" "A191" "A191" ...
## $ foreign_worker : chr "A201" "A201" "A201" "A201" ...
## $ default : int 1 2 1 1 2 1 1 1 1 2 ...
Se procede a convertir las variables categóricas a sus respectivas equivalencias denotadas en los atributos compartidos, a su vez que se convierte a formato factor:
| Variable | Código original | Nueva categoría |
|---|---|---|
| checking_status | A11 | less_0 |
| checking_status | A12 | 0_200 |
| checking_status | A13 | greater_200 |
| checking_status | A14 | no_account |
| credit_history | A30 | no_credit/all_paid |
| credit_history | A31 | all_paid |
| credit_history | A32 | existing_paid |
| credit_history | A33 | delay |
| credit_history | A34 | critical/other |
| purpose | A40 | car_new |
| purpose | A41 | car_used |
| purpose | A42 | furniture/equipment |
| purpose | A43 | radio/TV |
| purpose | A44 | domestic_appliances |
| purpose | A45 | repairs |
| purpose | A46 | education |
| purpose | A47 | vacation |
| purpose | A48 | retraining |
| purpose | A49 | business |
| purpose | A410 | others |
| savings | A61 | less_100 |
| savings | A62 | 100_500 |
| savings | A63 | 500_1000 |
| savings | A64 | greater_1000 |
| savings | A65 | unknown |
| employment | A71 | unemployed |
| employment | A72 | less_1 |
| employment | A73 | 1_4 |
| employment | A74 | 4_7 |
| employment | A75 | greater_7 |
| personal_status_sex | A91 | male_divorced/separated |
| personal_status_sex | A92 | female_divorced/separated/married |
| personal_status_sex | A93 | male_single |
| personal_status_sex | A94 | male_married |
| personal_status_sex | A95 | female_single |
| other_debtors | A101 | none |
| other_debtors | A102 | co_applicant |
| other_debtors | A103 | guarantor |
| property | A121 | real_estate |
| property | A122 | building_society_savings_agreement/life_insurance |
| property | A123 | car_or_other |
| property | A124 | unknown/no_property |
| other_installment_plans | A141 | bank |
| other_installment_plans | A142 | stores |
| other_installment_plans | A143 | none |
| housing | A151 | rent |
| housing | A152 | own |
| housing | A153 | for_free |
| job | A171 | unemployed/unskilled |
| job | A172 | unskilled_resident |
| job | A173 | skilled/official |
| job | A174 | management/self-employed/highly_qualified |
| telephone | A191 | none |
| telephone | A192 | yes |
| foreign_worker | A201 | yes |
| foreign_worker | A202 | no |
| default | 1 | good |
| default | 2 | bad |
## Rows: 1,000
## Columns: 21
## $ checking_status <fct> less_0, 0_200, no_account, less_0, less_0, no_…
## $ duration <int> 6, 48, 12, 42, 24, 36, 24, 36, 12, 30, 12, 48,…
## $ credit_history <fct> critical_other, existing_paid, critical_other,…
## $ purpose <fct> radio_tv, radio_tv, education, furniture_equip…
## $ credit_amount <int> 1169, 5951, 2096, 7882, 4870, 9055, 2835, 6948…
## $ savings <fct> unknown, less_100, less_100, less_100, less_10…
## $ employment <fct> greater_7, 1_4, 4_7, 4_7, 1_4, 1_4, greater_7,…
## $ installment_rate <int> 4, 2, 2, 2, 3, 2, 3, 2, 2, 4, 3, 3, 1, 4, 2, 4…
## $ personal_status_sex <fct> male_single, female_divorced_separated_married…
## $ other_debtors <fct> none, none, none, guarantor, none, none, none,…
## $ residence_since <int> 4, 2, 3, 4, 4, 4, 4, 2, 4, 2, 1, 4, 1, 4, 4, 2…
## $ property <fct> real_estate, real_estate, real_estate, buildin…
## $ age <int> 67, 22, 49, 45, 53, 35, 53, 35, 61, 28, 25, 24…
## $ other_installment_plans <fct> none, none, none, none, none, none, none, none…
## $ housing <fct> own, own, own, for_free, for_free, for_free, o…
## $ existing_credits <int> 2, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1…
## $ job <fct> skilled_official, skilled_official, unskilled_…
## $ people_liable <int> 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ telephone <fct> yes, none, none, none, none, yes, none, yes, n…
## $ foreign_worker <fct> yes, yes, yes, yes, yes, yes, yes, yes, yes, y…
## $ default <fct> good, bad, good, good, bad, good, good, good, …
Ahora, una vez realizada la recodificación, se realiza un resumen estadístico de las variables a analizar.
| checking_status | duration | credit_history | purpose | credit_amount | savings | employment | installment_rate | personal_status_sex | other_debtors | residence_since | property | age | other_installment_plans | housing | existing_credits | job | people_liable | telephone | foreign_worker | default | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0_200 :269 | Min. : 4.0 | all_paid : 49 | radio_tv :280 | Min. : 250 | 100_500 :103 | 1_4 :339 | Min. :1.000 | female_divorced_separated_married:310 | co_applicant: 41 | Min. :1.000 | building_society_savings_life_insurance:232 | Min. :19.00 | bank :139 | for_free:108 | Min. :1.000 | management_self_employed_highly_qualified:148 | Min. :1.000 | none:596 | no : 37 | bad :300 | |
| greater_200: 63 | 1st Qu.:12.0 | critical_other :293 | car_new :234 | 1st Qu.: 1366 | 500_1000 : 63 | 4_7 :174 | 1st Qu.:2.000 | male_divorced_separated : 50 | guarantor : 52 | 1st Qu.:2.000 | car_or_other :332 | 1st Qu.:27.00 | none :814 | own :713 | 1st Qu.:1.000 | skilled_official :630 | 1st Qu.:1.000 | yes :404 | yes:963 | good:700 | |
| less_0 :274 | Median :18.0 | delay : 88 | furniture_equipment:181 | Median : 2320 | greater_1000: 48 | greater_7 :253 | Median :3.000 | male_married : 92 | none :907 | Median :3.000 | real_estate :282 | Median :33.00 | stores: 47 | rent :179 | Median :1.000 | unemployed_unskilled : 22 | Median :1.000 | NA | NA | NA | |
| no_account :394 | Mean :20.9 | existing_paid :530 | car_used :103 | Mean : 3271 | less_100 :603 | less_1 :172 | Mean :2.973 | male_single :548 | NA | Mean :2.845 | unknown_no_property :154 | Mean :35.55 | NA | NA | Mean :1.407 | unskilled_resident :200 | Mean :1.155 | NA | NA | NA | |
| NA | 3rd Qu.:24.0 | no_credit_all_paid: 40 | business : 97 | 3rd Qu.: 3972 | unknown :183 | unemployed: 62 | 3rd Qu.:4.000 | NA | NA | 3rd Qu.:4.000 | NA | 3rd Qu.:42.00 | NA | NA | 3rd Qu.:2.000 | NA | 3rd Qu.:1.000 | NA | NA | NA | |
| NA | Max. :72.0 | NA | education : 50 | Max. :18424 | NA | NA | Max. :4.000 | NA | NA | Max. :4.000 | NA | Max. :75.00 | NA | NA | Max. :4.000 | NA | Max. :2.000 | NA | NA | NA | |
| NA | NA | NA | (Other) : 55 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
El conjunto de datos German Credit está conformado por 1.000 registros y 21 variables, de las cuales 7 son numéricas y 14 categóricas. El análisis descriptivo inicial permite identificar características relevantes de la población estudiada y posibles patrones asociados al riesgo crediticio.
La duración de los créditos (duration) presenta una
mediana de 18 meses y una media de 20,9 meses, lo que indica que la
mayoría de los préstamos corresponden a compromisos financieros de corto
y mediano plazo. Sin embargo, se observan créditos con duraciones de
hasta 72 meses, evidenciando una dispersión considerable en esta
variable.
El monto del crédito (credit_amount) registra una media
de 3.271 unidades monetarias y una mediana de 2.320. La diferencia entre
ambas medidas sugiere una distribución asimétrica hacia la derecha,
ocasionada por la presencia de créditos de alto valor que alcanzan
montos de hasta 18.424 unidades monetarias.
La edad de los solicitantes (age) oscila entre 19 y 75
años, con una media de 35,5 años y una mediana de 33 años. Esto indica
que la mayor parte de los clientes corresponde a población
económicamente activa en etapas tempranas y medias de su vida
laboral.
Las variables installment_rate,
residence_since, existing_credits y
people_liable presentan rangos relativamente reducidos,
reflejando estructuras de información discretas y con baja variabilidad.
En particular, la mayoría de los clientes posee un solo crédito activo
en el banco y una sola persona dependiente económicamente.
Respecto al estado de la cuenta corriente
(checking_status), la categoría más frecuente corresponde a
clientes sin cuenta corriente (no_account), representando
aproximadamente el 39 % de los registros. Esto indica que una proporción
importante de solicitantes no posee este producto financiero.
En el historial crediticio (credit_history), más de la
mitad de los clientes (53 %) se ubica en la categoría
existing_paid, correspondiente a créditos que han sido
pagados correctamente hasta el momento. Adicionalmente, un 29,3 %
pertenece a la categoría critical_other, lo que sugiere
antecedentes financieros más complejos.
En cuanto al propósito del crédito (purpose), predominan
las solicitudes para adquisición de radio o televisión (28 %), vehículos
nuevos (23,4 %) y muebles o equipamiento del hogar (18,1 %). Estas tres
categorías concentran cerca del 70 % de los créditos otorgados.
La variable de ahorro (savings) muestra que el 60,3 % de
los clientes posee menos de 100 unidades monetarias ahorradas, mientras
que únicamente el 4,8 % reporta ahorros superiores a 1.000 unidades.
Esto evidencia una capacidad de ahorro limitada para una gran proporción
de los solicitantes.
En términos laborales (employment), la categoría más
frecuente corresponde a personas con entre 1 y 4 años de antigüedad
laboral (33,9 %), seguida por quienes tienen más de 7 años de
experiencia laboral (25,3 %). Esto sugiere una población con relativa
estabilidad laboral.
Respecto a la vivienda (housing), el 71,3 % de los
clientes reside en vivienda propia, mientras que el 17,9 % vive en
arriendo. Este resultado puede interpretarse como un indicador indirecto
de estabilidad económica.
La ocupación (job) muestra una clara predominancia de
trabajadores calificados u oficiales (skilled_official),
quienes representan el 63 % de la muestra. Por el contrario, las
categorías asociadas a desempleo o baja cualificación presentan una
participación reducida.
Finalmente, la variable objetivo (default) evidencia un
desbalance entre clases: el 70 % de los clientes presenta un
comportamiento crediticio bueno (good), mientras que el 30
% corresponde a clientes con comportamiento malo (bad).
Este aspecto será importante en etapas posteriores de modelado
predictivo, ya que podría influir en el desempeño de los algoritmos de
clasificación.
Los resultados muestran una población caracterizada principalmente por clientes con historial crediticio favorable, estabilidad laboral moderada, vivienda propia y montos de crédito relativamente bajos o medios. Sin embargo, se observa una importante concentración de solicitantes con bajos niveles de ahorro y una distribución asimétrica en el monto de los créditos, lo que sugiere la posible existencia de valores extremos. Asimismo, el desbalance de la variable objetivo constituye un aspecto relevante a considerar en futuros modelos de clasificación de riesgo crediticio.
Posteriormente se definieron reglas de validación utilizando el
paquete validate con el objetivo de verificar la
consistencia lógica de las variables numéricas y categóricas del
conjunto de datos.
Para las variables numéricas se comprobó que atributos como la duración del crédito, monto del préstamo, edad del solicitante y número de créditos existentes presentaran valores positivos o no negativos según correspondiera. De igual forma, para las variables categóricas se verificó que cada observación perteneciera exclusivamente al conjunto de categorías válidas definidas durante el proceso de recodificación.
Estas validaciones permitieron asegurar que los registros cumplen con las restricciones establecidas por la naturaleza de cada variable y que no existen valores fuera de rango o categorías inválidas que puedan afectar el análisis posterior.
## Object of class 'validator' with 21 elements:
## V01: german[["duration"]] > 0
## V02: german[["credit_amount"]] > 0
## V03: german[["installment_rate"]] > 0
## V04: german[["residence_since"]] > 0
## V05: german[["age"]] > 0
## V06: german[["existing_credits"]] >= 0
## V07: german[["people_liable"]] >= 0
## V08: checking_status %in% unname(dict_mapping[["checking_status"]])
## V09: credit_history %in% unname(dict_mapping[["credit_history"]])
## V10: purpose %in% unname(dict_mapping[["purpose"]])
## V11: savings %in% unname(dict_mapping[["savings"]])
## V12: employment %in% unname(dict_mapping[["employment"]])
## V13: personal_status_sex %in% unname(dict_mapping[["personal_status_sex"]])
## V14: other_debtors %in% unname(dict_mapping[["other_debtors"]])
## V15: property %in% unname(dict_mapping[["property"]])
## V16: other_installment_plans %in% unname(dict_mapping[["other_installment_plans"]])
## V17: housing %in% unname(dict_mapping[["housing"]])
## V18: job %in% unname(dict_mapping[["job"]])
## V19: telephone %in% unname(dict_mapping[["telephone"]])
## V20: foreign_worker %in% unname(dict_mapping[["foreign_worker"]])
## V21: default %in% unname(dict_mapping[["default"]])
Se definen cuántas filas presentan al menos una regla incumplida y se encuentra que el número es cero.
## integer(0)
A su vez, se encuentra que el número de datos faltantes en toda la base es igualmente cero.
sum(is.na(german))
## [1] 0
Una vez se revisan los datos faltantes, se procede a realizar un análisis de anomalías. Para ello, se usa el criterio Tukey:
| Variable | Q1 | Q3 | IQR | Limite_Inferior | Limite_Superior | Atipicos | Porcentaje |
|---|---|---|---|---|---|---|---|
| duration | 12.0 | 24.00 | 12.00 | -6.00 | 42.00 | 70 | 7.0 |
| credit_amount | 1365.5 | 3972.25 | 2606.75 | -2544.62 | 7882.38 | 72 | 7.2 |
| installment_rate | 2.0 | 4.00 | 2.00 | -1.00 | 7.00 | 0 | 0.0 |
| residence_since | 2.0 | 4.00 | 2.00 | -1.00 | 7.00 | 0 | 0.0 |
| age | 27.0 | 42.00 | 15.00 | 4.50 | 64.50 | 23 | 2.3 |
| existing_credits | 1.0 | 2.00 | 1.00 | -0.50 | 3.50 | 6 | 0.6 |
| people_liable | 1.0 | 1.00 | 0.00 | 1.00 | 1.00 | 155 | 15.5 |
Con base en el criterio Tukey, los resultados evidencian la
presencia de valores atípicos en algunas variables del conjunto de
datos. Las variables duration y credit_amount
presentan 70 y 72 observaciones atípicas respectivamente,
correspondientes al 7,0 % y 7,2 % de la muestra. Estos resultados
sugieren la existencia de créditos con duraciones o montos
significativamente superiores al comportamiento habitual de la población
analizada.
La variable age presenta 23 observaciones atípicas (2,3
%), asociadas principalmente a solicitantes de mayor edad. Sin embargo,
dado que los valores observados se encuentran dentro de rangos
plausibles para la población económicamente activa, no se consideran
errores de registro.
Por su parte, la variable existing_credits presenta
únicamente 6 observaciones atípicas (0,6 %), lo que indica una baja
presencia de clientes con un número inusualmente alto de créditos
vigentes en la entidad financiera.
La variable people_liable registra 155 observaciones
atípicas (15,5 %), siendo la proporción más alta entre todas las
variables analizadas. No obstante, este resultado debe interpretarse con
cautela, ya que la variable es discreta y presenta una distribución
altamente concentrada en el valor 1. Debido a que el rango
intercuartílico (IQR) es igual a cero, cualquier observación diferente a
dicho valor es identificada automáticamente como atípica por el criterio
de Tukey. Por esta razón, estos registros no necesariamente representan
anomalías reales.
Las variables installment_rate y
residence_since no presentan valores atípicos según el
criterio aplicado, lo que indica una distribución relativamente
homogénea dentro de los rangos esperados.
| n_out_mahalanobis | n_out_lof |
|---|---|
| 35 | 10 |
Con el propósito de complementar la detección univariada de valores atípicos, se realizó un análisis multivariado sobre las variables numéricas del conjunto de datos. Inicialmente, la matriz de dispersión permitió examinar las relaciones existentes entre las variables y calcular los coeficientes de correlación de Pearson.
Los resultados evidencian que la relación más importante se presenta entre la duración del crédito (duration) y el monto solicitado (credit_amount), con una correlación positiva moderada (r = 0.625), lo que indica que los créditos de mayor valor suelen asociarse con plazos de pago más extensos. Asimismo, se observan correlaciones positivas de menor magnitud entre la edad (age) y el tiempo de residencia (residence_since), así como entre la edad y el número de créditos existentes (existing_credits). En general, la mayoría de las variables presentan correlaciones débiles, lo que sugiere una baja dependencia lineal entre ellas.
Posteriormente, se aplicaron dos técnicas de detección de anomalías multivariadas: la Distancia de Mahalanobis y el algoritmo Local Outlier Factor (LOF). La primera identificó 35 observaciones con patrones significativamente alejados del comportamiento promedio de la población, mientras que el método LOF detectó 10 observaciones con características inusuales respecto a sus vecinos más cercanos.
Si bien se identificaron registros potencialmente atípicos, estos corresponden a observaciones válidas dentro del contexto del negocio y no a errores de captura o inconsistencias en los datos. Por esta razón, se decidió conservarlos para las etapas posteriores del análisis, considerando que los perfiles extremos pueden aportar información relevante para la comprensión del riesgo crediticio y la construcción de futuros modelos de clasificación.
La variable objetivo (default) presenta una distribución desbalanceada, donde el 70,0% de los registros corresponde a clientes clasificados con buen comportamiento crediticio (good) y el 30,0% restante a clientes con comportamiento desfavorable (bad). Esta diferencia deberá considerarse en etapas posteriores de modelado, ya que podría influir en el desempeño de los algoritmos de clasificación.
Se presenta inicialmente los estadísticos descriptivos de las variables numéricas:
| Media | Mediana | Desv_Est | Minimo | Maximo | |
|---|---|---|---|---|---|
| duration | 20.90 | 18.0 | 12.06 | 4 | 72 |
| credit_amount | 3271.26 | 2319.5 | 2822.74 | 250 | 18424 |
| installment_rate | 2.97 | 3.0 | 1.12 | 1 | 4 |
| residence_since | 2.85 | 3.0 | 1.10 | 1 | 4 |
| age | 35.55 | 33.0 | 11.38 | 19 | 75 |
| existing_credits | 1.41 | 1.0 | 0.58 | 1 | 4 |
| people_liable | 1.16 | 1.0 | 0.36 | 1 | 2 |
Los estadísticos descriptivos permiten identificar una marcada heterogeneidad en las características financieras de los solicitantes. La duración de los créditos presenta una media de 20,9 meses y una mediana de 18 meses, lo que indica una ligera asimetría hacia créditos de mayor plazo. De manera similar, el monto del crédito exhibe una elevada dispersión (desviación estándar de 2.822,74 DM) y una diferencia considerable entre la media (3.271,26 DM) y la mediana (2.319,5 DM), sugiriendo la presencia de algunos créditos de valor significativamente superior al promedio. Esta característica también se evidencia en el gráfico de densidad, donde se observa una concentración importante de créditos de bajo monto y una cola alargada hacia valores altos.
La edad de los solicitantes presenta una media de 35,55 años y una mediana de 33 años, lo que indica que la población analizada está compuesta principalmente por adultos jóvenes y de mediana edad. Por su parte, variables como la tasa de cuota (installment_rate), el tiempo de residencia (residence_since), el número de créditos existentes (existing_credits) y el número de personas a cargo (people_liable) muestran una variabilidad reducida debido a que sus valores se encuentran acotados dentro de un rango limitado. En particular, la variable people_liable se concentra casi exclusivamente en un solo dependiente, mientras que la mayoría de los clientes posee uno o dos créditos activos en la entidad financiera. En conjunto, los resultados evidencian distribuciones asimétricas en variables relacionadas con el nivel de endeudamiento, aspecto que deberá considerarse en las etapas posteriores del análisis y modelado.
| Variable | Categorias | Moda | Frecuencia_moda |
|---|---|---|---|
| checking_status | 4 | no_account | 394 |
| credit_history | 5 | existing_paid | 530 |
| purpose | 10 | radio_tv | 280 |
| savings | 5 | less_100 | 603 |
| employment | 5 | 1_4 | 339 |
| personal_status_sex | 4 | male_single | 548 |
| other_debtors | 3 | none | 907 |
| property | 4 | car_or_other | 332 |
| other_installment_plans | 3 | none | 814 |
| housing | 3 | own | 713 |
| job | 4 | skilled_official | 630 |
| telephone | 2 | none | 596 |
| foreign_worker | 2 | yes | 963 |
| default | 2 | good | 700 |
| Variable | Categoria | n | Porcentaje |
|---|---|---|---|
| checking_status | 0_200 | 269 | 26.9 |
| checking_status | greater_200 | 63 | 6.3 |
| checking_status | less_0 | 274 | 27.4 |
| checking_status | no_account | 394 | 39.4 |
| credit_history | all_paid | 49 | 4.9 |
| credit_history | critical_other | 293 | 29.3 |
| credit_history | delay | 88 | 8.8 |
| credit_history | existing_paid | 530 | 53.0 |
| credit_history | no_credit_all_paid | 40 | 4.0 |
| default | bad | 300 | 30.0 |
| default | good | 700 | 70.0 |
| employment | 1_4 | 339 | 33.9 |
| employment | 4_7 | 174 | 17.4 |
| employment | greater_7 | 253 | 25.3 |
| employment | less_1 | 172 | 17.2 |
| employment | unemployed | 62 | 6.2 |
| foreign_worker | yes | 963 | 96.3 |
| foreign_worker | no | 37 | 3.7 |
| housing | for_free | 108 | 10.8 |
| housing | own | 713 | 71.3 |
| housing | rent | 179 | 17.9 |
| job | management_self_employed_highly_qualified | 148 | 14.8 |
| job | skilled_official | 630 | 63.0 |
| job | unemployed_unskilled | 22 | 2.2 |
| job | unskilled_resident | 200 | 20.0 |
| other_debtors | co_applicant | 41 | 4.1 |
| other_debtors | guarantor | 52 | 5.2 |
| other_debtors | none | 907 | 90.7 |
| other_installment_plans | none | 814 | 81.4 |
| other_installment_plans | bank | 139 | 13.9 |
| other_installment_plans | stores | 47 | 4.7 |
| personal_status_sex | female_divorced_separated_married | 310 | 31.0 |
| personal_status_sex | male_divorced_separated | 50 | 5.0 |
| personal_status_sex | male_married | 92 | 9.2 |
| personal_status_sex | male_single | 548 | 54.8 |
| property | building_society_savings_life_insurance | 232 | 23.2 |
| property | car_or_other | 332 | 33.2 |
| property | real_estate | 282 | 28.2 |
| property | unknown_no_property | 154 | 15.4 |
| purpose | business | 97 | 9.7 |
| purpose | car_new | 234 | 23.4 |
| purpose | car_used | 103 | 10.3 |
| purpose | domestic_appliances | 12 | 1.2 |
| purpose | education | 50 | 5.0 |
| purpose | furniture_equipment | 181 | 18.1 |
| purpose | others | 12 | 1.2 |
| purpose | radio_tv | 280 | 28.0 |
| purpose | repairs | 22 | 2.2 |
| purpose | retraining | 9 | 0.9 |
| savings | 100_500 | 103 | 10.3 |
| savings | 500_1000 | 63 | 6.3 |
| savings | greater_1000 | 48 | 4.8 |
| savings | less_100 | 603 | 60.3 |
| savings | unknown | 183 | 18.3 |
| telephone | none | 596 | 59.6 |
| telephone | yes | 404 | 40.4 |
A continuación se presentan las gráficas de barras para las variables categóricas asociadas a aspectos financieros del crédito:
Igualmente, se grafican las variables socioeconómicas de los solicitantes, lo cual también contribuye a la construcción de un perfil de riesgo:
Finalmente se establecen las características asociadas al entorno
laboral como una característica relevante del individuo ya que
permitiría ser un medio de solvencia para respaldar al crédito:
El análisis de frecuencias permitió caracterizar el perfil general de los solicitantes de crédito incluidos en la base de datos German Credit. En relación con el estado de la cuenta corriente (checking_status), se observó que el 39,4% de los clientes no posee cuenta corriente, mientras que el 27,4% presenta saldos inferiores a cero y el 26,9% mantiene saldos entre 0 y 200 DM. Solamente el 6,3% dispone de saldos superiores a 200 DM, lo que sugiere que una proporción importante de los solicitantes presenta una capacidad financiera limitada.
Respecto al historial crediticio (credit_history), la categoría predominante corresponde a clientes con créditos pagados oportunamente hasta el momento (existing_paid), representando el 53,0% de las observaciones. Asimismo, el 29,3% pertenece a la categoría de cuentas críticas u otros créditos existentes (critical/other), mientras que únicamente el 8,8% registra antecedentes de retrasos en pagos.
En cuanto al propósito del crédito (purpose), los destinos más frecuentes fueron la adquisición de radio o televisión (28,0%), vehículos nuevos (23,4%) y muebles o equipamiento para el hogar (18,1%). Estos resultados indican que la mayoría de los créditos está orientada al financiamiento de bienes de consumo duradero.
La variable de ahorro (savings) evidenció que el 60,3% de los solicitantes posee menos de 100 DM en ahorros, mientras que apenas el 4,8% cuenta con más de 1.000 DM. Este comportamiento sugiere una limitada capacidad de respaldo financiero para una proporción considerable de los clientes.
En relación con la estabilidad laboral (employment), el 33,9% de los individuos registra entre uno y cuatro años de antigüedad laboral y el 25,3% acumula más de siete años de experiencia en su empleo actual. Por otra parte, solamente el 6,2% se encuentra desempleado.
El análisis de las demás variables revela que la mayoría de los solicitantes son hombres solteros (male_single, 54,8%), no cuentan con otros deudores o garantes (other_debtors, 90,7%), poseen vivienda propia (housing, 71,3%) y desempeñan ocupaciones calificadas o cargos oficiales (job, 63,0%). Adicionalmente, el 96,3% corresponde a trabajadores extranjeros según la codificación original del conjunto de datos.
Las variables financieras presentan una relación importante con la variable objetivo (default). El estado de la cuenta corriente (checking_status) es uno de los factores más discriminantes: los clientes sin cuenta corriente (no_account) registran aproximadamente un 88% de buenos pagadores, mientras que aquellos con saldos negativos (less_0) presentan una distribución cercana al 50% de buenos y 50% de malos pagadores, evidenciando un mayor riesgo crediticio. De manera similar, la variable ahorros (savings) muestra que los clientes con mayores niveles de ahorro (greater_1000 y 500_1000) alcanzan porcentajes de buen comportamiento superiores al 80%, mientras que quienes poseen menos de 100 unidades monetarias presentan una proporción significativamente mayor de incumplimiento. Respecto al historial crediticio, las categorías critical_other y existing_paid muestran desempeños favorables, mientras que los clientes con antecedentes de créditos totalmente pagados o sin historial previo (all_paid y no_credit_all_paid) registran mayores porcentajes de incumplimiento. Finalmente, algunos propósitos del crédito como car_used, radio_tv y retraining exhiben menores niveles de riesgo, mientras que categorías como education, others y car_new presentan proporciones relativamente más altas de clientes clasificados como bad.
Las variables sociodemográficas muestran diferencias moderadas en la distribución del riesgo crediticio. En cuanto al tipo de vivienda (housing), los clientes con vivienda propia presentan aproximadamente un 74% de buenos pagadores, superando a quienes viven en arriendo o disponen de vivienda gratuita, donde el porcentaje de incumplimiento es mayor. Respecto al estado civil y sexo (personal_status_sex), las diferencias observadas son relativamente pequeñas, aunque los hombres casados y solteros muestran una proporción ligeramente superior de clientes con buen comportamiento crediticio en comparación con otros grupos. Por otra parte, la variable tipo de propiedad (property) evidencia una asociación más marcada con el riesgo: los clientes propietarios de bienes raíces (real_estate) presentan cerca de un 78% de buenos pagadores, mientras que aquellos clasificados como unknown_no_property registran el mayor porcentaje de incumplimiento (44%). Estos resultados sugieren que la posesión de activos constituye una señal positiva de solvencia financiera.
Las características laborales también presentan patrones asociados al comportamiento crediticio. La antigüedad laboral (employment) muestra una relación positiva con el cumplimiento de las obligaciones financieras, ya que los clientes con entre cuatro y siete años de permanencia laboral alcanzan aproximadamente un 78% de buenos pagadores, mientras que quienes tienen menos de un año de experiencia laboral presentan los niveles más altos de incumplimiento. En cuanto a la ocupación (job), las diferencias son menos pronunciadas, aunque los trabajadores calificados y residentes permanentes presentan porcentajes ligeramente superiores de buen comportamiento crediticio. La variable teléfono (telephone) no evidencia diferencias relevantes entre categorías, lo que sugiere un bajo poder explicativo sobre el riesgo. Finalmente, aunque la variable foreign_worker muestra una diferencia considerable entre categorías, debe interpretarse con cautela debido al fuerte desbalance de la muestra, ya que más del 96% de los registros corresponden a trabajadores extranjeros. En conjunto, estos resultados indican que la estabilidad laboral parece ser un factor más relevante para explicar el comportamiento crediticio que la ocupación específica o la disponibilidad de teléfono.
Los diagramas de violín permiten comparar la distribución de las variables numéricas entre los clientes clasificados como good y bad. Se observa que las diferencias más marcadas se presentan en las variables duration y credit_amount, donde los clientes con comportamiento crediticio desfavorable (bad) tienden a solicitar créditos de mayor duración y montos más elevados en comparación con los clientes clasificados como good. Este comportamiento sugiere que créditos más largos y de mayor cuantía podrían estar asociados con un mayor riesgo de incumplimiento. Por otra parte, variables como age, existing_credits, people_liable y residence_since muestran distribuciones muy similares entre ambos grupos, evidenciando un poder discriminatorio limitado. La variable installment_rate tampoco presenta diferencias sustanciales, aunque se aprecia una ligera concentración de clientes con incumplimiento en las categorías más altas de la tasa de cuota. En conjunto, los resultados indican que la duración y el monto del crédito son las variables numéricas con mayor capacidad para diferenciar entre buenos y malos pagadores.
La matriz de dispersión permite evaluar simultáneamente la relación entre las variables numéricas y la separación entre las clases de la variable objetivo. En términos generales, se observa un amplio solapamiento entre los clientes good y bad, lo que indica que ninguna variable individual es suficiente para discriminar completamente el comportamiento crediticio. No obstante, se identifica una relación positiva moderada entre duration y credit_amount, donde créditos de mayor monto suelen estar asociados con plazos más extensos. Asimismo, los clientes con incumplimiento tienden a concentrarse con mayor frecuencia en las zonas correspondientes a montos y duraciones elevadas, reforzando los hallazgos observados en los diagramas de violín. Las demás variables presentan relaciones débiles o prácticamente inexistentes entre sí, y las distribuciones de ambas clases son muy similares. Estos resultados sugieren que la capacidad predictiva del modelo probablemente dependerá de la combinación simultánea de múltiples variables más que de una sola característica aislada.
La matriz de correlación evidencia que, en general, las variables
numéricas del conjunto de datos presentan relaciones lineales débiles o
moderadas, lo que sugiere una baja presencia de multicolinealidad. La
asociación más fuerte se observa entre duration y
credit_amount (r = 0.62), indicando que los
créditos de mayor monto tienden a otorgarse con plazos más largos. Esta
relación es consistente con la lógica financiera, ya que montos elevados
suelen requerir períodos de amortización más extensos para mantener
cuotas manejables para el cliente.
Por otra parte, se identifica una correlación negativa moderada entre credit_amount e installment_rate (r = -0.27), lo que sugiere que los créditos de mayor cuantía tienden a estar asociados con tasas de cuota relativamente menores respecto al ingreso disponible. Asimismo, la variable residence_since presenta una correlación positiva moderada con age (r = 0.27), indicando que las personas de mayor edad tienden a acumular más tiempo de residencia en su vivienda actual.
Las demás correlaciones son bajas, con coeficientes inferiores a 0.20 en valor absoluto. Entre ellas destacan las asociaciones positivas entre age y existing_credits (r = 0.15), age y people_liable (r = 0.12), así como entre existing_credits y people_liable (r = 0.11). Aunque estas relaciones son estadísticamente apreciables, su magnitud es reducida y no sugiere una dependencia fuerte entre las variables.
En términos generales, los resultados indican que las variables numéricas aportan información complementaria y relativamente independiente al análisis del riesgo crediticio. La ausencia de correlaciones elevadas (superiores a 0.80) constituye un resultado favorable para etapas posteriores de modelado, ya que reduce el riesgo de problemas asociados a la multicolinealidad y permite que cada variable contribuya con información propia al proceso de clasificación del comportamiento crediticio.
Con base en el análisis exploratorio, se presenta una alta cardinalidad en las variable purpose. Para este caso, se agruparán sus categorías por su naturaleza de la siguiente manera:
Vehículos: car_new, car_used
Hogar:
radio_tv, furniture_equipment, domestic_appliances, repairs
Inversión/Desarrollo:
business, education, retraining
Otros: others
A continuación, se presenta las agrupaciones y sus respectivos resultados: