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 describen los pasos que la gerencia ha propuesto para el análisis:

1. Selección de variables

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

Solución:

Para seleccionar las tres variables categóricas y las tres variables cuantitativas que se analizarán en los próximos apartados, se llevó a cabo una revisión de estudios previos relevantes. Este análisis permitió identificar las variables con mayor asociación para la predicción de la rotación de empleados. Con base en estos hallazgos, se seleccionaron las siguientes variables:

Variables categóricas:

a. Viaje de Negocios:

  • Justificación: Los empleados que viajan por negocios podrían estar expuestos a diferentes niveles de satisfacción laboral, estrés, o agotamiento. Aquellos que no viajan o viajan raramente pueden experimentar menos demandas laborales fuera de su entorno habitual.
  • Hipótesis: Se espera que aquellos empleados que no viajan o lo hacen raramente tengan menos probabilidad de rotación en comparación con los que viajan frecuentemente, debido a menor fatiga y mejor equilibrio trabajo-vida.

b. Satisfacción Ambiental:

  • Justificación: La satisfacción con el ambiente de trabajo es crucial para el bienestar de los empleados. Aquellos que están insatisfechos con su entorno laboral pueden estar más propensos a buscar otros empleos.
  • Hipótesis: Se espera que a medida que la satisfacción ambiental disminuya, la probabilidad de rotación aumente.

c.  Horas Extra:

  • Justificación: Los empleados que trabajan horas extra suelen tener una mayor carga laboral, lo que puede conducir a agotamiento, insatisfacción y eventualmente a rotación.
  • Hipótesis: Se espera que aquellos que trabajan horas extra tengan una mayor probabilidad de rotación, debido al estrés y agotamiento que esto puede generar.

Variables numéricas:

d.  Distancia a la Casa:

  • Justificación: La distancia entre la casa y el lugar de trabajo puede influir en la calidad de vida del empleado, ya que largas distancias pueden generar fatiga, estrés y afectar el equilibrio entre la vida personal y laboral.
  • Hipótesis: Se espera que a mayor distancia entre el hogar y el trabajo, mayor sea la probabilidad de que el empleado decida cambiar de trabajo para reducir el tiempo de desplazamiento.

e. Edad:

  • Justificación: La edad de los empleados puede influir en su decisión de permanecer o no en una organización. Los empleados más jóvenes suelen estar en una etapa de desarrollo profesional, explorando oportunidades y siendo más propensos a cambiar de trabajo, mientras que los empleados de mayor edad podrían estar más interesados en la estabilidad laboral.
  • Hipótesis: Se espera que los empleados más jóvenes presenten una mayor probabilidad de rotación, ya que suelen buscar nuevas experiencias y desafíos. Por otro lado, los empleados de mayor edad podrían mostrar menor tendencia a rotar debido a su preferencia por la estabilidad y los beneficios a largo plazo en su actual empleo.

f.  Trabajos Anteriores:

  • Justificación: El número de trabajos anteriores de un empleado puede ser un indicador de su nivel de estabilidad o de predisposición a cambiar de empleo.
  • Hipótesis: Se espera que aquellos con más empleos anteriores tengan una mayor probabilidad de rotación, ya que pueden estar más acostumbrados a cambiar de trabajo con frecuencia.

2. Análisis univariado

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

Solución:

El proceso inicia con el carge de de la base de datos rotacion a partir de la libreria paqueteMETODOS.

library(paqueteMETODOS)
data("rotacion")
rotacion = rotacion

La base de datos data, filtrada según las variables seleccionadas en el apartado anterior, presenta la siguiente estructura:

data = rotacion[,c(1,3,8,15,5,2,14)]
data$Satisfacción_Ambiental=as.character(data$Satisfacción_Ambiental)
st_options(
  dfSummary.custom.2 = 
    expression(
      paste(
        "Q1 - Q3 :",
        round(
          quantile(column_data, probs = .25, type = 2, 
                   names = FALSE, na.rm = TRUE), digits = 1
        ), " - ",
        round(
          quantile(column_data, probs = .75, type = 2, 
                   names = FALSE, na.rm = TRUE), digits = 1
        )
      )
    )
)
dfSummary(data, 
            valid.col    = FALSE,
            style        = "grid",
            plain.ascii  = FALSE,
            headings     = FALSE,
            graph.magnif = 0.75,
            tmp.img.dir  = "/tmp"
          )
