Modelos Estadísticos para la Toma de Decisiones en el Sector Inmobiliario

Actividad 3

Problema: Rotación de Cargo

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.

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

varibles categoricas

Estado Civil: El estado civil de una persona puede influir en su estabilidad laboral y en la posibilidad de rotación. Diferentes estudios muestran que los empleados con ciertos estados civiles (como solteros, casados o divorciados) pueden tener diferentes prioridades y necesidades laborales.

  • Hipótesis: Se espera que las personas solteras tengan una mayor probabilidad de rotación, ya que suelen ser más flexibles y están más dispuestas a cambiar de trabajo, ciudad o incluso país en busca de mejores oportunidades. En contraste, personas casadas o con familias tienden a priorizar la estabilidad laboral para mantener un ambiente familiar equilibrado, por lo que podrían tener menos tendencia a rotar.

Horas Extra: Las horas extra representan una posible causa de desgaste físico y emocional, lo cual puede influir directamente en la decisión de un empleado de rotar a otro cargo o incluso de abandonar la empresa. Si los empleados están constantemente trabajando horas adicionales, podrían:

  • Hipótesis: Tener mayor probabilidad de rotación, ya que el exceso de trabajo puede llevar a una disminución de la satisfacción laboral, el aumento del estrés y el deterioro de su calidad de vida. Las personas que no trabajan horas extra, en contraste, pueden tener un equilibrio trabajo-vida más saludable, lo que las haría más propensas a permanecer en sus cargos actuales.

Campo_Educación: El campo de educación de un empleado está directamente relacionado con el tipo de trabajo que desempeña y sus expectativas laborales. Las personas formadas en campos específicos pueden tener diferentes perspectivas sobre su trabajo, y sus habilidades y conocimientos pueden hacerlos más propensos a moverse dentro de la organización o hacia otras oportunidades laborales.

  • Hipótesis: Se espera que ciertos campos educativos, como las ciencias técnicas o la ingeniería, tengan menor probabilidad de rotación, ya que los empleados con formación especializada suelen tener más seguridad en sus roles y mejores oportunidades dentro de su área. En contraste, campos más genéricos o humanísticos podrían estar asociados con una mayor movilidad, ya que los empleados pueden encontrar oportunidades en una variedad más amplia de roles o sectores, lo que incrementa su propensión a cambiar de trabajo o de cargo.

Variables cualitativas

Edad: La edad es una variable importante al analizar la rotación laboral porque las personas en diferentes etapas de la vida tienden a tener distintas prioridades profesionales y personales. La relación entre edad y rotación puede ser compleja, pero ciertos patrones generales son observables:

  • Hipótesis: Se espera que los empleados más jóvenes (en etapas tempranas de su carrera) tengan una mayor probabilidad de rotación. Los empleados jóvenes suelen estar en busca de oportunidades de crecimiento, experiencias nuevas y una mayor movilidad laboral para adquirir nuevas habilidades y mejorar su carrera. En contraste, los empleados mayores pueden valorar más la estabilidad laboral, debido a que están más establecidos en su carrera y pueden estar buscando seguridad hasta el retiro.

Distancia_Casa: La distancia entre el hogar y el trabajo es otro factor significativo que puede influir en la rotación laboral. Este factor está relacionado con la calidad de vida y el tiempo que los empleados deben dedicar diariamente al desplazamiento desde y hacia el trabajo.

  • Hipótesis: Se espera que los empleados que viven más lejos del trabajo tengan una mayor probabilidad de rotación. Los desplazamientos largos suelen estar asociados con un mayor desgaste físico y mental, lo que puede generar insatisfacción y, eventualmente, motivar a los empleados a buscar un trabajo más cercano a casa o con mejores condiciones de trabajo a distancia. Por otro lado, los empleados que viven cerca del trabajo pueden tener una mayor satisfacción general, ya que sus desplazamientos diarios son menos estresantes y requieren menos tiempo.

Satisfacción_Laboral: La satisfacción laboral es probablemente uno de los factores más predictivos para la rotación de empleados. La percepción del empleado sobre su trabajo, su entorno, y las recompensas que recibe influyen directamente en su decisión de quedarse o irse de una empresa.

  • Hipótesis: Se espera que los empleados con alta satisfacción laboral tengan una menor probabilidad de rotación. Un alto nivel de satisfacción laboral está relacionado con un mejor ambiente de trabajo, mejores relaciones con colegas y jefes, y una mayor alineación entre los valores del empleado y la empresa. Por el contrario, empleados con baja satisfacción laboral pueden sentirse insatisfechos con el entorno laboral, el salario, las oportunidades de crecimiento, o el equilibrio entre el trabajo y la vida personal, lo que aumenta la probabilidad de que busquen nuevas oportunidades.
