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

A continuación se desarrollan los pasos que la gerencia ha propuesto para el análisis:

Selección de variables

Base de datos rotación

Se importa la base de datos utilizada en la presente actividad.

Entenimiento de la base de datos

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, …
# Analizo el tipo de atributos de la variable rotación
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 ...

La base de datos rotacion cuenta con 1470 registros y 24 variables, las cuales estan conformadas de la siguiente forma:

  • 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

Se presentan las estadísticas descriptivas para cada una 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

A continución se verifica si la base de datos contiene datos faltantes.

# Cuento el número de valores N/A en cada variable de la variable vivienda.
rotacion %>%
  summarise_all(list(~ sum(is.na(.))))

Como se puede observar no hay datos faltantes en la data rotación.

Posteriormente, Selecciono 3 variables categóricas (distintas de rotación) y 3 variables cuantitativas, que se consideren estén relacionadas con la rotación. Nota: Debes justificar porque estas variables están relacionadas y que tipo de relación se espera entre ellas (Hipótesis).

A continuación selecciono 3 variables categoricas y 3 variables cuantitativas. Especificadas a continuación:

Variables Categoricas

  • Departamento

Justificación: Considero que la variable departamento esta relacionada con la variable rotación porque el departamento en el que trabaja un empleado puede influir en su decisión de rotación, es posible que los empleados de ciertos departamentos tengan más oportunidades de crecimiento profesional o que experimenten diferentes niveles de satisfacción laboral debido a la naturaleza de las tareas o la cultura organizacional.

Hipótesis: Se espera que los empleados de ciertos departamentos, donde hay una alta competencia o demanda laboral, tengan una mayor propensión a rotar en busca de mejores oportunidades o condiciones de trabajo.

  • Género

Justificación:Considero que la variable género esta relacionada con la variable rotación porque historicamente se ha estudiado como el genero puede afectar diversos aspectos del empleo.Se podría explorar si hay disparidades de género en términos de oportunidades o si ciertos géneros tienen una mayor propensión a buscar nuevas oportunidades laborales.

Hipótesis:Se cree que podría haber diferencias en la rotación entre géneros, con posibles factores como la discriminación de género, expectativas sociales o desigualdades en las oportunidades laborales que podrían influir en esta relación.

  • Horas extra

Justificación:Considero que la variable horas extra esta relacionada con la variable rotación porque las horas extra pueden ser indicativas de varios factores, como la carga de trabajo o la presión laboral. Se supone que aquellos que trabajan horas extra de manera regular pueden tener una mayor probabilidad de rotación debido al agotamiento o insatisfacción laboral.

Hipótesis: Se plantea que los empleados que trabajan más horas extra podrían tener una mayor probabilidad de rotación debido al agotamiento o falta de satisfacción laboral.

Variables númericas

  • Edad

Justificación:Considero que la variable edad esta relacionada con la variable rotación porque las oportunidades laborales a veces ecigen cierta experiencia que no tienen los jovenes, ademas puede influir la edad en la búsqueda de nuevas experiencias profesionales a lo largo de la carrera.

Hipótesis: Se plantea que los empleados más jóvenes podrían tener una mayor probabilidad de rotación debido a su búsqueda de nuevas experiencias. Por otro lado, los empleados más mayores podrían tener una menor probabilidad de rotación debido a su estabilidad laboral y compromiso con la empresa.

  • Satisfacción laboral

Justificación:Considero que la variable satisfacción laboral esta relacionada con la variable rotación porque los empleados insatisfechos podrían ser más propensos a buscar nuevas oportunidades laborales.

Hipótesis: Se espera que los empleados con niveles más bajos de satisfacción laboral tengan una mayor probabilidad de rotación. La falta de satisfacción puede impulsar a los empleados a buscar nuevas oportunidades que ofrezcan un ambiente laboral mejor.

  • Años de experiencia

