Problema: Rotación de cargos dentro de una empresa

Descripción del problema: En una organización, se busca comprender y prever los factores que influyen en la rotación de empleados entre distintos cargos. La empresa ha recopilado datos históricos sobre el empleo de sus trabajadores, incluyendo variables como la antigüedad en el cargo actual, el nivel de satisfacción laboral, el salario actual, edad y otros factores relevantes. La gerencia planea desarrollar un modelo de regresión logística que permita estimar la probabilidad de que un empleado cambie de cargo en el próximo período y determinar cuales factores indicen en mayor proporción a estos cambios.

Con esta información, la empresa podrá tomar medidas proactivas para retener a su talento clave, identificar áreas de mejora en la gestión de recursos humanos y fomentar un ambiente laboral más estable y tranquilo. La predicción de la probabilidad de rotación de empleados ayudará a la empresa a tomar decisiones estratégicas informadas y a mantener un equipo de trabajo comprometido y satisfecho en sus roles actuales.

Conocimiento de los datos

La siguiente tabla (tabla 1) muestra un resúmen de los atributos del dataset donde se evidencian ejemplos de los valores de cada atributo así como también el tipo de dato. Destacar presente que la variable objetivo es el atributo Rotación:

## Tabla 1: Tabla resumen
## Rows: 1,470
## Columns: 24
## $ Rotación                    <chr> "Si", "No", "Si", "No", "No", "No", "No", …
## $ Edad                        <dbl> 41, 49, 37, 33, 27, 32, 59, 30, 38, 36, 35…
## $ `Viaje de Negocios`         <chr> "Raramente", "Frecuentemente", "Raramente"…
## $ Departamento                <chr> "Ventas", "IyD", "IyD", "IyD", "IyD", "IyD…
## $ Distancia_Casa              <dbl> 1, 8, 2, 3, 2, 2, 3, 24, 23, 27, 16, 15, 2…
## $ Educación                   <dbl> 2, 1, 2, 4, 1, 2, 3, 1, 3, 3, 3, 2, 1, 2, …
## $ Campo_Educación             <chr> "Ciencias", "Ciencias", "Otra", "Ciencias"…
## $ Satisfacción_Ambiental      <dbl> 2, 3, 4, 4, 1, 4, 3, 4, 4, 3, 1, 4, 1, 2, …
## $ Genero                      <chr> "F", "M", "M", "F", "M", "M", "F", "M", "M…
## $ Cargo                       <chr> "Ejecutivo_Ventas", "Investigador_Cientifi…
## $ Satisfación_Laboral         <dbl> 4, 2, 3, 3, 2, 4, 1, 3, 3, 3, 2, 3, 3, 4, …
## $ Estado_Civil                <chr> "Soltero", "Casado", "Soltero", "Casado", …
## $ Ingreso_Mensual             <dbl> 5993, 5130, 2090, 2909, 3468, 3068, 2670, …
## $ Trabajos_Anteriores         <dbl> 8, 1, 6, 1, 9, 0, 4, 1, 0, 6, 0, 0, 1, 0, …
## $ Horas_Extra                 <chr> "Si", "No", "Si", "Si", "No", "No", "Si", …
## $ Porcentaje_aumento_salarial <dbl> 11, 23, 15, 11, 12, 13, 20, 22, 21, 13, 13…
## $ Rendimiento_Laboral         <dbl> 3, 4, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, …
## $ Años_Experiencia            <dbl> 8, 10, 7, 8, 6, 8, 12, 1, 10, 17, 6, 10, 5…
## $ Capacitaciones              <dbl> 0, 3, 3, 3, 3, 2, 3, 2, 2, 3, 5, 3, 1, 2, …
## $ Equilibrio_Trabajo_Vida     <dbl> 1, 3, 3, 3, 3, 2, 2, 3, 3, 2, 3, 3, 2, 3, …
## $ Antigüedad                  <dbl> 6, 10, 0, 8, 2, 7, 1, 1, 9, 7, 5, 9, 5, 2,…
## $ Antigüedad_Cargo            <dbl> 4, 7, 0, 7, 2, 7, 0, 0, 7, 7, 4, 5, 2, 2, …
## $ Años_ultima_promoción       <dbl> 0, 1, 0, 3, 2, 3, 0, 0, 1, 7, 0, 0, 4, 1, …
## $ Años_acargo_con_mismo_jefe  <dbl> 5, 7, 0, 0, 2, 6, 0, 0, 8, 7, 3, 8, 3, 2, …

