library ("easypackages")
lib_req = c ("MASS","visdat","corrplot","plotrix","doBy","FactoMineR","factoextra","caret","e1071","pROC","class","rpart","rpart.plot","randomForest", "ggplot2", "gridExtra", "fmsb")
easypackages :: packages (lib_req)
## 'data.frame': 4117 obs. of 11 variables:
## $ ID : int 100756 100668 100418 100416 100590 100657 100702 100319 100666 100389 ...
## $ EDAD : int 44 35 34 34 39 41 42 31 28 30 ...
## $ INGRESOS : int 59944 59692 59508 59463 59393 59276 59201 59193 59179 59036 ...
## $ GENERO : chr "m" " " "m" "m" ...
## $ ESTADO_CIVIL : chr "married" "married" "married" "married" ...
## $ NUM_HIJOS : int 1 1 1 0 0 1 0 1 1 1 ...
## $ NUM_TARJETAS : int 2 1 1 2 2 2 1 2 1 1 ...
## $ MODALIDAD_PAGO: chr "monthly" "monthly" "monthly" "monthly" ...
## $ HIPOTECA : chr "y" "y" "y" "y" ...
## $ PRESTAMOS : int 0 0 1 1 0 1 0 1 1 1 ...
## $ RIESGO : chr "V" "F" "V" "F" ...
Formato de la base de datos corregido
## 'data.frame': 4117 obs. of 11 variables:
## $ ID : int 100756 100668 100418 100416 100590 100657 100702 100319 100666 100389 ...
## $ EDAD : int 44 35 34 34 39 41 42 31 28 30 ...
## $ INGRESOS : int 59944 59692 59508 59463 59393 59276 59201 59193 59179 59036 ...
## $ GENERO : Factor w/ 2 levels "Male","Female": 1 NA 1 1 2 1 1 2 1 1 ...
## $ ESTADO_CIVIL : Factor w/ 3 levels "Married","Single",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ NUM_HIJOS : int 1 1 1 0 0 1 0 1 1 1 ...
## $ NUM_TARJETAS : int 2 1 1 2 2 2 1 2 1 1 ...
## $ MODALIDAD_PAGO: Factor w/ 2 levels "Monthly","Weekly": 1 1 1 1 1 1 1 1 1 1 ...
## $ HIPOTECA : Factor w/ 2 levels "No","Yes": 2 2 2 2 2 2 2 2 2 2 ...
## $ PRESTAMOS : int 0 0 1 1 0 1 0 1 1 1 ...
## $ RIESGO : Factor w/ 2 levels "Impago","Cumplimiento": 1 2 1 2 1 1 1 1 2 1 ...
En el gráfico se puede apreciar que la variable “GENERO” tiene un valor faltante, el cual constituye menos del 1% del total de los registros.Por lo cual, este registro será excluido del análisis.
Formato de la base de datos corregido despues de eliminar el valor faltante de la variable “GENERO”
## 'data.frame': 4116 obs. of 11 variables:
## $ ID : int 100756 100418 100416 100590 100657 100702 100319 100666 100389 100758 ...
## $ EDAD : int 44 34 34 39 41 42 31 28 30 38 ...
## $ INGRESOS : int 59944 59508 59463 59393 59276 59201 59193 59179 59036 58914 ...
## $ GENERO : Factor w/ 2 levels "Male","Female": 1 1 1 2 1 1 2 1 1 1 ...
## $ ESTADO_CIVIL : Factor w/ 3 levels "Married","Single",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ NUM_HIJOS : int 1 1 0 0 1 0 1 1 1 0 ...
## $ NUM_TARJETAS : int 2 1 2 2 2 1 2 1 1 1 ...
## $ MODALIDAD_PAGO: Factor w/ 2 levels "Monthly","Weekly": 1 1 1 1 1 1 1 1 1 1 ...
## $ HIPOTECA : Factor w/ 2 levels "No","Yes": 2 2 2 2 2 2 2 2 2 2 ...
## $ PRESTAMOS : int 0 1 1 0 1 0 1 1 1 1 ...
## $ RIESGO : Factor w/ 2 levels "Impago","Cumplimiento": 1 1 2 1 1 1 1 2 1 2 ...
De acuerdo con los gráficos, podemos ver lo siguiente:
Edad: A medida que las personas envejecen, la mediana de edad de quienes caen en impago ronda los 35 años. En cambio, las personas con mayor cumplimiento son más jóvenes, con una edad cercana a los 25 años.
Ingresos: Se observa que las personas con mayores ingresos tienen una mediana de ingresos más alta en comparación con las personas con menores ingresos.
Número de hijos: El número de hijos no parece influir en el hecho de que una persona tenga o no un impago. Sin embargo, el mayor número de incumplimientos de pago se da entre las personas que no tienen hijos o que tienen solo uno.
Número de tarjetas: El número de tarjetas no muestra una clara diferenciación entre las personas que caen en impago y las que están al día con sus obligaciones.
Préstamos: Aunque las medianas de los resultados parecen indicar que no hay diferencias, las distribuciones sí las muestran. Las personas que han caído en impago generalmente no han tenido otros créditos, mientras que aquellas en un estado de cumplimiento pueden tener más de uno.
Esta variable no tiene ningún impacto en la determinación de si una persona cae en impago o no.
Las personas en estado de impago son mayormente divorciadas, seguidas por las solteras y, finalmente, las casadas.
Las personas con pagos mensuales tienen más probabilidades de incumplir sus obligaciones financieras en comparación con aquellas que pagan semanalmente.
Las personas con hipotecas tienen tasas de incumplimiento más elevadas que las que no poseen una.
De acuerdo con el gráfico, se puede ver que con las primeras 2 componentes principales se tiene el 81.96% de la Varianza Explicada
El análisis de componentes principales, revela una clara separación entre los clientes con impago y los que están cumpliendo con sus obligaciones. En el gráfico, se puede notar que los clientes ubicados en la esquina superior izquierda son mayoritariamente aquellos que tienen impago. Estos se distinguen por tener ingresos altos y un número bajo de préstamos y de hijos.
El primer modelo planteado con regresión logística muestra un AIC de 2268.1. Este modelo determina que la variable género no es significativa, ya que no aporta información adicional para clasificar si un cliente incumple sus obligaciones financieras o no.
##
## Call:
## glm(formula = RIESGO ~ ., family = "binomial", data = Data_Clientes_Cooperativa.tr[,
## -1])
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 3.535e+00 4.679e-01 7.555 4.20e-14 ***
## EDAD -3.701e-02 8.893e-03 -4.162 3.16e-05 ***
## INGRESOS -7.201e-05 8.468e-06 -8.503 < 2e-16 ***
## GENEROFemale 3.341e-02 1.082e-01 0.309 0.757473
## ESTADO_CIVILSingle -3.155e-02 1.860e-01 -0.170 0.865309
## ESTADO_CIVILDivsepwid -4.103e+00 3.560e-01 -11.527 < 2e-16 ***
## NUM_HIJOS 3.512e-01 8.665e-02 4.053 5.06e-05 ***
## NUM_TARJETAS 3.265e-01 7.039e-02 4.638 3.51e-06 ***
## MODALIDAD_PAGOWeekly 5.481e-01 1.984e-01 2.762 0.005739 **
## HIPOTECAYes -6.380e-01 1.656e-01 -3.854 0.000116 ***
## PRESTAMOS 9.441e-01 1.190e-01 7.931 2.18e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3263.2 on 3292 degrees of freedom
## Residual deviance: 2246.1 on 3282 degrees of freedom
## AIC: 2268.1
##
## Number of Fisher Scoring iterations: 6
El modelo tiene un F1 score del 60,87%. No obstante, al revisar los indicadores de sensibilidad y especificidad, se observa que logra predecir el cumplimiento de un cliente en un 93,27%. En cambio, la capacidad para identificar a un cliente con incumplimiento es del 55,79%.
## Sensitivity Specificity Pos Pred Value
## 0.5579598 0.9327286 0.6697588
## Neg Pred Value Precision Recall
## 0.8961511 0.6697588 0.5579598
## F1 Prevalence Detection Rate
## 0.6087690 0.1964774 0.1096265
## Detection Prevalence Balanced Accuracy
## 0.1636805 0.7453442
Aplicando el método de Backward en un modelo de regresión logística, se llega a un modelo con un AIC de 2268.06, donde la variable género se elimina, coincidiendo con la observación anterior.
## Start: AIC=2268.06
## RIESGO ~ EDAD + INGRESOS + GENERO + ESTADO_CIVIL + NUM_HIJOS +
## NUM_TARJETAS + MODALIDAD_PAGO + HIPOTECA + PRESTAMOS
##
## Df Deviance AIC
## - GENERO 1 2246.2 2266.2
## <none> 2246.1 2268.1
## - MODALIDAD_PAGO 1 2254.0 2274.0
## - HIPOTECA 1 2261.5 2281.5
## - NUM_HIJOS 1 2262.8 2282.8
## - EDAD 1 2263.3 2283.3
## - NUM_TARJETAS 1 2268.1 2288.1
## - PRESTAMOS 1 2311.8 2331.8
## - INGRESOS 1 2323.8 2343.8
## - ESTADO_CIVIL 2 2427.1 2445.1
##
## Step: AIC=2266.15
## RIESGO ~ EDAD + INGRESOS + ESTADO_CIVIL + NUM_HIJOS + NUM_TARJETAS +
## MODALIDAD_PAGO + HIPOTECA + PRESTAMOS
##
## Df Deviance AIC
## <none> 2246.2 2266.2
## - MODALIDAD_PAGO 1 2254.1 2272.1
## - HIPOTECA 1 2261.6 2279.6
## - NUM_HIJOS 1 2262.8 2280.8
## - EDAD 1 2263.3 2281.3
## - NUM_TARJETAS 1 2268.2 2286.2
## - PRESTAMOS 1 2311.8 2329.8
## - INGRESOS 1 2324.6 2342.6
## - ESTADO_CIVIL 2 2427.2 2443.2
##
## Call:
## glm(formula = RIESGO ~ EDAD + INGRESOS + ESTADO_CIVIL + NUM_HIJOS +
## NUM_TARJETAS + MODALIDAD_PAGO + HIPOTECA + PRESTAMOS, family = "binomial",
## data = Data_Clientes_Cooperativa.tr[, -1])
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 3.558e+00 4.618e-01 7.705 1.31e-14 ***
## EDAD -3.695e-02 8.891e-03 -4.156 3.24e-05 ***
## INGRESOS -7.218e-05 8.450e-06 -8.542 < 2e-16 ***
## ESTADO_CIVILSingle -3.348e-02 1.859e-01 -0.180 0.857107
## ESTADO_CIVILDivsepwid -4.102e+00 3.559e-01 -11.526 < 2e-16 ***
## NUM_HIJOS 3.501e-01 8.657e-02 4.045 5.24e-05 ***
## NUM_TARJETAS 3.268e-01 7.038e-02 4.643 3.43e-06 ***
## MODALIDAD_PAGOWeekly 5.470e-01 1.984e-01 2.757 0.005832 **
## HIPOTECAYes -6.390e-01 1.655e-01 -3.860 0.000113 ***
## PRESTAMOS 9.427e-01 1.189e-01 7.926 2.26e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3263.2 on 3292 degrees of freedom
## Residual deviance: 2246.2 on 3283 degrees of freedom
## AIC: 2266.2
##
## Number of Fisher Scoring iterations: 6
Este analisis indica que el modelo reducido tiene similar ajuste al modelo saturado con menos variables.
## Analysis of Deviance Table
##
## Model 1: RIESGO ~ EDAD + INGRESOS + ESTADO_CIVIL + NUM_HIJOS + NUM_TARJETAS +
## MODALIDAD_PAGO + HIPOTECA + PRESTAMOS
## Model 2: RIESGO ~ EDAD + INGRESOS + GENERO + ESTADO_CIVIL + NUM_HIJOS +
## NUM_TARJETAS + MODALIDAD_PAGO + HIPOTECA + PRESTAMOS
## Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1 3283 2246.2
## 2 3282 2246.1 1 0.095358 0.7575
La prueba de anova muestra que el modelo reducido es significativamente mejor que el modelo nulo.
## Analysis of Deviance Table
##
## Model 1: RIESGO ~ 1
## Model 2: RIESGO ~ EDAD + INGRESOS + ESTADO_CIVIL + NUM_HIJOS + NUM_TARJETAS +
## MODALIDAD_PAGO + HIPOTECA + PRESTAMOS
## Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1 3292 3263.2
## 2 3283 2246.2 9 1017.1 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## $Coeficientes
## Coef 2.5 % 97.5 %
## (Intercept) 3.558123e+00 2.660531e+00 4.471649e+00
## EDAD -3.695034e-02 -5.438493e-02 -1.951265e-02
## INGRESOS -7.217754e-05 -8.893057e-05 -5.578498e-05
## ESTADO_CIVILSingle -3.347815e-02 -3.982331e-01 3.309945e-01
## ESTADO_CIVILDivsepwid -4.102395e+00 -4.817946e+00 -3.421755e+00
## NUM_HIJOS 3.501394e-01 1.814086e-01 5.209592e-01
## NUM_TARJETAS 3.267773e-01 1.895863e-01 4.656470e-01
## MODALIDAD_PAGOWeekly 5.469568e-01 1.646212e-01 9.442576e-01
## HIPOTECAYes -6.389663e-01 -9.673886e-01 -3.178516e-01
## PRESTAMOS 9.426873e-01 7.112156e-01 1.177675e+00
##
## $OR
## e-beta 2.5 % 97.5 %
## (Intercept) 35.09725508 14.303882381 87.50086071
## EDAD 0.96372400 0.947067479 0.98067649
## INGRESOS 0.99992783 0.999911073 0.99994422
## ESTADO_CIVILSingle 0.96707604 0.671505479 1.39235216
## ESTADO_CIVILDivsepwid 0.01653303 0.008083375 0.03265508
## NUM_HIJOS 1.41926541 1.198904998 1.68364174
## NUM_TARJETAS 1.38649273 1.208749379 1.59304459
## MODALIDAD_PAGOWeekly 1.72798645 1.178946417 2.57090404
## HIPOTECAYes 0.52783776 0.380074268 0.72771077
## PRESTAMOS 2.56687005 2.036465294 3.24681711
En el modelo reducido, se nota una disminución en la sensibilidad y un aumento en la especificidad. Dado que el objetivo es aumentar la sensibilidad, podemos concluir que el modelo aún no es óptimo en este sentido.
## Sensitivity Specificity Pos Pred Value
## 0.5533230 0.9331066 0.6691589
## Neg Pred Value Precision Recall
## 0.8952139 0.6691589 0.5533230
## F1 Prevalence Detection Rate
## 0.6057530 0.1964774 0.1087155
## Detection Prevalence Balanced Accuracy
## 0.1624658 0.7432148
El gráfico muestra una distribución positiva para los clientes cumplidores, mientras que las probabilidades predichas para las personas que incumplen tienen una ligera asimetría negativa.
Al revisar la curva ROC, se observa que un mejor punto de corte es el de 0.808
## Setting levels: control = Impago, case = Cumplimiento
## Setting direction: controls < cases
Se observa que con el nuevo punto de corte, se mejora notablemente la sensibilidad del modelo a costa de sacrificar la especificidad. Ahora la sensibilidad es del 79.13%.
## Sensitivity Specificity Pos Pred Value
## 0.7913447 0.8299320 0.5322245
## Neg Pred Value Precision Recall
## 0.9420849 0.5322245 0.7913447
## F1 Prevalence Detection Rate
## 0.6364201 0.1964774 0.1554813
## Detection Prevalence Balanced Accuracy
## 0.2921348 0.8106383
## (Intercept) EDAD INGRESOS GENERO ESTADO_CIVIL
## -1.48028655 0.22907661 0.51510796 -0.00456135 0.00456135
## NUM_HIJOS NUM_TARJETAS MODALIDAD_PAGO HIPOTECA PRESTAMOS
## 0.09371025 1.50184154 -0.21001812 -0.35449611 -0.17349220
## <NA> <NA>
## 0.26092809 -0.46367099
El modelo de soporte vectorial se construyó con un Kernel lineal y un costo de 1. Además, el número de vectores de soporte es de 1075, distribuidos en 534 para la categoría de cumplimiento y 541 para la de impago.
##
## Call:
## svm(formula = RIESGO ~ ., data = Data_Clientes_Cooperativa.tr[, -1],
## type = "C-classification", kernel = "linear", cost = 1, epsilon = 0.1,
## scale = TRUE)
##
##
## Parameters:
## SVM-Type: C-classification
## SVM-Kernel: linear
## cost: 1
##
## Number of Support Vectors: 1075
##
## ( 534 541 )
##
##
## Number of Classes: 2
##
## Levels:
## Impago Cumplimiento
En el primer modelo de SVM, se observa que la sensibilidad es del 68.00% y la especificidad del 92.29%. Se realizará un ajuste de hiperparámetros de penalidad e intensidad para buscar obtener un mejor resultado.
## Sensitivity Specificity Pos Pred Value
## 0.6800618 0.9229025 0.6832298
## Neg Pred Value Precision Recall
## 0.9218573 0.6832298 0.6800618
## F1 Prevalence Detection Rate
## 0.6816421 0.1964774 0.1336168
## Detection Prevalence Balanced Accuracy
## 0.1955664 0.8014822
Se encontró que los mejores hiperparámetros son un costo de 1, alcanzando un rendimiento de 0.1248. Sin embargo, se observa que el hiperparámetro de costo puede tomar cualquier valor entre 1 y 32 sin alterar el error ni la dispersión del modelo, lo cual también se puede apreciar en la gráfica.
##
## Parameter tuning of 'svm':
##
## - sampling method: 10-fold cross validation
##
## - best parameters:
## cost
## 1
##
## - best performance: 0.1248015
##
## - Detailed performance results:
## cost error dispersion
## 1 1 0.1248015 0.01240729
## 2 2 0.1248015 0.01240729
## 3 4 0.1248015 0.01240729
## 4 8 0.1248015 0.01240729
## 5 16 0.1248015 0.01240729
## 6 32 0.1248015 0.01240729
Con los hiperparámetros ajustados, no se aprecia ninguna diferencia con respecto al modelo inicial propuesto.
## Sensitivity Specificity Pos Pred Value
## 0.6800618 0.9229025 0.6832298
## Neg Pred Value Precision Recall
## 0.9218573 0.6832298 0.6800618
## F1 Prevalence Detection Rate
## 0.6816421 0.1964774 0.1336168
## Detection Prevalence Balanced Accuracy
## 0.1955664 0.8014822
Al realizar el modelo de ensamble a través de Random Forest, se identificó que las variables más importantes para la clasificación son los ingresos, los préstamos, la edad y el número de hijos.
La matriz de confusión muestra una sensibilidad del 60.12% y una especificidad del 92.40%. Se realizará un ajuste de hiperparámetros para buscar obtener un mejor resultado.
## Sensitivity Specificity Pos Pred Value
## 0.6012365 0.9240363 0.6593220
## Neg Pred Value Precision Recall
## 0.9045505 0.6593220 0.6012365
## F1 Prevalence Detection Rate
## 0.6289410 0.1964774 0.1181294
## Detection Prevalence Balanced Accuracy
## 0.1791679 0.7626364
Se identifica que el valor óptimo de mtry es 2, ya que genera los valores más altos de Accuracy y Kappa.
## model parameter label forReg forClass probModel
## 1 rf mtry #Randomly Selected Predictors TRUE TRUE TRUE
## Random Forest
##
## 3293 samples
## 10 predictor
## 2 classes: 'Impago', 'Cumplimiento'
##
## No pre-processing
## Resampling: Cross-Validated (10 fold, repeated 10 times)
## Summary of sample sizes: 2963, 2964, 2963, 2964, 2964, 2964, ...
## Resampling results across tuning parameters:
##
## mtry Accuracy Kappa
## 2 0.8775217 0.6143637
## 3 0.8751526 0.6017479
## 4 0.8653457 0.5594861
## 5 0.8611850 0.5397453
## 6 0.8587271 0.5302087
## 7 0.8575419 0.5254463
##
## Accuracy was used to select the optimal model using the largest value.
## The final value used for the model was mtry = 2.
Al ejecutar el modelo de Random Forest con los hiperparámetros ajustados, se observa una sensibilidad del 69.55% y una especificidad del 92.17%, lo que representa una mejora en la sensibilidad con respecto al modelo anterior.
## Sensitivity Specificity Pos Pred Value
## 0.6955178 0.9217687 0.6849315
## Neg Pred Value Precision Recall
## 0.9252656 0.6849315 0.6955178
## F1 Prevalence Detection Rate
## 0.6901840 0.1964774 0.1366535
## Detection Prevalence Balanced Accuracy
## 0.1995141 0.8086432
Para este análisis, es crucial identificar correctamente a los clientes que probablemente no cumplirán con sus obligaciones financieras. Por lo tanto, para seleccionar el mejor modelo nos centraremos en el indicador de sensibilidad, que indica qué tan bien el modelo puede detectar a los clientes con impago.
Al comparar los resultados de los modelos con los datos de entrenamiento, se observa que los tres modelos logran predecir con buen desempeño a los clientes cumplidores (esto se debe a la cantidad de clientes que cumplen). Sin embargo, al tratar de identificar a los clientes con impago, el mejor modelo es la regresión logística ajustada utilizando backward, seguida por Random Forest y, en último lugar, la Máquina de Soporte Vectorial.
## RL svm RF
## Sensitivity 0.7913447 0.6800618 0.6955178
## Specificity 0.8299320 0.9229025 0.9217687
## Pos Pred Value 0.5322245 0.6832298 0.6849315
## Neg Pred Value 0.9420849 0.9218573 0.9252656
## Precision 0.5322245 0.6832298 0.6849315
## Recall 0.7913447 0.6800618 0.6955178
## F1 0.6364201 0.6816421 0.6901840
## Prevalence 0.1964774 0.1964774 0.1964774
## Detection Rate 0.1554813 0.1336168 0.1366535
## Detection Prevalence 0.2921348 0.1955664 0.1995141
## Balanced Accuracy 0.8106383 0.8014822 0.8086432
Al evaluar la capacidad predictiva de los modelos con los datos de prueba, se nota que el modelo de regresión posiblemente está sobreajustado, ya que su sensibilidad disminuye notablemente con datos nuevos. Los otros dos modelos también se ven afectados, pero logran un mejor desempeño en la clasificación, destacándose especialmente el Random Forest por encima de todos.
## RL svm RF
## Sensitivity 0.29299363 0.5732484 0.5987261
## Specificity 0.15765766 0.9264264 0.9264264
## Pos Pred Value 0.07578254 0.6474820 0.6573427
## Neg Pred Value 0.48611111 0.9020468 0.9073529
## Precision 0.07578254 0.6474820 0.6573427
## Recall 0.29299363 0.5732484 0.5987261
## F1 0.12041885 0.6081081 0.6266667
## Prevalence 0.19076549 0.1907655 0.1907655
## Detection Rate 0.05589307 0.1093560 0.1142163
## Detection Prevalence 0.73754557 0.1688943 0.1737546
## Balanced Accuracy 0.22532564 0.7498374 0.7625763
La elección del mejor modelo dependerá de las necesidades específicas del uso que se le quiera dar:
Interpretación de los datos: Para poder interpretar cómo cada variable influye en la probabilidad de que un cliente caiga en impago, el modelo de regresión logística es el más adecuado.
Predicción precisa de impagos: Si el objetivo principal es predecir correctamente si un cliente puede caer en impago, el Random Forest es más ajustado a esta necesidad debido a su capacidad para capturar relaciones complejas entre las variables.
En este caso, dado que la cooperativa necesita identificar a los clientes que pueden caer en impago, el modelo más recomendado es el Random Forest. No obstante, es importante tener en cuenta que este modelo no proporciona una interpretación directa de sus resultados. Si la interpretación del análisis es crucial para la cooperativa, se recomienda utilizar la regresión logística, que permitirá una comprensión más detallada de cómo las variables impactan en las clasificaciones de los clientes.