Justificación:Considero que la variable años de experiencia esta relacionada con la variable rotación porque los empleados con más experiencia podrían tener un sentido de arraigo a la empresa o tener menos incentivos para buscar nuevas oportunidades laborales debido a su experiencia en el puesto actual.

Hipótesis: Se plantea que los empleados con más años de experiencia en la empresa tendrán una menor probabilidad de rotación. Esto podría deberse a un sentido de lealtad hacia la empresa, la comodidad en el puesto actual o la constumbre.

Análisis univariado

Realiza un análisis univariado (caracterización) de la información contenida en la base de datos rotacion. Nota: los indicadores o gráficos se usan dependiendo del tipo de variable (cuantitativas o cualitativas). Incluir interpretaciones de la variable rotacion.

Variables categoricas (cualitativas)

#Creo una copia de la base de datos antes de inciar con el análisis univariado
data <- rotacion
data

Análisis departamento

# Resumen de la variable "Departamento" en forma de tabla
Departamento_summary <- table(data$Departamento)
Departamento_summary
## 
##    IyD     RH Ventas 
##    961     63    446
# Creación del gráfico de barras interactivo con plotly
plot_ly(data, x = ~Departamento, type = "histogram", marker = list(color = "#ADD8E6")) %>%
  plotly::layout(title = "Distribución de Empleados por Departamento",
                 xaxis = list(title = "Departamento"),
                 yaxis = list(title = "Número de Empleados"))

Este gráfico proporciona una representación visual de la distribución de empleados en diferentes departamentos, como se puede observar la empresa tiene 3 departamentos que son: IyD, RH, y Ventas. El departamento que tiene el mayor número de empleados es IyD con 961 empleados, seguido por Ventas con 446 empleados y luego RH con 61 empleados, para un total de 1470 empleados en la emnpresa.

Análisis género

# Resumen de la variable "Genero" en forma de tabla
genero_summary <- table(data$Genero)
genero_summary
## 
##   F   M 
## 588 882
# Creación del gráfico de torta interactivo con plotly
plot_ly(data, labels = ~Genero, type = "pie", marker = list(colors = c("#FFC0CB", "#E6E6FA"))) %>%
  plotly::layout(title = "Distribución de Género de los Empleados")

Este gráfico proporciona una representación visual clara de la distribución de género de los empleados, mostrando la proporcion del número de empleados desagregado por femenino y masculino. Como se puede observar el 60% de los empleados son masculinos con (882) y el 40% son femeninos con (588) empleados.En total la empresa cuenta con 1470 empleados.

Análisis horas extra

# Resumen de la variable "Horas_Extra" en forma de tabla
Horas_Extra_summary <- table(data$Horas_Extra)
Horas_Extra_summary
## 
##   No   Si 
## 1054  416
# Creación del gráfico de torta interactivo con plotly para la variable "Horas_Extra"
plot_ly(data, labels = ~Horas_Extra, type = "pie", marker = list(colors = c("#ADD8E6", "#FFA500"))) %>%
  plotly::layout(title = "Distribución de Horas Extra")

Este gráfico proporciona una representación visual clara de la distribución de Horas Extra de los empleados, mostrando la proporcion del número de empleados que hacen horas extera y los que no hacen horas extra. Como se puede observar el 71.7% de los empleados no hacen horas extra (1054) y el 28.3% son si hacen horas extra (416) empleados.

Variables númericas (cuantitativas)

Análisis edad

# Resumen de la variable "Horas_Extra" en forma de tabla
summary(data$Edad)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   18.00   30.00   36.00   36.92   43.00   60.00
# Creación del gráfico de barras interactivo con plotly
plot_ly(data, x = ~factor(Edad)) %>%
  group_by(Edad) %>%
  summarise(count = n()) %>%
  add_trace(y = ~count, type = "bar", marker = list(color = "#ADD8E6")) %>%
  plotly::layout(title = "Distribución de Edades", xaxis = list(title = "Edad"), yaxis = list(title = "Frecuencia"))