# Cargar los datos
data("rotacion")
set.seed(42)
str(rotacion)
## tibble [1,470 × 24] (S3: tbl_df/tbl/data.frame)
##  $ Rotación                   : chr [1:1470] "Si" "No" "Si" "No" ...
##  $ Edad                       : num [1:1470] 41 49 37 33 27 32 59 30 38 36 ...
##  $ Viaje de Negocios          : chr [1:1470] "Raramente" "Frecuentemente" "Raramente" "Frecuentemente" ...
##  $ Departamento               : chr [1:1470] "Ventas" "IyD" "IyD" "IyD" ...
##  $ Distancia_Casa             : num [1:1470] 1 8 2 3 2 2 3 24 23 27 ...
##  $ Educación                  : num [1:1470] 2 1 2 4 1 2 3 1 3 3 ...
##  $ Campo_Educación            : chr [1:1470] "Ciencias" "Ciencias" "Otra" "Ciencias" ...
##  $ Satisfacción_Ambiental     : num [1:1470] 2 3 4 4 1 4 3 4 4 3 ...
##  $ Genero                     : chr [1:1470] "F" "M" "M" "F" ...
##  $ Cargo                      : chr [1:1470] "Ejecutivo_Ventas" "Investigador_Cientifico" "Tecnico_Laboratorio" "Investigador_Cientifico" ...
##  $ Satisfación_Laboral        : num [1:1470] 4 2 3 3 2 4 1 3 3 3 ...
##  $ Estado_Civil               : chr [1:1470] "Soltero" "Casado" "Soltero" "Casado" ...
##  $ Ingreso_Mensual            : num [1:1470] 5993 5130 2090 2909 3468 ...
##  $ Trabajos_Anteriores        : num [1:1470] 8 1 6 1 9 0 4 1 0 6 ...
##  $ Horas_Extra                : chr [1:1470] "Si" "No" "Si" "Si" ...
##  $ Porcentaje_aumento_salarial: num [1:1470] 11 23 15 11 12 13 20 22 21 13 ...
##  $ Rendimiento_Laboral        : num [1:1470] 3 4 3 3 3 3 4 4 4 3 ...
##  $ Años_Experiencia           : num [1:1470] 8 10 7 8 6 8 12 1 10 17 ...
##  $ Capacitaciones             : num [1:1470] 0 3 3 3 3 2 3 2 2 3 ...
##  $ Equilibrio_Trabajo_Vida    : num [1:1470] 1 3 3 3 3 2 2 3 3 2 ...
##  $ Antigüedad                 : num [1:1470] 6 10 0 8 2 7 1 1 9 7 ...
##  $ Antigüedad_Cargo           : num [1:1470] 4 7 0 7 2 7 0 0 7 7 ...
##  $ Años_ultima_promoción      : num [1:1470] 0 1 0 3 2 3 0 0 1 7 ...
##  $ Años_acargo_con_mismo_jefe : num [1:1470] 5 7 0 0 2 6 0 0 8 7 ...

Exploracion de datos

se realizó un análisis exhaustivo de las variables disponibles en el conjunto de datos para comprender su estructura y características. Esto incluyó la identificación de distribuciones, la detección de posibles valores atípicos, y la verificación de la ausencia de datos nulos o vacíos. Se exploraron tanto las variables categóricas como cuantitativas, proporcionando una visión general de los factores clave que podrían influir en la rotación de empleados.

#se visualiza como esta compuesta la base de datos 
head(rotacion)
## # A tibble: 6 × 24
##   Rotación  Edad `Viaje de Negocios` Departamento Distancia_Casa Educación
##   <chr>    <dbl> <chr>               <chr>                 <dbl>     <dbl>
## 1 Si          41 Raramente           Ventas                    1         2
## 2 No          49 Frecuentemente      IyD                       8         1
## 3 Si          37 Raramente           IyD                       2         2
## 4 No          33 Frecuentemente      IyD                       3         4
## 5 No          27 Raramente           IyD                       2         1
## 6 No          32 Frecuentemente      IyD                       2         2
## # ℹ 18 more variables: Campo_Educación <chr>, Satisfacción_Ambiental <dbl>,
## #   Genero <chr>, Cargo <chr>, Satisfación_Laboral <dbl>, Estado_Civil <chr>,
## #   Ingreso_Mensual <dbl>, Trabajos_Anteriores <dbl>, Horas_Extra <chr>,
## #   Porcentaje_aumento_salarial <dbl>, Rendimiento_Laboral <dbl>,
## #   Años_Experiencia <dbl>, Capacitaciones <dbl>,
## #   Equilibrio_Trabajo_Vida <dbl>, Antigüedad <dbl>, Antigüedad_Cargo <dbl>,
## #   Años_ultima_promoción <dbl>, Años_acargo_con_mismo_jefe <dbl>
dim(rotacion)
## [1] 1470   24
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

Se examinaron las variables en el conjunto de datos para asegurarse de que estuvieran correctamente clasificadas como categóricas o cuantitativas, según su naturaleza. Esto incluyó la revisión de variables como “Cargo”, “Estado Civil”, “Horas Extra” (categóricas) y “Edad”, “Distancia_Casa”, “Satisfacción Laboral” (cuantitativas)

Tratamiento de datos

Durante el proceso de exploración de los datos, se verificó la presencia de datos vacíos o nulos mediante la aplicación de funciones como is.na() en cada columna

faltantes <- colSums(is.na(rotacion)) %>% as.data.frame() 

# se verifica los datos faltantes como una tabla 
#
gg_miss_var(rotacion, show_pct = FALSE)

Se confirmó que no había datos vacíos o nulos en el conjunto de datos. Esto significa que todas las observaciones en cada columna contenían valores válidos, lo que simplificó el proceso de modelado, ya que no fue necesario imputar valores o eliminar filas.

# Convertir la variable de rotación a binaria
rotacion <- rotacion %>%
  mutate(Rotación = ifelse(Rotación == "Si", 1, 0))

2.Realiza un análisis univariado (caracterización) de la información contenida en la base de datos rotacion.

# Análisis univariado de variables categóricas