No Variable Stats / Values Freqs (% of Valid) Graph Missing
1 Rotación
[character]
1. No
2. Si
1233 (83.9%)
237 (16.1%)
0
(0.0%)
2 Viaje de Negocios
[character]
1. Frecuentemente
2. No_Viaja
3. Raramente
277 (18.8%)
150 (10.2%)
1043 (71.0%)
0
(0.0%)
3 Satisfacción_Ambiental
[character]
1. 1
2. 2
3. 3
4. 4
284 (19.3%)
287 (19.5%)
453 (30.8%)
446 (30.3%)
0
(0.0%)
4 Horas_Extra
[character]
1. No
2. Si
1054 (71.7%)
416 (28.3%)
0
(0.0%)
5 Distancia_Casa
[numeric]
Mean (sd) : 9.2 (8.1)
min < med < max:
1 < 7 < 29
IQR (CV) : 12 (0.9)
Q1 - Q3 : 2 - 14
29 distinct values 0
(0.0%)
6 Edad
[numeric]
Mean (sd) : 36.9 (9.1)
min < med < max:
18 < 36 < 60
IQR (CV) : 13 (0.2)
Q1 - Q3 : 30 - 43
43 distinct values 0
(0.0%)
7 Trabajos_Anteriores
[numeric]
Mean (sd) : 2.7 (2.5)
min < med < max:
0 < 2 < 9
IQR (CV) : 3 (0.9)
Q1 - Q3 : 1 - 4
0 : 197 (13.4%)
1 : 521 (35.4%)
2 : 146 ( 9.9%)
3 : 159 (10.8%)
4 : 139 ( 9.5%)
5 : 63 ( 4.3%)
6 : 70 ( 4.8%)
7 : 74 ( 5.0%)
8 : 49 ( 3.3%)
9 : 52 ( 3.5%)
0
(0.0%)

De acuerdo con el resumen estadístico anterior, se observa que la base de datos contiene 1,470 registros (filas) y 7 variables (columnas). La caracterización de la base de datos es la siguiente:

a. Rotación: Variable cualitativa nominal.

  • Distribución: La mayoría de los registros corresponden a trabajadores que no han rotado en sus empleos actuales, representando aproximadamente el 83.9% de la muestra. En contraste, solo un 16.1% de los empleados ha experimentado rotación, evidenciando una marcada concentración en aquellos que han permanecido en su puesto, lo que podría indicar estabilidad en el entorno laboral o barreras para la movilidad interna.
  • Valores faltantes: La variable no presenta valores faltantes

b. Viaje de Negocios: Variable cualitativa nominal.

  • Distribución: La mayoría de los trabajadores rara vez viaja por negocios (71%) o no realiza viajes (10.2%), lo que sugiere que estas actividades se concentran en áreas comerciales de las empresas. En contraste, solo el 18.8% de los empleados realiza viajes frecuentes.
  • Valores faltantes: La variable no presenta valores faltantes

c. Satisfacción Ambiental: Variable cualitativa ordinal.

  • Distribución: Aproximadamente el 61.1% de los trabajadores se siente satisfecho con su empleo actual, de los cuales el 30.3% está muy satisfecho y el 30.8% simplemente satisfecho. En contraste, el 38.8% no está conforme, siendo el 19.3% muy insatisfecho y el 19.5% insatisfecho.
  • Valores faltantes: La variable no presenta valores faltantes

d. Horas Extra: Variable cualitativa nominal.

  • Distribución: El 71.7% de los trabajadores no realiza horas extras fuera de su horario ordinario. En contraste, el 28.3% de los empleados regularmente trabaja horas adicionales para atender las diversas necesidades de la empresa.
  • Valores faltantes: La variable no presenta valores faltantes

e. Distancia Casa: Variable cuantitativa continua.

  • Centralidad: La distancia promedio desde la casa al trabajo es de 9.2 km. El rango de las distancias varía desde un mínimo de 1 km hasta un máximo de 29 km, resultando en un rango medio de 15 km.
  • Dispersión: Las distancias muestran un rango de 28 km, un rango intercuartílico (IQR) de 12 km y una desviación estándar de 8.1 km. El coeficiente de variación es del 90%, lo que refleja una alta variabilidad en las distancias.
  • Posición: El 25% de los trabajadores vive a una distancia de entre 1 y 2 km del trabajo, mientras que el 75% restante se encuentra a distancias de hasta 14 km. La mediana es de 7 km, y el último 25% de los empleados vive a distancias que varían entre 14 y 29 km.
  • Forma: La distribución es asimétrica hacia la derecha, indicando que el promedio es mayor que la mediana.
  • Valores faltantes: La variable no presenta valores faltantes