De la anterior tabla se seleccionan 6 atributos (3 de tipo categórico y 3 de tipo cuantitativo) los cuales serán las variables predictoras para el modelo de clasificación, dicha selección se hizo teniendo como argumento lo siguiente:

Etapa 1: Selección de variables

Variables cuantitativas: selección e hipótesis

Variables cualitativas: selección e hipótesis

Teniendo presente lo anterior, el dataset inicial con sus variables que será usado para la construcción y modelado del sistema de clasificiación objetivo del presente trabajo será el que se muestra en la siguiente tabla (tabla 2):

Tabla 2: Dataset con los atributos finales
Anios_ultima_promocion Porcentaje_aumento_salarial Edad Estado_Civil Equilibrio_Trabajo_Vida Rendimiento_Laboral Rotacion
0 11 41 Soltero 1 3 Si
1 23 49 Casado 3 4 No
0 15 37 Soltero 3 3 Si
3 11 33 Casado 3 3 No
2 12 27 Casado 3 3 No
3 13 32 Soltero 2 3 No

Etapa 2: analisis univariado:

En esta etapa se hará un análisis de cada una de las variables del dataset para explorar y conocer más detalles sobre las mismas.

Variables cuantitativas

La siguiente tabla (tabla 3) muestra un resúmen estadístico de las variables númericas cuantitativas:

Tabla 3: Resumen Estadístico
Anios_ultima_promocion Porcentaje_aumento_salarial Edad
Min. : 0.000 Min. :11.00 Min. :18.00
1st Qu.: 0.000 1st Qu.:12.00 1st Qu.:30.00
Median : 1.000 Median :14.00 Median :36.00
Mean : 2.188 Mean :15.21 Mean :36.92
3rd Qu.: 3.000 3rd Qu.:18.00 3rd Qu.:43.00
Max. :15.000 Max. :25.00 Max. :60.00

De la anterior tabla (tabla 3) se evidencia que en promedio las personas tienen una promoción cada 2.1 años, adicional que el porcentaje de aumento salarial promedio es de 15.2% y que la edad promedio de las personas en la empresa es de 37 años, teniendo 60 años la persona más longeva en la empresa.

La siguiente gráfica (gráfica 1) muestra el diagrama de cajas de las variables númericas cuantitativas donde Promocion hacer referencia al atributo Anios_ultima_promocion y Aumento hace referencia al atributo Porcentaje_aumento_salarial.

De la anterior grafica (Grafica 1) se evidencia que existen algunos valores outliers o atipicos en el atributo Anios_ultima_promocion los cuales serán analizados detalladamente en etapas posteriores.

La siguiente gráfica (Grafica 2) muestra los distribución de cada una de las variables numéricas cuantitativas:

De la anterio grafica (Grafica 2) se evidencia que el atributo Edad tiene una distribución cercana a una distribución normal, las variables Porcentaje_aumento_salarial y Anios_ultima_promocion estan sesgadas hacía la derecha.

Variables cualitativas

Las siguientes tablas (Tabla 4, Tabla 5 y Tabla 6) representan las tablas de frecuencias de las variables catégoricas:

Tabla 4: Tabla frecuencia Estado_Civil
Estado_Civil n proporcion
Casado 673 0.4578231
Divorciado 327 0.2224490
Soltero 470 0.3197279
Tabla 5: Tabla frecuencia Equilibrio_Trabajo_Vida
Equilibrio_Trabajo_Vida n proporcion
1 80 0.0544218
2 344 0.2340136
3 893 0.6074830
4 153 0.1040816
Tabla 6: Tabla frecuencia Rendimiento_Laboral
Rendimiento_Laboral n proporcion
3 1244 0.8462585
4 226 0.1537415

De la Tabla 4 se evidencia que existen 3 categorias (Casado, Divorciado y Soltero) para el atributo Estado_Civil, siendo la Casado la categoría que aparece con más frecuencia. De la tabla 5 se evidencia que existen 4 niveles o categorias (1,2,3 y 4) para la variable Equilibrio_Trabajo_Vida donde 1 = Muy bajo, 2 = bajo, 3 = Medio y 4 = alto, donde la categoría Medio es la que aparece con mayor frecuencia. De la tabla 6 se evidencia que existen 2 niveles o categorias (3 y 4) para la variable Rendimiento_Laboral donde 3 = alto y 4 = Muy alto, siendo la Alto la categoría que aparece con mayor frecuencia.