# Tabla de Educación
cat("Distribución de la Educación en la Muestra\n")
## Distribución de la Educación en la Muestra
print(table(rotacion$Campo_Educación))
## 
##    Ciencias Humanidades    Mercadeo        Otra       Salud    Tecnicos 
##         606          27         159          82         464         132
# Tabla de Estado Civil
cat("\nAnálisis del Estado Civil de los Participantes\n")
## 
## Análisis del Estado Civil de los Participantes
print(table(rotacion$Estado_Civil))
## 
##     Casado Divorciado    Soltero 
##        673        327        470
# Tabla de Horas Extra
cat("\nFrecuencia de Horas Extra Trabajadas\n")
## 
## Frecuencia de Horas Extra Trabajadas
print(table(rotacion$Horas_Extra))
## 
##   No   Si 
## 1054  416

Estado Civil: La mayoría de los empleados estaban casados, seguido de solteros, y un pequeño porcentaje estaba divorciado.

Horas Extra: Se encontró que una proporción considerable de empleados no trabajaba horas extra, lo que puede estar relacionado con el nivel de rotación.

Campo de Estudio: Las áreas de estudio más comunes fueron Ciencias y otras áreas técnicas. Esto puede tener implicaciones sobre las habilidades que buscan desarrollar los empleados en su carrera.

# Gráfico de Distribución de Campo de Educación
ggplot(rotacion, aes(x = Campo_Educación)) + 
  geom_bar(fill = "steelblue", color = "black") + 
  ggtitle("Distribución de Campo de Educación") +
  theme_minimal(base_size = 15) + # Cambiar tema
  labs(x = "Campo de Estudio", y = "Número de Empleados") + # Etiquetas de ejes
  theme(plot.title = element_text(hjust = 0.5, face = "bold"), # Centrar título y negritas
        axis.text.x = element_text(angle = 45, hjust = 1)) + # Rotar etiquetas del eje x
  scale_x_discrete(labels = function(x) str_wrap(x, width = 10)) # Ajustar etiquetas largas

# Gráfico de Distribución de Estado Civil
ggplot(rotacion, aes(x = Estado_Civil)) + 
  geom_bar(fill = "darkorange", color = "black") + 
  ggtitle("Distribución de Estado Civil") +
  theme_minimal(base_size = 15) + # Cambiar tema
  labs(x = "Estado Civil", y = "Número de Empleados") + # Etiquetas de ejes
  theme(plot.title = element_text(hjust = 0.5, face = "bold"), # Centrar título y negritas
        axis.text.x = element_text(angle = 0, hjust = 0.5)) # Mantener etiquetas horizontales

# Gráfico de Distribución de Horas Extra
ggplot(rotacion, aes(x = Horas_Extra)) + 
  geom_bar(fill = "forestgreen", color = "black") + 
  ggtitle("Distribución de Horas Extra") +
  theme_minimal(base_size = 15) + # Cambiar tema
  labs(x = "Horas Extra", y = "Número de Empleados") + # Etiquetas de ejes
  theme(plot.title = element_text(hjust = 0.5, face = "bold"), # Centrar título y negritas
        axis.text.x = element_text(angle = 0, hjust = 0.5)) 

Distribución de Campo de Educación La mayoría de los empleados tienen formación en Ciencias (más de 600 empleados), seguido de Salud. Los campos de Humanidades y Mercadeo tienen una presencia mucho menor, con muy pocos empleados en estos campos. Los técnicos y otras áreas tienen una representación intermedia. Esto podría indicar que la empresa tiene una fuerte orientación hacia empleados con formación en ciencias y áreas técnicas o de salud, lo cual puede estar relacionado con el tipo de negocio o sector en el que la empresa opera.

Distribución de Estado Civil La categoría de Casado es la más común entre los empleados (más de 600), seguida por Soltero y Divorciado. Los empleados casados representan una parte considerable del total.Esto podría implicar que una parte significativa de la fuerza laboral tiene responsabilidades familiares que pueden influir en sus decisiones laborales, como la rotación. Esto puede relacionarse con mayor estabilidad en el trabajo, aunque también podría haber implicaciones para la satisfacción laboral dependiendo de las políticas de la empresa

Distribución de Horas Extra Una gran mayoría de los empleados no trabajan horas extra (más de 1000 empleados), mientras que una menor proporción sí lo hace.Esto podría ser un buen indicador de que la empresa tiene una política de equilibrio entre la vida laboral y personal, lo cual puede estar asociado con niveles más altos de satisfacción laboral y, posiblemente, menores tasas de rotación

# Análisis univariado de variables cuantitativas
summary(rotacion$Edad)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   18.00   30.00   36.00   36.92   43.00   60.00
summary(rotacion$Distancia_Casa)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.000   2.000   7.000   9.193  14.000  29.000
summary(rotacion$Satisfación_Laboral)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.000   2.000   3.000   2.729   4.000   4.000

Edad La mayoría de los empleados tiene edades entre 30 y 43 años, con una edad promedio de aproximadamente 37 años. El rango de edad es amplio, entre 18 y 60 años, lo que indica que la empresa tiene empleados de diferentes etapas de la vida laboral, con un sesgo leve hacia una fuerza laboral de edad media.