Este gráfico muestra la distribución de edades. La edad que tienen mas empleados en la empresa es 35 años con un total de 78 empleados, la media se encuentra en la edad de 36 años, la edad minima es 18 años y la edad maxima 60 años.

Análisis satistacción laboral

# Resumen de la variable "Satisfacción laboral" en forma de tabla
Satisfación_Laboral_summary <- table(data$Satisfación_Laboral)
Satisfación_Laboral_summary
## 
##   1   2   3   4 
## 289 280 442 459
library(plotly)

# Crear el gráfico de barras con separación entre las barras y color morado claro
plot_ly(data, x = ~Satisfación_Laboral, type = "histogram", marker = list(color = "rgba(153, 102, 255, 0.7)")) %>%
  plotly::layout(title = "Distribución de Satisfacción Laboral",
                 xaxis = list(title = "Satisfacción Laboral"),
                 yaxis = list(title = "Frecuencia"),
                 bargap = 0.1)  # Ajusta el valor según el espacio deseado entre las barras

Como se observa en le histograma la satisfacción laboral se mide en una escala del 1 al 4, la barra más alta corresponde a la satisfacción laboral con una puntuación de 4, seguida por la puntuación de 3, mientras que una minoría tiene una satisfacción laboral baja (puntuaciones 1 y 2).

Análisis experiencia

# Resumen de la variable "Años de experiencia" en forma de tabla
summary(data$Años_Experiencia)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00    6.00   10.00   11.28   15.00   40.00

El valor minimo de la variable Años_especiencia es 0, el 25% de los datos tienen una experiencia igual o menor a 6 años, el valor medio o la mediana de la variable es 10 años de experiencia, la media de la variable es aproximadamente 11.28 años de experienci, por su parte, el 75% de los datos tienen una experiencia igual o menor a 15 año y finalizando se observa que el valor máximo de la variable es 40 años de experiencia.

# Crear el histograma
hist(data$Años_Experiencia, 
     main = "Distribución de Años de Experiencia",
     xlab = "Años de Experiencia",
     ylab = "Frecuencia",
     col = "skyblue", # Color de las barras
     border = "white" # Color del borde de las barras
)

El histograma muestra la distribución de años de experiencia, la mayoría de las personas parecen tener entre 5 y 10 años de experiencia, como se evidencia por la barra más alta, y se puede observar que hay una disminución gradual en la frecuencia a medida que aumentan los años de experiencia, lo cual es esperado ya que es menos común tener una gran cantidad de años de experiencia.

Análisis bivariado

Realiza un análisis de bivariado en donde la variable respuesta sea rotacion codificada de la siguiente manera (y=1 es si rotación, y=0 es no rotación). Con base en estos resultados identifique cuales son las variables determinantes de la rotación e interpretar el signo del coeficiente estimado. Compare estos resultados con la hipotesis planteada en el punto 2.

Modelo por variable

Departamento

# Convertir la variable Rotación a factor
data$Rotación <- as.factor(data$Rotación)

# Ajustar el modelo de regresión logística
modelo_Departamento <- glm(Rotación ~ Departamento, data = data, family = "binomial")

# Resumen del modelo
summary(modelo_Departamento)
## 
## Call:
## glm(formula = Rotación ~ Departamento, family = "binomial", 
##     data = data)
## 
## Coefficients:
##                    Estimate Std. Error z value Pr(>|z|)    
## (Intercept)        -1.82866    0.09342 -19.576  < 2e-16 ***
## DepartamentoRH      0.38175    0.33417   1.142  0.25330    
## DepartamentoVentas  0.48116    0.14974   3.213  0.00131 ** 
## ---
## 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: 1288.1  on 1467  degrees of freedom
## AIC: 1294.1
## 
## Number of Fisher Scoring iterations: 4

De los resultados obtenidos podemos concluir que la variable departamento no es un predictor fuerte dado que sus valores son cercanos a 0.

Genero

# Convertir la variable Rotación a factor
data$Rotación <- as.factor(data$Rotación)

# Ajustar el modelo de regresión logística
modelo_Genero <- glm(Rotación ~ Genero, data = data, family = "binomial")

