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 busca 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.


Solución

Etapa 1. Selección de variables

1.1 cargue y lectura de datos

#Carga de datos
data("rotacion")
glimpse(rotacion)
## 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, …

La base de datos cuenta con 1470 registros y 24 variables, distribuidas asi:

  • Variables categóricas: Rotación, Viaje de Negocios, Departamento, Campo Educación, Género, Cargo, Estado Civil, Horas Extra.

  • Variables numéricas: Edad, Distancia Casa, Educación, Satisfacción Ambiental, Satisfacción Laboral, Ingreso Mensual, Trabajos Anteriores, Porcentaje de Aumento Salarial, Rendimiento Laboral, Años de Experiencia, Capacitaciones, Equilibrio Trabajo-Vida, Antigüedad, Antigüedad en el Cargo, Años desde la Última Promoción, Años al Cargo con el Mismo Jefe.

#Estadísticas descriptivas de las variables númericas
summary(rotacion)
##    Rotación              Edad       Viaje de Negocios  Departamento      
##  Length:1470        Min.   :18.00   Length:1470        Length:1470       
##  Class :character   1st Qu.:30.00   Class :character   Class :character  
##  Mode  :character   Median :36.00   Mode  :character   Mode  :character  
##                     Mean   :36.92                                        
##                     3rd Qu.:43.00                                        
##                     Max.   :60.00                                        
##  Distancia_Casa     Educación     Campo_Educación    Satisfacción_Ambiental
##  Min.   : 1.000   Min.   :1.000   Length:1470        Min.   :1.000         
##  1st Qu.: 2.000   1st Qu.:2.000   Class :character   1st Qu.:2.000         
##  Median : 7.000   Median :3.000   Mode  :character   Median :3.000         
##  Mean   : 9.193   Mean   :2.913                      Mean   :2.722         
##  3rd Qu.:14.000   3rd Qu.:4.000                      3rd Qu.:4.000         
##  Max.   :29.000   Max.   :5.000                      Max.   :4.000         
##     Genero             Cargo           Satisfación_Laboral Estado_Civil      
##  Length:1470        Length:1470        Min.   :1.000       Length:1470       
##  Class :character   Class :character   1st Qu.:2.000       Class :character  
##  Mode  :character   Mode  :character   Median :3.000       Mode  :character  
##                                        Mean   :2.729                         
##                                        3rd Qu.:4.000                         
##                                        Max.   :4.000                         
##  Ingreso_Mensual Trabajos_Anteriores Horas_Extra       
##  Min.   : 1009   Min.   :0.000       Length:1470       
##  1st Qu.: 2911   1st Qu.:1.000       Class :character  
##  Median : 4919   Median :2.000       Mode  :character  
##  Mean   : 6503   Mean   :2.693                         
##  3rd Qu.: 8379   3rd Qu.:4.000                         
##  Max.   :19999   Max.   :9.000                         
##  Porcentaje_aumento_salarial Rendimiento_Laboral Años_Experiencia
##  Min.   :11.00               Min.   :3.000       Min.   : 0.00   
##  1st Qu.:12.00               1st Qu.:3.000       1st Qu.: 6.00   
##  Median :14.00               Median :3.000       Median :10.00   
##  Mean   :15.21               Mean   :3.154       Mean   :11.28   
##  3rd Qu.:18.00               3rd Qu.:3.000       3rd Qu.:15.00   
##  Max.   :25.00               Max.   :4.000       Max.   :40.00   
##  Capacitaciones  Equilibrio_Trabajo_Vida   Antigüedad     Antigüedad_Cargo
##  Min.   :0.000   Min.   :1.000           Min.   : 0.000   Min.   : 0.000  
##  1st Qu.:2.000   1st Qu.:2.000           1st Qu.: 3.000   1st Qu.: 2.000  
##  Median :3.000   Median :3.000           Median : 5.000   Median : 3.000  
##  Mean   :2.799   Mean   :2.761           Mean   : 7.008   Mean   : 4.229  
##  3rd Qu.:3.000   3rd Qu.:3.000           3rd Qu.: 9.000   3rd Qu.: 7.000  
##  Max.   :6.000   Max.   :4.000           Max.   :40.000   Max.   :18.000  
##  Años_ultima_promoción Años_acargo_con_mismo_jefe
##  Min.   : 0.000        Min.   : 0.000            
##  1st Qu.: 0.000        1st Qu.: 2.000            
##  Median : 1.000        Median : 3.000            
##  Mean   : 2.188        Mean   : 4.123            
##  3rd Qu.: 3.000        3rd Qu.: 7.000            
##  Max.   :15.000        Max.   :17.000
# Verificar valores nulos por columna
valores_nulos <- colSums(is.na(rotacion))

# Mostrar los nombres de las columnas con valores nulos y la cantidad de ellos
print(valores_nulos[valores_nulos > 0])
## named numeric(0)

No hay datos faltantes en la base de datos.


1.2 Selección de variables

Elejir 3 variables categóricas (distintas de rotación) y 3 variables cuantitativas, que se consideren estén relacionadas con la rotación.