Distancia de la casa La distancia media de los empleados a su lugar de trabajo es de aproximadamente 9 km, con una mediana de 7 km. La mayoría de los empleados vive a menos de 14 km del trabajo, aunque hay algunos empleados que viajan distancias más largas, con un máximo de 29 km. Esto podría afectar la satisfacción y la rotación de empleados, ya que los desplazamientos más largos pueden ser un factor de desgaste.

Satisfaccion Laboral La satisfacción laboral tiene una media de 2.73, lo que sugiere que los empleados, en general, se sienten moderadamente satisfechos con su trabajo. El 50% de los empleados tienen un nivel de satisfacción entre 2 (insatisfecho) y 4 (muy satisfecho), lo que indica una dispersión en las percepciones de satisfacción. Esta variable es clave para analizar cómo influye en la rotación laboral, ya que los empleados menos satisfechos probablemente tengan más tendencia a rotar.

# Gráfico de Distribución de la Edad
ggplot(rotacion, aes(x = Edad)) + 
  geom_histogram(binwidth = 5, fill = "cornflowerblue", color = "black") + 
  ggtitle("Distribución de la Edad") +
  theme_minimal(base_size = 15) + 
  labs(x = "Edad (Años)", y = "Número de Empleados") +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        axis.text.x = element_text(angle = 0, hjust = 0.5))

# Gráfico de Distribución de la Distancia a la Casa
ggplot(rotacion, aes(x = Distancia_Casa)) + 
  geom_histogram(binwidth = 2, fill = "darkseagreen", color = "black") + 
  ggtitle("Distribución de la Distancia de la Casa") +
  theme_minimal(base_size = 15) + 
  labs(x = "Distancia a la Casa (km)", y = "Número de Empleados") +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        axis.text.x = element_text(angle = 0, hjust = 0.5))

# Gráfico de Distribución de la Satisfacción Laboral
ggplot(rotacion, aes(x = Satisfación_Laboral)) + 
  geom_histogram(binwidth = 1, fill = "coral", color = "black") + 
  ggtitle("Distribución de la Satisfacción Laboral") +
  theme_minimal(base_size = 15) + 
  labs(x = "Nivel de Satisfacción Laboral", y = "Número de Empleados") +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        axis.text.x = element_text(angle = 0, hjust = 0.5))

  • Distribución de la Edad:la fuerza laboral de la empresa está compuesta principalmente por empleados de mediana edad, con un equilibrio razonable de empleados más jóvenes y mayores. La tendencia general parece ser que la empresa tiene una plantilla con experiencia, pero no está envejecida.

  • Distribución de la Distancia a la Casa:la mayoría de los empleados tiene desplazamientos relativamente cortos, algunos empleados enfrentan desplazamientos más largos, lo que podría afectar su satisfacción laboral y su rotación en la empresa. Los empleados que viven más lejos podrían ser más propensos a cambiar de trabajo si el desplazamiento se vuelve incómodo o insostenible

  • Distribución de la Satisfacción Laboral:satisfacción laboral relativamente alta, ya que la mayor parte de los empleados reportan estar bastante satisfechos. Sin embargo, también existe un grupo significativo de empleados en el nivel 1 y 2, lo que indica que hay un porcentaje que podría estar insatisfecho y potencialmente en riesgo de rotación

3. Realiza un análisis de bivariado

# Gráfico Rotación vs Campo de Educación
ggplot(rotacion, aes(x = Campo_Educación, fill = as.factor(Rotación))) + 
  geom_bar(position = "fill", color = "black") +  # Barras apiladas normalizadas
  scale_fill_manual(values = c("cornflowerblue", "tomato"), name = "Rotación", labels = c("No", "Sí")) + 
  ggtitle("Proporción de Rotación por Campo de Educación") +
  labs(x = "Campo de Educación", y = "Proporción de Empleados") +  # Etiquetas mejoradas
  theme_minimal(base_size = 15) +  # Tema minimalista
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),  # Centrar y negrita en el título
        axis.text.x = element_text(angle = 45, hjust = 1)) 

Esta gráfica muestra la proporción de empleados que rotan (“Sí” en color rojo) y los que no rotan (“No” en color azul) en función de su campo de estudio. La mayoría de los empleados en todos los campos tiende a no rotar (azul ocupa la mayor parte), aunque existe una pequeña proporción de empleados en cada campo que sí rotan

Los campos más técnicos o especializados (Ciencias, Salud, Técnicos) parecen estar asociados con una mayor estabilidad laboral, mientras que los campos más generales (Humanidades, Mercadeo) podrían tener una mayor tendencia hacia la rotación

# Gráfico  Rotación vs Estado Civil
ggplot(rotacion, aes(x = Estado_Civil, fill = as.factor(Rotación))) + 
  geom_bar(position = "fill", color = "black") +  # Barras apiladas normalizadas con bordes negros
  scale_fill_manual(values = c("skyblue", "salmon"), name = "Rotación", labels = c("No", "Sí")) + 
  ggtitle("Proporción de Rotación por Estado Civil") +
  labs(x = "Estado Civil", y = "Proporción de Empleados") +  # Etiquetas mejoradas
  theme_minimal(base_size = 15) +  # Tema minimalista
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),  # Centrar y negrita en el título
        axis.text.x = element_text(angle = 0, hjust = 0.5),  # Etiquetas del eje X sin rotación
        axis.text = element_text(size = 12)) 

En esta gráfica se representa la rotación en función del estado civil. Observamos que los empleados solteros tienen una mayor proporción de rotación (“Sí” en rojo), mientras que los empleados casados y divorciados tienen una proporción más baja de rotación.