f. Edad: Variable cuantitativa continua.

  • Centralidad: El promedio de edad es de 36.9 años, con un rango que va desde 18 hasta 60 años, y un rango medio de 39 años.
  • Dispersión: La edad presenta una variabilidad considerable, con un rango total de 42 años y un rango intercuartílico (IQR) de 13 años, lo que indica que la mitad de los empleados se encuentra en este rango. La desviación estándar es de 9.1 años, y el coeficiente de variación del 20% refleja una variabilidad moderada en comparación con la media.
  • Posición: El 25% de los empleados tiene 30 años o menos, mientras que el 75% tiene hasta 43 años. Esto sugiere que la mayor parte de la fuerza laboral está distribuida entre los 30 y 43 años, con una mediana de 36 años, y el 25% más alto tiene entre 43 y 60 años.
  • Forma: La distribución de la edad es ligeramente asimétrica hacia la derecha, lo que significa que hay más empleados en los rangos de edad superiores, haciendo que el promedio (36.9 años) sea ligeramente mayor que la mediana (36 años). Esto indica una mayor concentración de empleados jóvenes, pero con algunos casos de mayor edad que desplazan el promedio.
  • Valores faltantes: La variable no presenta valores faltantes

g. Trabajos anteriores: Variable cuantitativa discreta.

  • Centralidad: El número promedio de trabajos anteriores es de 3. El rango de los valores oscila entre 0 y 9, con un rango medio de 5.
  • Dispersión: El número de trabajos anteriores tiene un rango de 9, un IQR de 3 y una desviación estándar de 3. El coeficiente de variación es del 90%, lo que indica una dispersión significativa en los datos.
  • Posición: El 25% de los trabajadores ha tenido solo 1 empleo anterior, el 50% ha tenido hasta 2, mientras que el 75% ha pasado por hasta 4 empleos. Un pequeño grupo ha tenido hasta 9 trabajos anteriores, lo que sugiere una alta rotación laboral en ciertos casos.
  • Forma: La distribución está ligeramente sesgada hacia la derecha, lo que indica que un pequeño número de trabajadores ha tenido considerablemente más empleos que la mayoría. Esto sugiere que la rotación laboral es alta solo en una minoría.
  • Valores faltantes: La variable no presenta valores faltantes

Tambien, se verificó gráficamente la presencia de valores atípicos en las variables numericas. Esta evaluación visual permite identificar observaciones que se desvían significativamente del patrón general de los datos, lo que puede afectar la calidad del análisis general.

data_num = data[,c(5,6,7)]

par(mfrow = c(1, 3)) 
par(mar = c(1, 3, 2, 1))

for (i in seq_along(data_num)) {
  boxplot(data_num[[i]], main = colnames(data_num)[i], 
          col = "lightblue", las = 2, cex.axis = 0.8)
}

A partir del análisis, se concluye que las variables Distancia_Casa y Edad no muestran la presencia de valores atípicos, lo que indica una distribución homogénea. En contraste, la variable Trabajos_Anteriores presenta un único valor atípico correspondiente a 9 trabajos.

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

Solución:

Se realizó la codificación de la variable Rotación, asignando el valor 1 cuando hubo rotación y 0 en caso contrario.

data$Rotación <- ifelse(data$Rotación == "Si", 1, 0)
data$Rotación  <- as.factor(data$Rotación)

A continuación se presenta el análisis bivariado de la variable dependiente rotación respecto a las variables seleccionadas, comparando los resultados con las hipótesis planteadas previamente.

a. Viaje de Negocios: El análisis de regresión logística mostró que la variable Viaje de Negocios tiene un efecto significativo sobre la rotación laboral. Los coeficientes encontrados son negativos y significativos (p < 0.05), lo que indica que, en comparación con los empleados que viajan frecuentemente, los que no viajan o lo hacen raramente tienen una menor oportunidad de rotación. Este resultado está en línea con la hipótesis planteada, que sugería que los empleados que no viajan o lo hacen raramente tendrían menor rotación debido a un menor agotamiento y mejor balance entre el trabajo y la vida personal.