Las siguientes gráficas (Grafica 3, grafica 4 y grafica 5) muestran graficamente las distribuciones de cada una de las categorías de las variables cualitativas.

De la grafica 3 se evidencia que la mayoría de los trabajadores de la empresa están casados, de la gráfica 4 se evidencia que la mayoría de las personas consideran que tienen un equilibrio trabajo-vida medio y de la grafica 5 se evidencia que de las cuatro categorías del rendimiento laboral los trabajadores tienen un rendimiento alto el cual esta muy por encima de la categoría muy alto que es la que le sigue en order descendiente.

La siguiente tabla (tabla 7) muestra el número de valores nulos (si aplica) de cada una de los atributos del dataset.

Tabla 7: Conteo de valores nulos por atributo
x
Anios_ultima_promocion 0
Porcentaje_aumento_salarial 0
Edad 0
Estado_Civil 0
Equilibrio_Trabajo_Vida 0
Rendimiento_Laboral 0
Rotacion 0

De la anterior grafica (grafia 7) se evidencia que no existen valores nulos en las variables del dataset por lo que no será necesario realizar ninguna imputación.

Etapa 3: analisis bivariado:

En esta etapa se hará un análisis bivariado entre cada una de las variables predictoreas y la variable objetivo Rotación para con ello identificar las variables determinantes de la rotación.

Para realizar el análisis anterior se convirtió la variable rotación siguiendo la siguiente lógica:

La siguiente tabla (tabla 8) muestra de nuevo un resúmen de los valores y tipos de las variables en el dataset, donde se puede evidenciar la transformación en la variable Rotación anteriormente descrita:

Tabla 8: Variable Rotacion transformada
Anios_ultima_promocion Porcentaje_aumento_salarial Edad Estado_Civil Equilibrio_Trabajo_Vida Rendimiento_Laboral Rotacion
0 11 41 Soltero 1 3 1
1 23 49 Casado 3 4 0
0 15 37 Soltero 3 3 1
3 11 33 Casado 3 3 0
2 12 27 Casado 3 3 0
3 13 32 Soltero 2 3 0

De la anterior tabla (tabla 8) se evidencia que la variable rotación fue transformada siguiendo la lógica anteriormente descrita, quedando esta como una variable de tipo binaria (0 y 1), por otro lado se evidencia que la variable Estado_Civil que es de tipo categorica tiene 3 diferentes categorias (Soltero, Casado y Divorciado) que son de tipo texto, teniendo presente esto último y sabiendo los algoritmos de los modelos de inteligencia artificial no trabajan bien variables de tipo texto (string) procedemos a transformar esta variable aplicando la técnica one-hot Encoding obteniendo los resultados mostrados en la siguiente tabla (Tabla 9):

## Tabla 9: Dataset transformado
## Rows: 1,470
## Columns: 9
## $ Anios_ultima_promocion      <dbl> 0, 1, 0, 3, 2, 3, 0, 0, 1, 7, 0, 0, 4, 1, …
## $ Porcentaje_aumento_salarial <dbl> 11, 23, 15, 11, 12, 13, 20, 22, 21, 13, 13…
## $ Edad                        <dbl> 41, 49, 37, 33, 27, 32, 59, 30, 38, 36, 35…
## $ Equilibrio_Trabajo_Vida     <dbl> 1, 3, 3, 3, 3, 2, 2, 3, 3, 2, 3, 3, 2, 3, …
## $ Rendimiento_Laboral         <dbl> 3, 4, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, …
## $ Rotacion                    <dbl> 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ Estado_CivilCasado          <dbl> 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, …
## $ Estado_CivilDivorciado      <dbl> 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, …
## $ Estado_CivilSoltero         <dbl> 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, …

En la anterior tabla (tabla 9) se evidencian las nuevas variables construídas al aplicar la técnica one-hot encoding

La siguiente grafica (grafica 6) muestra las relaciones que existen entre cada variable predictoras númericas continuas para con ello validar si existe multinolinealidad entre ellas.

De la anterior gráfica (Grafica 6) se evidencia que no existe relaciones entre las variables numericas predictoras, lo cual puede interpretarse en que no existe multicolinealidad entre ellas

Pruebas estadisticas de relación bivariada