Esto es consistente con la hipótesis de que las personas solteras podrían estar más dispuestas a cambiar de trabajo en busca de mejores oportunidades, mientras que los empleados casados y divorciados, con más responsabilidades familiares, podrían estar más interesados en la estabilidad laboral.

# Gráfico  Rotación vs Horas Extra
ggplot(rotacion, aes(x = Horas_Extra, fill = as.factor(Rotación))) + 
  geom_bar(position = "fill", color = "black") +  # Barras apiladas normalizadas con bordes negros
  scale_fill_manual(values = c("lightgreen", "coral"), name = "Rotación", labels = c("No", "Sí")) + 
  ggtitle("Proporción de Rotación por Horas Extra") +
  labs(x = "Horas Extra", y = "Proporción de Empleados") +  # Etiquetas mejoradas
  theme_minimal(base_size = 15) +  # Tema minimalista
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),  # Centrar y negrita en el título
        axis.text.x = element_text(angle = 0, hjust = 0.5),  # Etiquetas del eje X sin rotación
        axis.text = element_text(size = 12))

Existe una clara relación entre las horas extra y la rotación. Los empleados que trabajan horas extra tienen una mayor tendencia a rotar en comparación con los que no hacen horas extra. Esto podría deberse a la fatiga, el estrés o el desequilibrio entre la vida laboral y personal que se asocia con trabajar más horas.

# Gráfico mejorado Rotación vs Edad
ggplot(rotacion, aes(x = Edad, fill = as.factor(Rotación))) + 
  geom_bar(position = "fill", color = "black") +  # Barras apiladas normalizadas con bordes negros
  scale_fill_manual(values = c("skyblue", "tomato"), name = "Rotación", labels = c("No", "Sí")) + 
  ggtitle("Proporción de Rotación por Edad") +
  labs(x = "Edad (Años)", y = "Proporción de Empleados") +  # Etiquetas mejoradas
  theme_minimal(base_size = 15) +  # Tema minimalista
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),  # Centrar y negrita en el título
        axis.text.x = element_text(angle = 0, hjust = 0.5, size = 12),  # Ajustar etiquetas del eje X
        axis.text.y = element_text(size = 12))

Los empleados más jóvenes (menores de 30 años) presentan una mayor proporción de rotación, ya que la barra roja es más grande en comparación con la azul. Es decir los empleados más jóvenes parecen ser más propensos a cambiar de trabajo, lo que podría estar relacionado con una búsqueda de nuevas oportunidades o menos responsabilidades familiares.

A medida que aumenta la edad, la proporción de empleados que rotan disminuye, y la mayoría de los empleados mayores de 40 años tienden a no rotar. Es decir los empleados mayores tienden a ser más estables y a permanecer en sus puestos, lo que podría estar relacionado con una mayor estabilidad laboral y familiar.

# Gráfico  Rotación vs Distancia a la Casa
ggplot(rotacion, aes(x = Distancia_Casa, fill = as.factor(Rotación))) + 
  geom_bar(position = "fill", color = "black") +  # Barras apiladas con bordes negros
  scale_fill_manual(values = c("lightblue", "darkorange"), name = "Rotación", labels = c("No", "Sí")) + 
  ggtitle("Proporción de Rotación por Distancia a la Casa") +
  labs(x = "Distancia a la Casa (km)", y = "Proporción de Empleados") +  # Etiquetas de los ejes
  theme_minimal(base_size = 15) +  # Tema minimalista
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),  # Centrar el título y usar negrita
        axis.text.x = element_text(angle = 0, hjust = 0.5, size = 12),  # Ajuste de texto para el eje X
        axis.text.y = element_text(size = 12))

A medida que aumenta la distancia, especialmente entre 10 y 25 km, la proporción de rotación aumenta ligeramente (más naranja), Aquellos que viven más lejos parecen tener una mayor tendencia a rotar, probablemente porque los largos desplazamientos diarios pueden ser un factor de insatisfacción. Sin embargo, no hay un cambio abrupto en la proporción de rotación para quienes viven más lejos, lo que sugiere que la distancia, aunque influye, no es un factor determinante por sí sola.

# Gráfico  Rotación vs Satisfacción Laboral
ggplot(rotacion, aes(x = Satisfación_Laboral, fill = as.factor(Rotación))) + 
  geom_bar(position = "fill", color = "black") +  # Barras apiladas con bordes negros
  scale_fill_manual(values = c("mediumseagreen", "salmon"), name = "Rotación", labels = c("No", "Sí")) + 
  ggtitle("Proporción de Rotación por Satisfacción Laboral") +
  labs(x = "Nivel de Satisfacción Laboral", y = "Proporción de Empleados") +  # Etiquetas descriptivas
  theme_minimal(base_size = 15) +  # Tema minimalista
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),  # Centrar y negrita en el título
        axis.text.x = element_text(angle = 0, hjust = 0.5, size = 12),  # Texto claro y horizontal
        axis.text.y = element_text(size = 12)) 

En la gráfica muestra la relación entre la rotación y el nivel de satisfacción laboral. Aquellos empleados con menor satisfacción laboral (nivel 1) tienen una mayor probabilidad de rotar (más rojo que en niveles de mayor satisfacción).La satisfacción laboral parece estar muy relacionada con la rotación. Los empleados más satisfechos tienen una menor probabilidad de rotar, lo que sugiere que las iniciativas que mejoran la satisfacción laboral podrían reducir las tasas de rotación. En cambio, los empleados que están insatisfechos (niveles 1 y 2) son más propensos a buscar otras oportunidades fuera de la empresa