set.seed(123)
modelo = glm(Rotación ~ `Viaje de Negocios`, data = data, family = "binomial")
summary(modelo)
## 
## Call:
## glm(formula = Rotación ~ `Viaje de Negocios`, family = "binomial", 
##     data = data)
## 
## Coefficients:
##                              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                   -1.1034     0.1389  -7.943 1.98e-15 ***
## `Viaje de Negocios`No_Viaja   -1.3389     0.3315  -4.039 5.36e-05 ***
## `Viaje de Negocios`Raramente  -0.6346     0.1638  -3.873 0.000107 ***
## ---
## 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: 1274.8  on 1467  degrees of freedom
## AIC: 1280.8
## 
## Number of Fisher Scoring iterations: 5

Por otro lado, se evaluó la asociación entre Rotación y Viaje de Negocios mediante la prueba de chi-cuadrado, obteniendo un p-valor de 5.609e-06. Este resultado, significativamente menor que 0.05, confirma la asociación identificada previamente en la regresión logística, lo que sugiere que los viajes de trabajo influyen de manera importante en la decisión de los empleados de cambiar de empleo.

tabla_contingencia <- table(data$Rotación, data$`Viaje de Negocios`)
test_chi2 <- chisq.test(tabla_contingencia)
test_chi2
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_contingencia
## X-squared = 24.182, df = 2, p-value = 5.609e-06

b. Satisfacción Ambiental: La Satisfacción Ambiental también demostró tener un efecto relevante en la rotación. Se observaron coeficientes negativos significativos para las categorías de menor satisfacción (p < 0.05), lo que indica que a medida que la satisfacción con el entorno de trabajo disminuye, la oportunidad de rotación aumenta. Estos resultados concuerdan con la hipótesis inicial, que preveía una mayor propensión a rotar entre aquellos empleados insatisfechos con su ambiente laboral.

set.seed(123)
modelo = glm(Rotación ~ Satisfacción_Ambiental , data = data, family = "binomial")
summary(modelo)
## 
## Call:
## glm(formula = Rotación ~ Satisfacción_Ambiental, family = "binomial", 
##     data = data)
## 
## Coefficients:
##                         Estimate Std. Error z value Pr(>|z|)    
## (Intercept)              -1.0799     0.1364  -7.917 2.43e-15 ***
## Satisfacción_Ambiental2  -0.6560     0.2144  -3.060  0.00221 ** 
## Satisfacción_Ambiental3  -0.7617     0.1931  -3.944 8.01e-05 ***
## Satisfacción_Ambiental4  -0.7816     0.1946  -4.017 5.90e-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: 1278.0  on 1466  degrees of freedom
## AIC: 1286
## 
## Number of Fisher Scoring iterations: 4

De otro lado, la prueba de chi-cuadrado arroja un p-valor de 5.123e-05, lo que indica una asociación significativa entre Rotación y Satisfacción Ambiental, confirmando la relación observada en la regresión logística, sugiriendo que la satisfacción laboral impacta directamente en la decisión de los empleados de cambiar de trabajo. Mejorar las condiciones ambientales en el lugar de trabajo podría ser clave para reducir la rotación.

tabla_contingencia <- table(data$Rotación, data$Satisfacción_Ambiental)
test_chi2 <- chisq.test(tabla_contingencia)
test_chi2
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_contingencia
## X-squared = 22.504, df = 3, p-value = 5.123e-05

c. Horas Extra: La variable Horas Extra mostró un fuerte impacto en la rotación, con un coeficiente positivo y un p-value extremadamente bajo (p < 2e-16), lo que sugiere que aquellos empleados que trabajan horas extra tienen una mayor oportunidad de dejar la empresa. Este resultado es coherente con la hipótesis inicial, que planteaba que trabajar horas adicionales aumenta el riesgo de rotación debido al agotamiento y estrés acumulados.

set.seed(123)
modelo = glm(Rotación ~ Horas_Extra , data = data, family = "binomial")
summary(modelo)
## 
## 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

Asi mismo, la prueba de chi-cuadrado presenta un p-valor inferior a 2.2e-16, lo que indica una relación extremadamente significativa entre Rotación y Horas Extra. Este resultado confirma la asociación observada en la regresión logística, lo que sugiere que la cantidad de horas extra trabajadas influye considerablemente en la decisión de los empleados de dejar la empresa.

tabla_contingencia <- table(data$Rotación, data$Horas_Extra)
test_chi2 <- chisq.test(tabla_contingencia)
test_chi2
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  tabla_contingencia
## X-squared = 87.564, df = 1, p-value < 2.2e-16