Para validar las relaciones que existen entre las variables predictoras y la variable objetivo, se realizaron pruebas T de Student y Chi-cuadrado. Las pruebas T de Student fueron aplicadas a las variables númericas (Anios_ultima_promocion, Porcentaje_aumento_salarial y Edad) en relación con la variable objetivo Rotación, y las pruebas de Chi-Cuadrado fueron aplicadas a las variables categoricas (Estado_CivilCasado, Estado_CivilDivorciado, Estado_CivilSoltero, Equilibrio_Trabajo_Vida y Rendimiento_Laboral) con la variable objetivo Rotación, obteniendo los siguientes resultados.

Pruebas: T de Student

## 
##  Welch Two Sample t-test
## 
## data:  Anios_ultima_promocion by Rotacion
## t = 1.2879, df = 338.49, p-value = 0.1987
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
##  -0.1525043  0.7309843
## sample estimates:
## mean in group 0 mean in group 1 
##        2.234388        1.945148
## 
##  Welch Two Sample t-test
## 
## data:  Porcentaje_aumento_salarial by Rotacion
## t = 0.50424, df = 326.11, p-value = 0.6144
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
##  -0.3890709  0.6572652
## sample estimates:
## mean in group 0 mean in group 1 
##        15.23114        15.09705
## 
##  Welch Two Sample t-test
## 
## data:  Edad by Rotacion
## t = 5.8291, df = 316.94, p-value = 1.371e-08
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
##  2.619728 5.289170
## sample estimates:
## mean in group 0 mean in group 1 
##        37.56204        33.60759

De los anteriores resultados podemos concluir que no hay suficiente evidencia estadistica para afirmar que las variables Anios_ultima_promocion y Porcentaje_aumento_salarial tengan una relación con la variable Rotación puesto que p-value > 0.05, por otro lado para la variable Edad existe suficiente evidencia estadística para afirmar esta está relacionada con la variable objetivo Rotación puesto que p-value < 0.05 y la edad media de las personas con rotación es significativamente menor que la de las personas sin rotación. la edad parece ser una variable importante que podría influir en la rotación de los empleados, mientras que las otras variables (Anios_ultima_promocion y Porcentaje_aumento_salarial) no parecen estar relacionadas significativamente con la rotación.

Pruebas: Chi-Cuadrado

## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  table(dataset_inicial_5$Rotacion, dataset_inicial_5$Estado_CivilCasado)
## X-squared = 11.677, df = 1, p-value = 0.0006327
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  table(dataset_inicial_5$Rotacion, dataset_inicial_5$Estado_CivilDivorciado)
## X-squared = 10.744, df = 1, p-value = 0.001046
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  table(dataset_inicial_5$Rotacion, dataset_inicial_5$Estado_CivilSoltero)
## X-squared = 44.217, df = 1, p-value = 2.939e-11
## 
##  Pearson's Chi-squared test
## 
## data:  table(dataset_inicial_5$Rotacion, dataset_inicial_5$Equilibrio_Trabajo_Vida)
## X-squared = 16.325, df = 3, p-value = 0.0009726
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  table(dataset_inicial_5$Rotacion, dataset_inicial_5$Rendimiento_Laboral)
## X-squared = 0.00015475, df = 1, p-value = 0.9901

De los anteriores resultados podemos concluir que hay sufuciente evidencia estadísticamente significativa para asumir que las variables Estado_CivilCasado, Estado_CivilDivorciado, Estado_CivilSoltero y Equilibrio_Trabajo_Vida estan relacionadas con la variable objetivo Rotación puesto que p-value < 0.05 y que no existe suficiente evidencia estadística para afirmar que exista una relación entre la variable Rendimiento_Laboral y la variable objetivo por que el p-value > 0.05

Etapa 3: Modelado

En esta estapa se hará la partición del dataset entre su set de entrenamiento y prueba, adicional se construirá y entrenará un modelo de regresión logístico.

Mencionar que debido a que no existe una diferencia considerable entre las escalas de las variables en el dataset no se hace necesario aplicar técnicas de escalado, lo anterior teniendo presente que las escalas de las variables del dataset se mueven entre un rango 0 a 60.

Las siguiente tablas (Tablas 9 y 10) muestran los diferentes dataset (entrenamiento y testing) que serán usado para entrenar y evaluar el modelo de regresión logística, dichos datasets fueron obtenidos a través de partir el dataset inicial en una proporción de 70-30 % donde el 70% (1029 registros) corresponde al dataset de entrenamiento y el 30% (441 regristros) corresponde al dataset de testing.

