Punto 1: Datos rotación

head(datos, n=3)
##   Rotación Edad Viaje.de.Negocios Departamento Distancia_Casa Educación
## 1       Si   41         Raramente       Ventas              1         2
## 2       No   49    Frecuentemente          IyD              8         1
## 3       Si   37         Raramente          IyD              2         2
##   Campo_Educación Satisfacción_Ambiental Genero                Cargo
## 1        Ciencias                      2      F               Ventas
## 2        Ciencias                      3      M Tecnico_Investigador
## 3            Otra                      4      M Tecnico_Investigador
##   Satisfación_Laboral Estado_Civil Ingreso_Mensual Trabajos_Anteriores
## 1                   4      Soltero            5993                   8
## 2                   2       Casado            5130                   1
## 3                   3      Soltero            2090                   6
##   Horas_Extra Porcentaje_aumento_salarial Rendimiento_Laboral Años_Experiencia
## 1          Si                          11                   3                8
## 2          No                          23                   4               10
## 3          Si                          15                   3                7
##   Capacitaciones Equilibrio_Trabajo_Vida Antigüedad Antigüedad_Cargo
## 1              0                       1          6                4
## 2              3                       3         10                7
## 3              3                       3          0                0
##   Años_ultima_promoción Años_acargo_con_mismo_jefe
## 1                     0                          5
## 2                     1                          7
## 3                     0                          0

Hipotesis Iniciales

  • Horas Extras: Se esperaría que aquellos empleados que tengan horas extras tengan una mayor probabilidad de rotación dado a la posible mayor carga laboral, esto podría generar que los empleados busque trabajos que les permitan tener mayor tiempo libre

  • Estado Civil: Los empleados solteros podrían tener mayor probabilidad de rotación en comparación con las personas casadas, dado que al no tener un compromiso familiar pueden darse la oportunidad de movilizarse con mayor facilidad que otro que se encuentre casado.

  • Cargo: Algunos cargos por demanda pueden estar relacionados con una mayor probabilidad de rotación, dado a mejores oportunidades salariales.

  • Edad: Los empleados más jovenes pueden tener una mayor probabilidad de rotación en comparación a los empleados con edades mayores

  • Ingresos Mensuales: Los empleados que ganan menos pueden tener una mayor probabilidad de rotación, por la necesidad de querer mayor estabilidad economica y mejores oportunidades

  • Antiguedad: Las personas con mayor antiguedad en la empresa pueden considerar tener mayor estabilidad laboral y por ende decidir continuar con sus empleos actuales, por tanto, tendrian una menor probabilidad de rotación

Analisis Univariado

Realizando una categorización de los empleados de la empresa mediante las variables escogidas en la sección anterior encontramos lo siguiente:

Cantidad de valores faltantes

No se observa datos faltantes en ninguna de las variables dentro de la base de datos.

apply(is.na(datos), 2, sum)
##                    Rotación                        Edad 
##                           0                           0 
##           Viaje.de.Negocios                Departamento 
##                           0                           0 
##              Distancia_Casa                   Educación 
##                           0                           0 
##             Campo_Educación      Satisfacción_Ambiental 
##                           0                           0 
##                      Genero                       Cargo 
##                           0                           0 
##         Satisfación_Laboral                Estado_Civil 
##                           0                           0 
##             Ingreso_Mensual         Trabajos_Anteriores 
##                           0                           0 
##                 Horas_Extra Porcentaje_aumento_salarial 
##                           0                           0 
##         Rendimiento_Laboral            Años_Experiencia 
##                           0                           0 
##              Capacitaciones     Equilibrio_Trabajo_Vida 
##                           0                           0 
##                  Antigüedad            Antigüedad_Cargo 
##                           0                           0 
##       Años_ultima_promoción  Años_acargo_con_mismo_jefe 
##                           0                           0

Analisis sobre las variables categoricas

  • En la base se cuenta con el 16.12% de empleado que ha rotado para un total de 237 empleados.

  • La mayoría de los empleados de la empresa estan casados siendo el 45.7%, seguido por los solteros con el 31.97%.

  • El 28.3% realiza horas extras en la empresa

  • Los tecnicos, investigadores y de ventas conforma el 65.82% de los empleados de la empresa

Analisis sobre las variables cuatitativas

  • Los empleados tienen un ingreso promedio de $ 6.502 con un coeficiente de variación del 72.4%

  • Los empleados tienen una edadd promedio de 36.9 años con un coeficiente de variación del 24.8%

  • Los empleados tienen una Antigüedad promedio de 7.1 años con un coeficiente de variación del 87.4%

Analisis Bivariado

Analisis sobre las variables categoricas vs rotacion

  • Podemos observar una mayor prevalencia de clientes con rotación en aquellos que realizan hora extras siendo esta del 30.5%, en comparación a los que no realizan horas extras.

  • Frente al estado civil, los empleados solteros tienen una mayor prevalencia de clientes con rotación (25.5%) en comparación a los casados o divorsiados.

  • En cuanto al cargo, los empleados de ventas, tecnicos o investigadores tienen una mayor prevalencia de clientes con rotación (22. y 19.7% respectivamente) en comparación a los otros cargos.

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