d. Distancia a la Casa: En cuanto a la Distancia a la Casa, el coeficiente estimado de 0.02471 (p = 0.00295) indica que existe una relación positiva entre la distancia al hogar y la rotación. Este resultado es coherente con la hipótesis planteada, ya que se esperaba que empleados que vivieran más lejos tendrían una mayor oportunidad de rotación debido al estrés y fatiga derivados de largos desplazamientos. El p-value menor a 0.01 refuerza la confiabilidad de este resultado.

set.seed(123)
modelo = glm(Rotación ~ Distancia_Casa , data = data, family = "binomial")
summary(modelo)
## 
## Call:
## glm(formula = Rotación ~ Distancia_Casa, family = "binomial", 
##     data = data)
## 
## Coefficients:
##                 Estimate Std. Error z value Pr(>|z|)    
## (Intercept)    -1.890051   0.111382 -16.969  < 2e-16 ***
## Distancia_Casa  0.024710   0.008312   2.973  0.00295 ** 
## ---
## 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: 1290.0  on 1468  degrees of freedom
## AIC: 1294
## 
## Number of Fisher Scoring iterations: 4

e. Edad: El análisis de la variable Edad reveló un coeficiente negativo con un p-value altamente significativo (p = 1.9e-09), lo que sugiere que los empleados más jóvenes tienen una mayor oportunidad de rotación en comparación con los empleados de mayor edad. Esto coincide con la hipótesis planteada, que sugería que los empleados jóvenes tienden a buscar nuevas oportunidades y cambios en su carrera, mientras que los de mayor edad prefieren la estabilidad.

set.seed(123)
modelo = glm(Rotación ~ Edad , data = data, family = "binomial")
summary(modelo)
## 
## 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

f. Trabajos anteriores: Finalmente, la variable Trabajos Anteriores presentó un coeficiente positivo, lo que indica una ligera tendencia hacia una mayor oportunidad de rotación entre aquellos con más empleos previos. Sin embargo, el p-value de 0.096 sugiere que este resultado no es estadísticamente significativo al nivel de 0.05, por lo que, aunque el signo del coeficiente es coherente con la hipótesis planteada, la evidencia estadística no es lo suficientemente fuerte para concluir que el número de trabajos anteriores sea un factor determinante en la rotación.

set.seed(123)
modelo = glm(Rotación ~ Trabajos_Anteriores , data = data, family = "binomial")
summary(modelo)
## 
## Call:
## glm(formula = Rotación ~ Trabajos_Anteriores, family = "binomial", 
##     data = data)
## 
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)         -1.77652    0.10636 -16.703   <2e-16 ***
## Trabajos_Anteriores  0.04565    0.02742   1.665    0.096 .  
## ---
## 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: 1295.9  on 1468  degrees of freedom
## AIC: 1299.9
## 
## Number of Fisher Scoring iterations: 4

4. Estimación del modelo

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.

Solución:

set.seed(123)
train = sample(1:1470,1470*0.7)
data$`Viaje de Negocios`=as.factor(data$`Viaje de Negocios`)
data$Satisfacción_Ambiental=as.factor(data$Satisfacción_Ambiental)
data$Horas_Extra=as.factor(data$Horas_Extra)
modelo_train = glm(Rotación ~ `Viaje de Negocios`+Satisfacción_Ambiental+Horas_Extra+Distancia_Casa+Edad+Trabajos_Anteriores,
                     data = data, family = "binomial", subset = train)
summary(modelo_train)
## 
## Call:
## glm(formula = Rotación ~ `Viaje de Negocios` + Satisfacción_Ambiental + 
##     Horas_Extra + Distancia_Casa + Edad + Trabajos_Anteriores, 
##     family = "binomial", data = data, subset = train)
## 
## Coefficients:
##                              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                   1.63739    0.48028   3.409 0.000651 ***
## `Viaje de Negocios`No_Viaja  -1.32590    0.41909  -3.164 0.001557 ** 
## `Viaje de Negocios`Raramente -0.73027    0.21372  -3.417 0.000633 ***
## Satisfacción_Ambiental2      -0.72001    0.28424  -2.533 0.011305 *  
## Satisfacción_Ambiental3      -0.93082    0.25586  -3.638 0.000275 ***
## Satisfacción_Ambiental4      -0.98723    0.25804  -3.826 0.000130 ***
## Horas_ExtraSi                 1.39834    0.19212   7.278 3.38e-13 ***
## Distancia_Casa                0.02580    0.01115   2.314 0.020666 *  
## Edad                         -0.08761    0.01243  -7.048 1.81e-12 ***
## Trabajos_Anteriores           0.10477    0.03792   2.763 0.005727 ** 
## ---
## 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: 752.56  on 1019  degrees of freedom
## AIC: 772.56
## 
## Number of Fisher Scoring iterations: 5