# Resumen del modelo
summary(modelo_Genero)
## 
## Call:
## glm(formula = Rotación ~ Genero, family = "binomial", data = data)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -1.7507     0.1161 -15.073   <2e-16 ***
## GeneroM       0.1656     0.1467   1.128    0.259    
## ---
## 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: 1297.3  on 1468  degrees of freedom
## AIC: 1301.3
## 
## Number of Fisher Scoring iterations: 4

De los resultados obtenidos podemos concluir que la variable genero no es un predictor fuerte dado que sus valores son cercanos a 0.

Horas_Extra

# Convertir la variable Rotación a factor
data$Rotación <- as.factor(data$Rotación)

# Ajustar el modelo de regresión logística
modelo_Horas_Extra <- glm(Rotación ~ Horas_Extra, data = data, family = "binomial")

# Resumen del modelo
summary(modelo_Horas_Extra)
## 
## Call:
## glm(formula = Rotación ~ Horas_Extra, family = "binomial", data = data)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    -2.1496     0.1007 -21.338   <2e-16 ***
## Horas_ExtraSi   1.3274     0.1466   9.056   <2e-16 ***
## ---
## 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: 1217.2  on 1468  degrees of freedom
## AIC: 1221.2
## 
## Number of Fisher Scoring iterations: 4

De los resultados obtenidos podemos concluir que la variable Horas_extra si es un predictor fuerte dado que sus valores son cercanos a 1 cuando hacen horas extras, esto se puede deber al agotamiento por demasiado trabajo.

Edad

# Convertir la variable Rotación a factor
data$Rotación <- as.factor(data$Rotación)

# Ajustar el modelo de regresión logística
modelo_Edad <- glm(Rotación ~ Edad, data = data, family = "binomial")

# Resumen del modelo
summary(modelo_Edad)
## 
## Call:
## glm(formula = Rotación ~ Edad, family = "binomial", data = data)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  0.20637    0.30597   0.674      0.5    
## Edad        -0.05225    0.00870  -6.006  1.9e-09 ***
## ---
## 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: 1259.1  on 1468  degrees of freedom
## AIC: 1263.1
## 
## Number of Fisher Scoring iterations: 4

De los resultados obtenidos podemos concluir que la variable edad tiene un coeficiente negativo significativo, a mayor edad, menor rotación.

Satisfación_Laboral

# Convertir la variable Rotación a factor
data$Rotación <- as.factor(data$Rotación)

# Ajustar el modelo de regresión logística
modelo_Satisfación_Laboral <- glm(Rotación ~ Satisfación_Laboral, data = data, family = "binomial")

# Resumen del modelo
summary(modelo_Satisfación_Laboral)
## 
## Call:
## glm(formula = Rotación ~ Satisfación_Laboral, family = "binomial", 
##     data = data)
## 
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)          -0.9903     0.1757  -5.635 1.75e-08 ***
## Satisfación_Laboral  -0.2510     0.0637  -3.940 8.16e-05 ***
## ---
## 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: 1283.1  on 1468  degrees of freedom
## AIC: 1287.1
## 
## Number of Fisher Scoring iterations: 4

De los resultados obtenidos podemos concluir que la variable satisfacción laboral tiene un coeficiente negativo significativo, a mayor satisfacción laboral, menor rotación.

Años de experiencia

# Convertir la variable Rotación a factor
data$Rotación <- as.factor(data$Rotación)

# Ajustar el modelo de regresión logística
modelo_Años_Experiencia <- glm(Rotación ~ Años_Experiencia, data = data, family = "binomial")

# Resumen del modelo
summary(modelo_Años_Experiencia)
## 
## Call:
## glm(formula = Rotación ~ Años_Experiencia, family = "binomial", 
##     data = data)
## 
## Coefficients:
##                  Estimate Std. Error z value Pr(>|z|)    
## (Intercept)      -0.88306    0.12744  -6.929 4.23e-12 ***
## Años_Experiencia -0.07773    0.01217  -6.387 1.69e-10 ***
## ---
## 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: 1248.1  on 1468  degrees of freedom
## AIC: 1252.1
## 
## Number of Fisher Scoring iterations: 5