Analisis sobre las variables cuantitativas vs rotacion

  • La media de edad de los clientes que rotan en la empresa es menor a los que no rotan en aproximadamente 4 años.
  • La variabilidad de la distribucion de edades en los empleados que rotan es del 28.8% y frente a la variabilidad de las edad que no rotan que es del 23.6%.

  • Los ingresos promedio de los clientes que rotan en la empresa es menor a los que no rotan siendo estos de $ 4.787 y $ 6.832 respectivamente.
  • La variabilidad de la distribucion de edades en los empleados que rotan es del 76.04% y frente a la variabilidad de las edad que no rotan que es del 70.5%.

  • Los empleados que rotan en la empresa tienen una antiguedad promedio 5.13 años en comparacion a los que no rotan que tienen una antiguedad promeido de 7.13 años.

Analisis de correlacion entre las variables cuantitativas

No hay correlaciones muy fuertes entre las variables a considerar en la construcción del modelo.

Categorización de las variables cuantitativas para la construcción del modelo

datos$Edad_cat <- ifelse(datos$Edad <= 32,'Menos 32 años','Mas 32 Años')
datos$Ingreso_Mensual_cat <- ifelse(datos$Ingreso_Mensual <= 3200,'Menos 3200','Mas 3200')
datos$Antigüedad_cat <- ifelse(datos$Antigüedad <= 3,'Menos 3 años','Mas 3 años')

Analisis de relacion entre las variables categorizadas y la variable de respuesta

  • Los empleados con menos de 32 años rotan mas que aquellos que tienen más de 32 años.

  • Los empleados con ingresos por encima de $ 3.200 rotan menos.

  • Los que tienen menos de 3 años de antiguedad rotan más que los que son mas antiguos en la empresa.

Construccion del modelo

Se plantea el modelo considerando las variables anteriormente planteadas, dando el siguiente modelo estimado:

modelo_log <- glm(datos$respuesta ~. , datos_modelo, family = "binomial")
summary(modelo_log)
## 
## Call:
## glm(formula = datos$respuesta ~ ., family = "binomial", data = datos_modelo)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.8799  -0.5510  -0.3751  -0.2159   2.8534  
## 
## Coefficients:
##                               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                    -4.0537     0.2986 -13.577  < 2e-16 ***
## Edad_catMenos 32 años           0.6328     0.1669   3.793 0.000149 ***
## CargoOtros_Cargos               0.7578     0.3583   2.115 0.034443 *  
## CargoTecnico_Investigador       0.6708     0.3124   2.147 0.031781 *  
## CargoVentas                     1.2688     0.2951   4.299 1.71e-05 ***
## Estado_CivilDivorciado         -0.3264     0.2329  -1.402 0.161047    
## Estado_CivilSoltero             0.8101     0.1734   4.671 2.99e-06 ***
## Ingreso_Mensual_catMenos 3200   0.7642     0.1981   3.857 0.000115 ***
## Horas_ExtraSi                   1.5380     0.1627   9.454  < 2e-16 ***
## Antigüedad_catMenos 3 años      0.6193     0.1679   3.690 0.000224 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1298.6  on 1469  degrees of freedom
## Residual deviance: 1052.0  on 1460  degrees of freedom
## AIC: 1072
## 
## Number of Fisher Scoring iterations: 5
anova(modelo_log, test = "Chisq")
## Analysis of Deviance Table
## 
## Model: binomial, link: logit
## 
## Response: datos$respuesta
## 
## Terms added sequentially (first to last)
## 
## 
##                     Df Deviance Resid. Df Resid. Dev  Pr(>Chi)    
## NULL                                 1469     1298.6              
## Edad_cat             1   44.406      1468     1254.2 2.669e-11 ***
## Cargo                3   37.171      1465     1217.0 4.234e-08 ***
## Estado_Civil         2   33.344      1463     1183.7 5.748e-08 ***
## Ingreso_Mensual_cat  1   25.253      1462     1158.4 5.029e-07 ***
## Horas_Extra          1   92.915      1461     1065.5 < 2.2e-16 ***
## Antigüedad_cat       1   13.451      1460     1052.0 0.0002449 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Estimacion de la curva ROC

El modelo estimado genera un area bajo la ROC del 78.67%, lo que quiere decir que el modelo tiene una probabilidad del 78.67% de clasificar los empleados que rotan vs lo que no lo hacen.

#### Definicion del punto de corte

Con la intencion de poder clasificar los clientes de acuerdo a su probabilidad si rotan o no, se determina el punto de corte en 0.30 considerando metricas como el accuracy, recall, la precisión y el F1 del modelo.

Considerando un posible empleado nuevo a ser clasificado por el modelo, con las caracteristicas que se describen a continuacion

##        Edad_cat  Cargo Estado_Civil Ingreso_Mensual_cat Horas_Extra
## 1 Menos 32 años Ventas      Soltero          Menos 3200          No
##   Antigüedad_cat
## 1   Menos 3 años