Variables categóricas

  • Departamento: diferentes departamentos tienen diferentes tareas, responsabilidades y diferentes oportunidades de crecimiento de forma que algunos pueden presentarse como más tractivos y promover la rotación.

  • Horas extra: trabajar horas extra puede aumentar el riesgo de rotación debido al agotamiento y la insatisfacción laboral.

  • Género: es común que diferentes géneros tengan diferentes oportunidades laborales y por tanto influya en la rotación.

Variables numéricas

  • Satisfacción laboral: La rotación suele ser más alta entre los menos satisfechos, quienes buscan mejores oportunidades laborales.

  • Años de experiencia: Los empleados con más experiencia tienden a cambiar menos de trabajo, a menudo asociando un cambio de puesto con la pérdida de años de experiencia.

  • Edad: estadísticamente, los trabajadores más jóvenes tienden a cambiar de trabajo con más frecuencia, mientras que los más mayores prefieren la estabilidad laboral.


Etapa 2. Análisis univariado

2.1 Variables categoricas

# Seleccionar variables categóricas
variables_categoricas <- rotacion[, c("Departamento", "Horas_Extra", "Genero")]

# Realizar análisis univariado de variables categóricas
summary(variables_categoricas)
##  Departamento       Horas_Extra           Genero         
##  Length:1470        Length:1470        Length:1470       
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character
library(ggplot2)

# Gráfico de barras para Departamento
ggplot(rotacion, aes(x = Departamento)) +
  geom_bar(fill = "skyblue", color = "black") +
  geom_text(stat = 'count', aes(label = ..count..), position = position_stack(vjust = 0.5)) +
  labs(title = "Empleados por Departamento",
       x = "Departamento",
       y = "Número de empleados")

# Gráfico de barras para Horas Extra
ggplot(rotacion, aes(x = Horas_Extra)) +
  geom_bar(fill = "lightgreen", color = "black") +
  geom_text(stat = 'count', aes(label = ..count..), position = position_stack(vjust = 0.5)) +
  labs(title = "Horas extra",
       x = "Horas Extra",
       y = "Número de empleados")

# Gráfico de barras para Género
ggplot(rotacion, aes(x = Genero)) +
  geom_bar(fill = "lightcoral", color = "black") +
  geom_text(stat = 'count', aes(label = ..count..), position = position_stack(vjust = 0.5)) +
  labs(title = "Empleados por Género",
       x = "Género",
       y = "Número de empleados")
## Warning: The dot-dot notation (`..count..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(count)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

  • La empresa tiene 3 departamentos: IyD, RH, y Ventas: IyD con 961 empleados, Ventas con 446 empleados y luego RH con 61 empleados, para un total de 1470 empleados.

  • Mas de 400 empleados trabajan horas extras, y 1054 empleados no trabajan horas extras.

  • El 40% de los empleados son muejres y el 60% de los empleados son hombres.


2.1 Variables cuantitativas

# Seleccionar variables numéricas
variables_numericas <- rotacion[, c("Satisfación_Laboral", "Años_Experiencia", "Edad")]

# Realizar análisis univariado de variables numéricas
summary(variables_numericas)
##  Satisfación_Laboral Años_Experiencia      Edad      
##  Min.   :1.000       Min.   : 0.00    Min.   :18.00  
##  1st Qu.:2.000       1st Qu.: 6.00    1st Qu.:30.00  
##  Median :3.000       Median :10.00    Median :36.00  
##  Mean   :2.729       Mean   :11.28    Mean   :36.92  
##  3rd Qu.:4.000       3rd Qu.:15.00    3rd Qu.:43.00  
##  Max.   :4.000       Max.   :40.00    Max.   :60.00
# Histograma para Satisfacción Laboral
ggplot(rotacion, aes(x = Satisfación_Laboral)) +
  geom_histogram(fill = "lightblue", color = "black", bins = 20) +
  labs(title = "Satisfacción Laboral",
       x = "Satisfacción Laboral",
       y = "Frecuencia")

# Histograma para Años de Experiencia
ggplot(rotacion, aes(x = Años_Experiencia)) +
  geom_histogram(fill = "lightgreen", color = "black", bins = 20) +
  labs(title = "Años de Experiencia",
       x = "Años de Experiencia",
       y = "Frecuencia")

# Histograma para Edad
ggplot(rotacion, aes(x = Edad)) +
  geom_histogram(fill = "lightcoral", color = "black") +
  labs(title = "Distribución de Edad",
       x = "Edad",
       y = "Frecuencia")

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

  • La edad media se encuentra en la edad de 36 años, la edad mínima es 18 años y la edad máxima 60 años.

  • Diccionario Satisfacción laboral: 1=Muy insatisfecho, 2=insatisfecho, 3=satisfecho y 4=Muy satisfecho. La barra más alta corresponde a la satisfacción laboral con una puntuación de 4 muy satisfecho, seguida por 3 satisfecho, las puntuaciones 1 y 2 son las menores.

  • La mayoría de empleados tiene entre 5 y 10 años de experiencia


Etapa 3. Análisis bivariado