Comparación con las Hipótesis Planteadas

  • Edad: La hipótesis sobre la relación negativa entre la edad y la rotación se confirma, ya que los empleados más jóvenes tienen una mayor probabilidad de rotación, mientras que los empleados mayores tienden a ser más estables. Coeficiente negativo

  • Distancia a la Casa: La hipótesis de que los empleados que viven más lejos tienen una mayor probabilidad de rotación también se confirma. Los largos desplazamientos parecen ser un factor que aumenta la rotación. coeficiente positivo

  • Satisfacción Laboral: La hipótesis de que los empleados menos satisfechos tienen una mayor probabilidad de rotación se confirma claramente. La satisfacción laboral es una variable crucial en la retención de empleados. coeficiente negativo

  • Horas Extra: La hipótesis de que las horas extra están asociadas con una mayor rotación también se confirma. Los empleados que trabajan más horas tienden a rotar más debido al desgaste. coeficiente positivo

Las variables Edad, Distancia a la Casa, Satisfacción Laboral y Horas Extra resultaron ser determinantes de la rotación en la empresa. Los resultados obtenidos coinciden en gran medida con las hipótesis planteadas en el análisis inicial. Estas variables deben ser consideradas cuidadosamente por la empresa para tomar decisiones que reduzcan la rotación, mejoren la satisfacción de los empleados y optimicen las políticas laborales

4.Realice una partición en los datos de forma aleatoria donde 70% sea un set para entrenar el modelo y 30% para prueba. Estime un modelo logístico con la muestra del 70%. Muestre los resultados.

# Convertir variables cualitativas a numéricas usando One-Hot Encoding
# Seleccionar las variables cualitativas usando base R
cualitativas <- rotacion[, c("Campo_Educación", "Estado_Civil", "Horas_Extra")]

# Convertir solo esas columnas a dummies
dummies <- dummyVars(~ Campo_Educación + Estado_Civil + Horas_Extra, data = cualitativas)
cualitativas_numericas <- predict(dummies, newdata = cualitativas)

# Convertimos a un data frame
cualitativas_numericas_df <- as.data.frame(cualitativas_numericas)

# Seleccionamos las variables cuantitativas (Edad, Distancia_Casa, Satisfacción_Laboral)
cuantitativas <- rotacion[, c("Edad", "Distancia_Casa", "Satisfación_Laboral")]

# Combinar el data frame de variables cualitativas numéricas y el de cuantitativas
final_df <- cbind(cualitativas_numericas_df, cuantitativas)
# Dividir los datos en conjunto de entrenamiento y prueba
set.seed(123)

train_index <- sample(1:nrow(rotacion), 0.7 * nrow(rotacion))
train_data <- rotacion[train_index, ]
test_data <- rotacion[-train_index, ]

# Ajustar el modelo de regresión logística solo con las variables seleccionadas
modelo_logistico <- glm(Rotación ~  Estado_Civil + Horas_Extra + Edad + Campo_Educación + Distancia_Casa + Satisfación_Laboral, 
                        data = train_data, family = binomial)

# Resumen del modelo
summary(modelo_logistico)
## 
## Call:
## glm(formula = Rotación ~ Estado_Civil + Horas_Extra + Edad + 
##     Campo_Educación + Distancia_Casa + Satisfación_Laboral, 
##     family = binomial, data = train_data)
## 
## Coefficients:
##                            Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                 0.31502    0.52734   0.597 0.550264    
## Estado_CivilDivorciado     -0.47374    0.29181  -1.623 0.104501    
## Estado_CivilSoltero         0.96245    0.21029   4.577 4.72e-06 ***
## Horas_ExtraSi               1.45403    0.19571   7.430 1.09e-13 ***
## Edad                       -0.06786    0.01169  -5.807 6.37e-09 ***
## Campo_EducaciónHumanidades  1.51156    0.58454   2.586 0.009713 ** 
## Campo_EducaciónMercadeo     0.67380    0.31743   2.123 0.033783 *  
## Campo_EducaciónOtra        -0.25238    0.42717  -0.591 0.554652    
## Campo_EducaciónSalud       -0.18653    0.23575  -0.791 0.428816    
## Campo_EducaciónTecnicos     0.63642    0.30726   2.071 0.038332 *  
## Distancia_Casa              0.02840    0.01146   2.477 0.013249 *  
## Satisfación_Laboral        -0.30688    0.08388  -3.659 0.000254 ***
## ---
## 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: 730.45  on 1017  degrees of freedom
## AIC: 754.45
## 
## Number of Fisher Scoring iterations: 5