Este tendría una probabilidad del 51.04% de rotar, y dado el punto de corte determinado anteriormente, este empleado seria clasificado como un empleado a intervenir dada su probabilidad. Este empleado es del area de ventas y presenta ingresos por debajo de los 3.200 quizás la empresa debería ofrecerle un mayor incremento salarial o una mejor visión de crecimiento al interior de la empresa para que este nuevo empleado decida continuar en la misma.

round(predict(modelo_log, empleado, type = "response")*100,2)
##     1 
## 51.04

Posibles estrategias a realizar por la empresa

Dado que los clientes que tienen una mayor incidiencia en la probabilidad de rotar de la empresa son aquellos que presentan ingresos bajos o tienen cargos relacionados con ventas o realizan horas extras. La empresa debería analizar si existe una brecha salarial entre estos empleados que pueda estar incidiendo a que su prevalencia de rotacion sea mayor. Adicional, considerar mayores incentivos para los empleados que realizan horas extras bien sea con una reduccion en la carga horario o un mayor incentivo economico.

Punto 2: Datos Creditos

##   DEFAULT ANTIUEDAD     EDAD CUOTA_TOTAL INGRESOS CUOTA_TOTAL_MM INGRESOS_MM
## 1       1  37.31781 76.98356     3020519  8155593       3.020519    8.155593
## 2       1  37.31781 73.77534     1766552  6181263       1.766552    6.181263
## 3       1  30.97808 78.93699     1673786  4328075       1.673786    4.328075

Analisis Univariado

Se realizará una exploración a la información dentro del archivo con la intención de definir las variables a se considerasdas dentro del modelo.

Revision de datos faltantes en la base de datos

No se identifican datos faltantes dentro del archivo a analizar

apply(is.na(datos), 2, sum)
##        DEFAULT      ANTIUEDAD           EDAD    CUOTA_TOTAL       INGRESOS 
##              0              0              0              0              0 
## CUOTA_TOTAL_MM    INGRESOS_MM 
##              0              0

Analisis de las variables cuantitativas

  • En la base se cuenta con un 5% de clientes que son marcados como incumplidos

  • Los clientes en la entidad cuentan con una antiguedad promedio de 18 años y la distribucion presenta una variabilidad del 66.1%

  • Los clientes tienen una edad promedio de 56.9 años y la distribucion presenta una variabilidad del 22.3%

  • Los clientes paga una cuota promedio en MM de $ 0.89 y la distribucion presenta una variabilidad del 83.1%

  • Los clientes tienen un ingreso promedio en MM de $ 5.37 y la distribucion presenta una variabilidad del 49.3%

Analisis Bivariado sobre Variables Cuantitativas vs la variable de respuesta

  • El 50% de los clientes que incumplen en el pago de sus creditos tienen una Antigüedad de 9.9 años versus el 50% de los clientes que no incumple donde es de 15.4 años

  • El 50% de los clientes que incumplen en el pago de sus creditos tienen una edad de 53 años versus el 50% de los clientes que no incumple donde es de 58 años

  • El 50% de los clientes que incumplen en el pago de sus creditos tienen una cuota por encima de $ 1.07 MM versus el 50% de los clientes que no incumple donde es de $ 0.67 MM

  • El 50% de los clientes que incumplen en el pago de sus creditos tienen ingresos por debajo de $ 4.8 MM versus el 50% de los clientes que no incumple donde es de $ 5.04 MM

Analisis de correlacion entre las variables a ser usadas en el modelo

No hay correlaciones muy fuertes entre las variables, sin embargo, la antiguedad y la edad presenta la correlacion más alta siendo esta del 75%.

Construccion de los modelos

Al construir el modelo con las variables expuestas anteriormente, vemos que la edad no es significativa dentro de esto por tanto se decide excluir del modelo. Al realizar este proceso, la antiguedad tambien pierde correlación, por lo que se decide plantear un modelo con las variables restantes, dando como resultado lo siguiente:

## 
## Call:
## glm(formula = DEFAULT ~ ., family = "binomial", data = datos_modelo)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -0.6901  -0.3648  -0.2928  -0.2113   2.9753  
## 
## Coefficients:
##                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)     -2.3530     0.3966  -5.933 2.97e-09 ***
## CUOTA_TOTAL_MM   0.9341     0.2404   3.885 0.000102 ***
## INGRESOS_MM     -0.3134     0.1005  -3.119 0.001817 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 309.68  on 779  degrees of freedom
## Residual deviance: 291.37  on 777  degrees of freedom
## AIC: 297.37
## 
## Number of Fisher Scoring iterations: 6

Validar el poder predictivo del modelo con validación cruzada.

cv_error <- cv.glm(data = datos_modelo, glmfit = modelo_log, K = 10)
cv_error$delta
## [1] 0.04622733 0.04619913

Estimacion de la curva ROC

El modelo estimado genera un area bajo la ROC del 67.91%, lo que quiere decir que el modelo tiene una probabilidad del 67.91% de clasificar los clientes que incumple y los que no.