Con los resultados obtenidos, se presenta la siguiente ecuación de regresión logística, que describe la influencia de diversas variables sobre la probabilidad de rotación de los empleados:

\(Logit(P(Rotacion))=1.63739−1.32590(No Viaja)−0.73027(Viaje Raramente) \\ −0.72001(Satisfaccion Ambiental 2) −0.93082(Satisfaccion Ambiental 3) \\ −0.98723(Satisfaccion Ambiental 4)+1.39834(Horas Extra)+0.02580(Distancia a Casa) \\ −0.08761(Edad)+0.10477(Trabajos Anteriores)\)

Para lograr una interpretación adecuada de los coeficientes, se procede a exponenciarlos, lo que permite entender su relación con la variable dependiente, rotación:

kable(round(exp(coef(modelo_train)),2))
x
(Intercept) 5.14
Viaje de NegociosNo_Viaja 0.27
Viaje de NegociosRaramente 0.48
Satisfacción_Ambiental2 0.49
Satisfacción_Ambiental3 0.39
Satisfacción_Ambiental4 0.37
Horas_ExtraSi 4.05
Distancia_Casa 1.03
Edad 0.92
Trabajos_Anteriores 1.11

A partir de esto, se procede a interpretar los coeficientes de la siguiente manera:

a. Intercepto (\(\beta_0\)):

  • Explicación: El intercepto refleja que, en el escenario base, la oportunidad de rotación es más de cinco veces mayor que la de no rotar, aunque su interpretación práctica puede ser limitada.
  • Significancia: Con un valor de \(p = 0.0007\), el intercepto es estadísticamente significativo.

b. Viaje de Negocios No_Viaja (\(\beta_1\)):

  • Explicación: La oportunidad de rotar en empleados que no viajan es 0.27 veces menor comparada con personas que viajan frecuentemente, manteniendo las demás variables constantes.
  • Significancia: Este coeficiente es altamente significativo (\(p = 0.0016\)), sugiriendo que el viaje de negocios tiene un impacto notable en la rotación.

c. Viaje de Negocios Raramente (\(\beta_2\)):

  • Explicación: La oportunidad de rotar en empleados que viajan raramente es 0.48 veces menor comparada con personas que viajan frecuentemente, manteniendo las demás variables constantes.
  • Significancia: El valor de \(p = 0.0006\) respalda una relación significativa entre los viajes poco frecuentes y la rotación.

d. Satisfacción Ambiental 2 (\(\beta_3\))

  • Explicación: La oportunidad de rotar en empleados con satisfacción ambiental en el nivel 2 es 0.49 veces menor comparada con personas en el nivel 1 de satisfacción (Muy insatisfecho), manteniendo las demás variables constantes.
  • Significancia: Este coeficiente es significativo, con un \(p = 0.0113\), aunque representa la variable dummy con la menor significancia entre las opciones analizadas.

e. Satisfacción Ambiental 3 (\(\beta_4\))

  • Explicación: La oportunidad de rotar en empleados con satisfacción ambiental en el nivel 3 es 0.39 veces menor comparada con personas en el nivel 1 de satisfacción (Muy insatisfecho), manteniendo las demás variables constantes.
  • Significancia: Este coeficiente es altamente significativo, con un \(p = 0.0003\).

f. Satisfacción Ambiental 4 (\(\beta_5\))

  • Explicación: La oportunidad de rotar en empleados con satisfacción ambiental en el nivel 4 es 0.37 veces menor comparada con personas en el nivel 1 de satisfacción (Muy insatisfecho), manteniendo las demás variables constantes.
  • Significancia: Este coeficiente es altamente significativo, con un \(p = 0.0001\).

g. Horas_ExtraSi (\(\beta_6\)):

  • Explicación: La oportunidad de rotar en empleados que realizan horas extra es 4.05 veces mayor comparada con personas que no realizan horas extra, manteniendo las demás variables constantes.
  • Significancia: Con un \(p = 3.38e-13\), este es uno de los factores más significativos, indicando una fuerte influencia de las horas extra en la rotación.