Análisis de los Resultados del Modelo de Regresión

  • Intercepto:Estimación 0.31502 El intercepto indica la probabilidad base de rotación cuando todas las variables predictoras son iguales a cero. En este caso, el intercepto no es significativo (p-valor = 0.550), por lo que no es relevante para interpretar la rotación sin la presencia de otras variables

  • Estado Civil:

  • Divorciado: -0.47374 (no significativo, p-valor = 0.104) Los empleados divorciados tienen una ligera tendencia a no rotar en comparación con los empleados casados (categoría de referencia), pero esta diferencia no es estadísticamente significativa.

  • Soltero: 0.96245 (significativo, p-valor = 4.72e-06) Los empleados solteros tienen una mayor probabilidad de rotación en comparación con los empleados casados. Esto es consistente con la hipótesis de que los solteros pueden tener más flexibilidad y disposición para cambiar de trabajo.

  • Horas Extra: 1.45403 (muy significativo, p-valor = 1.09e-13) Los empleados que trabajan horas extra tienen una probabilidad mucho mayor de rotar que aquellos que no trabajan horas extra. Este resultado es altamente significativo, lo que sugiere que las horas extra pueden estar asociadas con un mayor desgaste y propensión a buscar otras oportunidades laborales.

  • Edad: -0.06786 (muy significativo, p-valor = 6.37e-09) La edad tiene un coeficiente negativo, lo que indica que a mayor edad, menor es la probabilidad de rotación. Este resultado es estadísticamente muy significativo y consistente con la hipótesis de que los empleados mayores buscan estabilidad y rotan menos.

  • Campo de Educación

  • Humanidades: 1.51156 (significativo, p-valor = 0.0097) Los empleados con formación en Humanidades tienen una mayor probabilidad de rotación en comparación con los empleados en Ciencias (categoría de referencia).

  • Mercadeo:0.67380 (significativo, p-valor = 0.0337) Los empleados con formación en Mercadeo también tienen una mayor probabilidad de rotación en comparación con los empleados en Ciencias, aunque el efecto es menor que en Humanidades.

  • Salud, y Técnicos:Los empleados en otras áreas (-0.25238) y salud (-0.18653) no presentan diferencias significativas en términos de rotación con respecto a los empleados en ciencias. Sin embargo, los empleados en técnicos (0.63642, p-valor = 0.0383) presentan una mayor probabilidad de rotación, aunque el efecto es menos pronunciado

  • Distancia a la Casa: 0.02840 (significativo, p-valor = 0.0132) A mayor distancia entre el hogar y el trabajo, mayor es la probabilidad de rotación. Aunque el efecto es pequeño, es significativo. Esto sugiere que los empleados que viven más lejos pueden experimentar mayor insatisfacción por el tiempo de desplazamiento y, por lo tanto, tienen más probabilidades de buscar otro empleo.

  • Satisfacción Laboral: -0.30688 (muy significativo, p-valor = 0.000254) El coeficiente es negativo, lo que indica que a mayor satisfacción laboral, menor es la probabilidad de rotación. Este resultado es altamente significativo y confirma la hipótesis de que los empleados más satisfechos tienden a quedarse en la empresa.

5.Evaluar el poder predictivo del modelo con base en la curva ROC y el AUC en el set de datos de prueba

library(pROC)
## Warning: package 'pROC' was built under R version 4.3.3
## Type 'citation("pROC")' for a citation.
## 
## Attaching package: 'pROC'
## The following object is masked from 'package:rapportools':
## 
##     var
## The following objects are masked from 'package:stats':
## 
##     cov, smooth, var
# Predecir en el conjunto de prueba
predicciones <- predict(modelo_logistico, newdata = test_data, type = "response")
roc_curve <- roc(test_data$Rotación, predicciones)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
# AUC
auc(roc_curve)
## Area under the curve: 0.7138
# Gráfico de la curva ROC
plot(roc_curve, main = "Curva ROC")




# Umbral óptimo usando Youden's J statistic
coords <- coords(roc_curve, "best", ret = c("threshold", "specificity", "sensitivity"), best.method = "youden")

# Imprimir el umbral óptimo
umbral_optimo <- coords[["threshold"]]  # Usar doble corchete para extraer el valor
cat("Umbral óptimo:", umbral_optimo, "\n")
## Umbral óptimo: 0.2279607
# Gráfico de la curva ROC con umbral
plot(roc_curve, main = "Curva ROC")
abline(h = coords[["sensitivity"]], col = "red", lty = 2)  # Línea horizontal en la sensibilidad
abline(v = coords[["specificity"]], col = "blue", lty = 2)   # Línea vertical en la especificidad

Curva ROC (Receiver Operating Characteristic):

En la gráfica observamos que:

  • La curva ROC se encuentra por encima de la diagonal (la línea gris), lo que significa que el modelo tiene un rendimiento mejor que el azar.

  • Cuanto más se aleje la curva hacia la esquina superior izquierda, mejor será el modelo.

AUC (Area Under the Curve):

  • El valor del AUC de 0.7138 sugiere que el modelo tiene un rendimiento decente pero no perfecto en la predicción de la rotación de empleados. Esto significa que el modelo es capaz de distinguir entre empleados que rotan y los que no en aproximadamente un 71% de las veces.

  • Aunque no es un modelo ideal, es un modelo que puede ser útil para hacer predicciones

# Calcular los coeficientes exponenciados

exp_coef <- exp(coef(modelo_logistico))
kable(exp_coef, caption = "Coeficientes Exponenciados (Razones de Probabilidad)")
Coeficientes Exponenciados (Razones de Probabilidad)
x
(Intercept) 1.3702819
Estado_CivilDivorciado 0.6226721
Estado_CivilSoltero 2.6180983
Horas_ExtraSi 4.2803356
Edad 0.9343916
Campo_EducaciónHumanidades 4.5337958
Campo_EducaciónMercadeo 1.9616749
Campo_EducaciónOtra 0.7769525
Campo_EducaciónSalud 0.8298316
Campo_EducaciónTecnicos 1.8897039
Distancia_Casa 1.0288036
Satisfación_Laboral 0.7357404

