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