De los resultados obtenidos podemos concluir que la variable años de experiencia tiene un coeficiente negativo significativo, a mas años de experiencia, menor rotación.

Estimación del modelo

Realiza la estimación de un modelo de regresión logístico en el cual la variable respuesta es rotacion (y=1 es si rotación, y=0 es no rotación) y las covariables las 6 seleccionadas en el punto 1. Interprete los coeficientes del modelo y la significancia de los parámetros.

# Definir la variable respuesta y las covariables
y <- as.factor(data$Rotación)
covariates <- c("Departamento", "Genero", "Horas_Extra", "Edad", "Satisfación_Laboral", "Años_Experiencia")
X <- data[, covariates]

# Estimar el modelo de regresión logística
modelo_logistico <- glm(y ~ ., data = X, family = "binomial")

# Mostrar un resumen del modelo
summary(modelo_logistico)
## 
## Call:
## glm(formula = y ~ ., family = "binomial", data = X)
## 
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)         -0.17276    0.39817  -0.434 0.664376    
## DepartamentoRH       0.45217    0.35929   1.258 0.208212    
## DepartamentoVentas   0.54961    0.16104   3.413 0.000643 ***
## GeneroM              0.25229    0.15833   1.593 0.111055    
## Horas_ExtraSi        1.49853    0.15600   9.606  < 2e-16 ***
## Edad                -0.02634    0.01157  -2.277 0.022788 *  
## Satisfación_Laboral -0.32223    0.06812  -4.730 2.24e-06 ***
## Años_Experiencia    -0.06334    0.01594  -3.974 7.08e-05 ***
## ---
## 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: 1121.4  on 1462  degrees of freedom
## AIC: 1137.4
## 
## Number of Fisher Scoring iterations: 5

Interpretación de los coeficientes del modelo y de la significancia de los parámetros teniendo en cuenta las 6 variables elegidas en el punto 1:

Intercepto: El intercepto estimado indica el logaritmo de la razon de momios (odds ratio) de rotación cuando todas las demás variables son cero. En este caso, el intercepto no es directamente interpretable por si solo.

DepartamentoRH y DepartamentoVentas: Los empleados en el departamento RH y Ventas tienen una mayor probabilidad de rotación en comparación con otros departamentos, ya que los coeficientes (0.45217, 0.54961) son positivos y significativos.

GeneroM: Los empleados masculinos tienen una mayor probabilidad de rotación en comparación con los empleados femeninos, ya que el coeficiente (0.25229) es positivo y significativo.

Horas_ExtraSi: Los empleados que hacen horas extras tienen una mayor probabilidad de rotación en comparación con los que no las hacen, ya que el coeficiente (1.49853) es positivo y significativo.

Edad: A medida que la edad aumenta, la probabilidad de rotación disminuye, ya que el coeficiente (-0.02634) es negativo y significativo.

Satisfacción_Laboral y Años_Experiencia: Tanto la satisfacción laboral como los años de experiencia tienen un impacto negativo en la probabilidad de rotación, ya que los coeficientes (-0.32223, -0.06334) son negativos y significativos.

Evaluación

Evaluar el poder predictivo del modelo con base en la curva ROC y el AUC.

A continuación se evalua elpoder predictivo del modelo ya que esto es crucial para entender su capacidad para hacer predicciones precisas sobre datos nuevos o no vistos. Este proceso se realizara por medio de la curva ROC (Receiver Operating Characteristic) y el área bajo la curva (AUC).

# Obtener las probabilidades predichas del modelo
y_pred <- predict(modelo_logistico, type = "response")

# Calcular la curva ROC
roc_obj <- roc(data$Rotación, y_pred)
## Setting levels: control = No, case = Si
## Setting direction: controls < cases
# Plotear la curva ROC
plot(roc_obj, main = "Curva ROC del Modelo Logístico", col = "blue", lwd = 2)