Estado Civil

  • Divorciado (0.6227): Los empleados divorciados tienen aproximadamente un 37.7% menos de probabilidad de cambiar de cargo que los empleados en la categoría de referencia (posiblemente casados o en una relación estable).

  • Soltero (2.6181): Los empleados solteros tienen 2.6 veces más probabilidad de cambiar de cargo que aquellos en la categoría de referencia.

Horas Extra (4.2803)

Los empleados que realizan horas extra tienen una probabilidad 4.28 veces mayor de cambiar de cargo que aquellos que no lo hacen, lo que sugiere que las horas extra pueden estar asociadas con insatisfacción o agotamiento.

Edad (0.9344)

Por cada año adicional de edad, la probabilidad de cambiar de cargo disminuye en aproximadamente un 6.6%. Esto puede indicar que los empleados más jóvenes tienen más tendencia a cambiar de cargo.

Campo de Estudio

  • Humanidades (4.5338): Los empleados con educación en humanidades tienen una probabilidad 4.53 veces mayor de cambiar de cargo en comparación con la categoría de referencia.

  • Mercadeo (1.9617): Los empleados en el campo de mercadeo tienen casi el doble de probabilidades de cambiar de cargo.

  • Otra (0.7770): Los empleados en otras áreas tienen un 22.3% menos de probabilidad de cambiar de cargo.

  • Salud (0.8298): Los empleados en el campo de la salud tienen un 17% menos de probabilidad de cambiar de cargo.

  • Técnicos (1.8897): Los empleados en áreas técnicas tienen casi el doble de probabilidad de cambiar de cargo.

Distancia al trabajo (1.0288)

Por cada unidad adicional en la distancia de casa al trabajo, la probabilidad de cambiar de cargo aumenta en un 2.88%, aunque este efecto es pequeño.

Satisfacción Laboral (0.7357)

Los empleados con mayor satisfacción laboral tienen un 26.4% menos de probabilidad de cambiar de cargo. Esto es consistente con la idea de que una mayor satisfacción reduce la rotación.

6.En las conclusiones adicione una discución sobre cuál sería la estrategia para disminuir la rotación en la empresa (con base en las variables que resultaron significativas en el punto 3).

Conclusiones

  • El análisis de la rotación laboral en la empresa, basado en el modelo de regresión logística y las métricas ROC y AUC, revela que las variables más influyentes en la probabilidad de rotación son: el estado civil, donde los empleados solteros tienen una mayor probabilidad de rotación en comparación con los casados; las horas extras, que aumentan significativamente la probabilidad de rotación; la edad, ya que los empleados más jóvenes tienden a rotar más que los mayores; y la satisfacción laboral, que muestra que a mayor satisfacción, menor es la rotación. Además, el campo de educación influye, con empleados en áreas como Humanidades y Mercadeo presentando una mayor probabilidad de rotación en comparación con aquellos en ciencias. Por último, la distancia al trabajo también es un factor, ya que a mayor distancia entre el hogar y el lugar de trabajo, mayor es la probabilidad de que un empleado rote.

  • El modelo de regresión logística tiene un AUC de 0.7138, lo que indica un rendimiento moderado en la predicción de la rotación laboral. Aunque no es perfecto, el modelo es suficientemente preciso para identificar tendencias y riesgos relevantes de rotación. La curva ROC confirma que el modelo tiene un desempeño mejor que el azar, lo que lo hace útil para predecir la probabilidad de rotación en empleados individuales y ayudar en la toma de decisiones estratégicas.

  • El análisis reveló que los empleados que realizan horas extras tienen una probabilidad significativamente mayor de rotación, lo que sugiere un posible desgaste físico y emocional causado por las largas jornadas laborales. Además, la satisfacción laboral es un factor clave en la retención de empleados; aquellos que están más satisfechos tienen muchas menos probabilidades de abandonar la empresa, lo que subraya la importancia de mantener y mejorar los niveles de satisfacción para reducir la rotación y promover un ambiente de trabajo más estable.

Estrategias para disminuir la rotacion

Para disminuir la rotación en la empresa, se proponen varias estrategias basadas en los resultados de las variables significativas.

  • Primero, la reducción de horas extra es fundamental, ya que este factor contribuye al desgaste de los empleados. Esto podría lograrse mejorando la planificación de recursos humanos, contratando más personal, o reorganizando los turnos de trabajo. También se podría ofrecer compensación adicional para quienes deban trabajar horas extra.

  • Segundo, es crucial mejorar la satisfacción laboral mediante programas de bienestar que promuevan el equilibrio entre trabajo y vida personal, junto con oportunidades de desarrollo profesional, revisiones salariales y bonos de desempeño.

  • Tercero, para los empleados que viven lejos, ofrecer flexibilidad en el trabajo, como teletrabajo parcial o subsidios de transporte, ayudaría a mitigar el impacto de los largos desplazamientos.

  • Cuarto, los programas de retención dirigidos a empleados solteros y jóvenes podrían incluir incentivos económicos, bonos por permanencia y oportunidades de crecimiento rápido.

  • Finalmente, adaptar las estrategias según el campo de estudio es clave, especialmente para empleados en Humanidades y Mercadeo, quienes presentan una mayor rotación. Desarrollar planes de carrera personalizados y fortalecer el sentido de pertenencia mediante actividades que se alineen a sus expectativas con las metas de la empresa, contribuirá a reducir su rotación.