h. Distancia_Casa (\(\beta_7\)):

  • Explicación: La oportunidad de rotar aumenta en un 3% por cada kilómetro adicional de distancia entre el hogar y el trabajo, manteniendo las demás variables constantes.
  • Significancia: El valor de \(p = 0.0207\) sugiere una relación significativa, aunque menos pronunciada, entre la distancia y la rotación.

i. Edad (\(\beta_8\)):

  • Explicación: La oportunidad de rotar disminuye en un 8% por cada año adicional de edad, manteniendo las demás variables constantes.
  • Significancia: Este coeficiente es altamente significativo, con un \(p = 1.81e-12\).

j. Trabajos_Anteriores (\(\beta_9\)):

  • Explicación: La oportunidad de rotar aumenta en un 11% por cada trabajo anterior adicional que el empleado haya tenido, manteniendo las demás variables constantes.
  • Significancia: Este resultado es estadísticamente significativo (\(p = 0.0057\)), lo que sugiere que los empleados con más cambios de trabajo tienen una mayor propensión a rotar nuevamente.

5. Evaluación del modelo

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

Solución:

Inicialmente, se evaluó la capacidad de clasificación del modelo utilizando una matriz de confusión, con el objetivo de determinar las clasificaciones correctas para cada clase y también los errores de clasificación. Se identificaron los falsos positivos, es decir, empleados que no rotaron pero fueron clasificados como si lo hubieran hecho, y los falsos negativos, es decir, empleados que rotaron pero fueron clasificados como si no lo hubieran hecho.

predicciones_bin <- ifelse(test = modelo_train$fitted.values > 0.5, yes = 1, no = 0)
matriz_confusion <- table(modelo_train$model$Rotación, predicciones_bin,
                          dnn = c("observaciones", "predicciones"))
matriz_confusion
##              predicciones
## observaciones   0   1
##             0 858   9
##             1 136  26

Desde una perspectiva gráfica, se obtiene lo siguiente:

mosaic(matriz_confusion, shade = T, colorize = T,
       gp = gpar(fill = matrix(c("green3", "red2", "red2", "green3"), 2, 2)))

El modelo muestra una buena capacidad para clasificar correctamente los verdaderos negativos, es decir, los empleados que no rotaron según las variables predictoras seleccionadas. Además, los verdaderos positivos están bien representados. Sin embargo, aunque los falsos positivos son relativamente pocos, existe una mayor proporción de falsos negativos, lo que indica una oportunidad de mejora en la identificación de empleados que podrían rotar pero que el modelo no logra reconocer correctamente.

TP = matriz_confusion[2, 2]
FP = matriz_confusion[1, 2]
FN = matriz_confusion[2, 1]
TN = matriz_confusion[1, 1]

Exactitud = (TP + TN) / (TP + TN + FP + FN)
Tasa_error = (FP + FN)/(TP + TN + FP + FN)
precision = TP / (TP + FP)
sensibilidad = TP / (TP + FN)
especificidad = TN / (TN + FP)
valor_predictivo_negativo = TN / (TN + FN)

resultados <- data.frame(
  Métrica = c("Exactitud", "Tasa de error", "Precisión", "Sensibilidad (Recall)", 
              "Especificidad", "Valor Predictivo Negativo"),
  Valor = c(Exactitud, Tasa_error, precision, sensibilidad, 
            especificidad, valor_predictivo_negativo)
)

kable(resultados, format = "markdown", digits = 4)
Métrica Valor
Exactitud 0.8591
Tasa de error 0.1409
Precisión 0.7429
Sensibilidad (Recall) 0.1605
Especificidad 0.9896
Valor Predictivo Negativo 0.8632

En cuanto a las métricas de evaluación, el modelo presenta un buen desempeño general, con una exactitud del 85.91%, lo cual indica que clasifica correctamente la mayoría de los casos. Además, la tasa de error es del 14.09%, lo cual es aceptable, aunque presenta margen de mejora.

La especificidad del 98.96% destaca la excelente capacidad del modelo para identificar a los empleados que no rotan, minimizando la cantidad de falsos positivos (es decir, clasificar incorrectamente a empleados como rotadores cuando en realidad no lo son). Esta alta especificidad resulta valiosa para evitar intervenciones innecesarias en empleados que no presentan riesgo de rotación. Asimismo, el valor predictivo negativo del 86.32% muestra que la mayoría de las predicciones de “no rotación” son acertadas.