Tabla 9: Dataset para entrenamiento
Anios_ultima_promocion Porcentaje_aumento_salarial Edad Equilibrio_Trabajo_Vida Rendimiento_Laboral Rotacion Estado_CivilCasado Estado_CivilDivorciado Estado_CivilSoltero
415 1 16 24 3 3 1 0 0 1
463 5 12 34 3 3 0 0 0 1
179 15 25 46 3 4 0 0 1 0
526 2 14 24 3 3 1 0 0 1
195 11 23 45 3 4 0 1 0 0
938 15 13 39 3 3 0 0 1 0
Tabla 10: Dataset para testing
Anios_ultima_promocion Porcentaje_aumento_salarial Edad Equilibrio_Trabajo_Vida Rendimiento_Laboral Rotacion Estado_CivilCasado Estado_CivilDivorciado Estado_CivilSoltero
3 0 15 37 3 3 1 0 0 1
7 0 20 59 2 4 0 1 0 0
14 1 11 34 3 3 0 0 1 0
15 0 14 28 3 3 1 0 0 1
21 1 18 24 2 3 0 0 1 0
22 0 23 36 3 4 1 0 0 1

La siguiente tabla (tabla 11) muestra un resúmen del modelo de regesión logística construído, entrenado y testeado.

## Tabla 11: Tabla resumen modelo
## 
## Call:
## glm(formula = Rotacion ~ Anios_ultima_promocion + Porcentaje_aumento_salarial + 
##     Edad + Equilibrio_Trabajo_Vida + Rendimiento_Laboral + Estado_CivilCasado + 
##     Estado_CivilDivorciado + Estado_CivilSoltero, family = binomial, 
##     data = train)
## 
## Coefficients: (1 not defined because of singularities)
##                              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                  1.051262   0.985198   1.067   0.2859    
## Anios_ultima_promocion      -0.001854   0.031205  -0.059   0.9526    
## Porcentaje_aumento_salarial -0.048792   0.039754  -1.227   0.2197    
## Edad                        -0.063341   0.011359  -5.576 2.46e-08 ***
## Equilibrio_Trabajo_Vida     -0.275256   0.120286  -2.288   0.0221 *  
## Rendimiento_Laboral          0.492384   0.398713   1.235   0.2169    
## Estado_CivilCasado          -0.793631   0.195060  -4.069 4.73e-05 ***
## Estado_CivilDivorciado      -1.194935   0.272785  -4.381 1.18e-05 ***
## Estado_CivilSoltero                NA         NA      NA       NA    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 896.03  on 1028  degrees of freedom
## Residual deviance: 815.13  on 1021  degrees of freedom
## AIC: 831.13
## 
## Number of Fisher Scoring iterations: 5

De la anterior tabla (tabla 11) se evidencia que las variables que parecen tener un impacto estadísticamente significativo sobre las probabilida de rotación son la Edad, Equilibrio_Trabajo_Vida y Estado_CivilCasado y Estado_CivilDivorciado. Para la Edad el coeficiente negativo sugiere que las personas mayores tienen menos probabilidad de rotar, para Equilibrio_Trabajo_Vida el coeficiente negativo sugiere que un mejor equilibrio reduce la probabilidad de rotación y para las variables Estado_CivilCasado y Estado_CivilDivorciado los coeficientes negativos indican que las personas casadas y divorciadas tienen menos probabilidad de rotación.

Agregando a lo anterior se evidencia que las variables Anios_ultima_promocion, Porcentaje_aumento_salarial y Rendimiento_Laboral no tienen impacto significativo en la probabilidad de rotación según el modelo construído. Por último se evidencia que el modelo ha ignorado la variable Estado_CivilSoltero para evitar el problema de la multicolinealidad perfecta tomando esta como referencia explicita.

En la siguiente gráfica (grafica 7) muestra la curva ROC del modelo construída con los datos de prueba y el valor del área bajo la curva (AUC)

## Area under the curve: 0.5862

De la anterior gráfica (grafica 7) se evidencia que el modelo no tiene poder predictivo debido a que el AUC es cercano a 0.5 (0.5862 siendo exactos) lo cual puede deberse a muchos factores, uno de ellos es que de los 6 atributos seleccioandos solo la Edad, Estado_Civil y Equilibrio_Trabajo_Vida tiene suficiente significancia estadística de relación con la variable objetivo Rotación. Por lo anterior una de las posibles soluciones para aumentar la precisión del modelo es escoger otros atributos que puedan estar más relacionados con la variable objetivo o aumentar el tamaño del dataset, esto último no hace parte del alcance del presente trabajo.

Etapa 3: Conclusiones