# Calcula el AUC
auc_value <- auc(roc_obj)
cat("AUC:", auc_value, "\n")
## AUC: 0.7582463

El AUC es de aproximadamente 0.758, lo que sugiere que el modelo tiene un rendimiento moderado para discriminar entre las clases positiva y negativ, por su parte, la curva ROC evidencia que el modelo tiene una alta sensibilidad y especificidad en general, lo que sugiere que es capaz de clasificar correctamente la mayoría de los casos. Sin embargo, hay un punto donde la curva se inclina hacia la esquina superior izquierda, lo que indica un buen equilibrio entre sensibilidad y especificidad en ese punto específico del umbral de discriminación.

El modelo parece tener un beuen rendimeinto en la clasificación de las instancias positivas y negativa

Predicciones

Realiza una predicción la probabilidad de que un individuo (hipotético) rote y defina un corte para decidir si se debe intervenir a este empleado o no (posible estrategia para motivar al empleado).

empleado_predicción <- data.frame(
  `Departamento` = "Ventas", 
  `Genero` = "F",
  `Horas_Extra` = "Si",  
  `Edad` = 25, 
  `Satisfación_Laboral` = 2,  
  `Años_Experiencia` = 5  
)

predicción <- predict(modelo_logistico, newdata = empleado_predicción, type = "response")

umbral <- 0.3 # 30% de probabilidad como umbral

# Evalúa la probabilidad calculada comparándola con el umbral
if (predicción > umbral) {
  cat("Se debe intervenir al empleado para motivarlo.")
} else {
  cat("No se requiere intervención en este momento.")
}
## Se debe intervenir al empleado para motivarlo.

Para motivar a este empleado y evitar que rote, podríamos implementar varias estrategias como se evidencia a continuación:

Ambiente laboral positivo: Fomentar un ambiente laboral positivo en el departamento de Ventas y de apoyo donde el empleado se sienta valorado, respetado y parte importante del equipo. Esto puede lograrse promoviendo la comunicación abierta y brindando retroalimentación constructiva.

Flexibilidad laboral: Ofrecer flexibilidad en los horarios de trabajo y disminuyendo el número de horas extra que tiene este empleado a Cargo.

Asignación de responsabilidades y empoderamiento: Dar al empleado la oportunidad de asumir mayores responsabilidades y tomar decisiones dentro de su área de trabajo puede aumentar su sentido de pertenencia y compromiso con la empresa y permitir sentir empoderamiento a esta mujer.

Conclusiones

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

Basandome en los resultados obtenidos en el punto 3, puedo hacer las siguientes conclusiones con el fin de disminuir la rotación en la empresa:

Departamento: Aunque el coeficiente para el departamento es cercano a cero, lo que indica una influencia relativamente débil en la rotación, considero que es importante tener en cuenta las diferencias entre departamentos al desarrollar estrategias de retención identificando posibles áreas de mejora en términos de satisfacción laboral y condiciones de trabajo.

Género: Si bien el género no parece ser un predictor fuerte de rotación, es de vital importancia mantener un enfoque en la igualdad de género en el lugar de trabajo para garantizar que todos los empleados reciban el mismo trato y oportunidades.

Horas Extra: La variable de horas extras muestra un coeficiente cercano a 1, lo que sugiere que las horas extras están asociadas con un mayor riesgo de rotación. Para abordar esto, la empresa puede considerar revisar las políticas de gestión del tiempo y carga de trabajo buscando reducir el agotamiento y el estrés.

Edad, Satisfacción Laboral y Años de Experiencia: Estas variables muestran coeficientes negativos significativos, lo que indica que a medida que aumenta la edad, la satisfacción laboral y los años de experiencia, la probabilidad de rotación disminuye. Esto resalta la importancia de invertir en el desarrollo profesional y el bienestar de los empleados a lo largo de su carrera para fomentar la retención.