Por otro lado, la precisión del 74.29% indica que, cuando el modelo predice que un empleado rotará, tiene una probabilidad moderada de ser correcto. Sin embargo, la sensibilidad es baja (16.05%), lo cual implica que el modelo no identifica adecuadamente a la mayoría de los empleados que efectivamente rotan, lo cual representa una limitación importante si el objetivo es prevenir la pérdida de talento en la empresa.

Este desequilibrio en las métricas (alta especificidad y baja sensibilidad) probablemente se deba a un desbalance de clases en los datos, donde la proporción de empleados que no rotan es mucho mayor que la de aquellos que sí lo hacen. Como resultado, el modelo tiende a predecir principalmente “no rotación” para minimizar la tasa de error, comprometiendo su capacidad para identificar correctamente a los empleados con alta probabilidad de rotar.

test = data[-train,]
predicciones = predict(modelo_train, test,type = "response")
curva_ROC = roc(test$Rotación, predicciones)
auc = round(auc(curva_ROC, levels =c(0,1), direction = "<"),4)

ggroc(curva_ROC, colour = "#FF7F00", size=1)+
  ggtitle(paste0("Curva ROC ", "(AUC = ", auc, ")"))+
  xlab("Especificidad")+
  ylab("Sensibilidad")

Finalmente, el AUC superior a 0.5 refuerza la capacidad discriminatoria del modelo, indicando que es eficaz en la clasificación tanto de los empleados que rotan como de aquellos que no rotan. Un valor de AUC mayor a 0.7 se consideraría un buen indicador de rendimiento.

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

Solución:

A partir del análisis del modelo de regresión logística, se identificó que las variables Viaje de negocios, Satisfacción ambiental, Horas extra, Distancia casa, Edad, y Trabajos anteriores son estadísticamente significativas para predecir la probabilidad de rotación laboral en la empresa. Estas variables juegan un papel crucial en la explicación de los factores que influyen en la rotación de empleados. Para mejorar el rendimiento del modelo y obtener predicciones más precisas, se recomienda realizar un rebalanceo de las clases mediante el sobremuestreo de la clase minoritaria (rotación) o el submuestreo de la clase mayoritaria (no rotación). Además, ajustar el umbral de clasificación disminuyéndolo podría aumentar la sensibilidad a los casos de rotación, lo que incrementaría el recall a costa de una posible reducción en la especificidad.

Con base en las variables identificadas como significativas, se pueden implementar diversas estrategias para reducir la rotación laboral:

  • Reducción de viajes de negocios: Los empleados que viajan con frecuencia presentan una mayor probabilidad de rotación. Para mitigar este factor, se podría reducir la cantidad de viajes o implementar políticas que disminuyan su impacto, tales como días de descanso adicionales, compensaciones monetarias, o beneficios específicos para los empleados que se desplazan con regularidad.

  • Mejorar la satisfacción ambiental: Los niveles más bajos de satisfacción ambiental se asocian con una mayor probabilidad de rotación. Para abordar este aspecto, la empresa debería centrarse en mejorar las condiciones del ambiente de trabajo, lo cual podría incluir mejoras en la infraestructura, las relaciones laborales y la ergonomía de los espacios. Además, fomentar una cultura laboral positiva podría incrementar la satisfacción y disminuir el deseo de los empleados de dejar la empresa.

  • Control de horas extra: El análisis mostró que la realización de horas extra está vinculada a un aumento en la rotación. Limitar las horas extras y proporcionar incentivos, descansos compensatorios, o políticas de flexibilidad horaria podría ayudar a mejorar la satisfacción de los empleados y disminuir la rotación.

  • Iniciativas para empleados con una gran distancia al trabajo: La distancia entre el hogar y el lugar de trabajo también influye en la rotación. Para retener a estos empleados, la empresa podría considerar opciones como el teletrabajo parcial, el ajuste de horarios flexibles para evitar horas pico de tráfico, o incluso ofrecer algún tipo de apoyo para el transporte.

  • Programas de retención para empleados jóvenes: Los empleados más jóvenes tienden a rotar con mayor frecuencia. Para contrarrestar esto, la empresa podría implementar programas de mentoría, ofrecer oportunidades de desarrollo profesional y establecer planes de carrera bien definidos. Estas estrategias no solo fomentarían la retención, sino que también contribuirían a la formación de líderes dentro de la empresa.