En esta actividad se analiza la rotación de empleados entre cargos dentro de una organización, con el fin de identificar los factores que influyen en la probabilidad de que un trabajador cambie de cargo en el siguiente período. Para ello, se emplea un modelo de regresión logística binomial, el cual permite estimar probabilidades de ocurrencia de un evento binario y evaluar la influencia de distintas variables categóricas y cuantitativas.
El análisis se desarrolla a partir de la base de datos
rotacion del paquete paqueteMODELOS, siguiendo
las etapas de selección de variables, análisis univariado, análisis
bivariado, estimación del modelo, evaluación del poder predictivo y
formulación de conclusiones orientadas a la toma de decisiones en la
organización.
# ---------------------------------------------------------
# CARGA DE LA BASE DE DATOS
# ---------------------------------------------------------
data("rotacion")
# Vista general de la base
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, …
Descripción general de la base
La base de datos rotacion contiene 1470 registros y 24
variables relacionadas con características demográficas, laborales,
salariales y de desempeño de los empleados. La variable respuesta del
estudio es Rotación, la cual indica si el trabajador rota
(“Si”) o no rota (“No”).
# ---------------------------------------------------------
# CREACIÓN DE VARIABLE RESPUESTA BINARIA
# y = 1 si hay rotación
# y = 0 si no hay rotación
# ---------------------------------------------------------
rotacion <- rotacion %>%
mutate(Rotacion_bin = ifelse(Rotación == "Si", 1, 0))
# Verificación
table(rotacion$Rotación, rotacion$Rotacion_bin)
##
## 0 1
## No 1233 0
## Si 0 237
La variable respuesta se codificó como Rotacion_bin,
asignando el valor 1 a los empleados que sí presentan rotación y 0 a los
que no presentan rotación. Esta codificación es necesaria para la
estimación del modelo logístico binomial.
Para el análisis de la rotación de empleados se seleccionaron seis variables explicativas: tres categóricas y tres cuantitativas. La selección se realizó con base en su posible relación teórica con la probabilidad de rotación y su pertinencia dentro del contexto organizacional.
Horas_Extra Se espera que la variable
Horas_Extra se relacione positivamente con la rotación, ya
que jornadas laborales extendidas pueden generar agotamiento, estrés y
menor satisfacción con el empleo. La hipótesis es que los empleados que
trabajan horas extra tienen mayor probabilidad de rotar que aquellos que
no las realizan.
Viaje de Negocios Se espera que la variable
Viaje de Negocios influya en la rotación, debido a que una
frecuencia alta de viajes puede afectar el equilibrio entre la vida
personal y laboral. La hipótesis es que los empleados que viajan con
mayor frecuencia presentan una mayor probabilidad de rotación.
Estado_Civil Se considera que el
Estado_Civil puede estar asociado con la rotación porque
refleja diferencias en estabilidad personal, responsabilidades
familiares y preferencias de permanencia laboral. La hipótesis es que
los empleados solteros podrían presentar una mayor probabilidad de
rotación frente a empleados casados u otras categorías más estables.
Satisfación_Laboral Se espera una relación negativa
entre la Satisfación_Laboral y la rotación. A medida que
aumenta la satisfacción en el trabajo, debería disminuir la probabilidad
de cambio de cargo. La hipótesis es que empleados con menor satisfacción
laboral tienen mayor probabilidad de rotación.
Ingreso_Mensual Se espera que el
Ingreso_Mensual tenga una relación negativa con la
rotación, ya que mejores ingresos pueden aumentar la permanencia y
reducir el interés por cambiar de cargo. La hipótesis es que empleados
con menores ingresos mensuales presentan una mayor probabilidad de
rotación.
Antigüedad_Cargo Se espera que la
Antigüedad_Cargo se relacione negativamente con la
rotación, pues a mayor permanencia en el cargo puede existir mayor
adaptación, experiencia y estabilidad. La hipótesis es que empleados con
menor antigüedad en el cargo presentan mayor probabilidad de
rotación.
# ---------------------------------------------------------
# TABLA RESUMEN DE VARIABLES E HIPÓTESIS
# ---------------------------------------------------------
tabla_hipotesis <- data.frame(
Variable = c("Horas_Extra", "Viaje de Negocios", "Estado_Civil",
"Satisfación_Laboral", "Ingreso_Mensual", "Antigüedad_Cargo"),
Tipo = c("Categórica", "Categórica", "Categórica",
"Cuantitativa", "Cuantitativa", "Cuantitativa"),
Hipotesis = c(
"Trabajar horas extra aumenta la probabilidad de rotación.",
"Mayor frecuencia de viajes de negocios aumenta la probabilidad de rotación.",
"Los empleados solteros podrían presentar mayor probabilidad de rotación.",
"Mayor satisfacción laboral disminuye la probabilidad de rotación.",
"Mayor ingreso mensual disminuye la probabilidad de rotación.",
"Mayor antigüedad en el cargo disminuye la probabilidad de rotación."
),
Direccion_esperada = c("Positiva", "Positiva", "Depende de la categoría",
"Negativa", "Negativa", "Negativa")
)
tabla_hipotesis %>%
kable(caption = "Variables seleccionadas e hipótesis de relación con la rotación") %>%
kable_styling(full_width = FALSE)
| Variable | Tipo | Hipotesis | Direccion_esperada |
|---|---|---|---|
| Horas_Extra | Categórica | Trabajar horas extra aumenta la probabilidad de rotación. | Positiva |
| Viaje de Negocios | Categórica | Mayor frecuencia de viajes de negocios aumenta la probabilidad de rotación. | Positiva |
| Estado_Civil | Categórica | Los empleados solteros podrían presentar mayor probabilidad de rotación. | Depende de la categoría |
| Satisfación_Laboral | Cuantitativa | Mayor satisfacción laboral disminuye la probabilidad de rotación. | Negativa |
| Ingreso_Mensual | Cuantitativa | Mayor ingreso mensual disminuye la probabilidad de rotación. | Negativa |
| Antigüedad_Cargo | Cuantitativa | Mayor antigüedad en el cargo disminuye la probabilidad de rotación. | Negativa |
La variable rotación presenta una distribución claramente desbalanceada, donde el 83.88% de los empleados no cambia de cargo, mientras que el 16.12% sí presenta rotación. Esto indica que la rotación es un evento relativamente poco frecuente dentro de la organización.
Este comportamiento es consistente con entornos laborales estables, donde la mayoría de los empleados permanece en sus cargos durante periodos prolongados. Sin embargo, la existencia de un grupo no despreciable de empleados que sí rota justifica el análisis mediante modelos de clasificación, como la regresión logística, con el fin de identificar los factores que explican este comportamiento.
Adicionalmente, el desbalance en la variable respuesta sugiere que métricas como la exactitud (accuracy) deben ser interpretadas con cautela, ya que un modelo podría clasificar correctamente la mayoría de los casos simplemente prediciendo la clase mayoritaria. Por ello, en etapas posteriores se complementará la evaluación con métricas como la sensibilidad, especificidad y el área bajo la curva ROC.
# ---------------------------------------------------------
# ANÁLISIS UNIVARIADO - VARIABLE RESPUESTA
# ---------------------------------------------------------
# Tabla de frecuencias
tabla_rotacion <- table(rotacion$Rotación)
# Proporciones
prop_rotacion <- prop.table(tabla_rotacion)
tabla_rotacion
##
## No Si
## 1233 237
prop_rotacion
##
## No Si
## 0.8387755 0.1612245
ggplot(rotacion, aes(x = Rotación)) +
geom_bar(fill = "#2C7FB8") +
labs(title = "Distribución de la Rotación",
x = "Rotación",
y = "Frecuencia")
Horas Extra
La variable Horas_Extra muestra que el 71.70% de los empleados no realiza horas extra, mientras que el 28.30% sí lo hace. Esto indica que la mayoría de los trabajadores mantiene una jornada laboral estándar, aunque existe una proporción considerable de empleados con cargas laborales adicionales.
Este comportamiento es relevante en el contexto del estudio, ya que una mayor carga de trabajo podría generar fatiga, estrés y menor satisfacción laboral, lo que potencialmente incrementa la probabilidad de rotación. Por tanto, esta variable resulta pertinente para evaluar su impacto en el cambio de cargo en el análisis posterior.
tabla_horas <- table(rotacion$Horas_Extra)
prop_horas <- prop.table(tabla_horas)
tabla_horas
##
## No Si
## 1054 416
prop_horas
##
## No Si
## 0.7170068 0.2829932
ggplot(rotacion, aes(x = Horas_Extra)) +
geom_bar(fill = "#41AB5D") +
labs(title = "Distribución de Horas Extra",
x = "Horas Extra",
y = "Frecuencia")
Viaje de Negocios
La variable Viaje de Negocios evidencia que la mayoría de los empleados (70.95%) viaja raramente, mientras que un 18.84% lo hace con frecuencia y un 10.20% no realiza viajes laborales. Esto sugiere que la actividad laboral para la mayoría no implica desplazamientos constantes.
Sin embargo, la existencia de un grupo de empleados que viaja frecuentemente podría afectar su equilibrio entre la vida personal y laboral, lo cual puede influir en su nivel de satisfacción y, en consecuencia, en la probabilidad de rotación. Esta variable será relevante para analizar si una mayor frecuencia de viajes se asocia con cambios de cargo.
tabla_viaje <- table(rotacion$`Viaje de Negocios`)
prop_viaje <- prop.table(tabla_viaje)
tabla_viaje
##
## Frecuentemente No_Viaja Raramente
## 277 150 1043
prop_viaje
##
## Frecuentemente No_Viaja Raramente
## 0.1884354 0.1020408 0.7095238
ggplot(rotacion, aes(x = `Viaje de Negocios`)) +
geom_bar(fill = "#F16913") +
labs(title = "Distribución de Viajes de Negocios",
x = "Tipo de viaje",
y = "Frecuencia") +
theme(axis.text.x = element_text(angle = 30, hjust = 1))
Estado Civil
La variable Estado_Civil muestra que la mayor proporción de empleados corresponde a personas casadas (45.78%), seguida de solteros (31.97%) y divorciados (22.24%). Esta distribución sugiere una población laboral con predominio de individuos con mayor estabilidad personal.
Desde el punto de vista teórico, el estado civil puede influir en la rotación, ya que factores como responsabilidades familiares, estabilidad emocional y preferencias de permanencia laboral pueden variar entre categorías. En particular, se podría esperar que los empleados solteros presenten una mayor probabilidad de rotación, hipótesis que será contrastada en el análisis bivariado.
tabla_estado <- table(rotacion$Estado_Civil)
prop_estado <- prop.table(tabla_estado)
tabla_estado
##
## Casado Divorciado Soltero
## 673 327 470
prop_estado
##
## Casado Divorciado Soltero
## 0.4578231 0.2224490 0.3197279
ggplot(rotacion, aes(x = Estado_Civil)) +
geom_bar(fill = "#756BB1") +
labs(title = "Distribución del Estado Civil",
x = "Estado Civil",
y = "Frecuencia")
Satisfacción Laboral
La variable Satisfación_Laboral presenta valores entre 1 y 4, con una mediana de 3 y una media de 2.73, lo que indica que en general los empleados presentan niveles de satisfacción moderados a altos. La distribución muestra una mayor concentración en los niveles superiores (3 y 4), lo cual sugiere que la mayoría de los trabajadores percibe positivamente su entorno laboral.
Sin embargo, también se observa un grupo de empleados con niveles bajos de satisfacción (valores 1 y 2), lo cual puede ser un factor relevante en la explicación de la rotación. Desde el punto de vista teórico, se espera que una menor satisfacción laboral incremente la probabilidad de cambio de cargo, hipótesis que será evaluada en el análisis bivariado y en el modelo logístico.
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
ggplot(rotacion, aes(x = Satisfación_Laboral)) +
geom_histogram(fill = "#2C7FB8", bins = 10) +
labs(title = "Distribución de Satisfacción Laboral",
x = "Satisfacción",
y = "Frecuencia")
Ingreso Mensual
La variable Ingreso_Mensual presenta una alta dispersión, con valores que oscilan entre 1009 y 19999. La media (6503) es considerablemente mayor que la mediana (4919), lo cual indica una distribución asimétrica positiva (sesgada a la derecha), evidenciando la presencia de empleados con ingresos significativamente altos.
La mayor concentración de empleados se encuentra en rangos de ingresos medios, mientras que un grupo reducido presenta ingresos elevados. Desde el punto de vista del análisis, se espera que niveles más bajos de ingreso estén asociados con una mayor probabilidad de rotación, dado que los empleados podrían buscar mejores oportunidades laborales. Esta relación será evaluada en las siguientes etapas del análisis.
summary(rotacion$Ingreso_Mensual)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1009 2911 4919 6503 8379 19999
ggplot(rotacion, aes(x = Ingreso_Mensual)) +
geom_histogram(fill = "#41AB5D", bins = 20) +
labs(title = "Distribución del Ingreso Mensual",
x = "Ingreso",
y = "Frecuencia")
Antigüedad en el cargo
La variable Antigüedad_Cargo presenta valores entre 0 y 18 años, con una mediana de 3 años y una media de 4.23 años. Esto indica que la mayoría de los empleados tiene relativamente poca permanencia en su cargo actual, concentrándose principalmente en los primeros años.
La distribución muestra una asimetría positiva, con una mayor frecuencia de empleados con baja antigüedad y una menor proporción con trayectorias largas en el mismo cargo. Desde una perspectiva teórica, se espera que empleados con menor antigüedad tengan mayor probabilidad de rotación, ya que aún no han consolidado su estabilidad dentro del rol, mientras que aquellos con mayor antigüedad tienden a permanecer más tiempo en el cargo.
summary(rotacion$Antigüedad_Cargo)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 2.000 3.000 4.229 7.000 18.000
ggplot(rotacion, aes(x = Antigüedad_Cargo)) +
geom_histogram(fill = "#F16913", bins = 15) +
labs(title = "Distribución de Antigüedad en el Cargo",
x = "Antigüedad",
y = "Frecuencia")
Modelo 1: Horas Extra
El modelo logístico para la variable Horas_Extra muestra un coeficiente positivo (β = 1.3274) y altamente significativo (p < 0.001), lo que indica que los empleados que realizan horas extra tienen una mayor probabilidad de rotación en comparación con aquellos que no las realizan.
En términos de interpretación, el signo positivo del coeficiente sugiere que el aumento en la carga laboral incrementa la probabilidad de cambio de cargo. Este resultado es consistente con la hipótesis planteada, donde se esperaba que el exceso de trabajo generara desgaste y, por tanto, mayor rotación.
Por lo tanto, Horas_Extra se identifica como una variable determinante en la explicación de la rotación.
m1 <- glm(Rotacion_bin ~ Horas_Extra, data = rotacion, family = binomial)
summary(m1)
##
## Call:
## glm(formula = Rotacion_bin ~ Horas_Extra, family = binomial,
## data = rotacion)
##
## 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
Modelo 2: Viaje de Negocios
En el modelo asociado a la variable Viaje de Negocios, se observa que las categorías “No viaja” (β = -1.3389) y “Raramente” (β = -0.6346) presentan coeficientes negativos y estadísticamente significativos (p < 0.001), tomando como categoría de referencia a los empleados que viajan frecuentemente.
Esto indica que los empleados que viajan menos tienen una menor probabilidad de rotación en comparación con aquellos que viajan con frecuencia. En consecuencia, viajar frecuentemente está asociado con una mayor probabilidad de cambio de cargo.
Este resultado coincide con la hipótesis planteada, ya que una mayor frecuencia de viajes puede afectar el equilibrio entre la vida personal y laboral, aumentando la probabilidad de rotación. Por lo tanto, esta variable también se considera relevante en la explicación del fenómeno.
m2 <- glm(Rotacion_bin ~ `Viaje de Negocios`, data = rotacion, family = binomial)
summary(m2)
##
## Call:
## glm(formula = Rotacion_bin ~ `Viaje de Negocios`, family = binomial,
## data = rotacion)
##
## 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
Modelo 3: Estado Civil
El modelo para la variable Estado_Civil muestra que la categoría “Soltero” tiene un coeficiente positivo (β = 0.8772) y altamente significativo (p < 0.001), lo que indica que los empleados solteros tienen una mayor probabilidad de rotación en comparación con la categoría de referencia (casados).
Por otro lado, la categoría “Divorciado” presenta un coeficiente negativo (β = -0.2395), pero no es estadísticamente significativo (p = 0.271), lo que indica que no hay evidencia suficiente para afirmar que esta categoría influya en la rotación.
Estos resultados son coherentes con la hipótesis inicial, en la cual se planteaba que los empleados solteros podrían tener mayor movilidad laboral. En este sentido, Estado_Civil, particularmente la categoría “Soltero”, se identifica como un factor relevante en la rotación.
m3 <- glm(Rotacion_bin ~ Estado_Civil, data = rotacion, family = binomial)
summary(m3)
##
## Call:
## glm(formula = Rotacion_bin ~ Estado_Civil, family = binomial,
## data = rotacion)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.9476 0.1166 -16.699 < 2e-16 ***
## Estado_CivilDivorciado -0.2395 0.2175 -1.101 0.271
## Estado_CivilSoltero 0.8772 0.1575 5.571 2.54e-08 ***
## ---
## 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: 1254.6 on 1467 degrees of freedom
## AIC: 1260.6
##
## Number of Fisher Scoring iterations: 4
Modelo 4: Satisfación Laboral
El modelo logístico muestra que la variable Satisfación_Laboral tiene un coeficiente negativo (β = -0.2510) y estadísticamente significativo (p < 0.001), lo que indica que a medida que aumenta la satisfacción laboral, disminuye la probabilidad de rotación.
Este resultado es consistente con la hipótesis planteada, donde se esperaba que empleados más satisfechos presentaran mayor estabilidad en sus cargos. Por tanto, la satisfacción laboral actúa como un factor protector frente a la rotación.
m4 <- glm(Rotacion_bin ~ Satisfación_Laboral, data = rotacion, family = binomial)
summary(m4)
##
## Call:
## glm(formula = Rotacion_bin ~ Satisfación_Laboral, family = binomial,
## data = rotacion)
##
## 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
Modelo 5: Ingreso Mensual
La variable Ingreso_Mensual presenta un coeficiente negativo (β = -0.0001271) y altamente significativo (p < 0.001), lo que indica que a mayores niveles de ingreso, menor es la probabilidad de rotación.
Aunque el coeficiente es pequeño en magnitud (por la escala de la variable), su efecto es consistente y significativo. Este resultado coincide con la hipótesis inicial, ya que empleados con menores ingresos pueden tener mayor incentivo para cambiar de cargo en busca de mejores condiciones económicas.
m5 <- glm(Rotacion_bin ~ Ingreso_Mensual, data = rotacion, family = binomial)
summary(m5)
##
## Call:
## glm(formula = Rotacion_bin ~ Ingreso_Mensual, family = binomial,
## data = rotacion)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -9.291e-01 1.292e-01 -7.191 6.43e-13 ***
## Ingreso_Mensual -1.271e-04 2.162e-05 -5.879 4.12e-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: 1253.1 on 1468 degrees of freedom
## AIC: 1257.1
##
## Number of Fisher Scoring iterations: 5
Modelo 6: Antigüedad en el cargo
El modelo muestra que la variable Antigüedad_Cargo tiene un coeficiente negativo (β = -0.1463) y estadísticamente significativo (p < 0.001), lo que indica que a mayor antigüedad en el cargo, menor es la probabilidad de rotación.
Este resultado es coherente con la hipótesis planteada, dado que los empleados con mayor tiempo en el cargo tienden a tener mayor estabilidad laboral y menor intención de cambio.
m6 <- glm(Rotacion_bin ~ Antigüedad_Cargo, data = rotacion, family = binomial)
summary(m6)
##
## Call:
## glm(formula = Rotacion_bin ~ Antigüedad_Cargo, family = binomial,
## data = rotacion)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.11841 0.10380 -10.775 < 2e-16 ***
## Antigüedad_Cargo -0.14628 0.02424 -6.033 1.61e-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: 1255.9 on 1468 degrees of freedom
## AIC: 1259.9
##
## Number of Fisher Scoring iterations: 5
Resumen
A partir del análisis bivariado, se identifica que la mayoría de las variables seleccionadas presentan una relación estadísticamente significativa con la rotación de empleados. En particular, variables como Horas_Extra, Viaje de Negocios, Estado_Civil (categoría soltero), Satisfación_Laboral, Ingreso_Mensual y Antigüedad_Cargo muestran efectos consistentes con lo esperado teóricamente.
En términos generales, factores asociados a mayor carga laboral (horas extra y viajes frecuentes) incrementan la probabilidad de rotación, mientras que factores relacionados con estabilidad y bienestar (mayor satisfacción laboral, mayores ingresos y mayor antigüedad) reducen dicha probabilidad.
Estos resultados validan en gran medida las hipótesis planteadas en el análisis inicial, lo cual sugiere que las variables seleccionadas son adecuadas para explicar el fenómeno de rotación y serán incluidas en el modelo multivariado.
library(knitr)
library(kableExtra)
tabla_resumen <- data.frame(
Variable = c("Horas Extra", "Viaje Negocios", "Estado Civil (Soltero)",
"Satisfacción Laboral", "Ingreso Mensual", "Antigüedad Cargo"),
Signo = c("+", "+", "+", "-", "-", "-"),
Significativa = c("Sí", "Sí", "Sí", "Sí", "Sí", "Sí"),
Interpretacion = c(
"Aumenta rotación",
"Viajar más aumenta rotación",
"Solteros rotan más",
"Mayor satisfacción reduce rotación",
"Mayor ingreso reduce rotación",
"Mayor antigüedad reduce rotación"
)
)
kable(tabla_resumen, caption = "Resumen análisis bivariado") %>%
kable_styling(full_width = FALSE)
| Variable | Signo | Significativa | Interpretacion |
|---|---|---|---|
| Horas Extra |
|
Sí | Aumenta rotación |
| Viaje Negocios |
|
Sí | Viajar más aumenta rotación |
| Estado Civil (Soltero) |
|
Sí | Solteros rotan más |
| Satisfacción Laboral |
|
Sí | Mayor satisfacción reduce rotación |
| Ingreso Mensual |
|
Sí | Mayor ingreso reduce rotación |
| Antigüedad Cargo |
|
Sí | Mayor antigüedad reduce rotación |
El modelo de regresión logística multivariado permite analizar el efecto conjunto de las variables explicativas sobre la probabilidad de rotación de los empleados. En este caso, se incluyeron seis variables previamente seleccionadas: horas extra, viajes de negocios, estado civil, satisfacción laboral, ingreso mensual y antigüedad en el cargo.
Los resultados muestran que la mayoría de las variables mantienen su significancia estadística, lo cual indica que tienen un efecto independiente sobre la probabilidad de rotación incluso al controlar por las demás variables.
# ---------------------------------------------------------
# MODELO LOGÍSTICO MULTIVARIADO
# ---------------------------------------------------------
modelo_final <- glm(
Rotacion_bin ~ Horas_Extra + `Viaje de Negocios` + Estado_Civil +
Satisfación_Laboral + Ingreso_Mensual + Antigüedad_Cargo,
data = rotacion,
family = binomial
)
summary(modelo_final)
##
## Call:
## glm(formula = Rotacion_bin ~ Horas_Extra + `Viaje de Negocios` +
## Estado_Civil + Satisfación_Laboral + Ingreso_Mensual + Antigüedad_Cargo,
## family = binomial, data = rotacion)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -5.952e-02 2.994e-01 -0.199 0.842409
## Horas_ExtraSi 1.480e+00 1.597e-01 9.269 < 2e-16 ***
## `Viaje de Negocios`No_Viaja -1.311e+00 3.561e-01 -3.681 0.000232 ***
## `Viaje de Negocios`Raramente -6.932e-01 1.819e-01 -3.811 0.000139 ***
## Estado_CivilDivorciado -3.472e-01 2.322e-01 -1.495 0.134789
## Estado_CivilSoltero 8.615e-01 1.716e-01 5.021 5.13e-07 ***
## Satisfación_Laboral -3.342e-01 7.015e-02 -4.765 1.89e-06 ***
## Ingreso_Mensual -1.004e-04 2.316e-05 -4.335 1.46e-05 ***
## Antigüedad_Cargo -1.081e-01 2.730e-02 -3.959 7.52e-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: 1067.9 on 1461 degrees of freedom
## AIC: 1085.9
##
## Number of Fisher Scoring iterations: 5
Horas Extra
La variable Horas_Extra presenta un coeficiente positivo (β = 1.480) y altamente significativo (p < 0.001), lo que indica que, manteniendo constantes las demás variables, los empleados que realizan horas extra tienen una mayor probabilidad de rotación. Este resultado confirma lo observado en el análisis bivariado y resalta la carga laboral como un factor crítico.
Viaje de Negocios
Las categorías “No viaja” (β = -1.311) y “Raramente” (β = -0.693) presentan coeficientes negativos y significativos (p < 0.001), tomando como referencia a quienes viajan frecuentemente. Esto indica que viajar con alta frecuencia aumenta la probabilidad de rotación, lo cual se mantiene consistente con el análisis previo.
Estado Civil
En el caso de Estado_Civil, la categoría “Soltero” presenta un coeficiente positivo (β = 0.8615) y significativo (p < 0.001), indicando mayor probabilidad de rotación respecto a los casados.
Sin embargo, la categoría “Divorciado” no resulta significativa (p = 0.134), lo que sugiere que no tiene un efecto estadísticamente relevante en la rotación al controlar por las demás variables.
Satisfacción Laboral
La variable Satisfación_Laboral presenta un coeficiente negativo (β = -0.3342) y significativo (p < 0.001), lo que indica que mayores niveles de satisfacción reducen la probabilidad de rotación. Este resultado confirma su papel como un factor protector.
Ingreso Mensual
La variable Ingreso_Mensual tiene un coeficiente negativo (β = -0.0001004) y significativo (p < 0.001), indicando que mayores ingresos se asocian con menor probabilidad de rotación. Aunque el efecto marginal es pequeño, es consistente y relevante.
Antigüedad en el Cargo
La variable Antigüedad_Cargo presenta un coeficiente negativo (β = -0.1081) y significativo (p < 0.001), lo que indica que los empleados con mayor tiempo en su cargo tienen menor probabilidad de rotación.
Conclusión del modelo
exp(coef(modelo_final))
## (Intercept) Horas_ExtraSi
## 0.9422145 4.3928075
## `Viaje de Negocios`No_Viaja `Viaje de Negocios`Raramente
## 0.2695348 0.4999523
## Estado_CivilDivorciado Estado_CivilSoltero
## 0.7066350 2.3666726
## Satisfación_Laboral Ingreso_Mensual
## 0.7158819 0.9998996
## Antigüedad_Cargo
## 0.8975591
Al transformar los coeficientes del modelo mediante la función exponencial, se obtienen los odds ratios, los cuales permiten interpretar el efecto multiplicativo de cada variable sobre la probabilidad de rotación.
En este sentido, se observa que los empleados que realizan horas extra tienen aproximadamente 4.39 veces más probabilidad de rotar en comparación con aquellos que no lo hacen, manteniendo constantes las demás variables.
Asimismo, los empleados que no viajan (OR = 0.27) o viajan raramente (OR = 0.50) presentan una menor probabilidad de rotación respecto a aquellos que viajan frecuentemente, lo que confirma que la alta frecuencia de viajes incrementa el riesgo de rotación.
En cuanto al estado civil, los empleados solteros tienen aproximadamente 2.37 veces más probabilidad de rotar en comparación con los casados, mientras que la categoría divorciado no muestra un efecto relevante.
Por otro lado, variables como la satisfacción laboral (OR = 0.72), el ingreso mensual (OR ≈ 1 pero con efecto negativo en escala original) y la antigüedad en el cargo (OR = 0.90) actúan como factores protectores, reduciendo la probabilidad de rotación.
En conjunto, estos resultados permiten interpretar el modelo no solo en términos estadísticos, sino también en términos prácticos, facilitando la toma de decisiones dentro de la organización.
Para evaluar el poder predictivo del modelo se utilizó la curva ROC (Receiver Operating Characteristic) y el área bajo la curva (AUC). La curva ROC permite analizar la capacidad del modelo para discriminar entre empleados que rotan y aquellos que no rotan, comparando la sensibilidad frente a la especificidad.
El valor obtenido del AUC fue de 0.788, lo que indica que el modelo tiene una buena capacidad de clasificación. En términos prácticos, esto significa que el modelo tiene aproximadamente un 78.8% de probabilidad de distinguir correctamente entre un empleado que rota y uno que no rota.
Dado que el AUC se encuentra cercano a 0.8, se puede concluir que el modelo presenta un desempeño adecuado y confiable para la predicción de la rotación de empleados, siendo útil como herramienta para la toma de decisiones dentro de la organización.
# ---------------------------------------------------------
# CURVA ROC Y AUC
# ---------------------------------------------------------
library(pROC)
# Probabilidades predichas
probabilidades <- predict(modelo_final, type = "response")
# Curva ROC
roc_obj <- roc(rotacion$Rotacion_bin, probabilidades)
# Gráfico
plot(roc_obj, col = "blue", main = "Curva ROC - Modelo Logístico")
# AUC
auc(roc_obj)
## Area under the curve: 0.788
# ---------------------------------------------------------
# ANÁLISIS DE SENSIBILIDAD DEL PUNTO DE CORTE
# ---------------------------------------------------------
cortes <- c(0.3, 0.5, 0.7)
for (c in cortes) {
pred_clase <- ifelse(probabilidades > c, 1, 0)
matriz <- table(Predicho = pred_clase, Real = rotacion$Rotacion_bin)
cat("\nPunto de corte:", c, "\n")
print(matriz)
}
##
## Punto de corte: 0.3
## Real
## Predicho 0 1
## 0 1109 120
## 1 124 117
##
## Punto de corte: 0.5
## Real
## Predicho 0 1
## 0 1209 191
## 1 24 46
##
## Punto de corte: 0.7
## Real
## Predicho 0 1
## 0 1233 229
## 1 0 8
Con el fin de evaluar el impacto del punto de corte en la clasificación del modelo, se analizaron tres valores: 0.3, 0.5 y 0.7.
Para un punto de corte de 0.3, el modelo clasifica un mayor número de empleados como en riesgo de rotación, identificando correctamente 117 casos positivos, pero también generando un número considerable de falsos positivos (124). Esto indica una alta sensibilidad, aunque con menor precisión.
Con un punto de corte de 0.5, se observa un equilibrio más adecuado entre aciertos y errores. El modelo reduce significativamente los falsos positivos (24) y mantiene una capacidad razonable para identificar casos reales de rotación (46).
Por su parte, con un punto de corte de 0.7, el modelo se vuelve más conservador, clasificando muy pocos empleados como en riesgo. Aunque prácticamente elimina los falsos positivos, también reduce drásticamente la identificación de empleados que efectivamente rotan (solo 8 casos), lo que implica una baja sensibilidad.
En este contexto, el punto de corte de 0.5 representa un balance adecuado entre sensibilidad y especificidad, siendo una alternativa apropiada para la toma de decisiones organizacionales, ya que permite identificar empleados en riesgo sin generar un número excesivo de intervenciones innecesarias.
Para evaluar la aplicabilidad del modelo, se construyó un individuo hipotético con características asociadas a un mayor riesgo de rotación: realiza horas extra, viaja frecuentemente por motivos laborales, es soltero, presenta un nivel bajo de satisfacción laboral (2), tiene un ingreso mensual de 3000 y una antigüedad de 1 año en el cargo.
A partir del modelo estimado, se obtuvo una probabilidad de rotación de 0.769, lo que indica un alto riesgo de abandono del empleado.
Definiendo un punto de corte de 0.5, el individuo es clasificado en la categoría de “Intervenir”, lo cual sugiere que la organización debería implementar acciones preventivas para reducir la probabilidad de rotación.
Entre las posibles estrategias se incluyen la mejora de las condiciones laborales, la revisión de la carga de trabajo, el fortalecimiento del bienestar laboral y la implementación de incentivos económicos o planes de desarrollo profesional.
Este resultado evidencia la utilidad del modelo logístico como una herramienta de apoyo en la toma de decisiones estratégicas en la gestión del talento humano, permitiendo identificar empleados con alto riesgo de rotación y actuar de manera anticipada.
# ---------------------------------------------
# PREDICCIONES
# ---------------------------------------------
# 1. Obtener niveles de las variables categóricas
niveles_viaje <- levels(as.factor(rotacion$`Viaje de Negocios`))
niveles_horas <- levels(as.factor(rotacion$Horas_Extra))
niveles_estado <- levels(as.factor(rotacion$Estado_Civil))
# 2. Crear individuo hipotético
empleado_nuevo <- data.frame(
Horas_Extra = factor("Si", levels = niveles_horas),
`Viaje de Negocios` = factor("Frecuentemente", levels = niveles_viaje),
Estado_Civil = factor("Soltero", levels = niveles_estado),
Satisfación_Laboral = 2,
Ingreso_Mensual = 3000,
Antigüedad_Cargo = 1,
check.names = FALSE
)
# 3. Predicción de probabilidad
prob_rotacion <- predict(modelo_final, newdata = empleado_nuevo, type = "response")
prob_rotacion
## 1
## 0.7692558
# 4. Decisión según punto de corte
decision <- ifelse(prob_rotacion > 0.5, "Intervenir", "No intervenir")
decision
## 1
## "Intervenir"
A partir del análisis realizado, se concluye que la rotación de empleados en la organización está influenciada por un conjunto de variables tanto laborales como personales. En el análisis bivariado y en el modelo multivariado se identificó que variables como las horas extra, la frecuencia de viajes de negocios y el estado civil (especialmente ser soltero) incrementan significativamente la probabilidad de rotación. Por otro lado, factores como la satisfacción laboral, el ingreso mensual y la antigüedad en el cargo actúan como elementos protectores que reducen dicha probabilidad.
El modelo de regresión logística estimado presentó un buen desempeño predictivo, con un AUC de 0.788, lo que indica una adecuada capacidad para discriminar entre empleados que rotan y los que no. Además, la mayoría de las variables incluidas resultaron estadísticamente significativas y con signos coherentes respecto a la hipótesis planteada, lo cual es consistente con lo observado en el análisis previo.
En términos prácticos, los resultados evidencian que la rotación no depende de un solo factor, sino de la combinación de condiciones laborales exigentes (como las horas extra y los viajes frecuentes) y factores individuales. Esto resalta la importancia de abordar el fenómeno desde una perspectiva integral dentro de la gestión del talento humano.
En cuanto a la estrategia para disminuir la rotación, se recomienda enfocar las estrategias en las variables que mostraron mayor impacto. En primer lugar, es fundamental revisar la carga laboral y reducir la necesidad de horas extra, promoviendo un mejor equilibrio entre la vida laboral y personal. Asimismo, se sugiere optimizar la planificación de los viajes de negocios, evitando su exceso o implementando medidas compensatorias para mitigar su impacto.
Adicionalmente, mejorar la satisfacción laboral se presenta como una de las estrategias más efectivas, lo cual puede lograrse mediante el fortalecimiento del clima organizacional, programas de bienestar, reconocimiento al desempeño y oportunidades de crecimiento profesional. En paralelo, ajustes en la política salarial podrían contribuir a reducir la probabilidad de rotación, especialmente en empleados con mayor riesgo identificado por el modelo.
Finalmente, la baja antigüedad en el cargo se asocia con una mayor probabilidad de rotación, lo que sugiere la necesidad de implementar estrategias de acompañamiento en las etapas iniciales del empleado, como programas de inducción, mentoría y seguimiento durante los primeros meses.
En conjunto, estos hallazgos permiten no solo entender los factores determinantes de la rotación, sino también proponer acciones concretas basadas en evidencia, apoyadas por el modelo predictivo desarrollado, lo que representa una herramienta valiosa para la toma de decisiones en la organización.