La organización desea explicar y predecir la rotación de cargo de sus empleados. La variable respuesta se modela como binaria:
\[ Y = \begin{cases} 1, & \text{si el empleado presenta rotación},\\ 0, & \text{si el empleado no presenta rotación}. \end{cases} \]
El objetivo consiste en estimar, para un conjunto de características \(X\), la probabilidad condicional
\[ P(Y=1\mid X), \]
mediante un modelo de regresión logística. La selección de covariables se realiza antes de observar los coeficientes del modelo, de modo que el análisis pueda utilizarse para contrastar hipótesis formuladas a priori y describir patrones encontrados después del ajuste.
La base utilizada contiene 1470 empleados y 24 variables: la variable objetivo, Rotación, que es binaria (Sí/No), y 23 atributos predictores. Los predictores son sociodemográficos (edad, género, estado civil, distancia al domicilio), académicos (nivel y campo de formación), laborales (departamento, cargo, horas extra, viajes de negocio, rendimiento), salariales (ingreso mensual, porcentaje de aumento), de trayectoria (años de experiencia, antigüedad en la empresa y en el cargo, años desde la última promoción y con el mismo jefe, trabajos anteriores) y de percepción, medidas en escalas ordinales de 1 a 4 (satisfacción ambiental, satisfacción laboral y equilibrio entre trabajo y vida personal). No hay valores faltantes ni registros duplicados.
Como no había valores faltantes ni duplicados, no hizo falta imputar ni depurar registros. La preparación se limitó a recodificar la variable objetivo como indicador binario (1 = rotación), fijar las categorías de referencia de los predictores categóricos (No para horas extra, Casado para estado civil y No viaja para viajes de negocios) y expresar el ingreso mensual en miles de unidades monetarias para facilitar la interpretación de su coeficiente. Para la evaluación predictiva se reservó además un 30 % de la muestra mediante una partición estratificada (sección 5).
| Variable | Tipo | Fundamento de la hipótesis | Dirección esperada |
|---|---|---|---|
| Horas extra | Categórica | Una carga laboral prolongada puede asociarse con fatiga, menor conciliación y mayor intención de cambio. Se espera mayor rotación entre quienes realizan horas extra. | Positiva: Sí vs No |
| Estado civil | Categórica | El estado civil puede estar relacionado con diferencias en estabilidad personal, movilidad y restricciones familiares. Como hipótesis de trabajo, puede plantearse que los empleados solteros presentan una mayor predisposición a cambiar de empleo o cargo que los empleados casados. | Positiva: Soltero vs Casado |
| Viaje de negocios | Categórica | Los viajes frecuentes pueden generar mayor carga laboral, tiempo fuera del hogar y dificultades para conciliar la vida laboral y personal. Por ello, se espera que una mayor frecuencia de viajes se asocie con mayor rotación. | Positiva respecto a No viaja |
| Edad | Cuantitativa | Los empleados más jóvenes pueden presentar mayor movilidad laboral y menor permanencia acumulada (arraigo), por lo que se espera que la probabilidad de rotación disminuya con la edad. | Negativa |
| Ingreso mensual | Cuantitativa | Un mayor ingreso mensual (mejor compensación) puede incrementar el coste de oportunidad de abandonar la organización y estar asociado con mayor estabilidad, por lo que se espera una relación negativa entre ingreso y rotación; dicho de otro modo, se espera menor rotación con ingresos superiores. | Negativa |
| Antigüedad en el cargo | Cuantitativa | Una mayor permanencia puede reflejar consolidación en el puesto y ajuste entre empleado y organización. Se espera menor rotación con mayor antigüedad. | Negativa |
La base de datos también contiene variables de satisfacción y equilibrio laboral (satisfacción ambiental, satisfacción laboral y equilibrio entre trabajo y vida personal). Son conceptualmente relevantes para la rotación, pero no se incorporan al modelo principal porque la actividad limita la selección a tres variables categóricas y tres cuantitativas. La selección busca cubrir carga de trabajo y movilidad, compensación y permanencia, junto con variables de contexto, evitando ampliar el modelo después de observar los resultados.
La base contiene 1470 registros. El análisis utiliza 1470 empleados. En esta base de trabajo se registran 237 casos de rotación y 1233 casos sin rotación.
rotacion <- rotacion %>%
mutate(
Rotacion = factor(Rotacion, levels = c("No", "Si")),
Horas_Extra = factor(Horas_Extra, levels = c("No", "Si")),
Estado_Civil = factor(
Estado_Civil,
levels = c("Casado", "Divorciado", "Soltero")
),
Viaje_de_Negocios = factor(
Viaje_de_Negocios,
levels = c("No_Viaja", "Raramente", "Frecuentemente")
),
Rotacion_num = if_else(Rotacion == "Si", 1L, 0L),
Ingreso_1000 = Ingreso_Mensual / 1000
)
Antes de concentrar el análisis en las seis covariables seleccionadas, se revisa la estructura de las 24 variables disponibles. La base contiene 0 valores perdidos y 0 registros exactamente duplicados.
| Variable | Tipo_analitico | n | Perdidos | Valores_unicos | Resumen |
|---|---|---|---|---|---|
| Rotacion | Categórica nominal | 1470 | 0 | 2 | Niveles=2; categoría modal=No (83.9%) |
| Edad | Cuantitativa | 1470 | 0 | 43 | Mediana=36; Q1=30; Q3=43; rango=[18, 60] |
| Viaje de Negocios | Categórica nominal | 1470 | 0 | 3 | Niveles=3; categoría modal=Raramente (71%) |
| Departamento | Categórica nominal | 1470 | 0 | 3 | Niveles=3; categoría modal=IyD (65.4%) |
| Distancia Casa | Cuantitativa | 1470 | 0 | 29 | Mediana=7; Q1=2; Q3=14; rango=[1, 29] |
| Educacion | Ordinal (escala numérica) | 1470 | 0 | 5 | Niveles: 1=170; 2=282; 3=572; 4=398; 5=48 |
| Campo Educacion | Categórica nominal | 1470 | 0 | 6 | Niveles=6; categoría modal=Ciencias (41.2%) |
| Satisfaccion Ambiental | Ordinal (escala numérica) | 1470 | 0 | 4 | Niveles: 1=284; 2=287; 3=453; 4=446 |
| Genero | Categórica nominal | 1470 | 0 | 2 | Niveles=2; categoría modal=M (60%) |
| Cargo | Categórica nominal | 1470 | 0 | 9 | Niveles=9; categoría modal=Ejecutivo_Ventas (22.2%) |
| Satisfacion Laboral | Ordinal (escala numérica) | 1470 | 0 | 4 | Niveles: 1=289; 2=280; 3=442; 4=459 |
| Estado Civil | Categórica nominal | 1470 | 0 | 3 | Niveles=3; categoría modal=Casado (45.8%) |
| Ingreso Mensual | Cuantitativa | 1470 | 0 | 1349 | Mediana=4919; Q1=2911; Q3=8379; rango=[1009, 19999] |
| Trabajos Anteriores | Cuantitativa | 1470 | 0 | 10 | Mediana=2; Q1=1; Q3=4; rango=[0, 9] |
| Horas Extra | Categórica nominal | 1470 | 0 | 2 | Niveles=2; categoría modal=No (71.7%) |
| Porcentaje aumento salarial | Cuantitativa | 1470 | 0 | 15 | Mediana=14; Q1=12; Q3=18; rango=[11, 25] |
| Rendimiento Laboral | Ordinal (escala numérica) | 1470 | 0 | 2 | Niveles: 3=1244; 4=226 |
| Anos Experiencia | Cuantitativa | 1470 | 0 | 40 | Mediana=10; Q1=6; Q3=15; rango=[0, 40] |
| Capacitaciones | Cuantitativa | 1470 | 0 | 7 | Mediana=3; Q1=2; Q3=3; rango=[0, 6] |
| Equilibrio Trabajo Vida | Ordinal (escala numérica) | 1470 | 0 | 4 | Niveles: 1=80; 2=344; 3=893; 4=153 |
| Antiguedad | Cuantitativa | 1470 | 0 | 37 | Mediana=5; Q1=3; Q3=9; rango=[0, 40] |
| Antiguedad Cargo | Cuantitativa | 1470 | 0 | 19 | Mediana=3; Q1=2; Q3=7; rango=[0, 18] |
| Anos ultima promocion | Cuantitativa | 1470 | 0 | 16 | Mediana=1; Q1=0; Q3=3; rango=[0, 15] |
| Anos acargo con mismo jefe | Cuantitativa | 1470 | 0 | 18 | Mediana=3; Q1=2; Q3=7; rango=[0, 17] |
La tabla distingue variables nominales, cuantitativas y escalas ordinales almacenadas numéricamente. En esta base se detectan como ordinales, de acuerdo con su nombre y baja cardinalidad: Educacion, Satisfaccion Ambiental, Satisfacion Laboral, Rendimiento Laboral, Equilibrio Trabajo Vida. La tabla completa permite documentar el conjunto disponible sin convertir el informe en una sucesión de 24 gráficos; las seis variables seleccionadas se caracterizan con mayor detalle en los apartados siguientes.
| Variable | Categoria | n | Porcentaje |
|---|---|---|---|
| Rotacion | No | 1233 | 83.88 |
| Rotacion | Si | 237 | 16.12 |
La prevalencia observada de rotación es 16,12%. En consecuencia, la clase positiva representa aproximadamente uno de cada 6,2 empleados. El gráfico permite apreciar de forma inmediata el desbalance de clases. La categoría No rota es claramente mayoritaria. Esta estructura condiciona la evaluación predictiva, ya que un clasificador ingenuo que asignara a todos los empleados la categoría No rota alcanzaría una exactitud aparente de 83,9% sin identificar un solo caso positivo. Por esta razón, la exactitud no se utilizará de manera aislada y posteriormente se analizarán conjuntamente sensibilidad, especificidad, precisión, F1, exactitud balanceada y AUC para evaluar la capacidad predictiva.
Vale la pena mencionar que, el 16,1% de rotación constituye además la probabilidad previa del evento en esta muestra. En este sentido, las probabilidades individuales generadas por el modelo deben interpretarse respecto a ese nivel basal; esto es, un riesgo estimado del 30%, por ejemplo, sería claramente superior a la prevalencia general aunque permanezca por debajo de 0,50.
| Variable | Categoria | n | Porcentaje |
|---|---|---|---|
| Rotacion | No | 1233 | 83.88 |
| Rotacion | Si | 237 | 16.12 |
| Horas_Extra | No | 1054 | 71.70 |
| Horas_Extra | Si | 416 | 28.30 |
| Estado_Civil | Casado | 673 | 45.78 |
| Estado_Civil | Divorciado | 327 | 22.24 |
| Estado_Civil | Soltero | 470 | 31.97 |
| Viaje_de_Negocios | No_Viaja | 150 | 10.20 |
| Viaje_de_Negocios | Raramente | 1043 | 70.95 |
| Viaje_de_Negocios | Frecuentemente | 277 | 18.84 |
La caracterización muestra que 28,3% de los empleados realizan horas extra, mientras que 71,7% no las realizan. Esta variable tiene suficiente representación en ambas categorías como para permitir una comparación informativa de las tasas de rotación.
En estado civil, la plantilla se distribuye entre casados (45,8%), divorciados (22,2%) y solteros (32,0%). La categoría Casado se utiliza posteriormente como referencia, por lo que los coeficientes de Divorciado y Soltero expresan diferencias frente a este grupo.
Para viajes de negocios, 10,2% no viaja, 71,0% viaja raramente y 18,8% lo hace frecuentemente. La categoría No viaja constituye la referencia del modelo. Conviene tener presente que es también el grupo menos numeroso; por ello, los contrastes que lo utilizan como referencia pueden presentar intervalos de confianza más amplios que los de categorías con mayor tamaño muestral.
En conjunto, los gráficos de frecuencias muestran que ninguna de las categorías seleccionadas está ausente o es residual, pero sí existen tamaños desiguales. Estas diferencias de frecuencia no constituyen por sí mismas evidencia de asociación con la rotación, esa cuestión se estudia en el siguiente apartado de análisis bivariado mediante tasas condicionadas y regresión logística.
| Variable | n | Media | Desv_Estandar | Minimo | Q1 | Mediana | Q3 | Maximo |
|---|---|---|---|---|---|---|---|---|
| Edad | 1470 | 36.92 | 9.14 | 18 | 30 | 36 | 43 | 60 |
| Ingreso_Mensual | 1470 | 6502.93 | 4707.96 | 1009 | 2911 | 4919 | 8379 | 19999 |
| Antiguedad_Cargo | 1470 | 4.23 | 3.62 | 0 | 2 | 3 | 7 | 18 |
La edad presenta una media de 36,92 años y una mediana de 36,00; la mitad de los empleados tiene entre 30 y 43 años y los valores extremos van de 18 a 60 años. Se puede apreciar que en la muestra conviven personas que empiezan su carrera con otras cercanas a la jubilación, aunque el grueso de empleados está en plena etapa productiva. La cercanía entre media y mediana indica que el centro de la distribución no está dominado por unos pocos valores extremos.
El ingreso mensual es la variable que más diferencias muestra dentro de la organización. El salario medio es de 6.502,93, pero ese promedio lo elevan unos pocos sueldos altos. El dato representativo es la mediana: la mitad de la plantilla cobra 4.919,00, y una cuarta parte, menos de 2.911. En el otro extremo, los salarios llegan hasta 19.999, casi veinte veces el mínimo (1.009). Esta estructura, con muchos sueldos bajos y pocos muy altos, responde a la jerarquía de cargos: los gerentes y los directores de investigación superan los 16.000 de mediana, mientras que técnicos de laboratorio, investigadores y representantes de ventas rondan los 2.500–3.000 (tabla siguiente). Para el negocio, lo relevante es que quienes se van ganan bastante menos (mediana de 3.202) que quienes se quedan (5.204).
| Cargo | n | Ingreso mediano | Empleados con ingreso ≥ 18.000 |
|---|---|---|---|
| Gerente | 102 | 17454.5 | 43 |
| Director Investigación | 80 | 16510.0 | 26 |
| Representante Salud | 131 | 6811.0 | 0 |
| Director Manofactura | 145 | 6447.0 | 0 |
| Ejecutivo Ventas | 326 | 6231.0 | 0 |
| Recursos Humanos | 52 | 3093.0 | 0 |
| Investigador Cientifico | 292 | 2887.5 | 0 |
| Tecnico Laboratorio | 259 | 2886.0 | 0 |
| Representante Ventas | 83 | 2579.0 | 0 |
La media claramente superior a la mediana es consistente con una distribución asimétrica hacia valores altos, por lo que la mediana aporta una medida de posición especialmente útil.
Antigüedad en el cargo. Los empleados llevan de media 4,23 años en su puesto actual, pero la mitad lleva 3,00 años o menos. Hay personas recién incorporadas a su puesto (0 años) y otras que llevan hasta 18 años en el mismo cargo. En general, la permanencia en un mismo puesto es corta o moderada. Quienes abandonan la empresa llevan menos tiempo en su cargo (mediana de 2 años frente a 3). Esta variable permite estudiar si la consolidación en el cargo se asocia con una menor probabilidad de cambio.
Para la regresión, el ingreso se expresa en miles de unidades monetarias:
\[ Ingreso\_1000=\frac{Ingreso\ mensual}{1000}. \]
Este reescalamiento no modifica el ajuste, el valor p ni las probabilidades predichas; únicamente hace interpretable el coeficiente como el efecto asociado a 1.000 unidades monetarias adicionales.
Los histogramas aportan información adicional a las medidas resumen. La plantilla se concentra en edades intermedias: algo más de la mitad tiene entre 28 y 40 años y la edad más frecuente es 35. En cambio, los ingresos son muy desiguales. La mayoría de los empleados cobra menos de 5.000, con un grupo muy numeroso entre 2.000 y 3.000, mientras que una cúpula de apenas 69 gerentes y directores de investigación supera los 18.000. La antigüedad en el cargo tampoco sigue un patrón continuo. Se acumula en torno a los 2 años y de nuevo cerca de los 7, con pocos casos entre medias, lo que podría reflejar ciclos de promoción o reorganizaciones que los datos no permiten confirmar. Al cruzar estas tres dimensiones con la rotación aparece un perfil claro. Los empleados más propensos a irse son jóvenes, ocupan los puestos peor pagados y llevan poco tiempo en su cargo. Por ejemplo, se va más de un tercio de los menores de 25 años (39,2%) y casi 3 de cada 10 personas que acaban de asumir su puesto (29,9%), frente a en torno al 10 % entre quienes superan los 35 años (10,4%) y el 7,5% entre quienes llevan más de ocho años en su cargo (tablas siguientes). Para la empresa, la pérdida de talento se concentra en la base amplia de su estructura y en los primeros años de cada trayectoria, y ahí conviene orientar las acciones de retención.
| Tramo | n | Tasa de rotación |
|---|---|---|
| Menos de 25 años | 97 | 39,2% |
| 25 a 35 años | 632 | 19,3% |
| Más de 35 años | 741 | 10,4% |
| Tramo | n | Tasa de rotación |
|---|---|---|
| 0 años | 244 | 29,9% |
| 1 a 8 años | 1052 | 14,4% |
| Más de 8 años | 174 | 7,5% |
El análisis bivariado estudia cada predictor por separado mediante un modelo logístico:
\[ \operatorname{logit}(P_i)= \ln\left(\frac{P_i}{1-P_i}\right) =\beta_0+\beta_1X_i. \]
Para variables categóricas con más de dos niveles, R genera variables indicadoras respecto a una categoría de referencia. Las referencias fijadas son No para horas extra, Casado para estado civil y No viaja para viajes de negocios.
El signo de \(\beta\) informa de la dirección de la asociación en la escala logit. Para una interpretación más intuitiva se emplea
\[ OR=e^{\beta}. \]
Un \(OR>1\) implica mayores odds de rotación y un \(OR<1\) implica menores odds. El OR describe una razón de odds, no un incremento directo de la probabilidad.
variables_bivariadas <- c(
"Horas_Extra", "Estado_Civil", "Viaje_de_Negocios",
"Edad", "Ingreso_1000", "Antiguedad_Cargo"
)
modelos_bivariados <- setNames(
purrr::map(
variables_bivariadas,
~ glm(
reformulate(.x, response = "Rotacion_num"),
data = datos_modelo,
family = binomial(link = "logit")
)
),
variables_bivariadas
)
| Variable | Deviance_LR | gl | p_global |
|---|---|---|---|
| Horas_Extra | 81.402 | 1 | <0,001 |
| Estado_Civil | 44.000 | 2 | <0,001 |
| Viaje_de_Negocios | 23.760 | 2 | <0,001 |
| Edad | 39.519 | 1 | <0,001 |
| Ingreso_1000 | 45.487 | 1 | <0,001 |
| Antiguedad_Cargo | 42.700 | 1 | <0,001 |
| Variable | Termino | Beta | OR | IC 95% OR | p |
|---|---|---|---|---|---|
| Horas_Extra | Horas_ExtraSi | 1.3274 | 3.771 | [2.83; 5.026] | <0,001 |
| Estado_Civil | Estado_CivilDivorciado | -0.2395 | 0.787 | [0.514; 1.205] | 0,271 |
| Estado_Civil | Estado_CivilSoltero | 0.8772 | 2.404 | [1.766; 3.273] | <0,001 |
| Viaje_de_Negocios | Viaje_de_NegociosRaramente | 0.7044 | 2.023 | [1.095; 3.737] | 0,025 |
| Viaje_de_Negocios | Viaje_de_NegociosFrecuentemente | 1.3389 | 3.815 | [1.992; 7.305] | <0,001 |
| Edad | Edad | -0.0523 | 0.949 | [0.933; 0.965] | <0,001 |
| Ingreso_1000 | Ingreso_1000 | -0.1271 | 0.881 | [0.844; 0.919] | <0,001 |
| Antiguedad_Cargo | Antiguedad_Cargo | -0.1463 | 0.864 | [0.824; 0.906] | <0,001 |
La regresión logística simple cuantifica la dirección y magnitud de la asociación, no obstante, se incorporan pruebas bivariadas específicas según el tipo de variable para complementar el análisis. Para las categóricas se utiliza chi-cuadrado de independencia y se informa V de Cramér como medida de intensidad de asociación. Para las cuantitativas se examina Shapiro–Wilk por grupo; dada la sensibilidad de esta prueba con muestras grandes y la asimetría observada, se adopta Mann–Whitney como contraste principal de localización y la t de Welch como análisis de respaldo.
# Categóricas
chisq.test(
table(datos_modelo$Horas_Extra, datos_modelo$Rotacion),
correct = FALSE
)
# Cuantitativas
shapiro.test(datos_modelo$Ingreso_Mensual[datos_modelo$Rotacion == "No"])
shapiro.test(datos_modelo$Ingreso_Mensual[datos_modelo$Rotacion == "Si"])
wilcox.test(Ingreso_Mensual ~ Rotacion, data = datos_modelo, exact = FALSE)
t.test(Ingreso_Mensual ~ Rotacion, data = datos_modelo, var.equal = FALSE)
| Variable | Chi-cuadrado | gl | p | Mín. frecuencia esperada | V de Cramér |
|---|---|---|---|---|---|
| Horas Extra | 89.044 | 1 | <0,001 | 67.07 | 0.246 |
| Estado Civil | 46.164 | 2 | <0,001 | 52.72 | 0.177 |
| Viaje de Negocios | 24.182 | 2 | <0,001 | 24.18 | 0.128 |
Las pruebas chi-cuadrado confirman que Horas Extra, Estado Civil y Viaje de Negocios se asocian significativamente con la rotación (p < 0,001), con frecuencias esperadas mínimas superiores a 24 en todos los casos. Sin embargo, la magnitud de estas asociaciones es limitada: según la V de Cramér, Horas Extra muestra el efecto más relevante (V = 0,246), situado entre pequeño y mediano, mientras que Estado Civil (V = 0,177) y Viaje de Negocios (V = 0,128) presentan efectos pequeños. En términos prácticos, los empleados que realizan horas extra rotan casi tres veces más que el resto (30,5 % frente a 10,4 %), los solteros duplican la tasa de los casados y quienes viajan con frecuencia triplican la de quienes no viajan.
| Variable | Grupo | W | p |
|---|---|---|---|
| Edad | No | 0.9782 | <0,001 |
| Edad | Si | 0.9457 | <0,001 |
| Ingreso Mensual | No | 0.8341 | <0,001 |
| Ingreso Mensual | Si | 0.7799 | <0,001 |
| Antiguedad Cargo | No | 0.9067 | <0,001 |
| Antiguedad Cargo | Si | 0.8185 | <0,001 |
| Variable | Asimetria | p Mann-Whitney | t Welch | gl Welch | p Welch |
|---|---|---|---|---|---|
| Edad | 0.413 | <0,001 | 5.829 | 316.9 | <0,001 |
| Ingreso Mensual | 1.370 | <0,001 | 7.483 | 412.7 | <0,001 |
| Antiguedad Cargo | 0.917 | <0,001 | 6.847 | 366.6 | <0,001 |
La prueba de Shapiro-Wilk rechazó la normalidad en todas las variables y grupos (p < 0,001), resultado esperable dado el tamaño muestral y la asimetría positiva observada, especialmente en el ingreso mensual (1,37). Por ello, las diferencias entre empleados que permanecen y los que abandonan la organización se evaluaron de forma paralela mediante la prueba t de Welch, que no asume igualdad de varianzas, y la prueba no paramétrica de Mann-Whitney. Ambas coincidieron en señalar diferencias significativas (p < 0,001) en las tres variables: los empleados que rotan son más jóvenes (mediana de 32 frente a 36 años), perciben menores ingresos (3.202 frente a 5.204) y acumulan menos antigüedad en su cargo (2 frente a 3 años). La magnitud de estas diferencias es de pequeña a moderada (d de Cohen entre 0,44 y 0,44; tabla siguiente), lo que indica una tendencia consistente pero con un solapamiento considerable entre ambos grupos.
| Variable | d de Cohen (No rota − Sí rota) |
|---|---|
| Edad | 0.438 |
| Ingreso mensual | 0.440 |
| Antigüedad en el cargo | 0.442 |
El gráfico de tasas para las variables categóricas muestra diferencias de probabilidad observada, mientras que los OR de las regresiones posteriores cuantifican diferencias en odds. Ambas lecturas son complementarias. El gráfico compara la tasa de rotación de cada categoría con la media de la empresa (16,1 %), y deja ver con claridad qué grupos están por encima y cuáles por debajo. Tres grupos superan esa media. Los empleados que hacen horas extra rotan un 30,5 %, casi el doble de la media y el triple de quienes no las hacen (10,4 %). Los solteros llegan al 25,5 %, frente al 12,5 % de los casados y el 10,1 % de los divorciados. Quienes viajan por trabajo con frecuencia alcanzan el 24,9 %. En los viajes hay además un gradiente: la rotación crece a medida que aumenta la frecuencia de viaje (8,0 % sin viajes, 15,0 % con viajes ocasionales y 24,9 % con viajes frecuentes). Esto indica que la carga de desplazamientos está relacionada con la salida de forma progresiva. Tampoco son grupos pequeños: 416 empleados hacen horas extra, 470 son solteros y 277 viajan con frecuencia. Por eso el gráfico señala segmentos concretos y numerosos a los que dirigir las medidas de retención. Las horas extra son la palanca más clara, porque dependen directamente de decisiones de la empresa.
Asimismo, los diagramas de caja muestran que, en las tres variables, la distribución de quienes se van está desplazada hacia valores más bajos. En edad, la mitad central de quienes rotan está entre 28 y 39 años, frente a 31–43 de quienes permanecen. En ingreso la diferencia es mayor: el 50,2% de los empleados que se van cobra como máximo lo que gana el 25 % peor pagado de quienes se quedan. Además, la caja de quienes rotan termina en torno a 5.900, mientras que la de quienes permanecen llega a 8.800. La antigüedad en el cargo muestra el dato más llamativo: casi un tercio de quienes se van (30,8%) lo hace sin haber cumplido un año en su puesto, y por eso el cuartil inferior de ese grupo está en cero. Los valores atípicos también son informativos. Entre quienes permanecen, los sueldos por encima de 17.000 corresponden a la cúpula directiva. Entre quienes rotan, los pocos casos de ingreso alto, edad avanzada o larga antigüedad aparecen como atípicos, lo que confirma que la salida de perfiles senior es poco frecuente. Aun así, las cajas se solapan bastante. Estas variables marcan una tendencia, pero ninguna basta por sí sola para distinguir quién se irá.
La tasa observada de rotación es 10,4% entre quienes no realizan horas extra y 30,5% entre quienes sí las realizan. Por tanto, antes de introducir ningún ajuste multivariable ya se aprecia una diferencia sustantiva entre ambos grupos.
El modelo bivariado estima \(\beta=1,327\), que corresponde a un \(OR=3,77\) con IC95% [2,83, 5,03] y \(p\) < 0,001. En términos de odds, quienes realizan horas extra presentan 3,77 veces los odds de rotación de quienes no las realizan; esto equivale a unos odds aproximadamente 277,1% mayores. La dirección observada coincide con la hipótesis inicial y la asociación es estadísticamente significativa al 5%.
Las tasas descriptivas de rotación son 12,5% en casados, 10,1% en divorciados y 25,5% en solteros. La categoría con mayor tasa observada es, por tanto, Soltero.
Respecto a los casados, los solteros presentan un \(OR=2,40\), IC95% [1,77, 3,27], \(p\) < 0,001. La comparación Soltero vs Casado respalda la hipótesis planteada. Para divorciados frente a casados, el \(OR\) es 0,79 y el resultado es no estadísticamente significativo (\(p\) = 0,271).
Para una variable categórica con tres niveles conviene distinguir entre la significancia global del predictor y la significancia de cada contraste individual. El contraste de razón de verosimilitudes para Estado civil presenta \(p\) < 0,001. La tasa de divorciados es descriptivamente algo menor que la de casados, pero el intervalo de confianza de su OR incluye 1 y el contraste individual no es significativo; por tanto, los datos no permiten sostener una diferencia específica entre ambos grupos. El contraste Divorciado vs Casado no formaba parte de la hipótesis principal y no muestra diferencias significativas. La evidencia global del estado civil está impulsada principalmente por la mayor rotación observada en solteros.
La tasa de rotación aumenta desde 8,0% entre quienes no viajan a 15,0% entre quienes viajan raramente y 24,9% entre quienes viajan frecuentemente. Este patrón descriptivo es coherente con la dirección planteada en la hipótesis.
Frente al grupo No viaja, viajar raramente presenta un \(OR=2,02\) (\(p\) = 0,025), mientras que viajar frecuentemente presenta un \(OR=3,81\) (\(p\) < 0,001). El contraste global de la variable tiene \(p\) < 0,001. La secuencia de tasas observadas y de OR es compatible con un gradiente de mayor rotación a medida que aumenta la frecuencia de viajes. Aun así, la categoría No viaja es la menos numerosa, lo que se refleja en una incertidumbre relativamente amplia de los OR; el resultado de Raramente es estadísticamente más limítrofe que el de Frecuentemente.
Los empleados sin rotación presentan una edad media de 37,56 años (mediana 36,0), frente a 33,61 años (mediana 32,0) entre quienes rotan. La diferencia descriptiva es de 3,95 años.
El modelo bivariado estima \(\beta=-0,0523\) y \(OR=0,949\) por cada año adicional (\(p\) < 0,001). Como el OR es inferior a 1, cada año adicional se asocia con una reducción aproximada de 5,1% en los odds de rotación. Para apreciar un cambio temporal más interpretable, cinco años adicionales corresponden a \(OR^5=0,770\), es decir, una reducción acumulada aproximada de 23,0% en los odds, siempre bajo el supuesto de linealidad del logit.
El ingreso medio es 6.832,74 entre empleados sin rotación y 4.787,09 entre quienes rotan; las medianas son 5.204,00 y 3.202,00, respectivamente. La diferencia entre media y mediana aconseja no interpretar únicamente el promedio.
El predictor se expresa por cada 1.000 unidades monetarias. El modelo bivariado produce \(OR=0,881\) por cada 1.000 unidades adicionales (\(p\) < 0,001). Esto supone una reducción aproximada de 11,9% en los odds por cada 1.000 unidades. La dirección negativa coincide con la hipótesis inicial.
La antigüedad media es 4,48 años entre quienes no rotan y 2,90 entre quienes rotan (medianas de 3 y 2 años, respectivamente). El modelo bivariado estima un \(OR=0,864\) por cada año adicional (\(p\) < 0,001). Esto representa una reducción aproximada de 13,6% en los odds de rotación por año adicional. Este resultado debe leerse como una tendencia media, ya que la distribución de la antigüedad en el cargo es irregular y es poco probable que el efecto de un año adicional sea idéntico en todo su rango.
| Efecto | Dirección esperada | Beta | OR | p | Coincide con hipótesis | Significativo (5%) |
|---|---|---|---|---|---|---|
| Horas extra: Sí vs No | Positiva | 1.3274 | 3.771 | <0,001 | Sí | Sí |
| Estado civil: Soltero vs Casado | Positiva | 0.8772 | 2.404 | <0,001 | Sí | Sí |
| Viaje: Raramente vs No viaja | Positiva | 0.7044 | 2.023 | 0,025 | Sí | Sí |
| Viaje: Frecuentemente vs No viaja | Positiva | 1.3389 | 3.815 | <0,001 | Sí | Sí |
| Edad (por 1 año) | Negativa | -0.0523 | 0.949 | <0,001 | Sí | Sí |
| Ingreso mensual (por 1.000 unidades) | Negativa | -0.1271 | 0.881 | <0,001 | Sí | Sí |
| Antigüedad en cargo (por 1 año) | Negativa | -0.1463 | 0.864 | <0,001 | Sí | Sí |
Con base en lo anterior, los modelos logísticos bivariados confirmaron la dirección esperada en los siete contrastes principales. Realizar horas extra se asocia con unos odds de rotación 3,8 veces mayores (IC 95 %: 2,83–5,03), lo que en términos de tasas observadas supone pasar del 10,4 % al 30,5 %. Los empleados solteros presentan unos odds 2,4 veces superiores a los de los casados (IC 95 %: 1,77–3,27), mientras que los divorciados, cuyo contraste no formaba parte de la hipótesis principal, no difieren significativamente de estos (OR = 0,79; p = 0,271). La frecuencia de viajes muestra un gradiente creciente respecto a quienes no viajan, con una asociación más limítrofe para los viajes ocasionales (OR = 2,02; IC 95 %: 1,10–3,74; p = 0,025) y más intensa para los frecuentes (OR = 3,81; IC 95 %: 1,99–7,31; p < 0,001). Por su parte, la edad, el ingreso y la antigüedad en el cargo se asocian negativamente con la rotación: cada año adicional de edad se asocia con una reducción del 5,1 % en los odds, cada 1.000 unidades de ingreso mensual con una del 11,9 % y cada año en el cargo con una del 13,6 %.
Los modelos bivariados permiten identificar asociaciones simples, pero sus estimaciones pueden estar afectadas por confusión, ya que parte del efecto atribuido a una variable puede deberse a otras características del empleado relacionadas con ella; por ejemplo, la edad, el ingreso y la antigüedad tienden a aumentar de forma conjunta. Por este motivo, el siguiente paso consiste en estimar un modelo logístico multivariable que incluya simultáneamente las seis covariables, de modo que el efecto de cada una se evalúe manteniendo constantes las demás. Conviene señalar que este ajuste solo controla la confusión atribuible a las variables incluidas en el modelo.
El modelo ajustado es
\[ \begin{aligned} \operatorname{logit}(P_i)= {} & \beta_0 +\beta_1(\text{Horas extra}) +\beta_2(\text{Estado civil})\\ &+\beta_3(\text{Viajes}) +\beta_4(\text{Edad}) +\beta_5(\text{Ingreso/1000}) +\beta_6(\text{Antigüedad}). \end{aligned} \]
Estado civil y viajes de negocios se representan mediante dos variables indicadoras cada uno, respecto a sus categorías de referencia, por lo que el modelo estima ocho coeficientes además del intercepto. En este contexto, cada coeficiente representa una asociación ajustada: su interpretación se realiza manteniendo constantes las demás covariables incluidas en el modelo.
formula_final <- Rotacion_num ~ Horas_Extra + Estado_Civil +
Viaje_de_Negocios + Edad + Ingreso_1000 + Antiguedad_Cargo
modelo_final <- glm(
formula_final,
data = datos_modelo,
family = binomial(link = "logit")
)
summary(modelo_final)
A continuación se incluye también la salida estándar de
summary() para que puedan comprobarse directamente los
coeficientes estimados, errores estándar, estadísticos z y valores
p.
summary(modelo_final)
#>
#> Call:
#> glm(formula = formula_final, family = binomial(link = "logit"),
#> data = datos_modelo)
#>
#> Coefficients:
#> Estimate Std. Error z value
#> (Intercept) -1.42588 0.46053 -3.096
#> Horas_ExtraSi 1.45119 0.15820 9.173
#> Estado_CivilDivorciado -0.29127 0.22947 -1.269
#> Estado_CivilSoltero 0.79351 0.17136 4.631
#> Viaje_de_NegociosRaramente 0.67004 0.33058 2.027
#> Viaje_de_NegociosFrecuentemente 1.32461 0.35296 3.753
#> Edad -0.02885 0.01009 -2.860
#> Ingreso_1000 -0.06808 0.02518 -2.703
#> Antiguedad_Cargo -0.10412 0.02731 -3.812
#> Pr(>|z|)
#> (Intercept) 0.001961 **
#> Horas_ExtraSi < 0.0000000000000002 ***
#> Estado_CivilDivorciado 0.204340
#> Estado_CivilSoltero 0.00000364 ***
#> Viaje_de_NegociosRaramente 0.042676 *
#> Viaje_de_NegociosFrecuentemente 0.000175 ***
#> Edad 0.004232 **
#> Ingreso_1000 0.006870 **
#> Antiguedad_Cargo 0.000138 ***
#> ---
#> 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: 1082.4 on 1461 degrees of freedom
#> AIC: 1100.4
#>
#> Number of Fisher Scoring iterations: 5
| Efecto | Beta | Error estándar | OR | IC 95% OR | p | Significativo (5%) |
|---|---|---|---|---|---|---|
| Horas extra: Sí vs No | 1.4512 | 0.1582 | 4.268 | [3.13; 5.82] | <0,001 | Sí |
| Estado civil: Divorciado vs Casado | -0.2913 | 0.2295 | 0.747 | [0.477; 1.172] | 0,204 | No |
| Estado civil: Soltero vs Casado | 0.7935 | 0.1714 | 2.211 | [1.58; 3.094] | <0,001 | Sí |
| Viaje: Raramente vs No viaja | 0.6700 | 0.3306 | 1.954 | [1.022; 3.736] | 0,043 | Sí |
| Viaje: Frecuentemente vs No viaja | 1.3246 | 0.3530 | 3.761 | [1.883; 7.511] | <0,001 | Sí |
| Edad (por 1 año) | -0.0289 | 0.0101 | 0.972 | [0.953; 0.991] | 0,004 | Sí |
| Ingreso mensual (por 1.000 unidades) | -0.0681 | 0.0252 | 0.934 | [0.889; 0.981] | 0,007 | Sí |
| Antigüedad en el cargo (por 1 año) | -0.1041 | 0.0273 | 0.901 | [0.854; 0.951] | <0,001 | Sí |
| Variable | gl | LRT | p |
|---|---|---|---|
| Horas_Extra | 1 | 85.412 | <0,001 |
| Estado_Civil | 2 | 32.841 | <0,001 |
| Viaje_de_Negocios | 2 | 20.181 | <0,001 |
| Edad | 1 | 8.554 | 0,003 |
| Ingreso_1000 | 1 | 7.906 | 0,005 |
| Antiguedad_Cargo | 1 | 15.569 | <0,001 |
La tabla de coeficientes responde a la significancia de cada
parámetro o contraste respecto a su categoría de referencia. La tabla
global complementaria es especialmente importante para Estado
civil y Viajes de negocios, porque estos
factores ocupan más de un parámetro: permite contrastar si retirar el
factor completo deterioraría significativamente el ajuste del modelo. El
intercepto se mantiene en la salida de summary(), pero no
se interpreta sustantivamente. Representaría el logit para las
categorías de referencia cuando edad, ingreso y antigüedad fueran cero;
esa combinación no constituye un perfil laboral de interés dentro del
dominio observado.
Los contrastes de razón de verosimilitudes evalúan la contribución global de cada predictor comparando el modelo completo con el modelo que lo excluye. Los seis predictores resultan significativos una vez controlados los restantes (p ≤ 0,005 en todos los casos). En el caso del estado civil, el contraste global es significativo (LRT = 32,84; gl = 2; p < 0,001) aunque la comparación entre divorciados y casados no lo sea, lo que indica que su aportación se debe esencialmente a la diferencia entre solteros y casados. Algo similar ocurre con los viajes de negocio (LRT = 20,18; gl = 2; p < 0,001), cuya contribución descansa sobre todo en el contraste de viajes frecuentes. Además, la magnitud del estadístico permite comparar predictores medidos en escalas distintas: las horas extra (LRT = 85,41) son, con diferencia, la variable que más información aporta al modelo, seguida del estado civil, los viajes y la antigüedad en el cargo (LRT = 15,57), mientras que la edad (LRT = 8,55) y el ingreso (LRT = 7,91) realizan contribuciones menores.
La Figura anterior resume los OR ajustados y sus intervalos de confianza al 95 % en escala logarítmica. Es decir, muestra, para cada característica, cómo cambia la propensión a abandonar la empresa una vez tenidas en cuenta todas las demás. Cada punto es el efecto estimado y la línea horizontal que lo acompaña indica el margen de incertidumbre de esa estimación. La línea vertical discontinua, situada en el valor 1, marca el punto en que una característica no tiene relación con la rotación: los puntos a su derecha indican mayor propensión a irse y los de su izquierda, menor.
Cuando la línea horizontal de un efecto no toca la línea vertical, la relación es estadísticamente significativa; cuando la atraviesa, los datos no permiten afirmar que exista. Leído así, el gráfico muestra que hacer horas extra es el factor más asociado con la rotación: multiplica por algo más de 4 los odds de irse. Le siguen viajar con frecuencia y estar soltero. Viajar solo de vez en cuando también se asocia con más rotación, pero su línea casi toca el 1, por lo que esa evidencia es débil. Estar divorciado es el único caso cuya línea cruza el 1, de modo que no se diferencia de estar casado.
Por último, la edad, el ingreso y la antigüedad en el cargo aparecen a la izquierda y muy pegados al 1, pero no porque importen poco, sino porque el efecto está medido por cada año o por cada 1.000 unidades de salario. Acumulado, su peso es notable: diez años más de edad se asocian con una reducción de los odds de rotación en torno al 25 %, 5.000 unidades más de salario en torno al 29 % y cinco años más en el cargo en torno al 41 %.
Horas extra. El coeficiente ajustado es \(\beta=1,451\) y el OR es 4,27 (IC95% [3,13, 5,82], \(p\) < 0,001). Manteniendo constantes estado civil, viajes, edad, ingreso y antigüedad, quienes realizan horas extra presentan 4,27 veces los odds de rotación de quienes no las realizan. En términos relativos, los odds son aproximadamente 326,8% mayores. El efecto permanece estadísticamente significativo después del ajuste, de modo que la asociación bivariada no desaparece al controlar por las otras covariables.
Estado civil. Los solteros presentan un OR ajustado de 2,21 frente a los casados (IC95% [1,58, 3,09], \(p\) < 0,001). Por tanto, el contraste Soltero vs Casado es estadísticamente significativo. Para divorciados frente a casados, el OR es 0,75 (\(p\) = 0,204), por lo que este contraste es no estadísticamente significativo. Esta diferencia ilustra por qué una variable categórica con varios niveles debe interpretarse contraste por contraste y no mediante una única cifra. En particular, un OR inferior a 1 para divorciados no debe presentarse como un “efecto protector”, porque su IC95% incluye 1 y la evidencia estadística es insuficiente para distinguirlo de los casados.
Viajes de negocios. Frente a quienes no viajan, viajar raramente presenta un OR ajustado de 1,95 (IC95% [1,02, 3,74], \(p\) = 0,043), mientras que viajar frecuentemente presenta un OR de 3,76 (IC95% [1,88, 7,51], \(p\) < 0,001). El IC95% del contraste Raramente vs No viaja queda próximo a 1 y su valor p es cercano a 0,05, por lo que su evidencia es más débil; en cambio, el contraste de viajes frecuentes es más claro, aunque su intervalo también es amplio debido al menor tamaño del grupo de referencia.
Edad. El OR ajustado por cada año adicional es 0,972 (IC95% [0,953, 0,991], \(p\) = 0,004). Cada año adicional se asocia con una reducción aproximada de 2,8% en los odds. En un intervalo de cinco años, el OR acumulado sería 0,866, lo que ayuda a apreciar que efectos pequeños por unidad pueden adquirir una magnitud relevante a lo largo de varias unidades.
Ingreso mensual. Al estar expresado en miles, el OR de 0,934 corresponde a 1.000 unidades monetarias adicionales (IC95% [0,889, 0,981], \(p\) = 0,007). Esto equivale a una reducción aproximada de 6,6% en los odds por cada 1.000 unidades, manteniendo el resto constante.
Antigüedad en el cargo. El OR ajustado por año es 0,901 (IC95% [0,854, 0,951], \(p\) < 0,001). Cada año adicional de antigüedad se asocia con una reducción aproximada de 9,9% en los odds de rotación, después de controlar por las restantes variables.
Es importante evitar dos errores de interpretación. Primero, un cambio en los odds no equivale a un cambio de la misma magnitud en la probabilidad: en horas extra, unos odds un 327 % mayores se traducen en una probabilidad media predicha que pasa del 10,6% al 30,1% (sección 4.5). Segundo, no conviene ordenar mecánicamente la “importancia” de predictores cuantitativos y categóricos comparando sus OR, porque se encuentran en escalas distintas. La magnitud debe interpretarse en función de la unidad concreta de cada variable y del contexto empresarial.
La comparación entre modelos simples y el modelo conjunto permite valorar cuánto cambia cada asociación al controlar por las demás características. Horas extra pasa de un OR bivariado de 3,77 a un OR ajustado de 4,27: la asociación, lejos de atenuarse, se mantiene e incluso aumenta ligeramente. Viajes frecuentes cambia de 3,81 a 3,76, por lo que su magnitud es muy estable ante el ajuste. Viajar raramente se mantiene prácticamente igual (de 2,02 a 1,95), aunque su evidencia sigue siendo la más débil (\(p\) = 0,043). Soltero vs Casado se atenúa de 2,40 a 2,21, aunque conserva una asociación positiva y significativa.
La atenuación es más visible en los predictores cuantitativos. La edad pasa de un OR de 0,949 a 0,972 por año; el ingreso, de 0,881 a 0,934 por cada 1.000 unidades; y la antigüedad, de 0,864 a 0,901 por año. El signo negativo se conserva en los tres casos, pero el tamaño del efecto disminuye después del ajuste. Esto es compatible con que edad, ingreso y antigüedad compartan parte de la información asociada con la permanencia laboral.
Este contraste es importante porque la magnitud de una asociación simple no garantiza que se conserve al considerar simultáneamente las demás características: en este caso, las variables categóricas mantienen su efecto, mientras que las cuantitativas lo reducen de forma apreciable. El modelo multivariable responde a una pregunta distinta: cuál es la asociación de cada variable condicionada al resto de covariables incluidas.
cor(
datos_modelo %>% select(Edad, Ingreso_1000, Antiguedad_Cargo),
method = "spearman"
)
car::vif(modelo_final)
| Variable_1 | Variable_2 | Rho_Spearman |
|---|---|---|
| Antiguedad Cargo | Edad | 0.198 |
| Edad | Ingreso 1000 | 0.472 |
| Antiguedad Cargo | Ingreso 1000 | 0.395 |
| Variable | GVIF | gl | GVIF^(1/(2·gl)) |
|---|---|---|---|
| Horas Extra | 1.030 | 1 | 1.015 |
| Estado Civil | 1.029 | 2 | 1.007 |
| Viaje de Negocios | 1.013 | 2 | 1.003 |
| Edad | 1.267 | 1 | 1.125 |
| Ingreso 1000 | 1.333 | 1 | 1.155 |
| Antiguedad Cargo | 1.103 | 1 | 1.050 |
Para verificar que la estimación conjunta no se ve afectada por redundancia entre predictores, se examinaron las correlaciones de Spearman entre las variables cuantitativas y el factor de inflación de la varianza generalizado (GVIF). Las correlaciones son positivas y de intensidad moderada o baja: la más alta es la de la edad con el ingreso (ρ = 0,47), seguida de la antigüedad en el cargo con el ingreso (ρ = 0,40) y con la edad (ρ = 0,20). En coherencia con ello, los valores de GVIF^(1/(2·gl)), que permiten comparar predictores con distinto número de grados de libertad, se sitúan entre 1,00 y 1,16 para todos los predictores, muy próximos al mínimo teórico de 1, lo que indica que la relación entre variables apenas incrementa la incertidumbre de los coeficientes. Por tanto, no se identifica un problema relevante de multicolinealidad que impida interpretar el modelo.
Este resultado es compatible con la atenuación observada en la sección anterior. Una correlación moderada no basta para generar problemas de multicolinealidad, pero sí para que parte de la asociación simple de una variable se deba a otra relacionada con ella. Así, el coeficiente de la edad pasa de \(\beta=-0,052\) en el modelo bivariado a \(\beta=-0,032\) al incorporar únicamente el ingreso, y a \(\beta=-0,029\) en el modelo completo, lo que indica que una parte de la menor rotación de los empleados de más edad se explica por sus mayores ingresos.
Los OR son la medida natural de la regresión logística, pero su escala resulta poco intuitiva para la toma de decisiones. Como complemento, se calculan probabilidades medias predichas estandarizadas, para cada empleado se mantienen sus características observadas y se fija, para toda la muestra, un nivel concreto de la variable de interés; después se promedian las probabilidades resultantes. El cálculo se centra en las horas extra y los viajes de negocio porque, a diferencia del estado civil, la edad o la antigüedad, son condiciones de trabajo sobre las que la organización puede intervenir directamente.
| Escenario | Probabilidad media predicha |
|---|---|
| Horas extra = No | 10,6% |
| Horas extra = Sí | 30,1% |
| Viajes = No viaja | 9,0% |
| Viajes = Raramente | 15,1% |
| Viajes = Frecuentemente | 23,5% |
Al estandarizar el resto de covariables, la probabilidad media predicha de rotación es del 10,6 % cuando se fija Horas extra = No y del 30,1 % cuando se fija Horas extra = Sí, una diferencia del orden de 19,5 puntos porcentuales. Conviene notar que la probabilidad se multiplica aproximadamente por 2,8, bastante menos de lo que sugiere su OR de 4,27, lo que ilustra por qué los odds ratios no deben leerse como cocientes de probabilidades. En el caso de los viajes, la probabilidad aumenta de forma escalonada: 9,0 % sin viajes, 15,1 % con viajes ocasionales y 23,5 % con viajes frecuentes. En ambas variables, estas probabilidades ajustadas son muy similares a las tasas observadas sin ajustar (10,4 % frente a 30,5 % en horas extra y 8,0 % frente a 24,9 % en viajes), lo que confirma que sus asociaciones apenas se explican por las demás características consideradas. Estas cifras traducen el modelo a una escala de probabilidad comprensible, pero no son efectos causales, ya que proceden de un modelo observacional y pueden reflejar confusión residual.
| n | AIC | Deviance_nula | Deviance_residual | Reduccion_deviance | p_LR_modelo | R2_McFadden |
|---|---|---|---|---|---|---|
| 1470 | 1100.376 | 1298.583 | 1082.376 | 216.207 | <0,001 | 0.166 |
La deviance disminuye desde 1.298,58 en el modelo nulo hasta 1.082,38 en el modelo con covariables, una reducción de 216,21 unidades. El contraste de razón de verosimilitudes del modelo completo (\(\chi^2\) = 216,21; gl = 8; \(p\) < 0,001) indica que el conjunto de predictores mejora significativamente el ajuste frente al modelo que solo contiene intercepto.
El pseudo-\(R^2\) de McFadden es 0,166, lo que significa que los predictores reducen en un 16,6% la deviance del modelo nulo. Su valor indica una mejora modesta, coherente con que la rotación depende también de factores no incluidos en el modelo, como el clima del equipo, las oportunidades externas o las circunstancias personales; aun así, esto es compatible con que cada predictor mantenga una asociación clara y significativa. No debe interpretarse como el porcentaje de varianza explicada de una regresión lineal.
El AIC (1.100,38) se incluye como referencia para comparar este modelo con especificaciones alternativas estimadas sobre la misma muestra y la misma respuesta, ya que por sí solo no tiene una interpretación absoluta.
La inferencia sobre los coeficientes anteriores se realizó con toda
la muestra, mientras que la capacidad predictiva se evalúa en
observaciones no utilizadas para entrenar el modelo. Se construye una
partición estratificada 70/30, preservando aproximadamente la
prevalencia de rotación en ambos subconjuntos. La semilla
set.seed(123) garantiza reproducibilidad.
set.seed(123)
indices_por_clase <- split(
seq_len(nrow(datos_modelo)),
datos_modelo$Rotacion_num
)
indices_train <- unlist(lapply(indices_por_clase, function(idx) {
sample(idx, size = floor(0.70 * length(idx)), replace = FALSE)
}))
train <- datos_modelo[sort(indices_train), , drop = FALSE]
test <- datos_modelo[-sort(indices_train), , drop = FALSE]
modelo_train <- glm(
formula_final,
data = train,
family = binomial(link = "logit")
)
prob_train <- predict(modelo_train, newdata = train, type = "response")
prob_test <- predict(modelo_train, newdata = test, type = "response")
roc_train <- pROC::roc(
response = train$Rotacion_num,
predictor = prob_train,
levels = c(0, 1),
direction = "<"
)
roc_test <- pROC::roc(
response = test$Rotacion_num,
predictor = prob_test,
levels = c(0, 1),
direction = "<"
)
auc_test <- as.numeric(pROC::auc(roc_test))
pROC::ci.auc(roc_test)
El conjunto de entrenamiento contiene 1028 empleados y el conjunto de prueba 442. La prevalencia de rotación es 16,1% en entrenamiento y 16,3% en prueba, lo que confirma que la estratificación mantiene una distribución similar de la respuesta.
El AUC obtenido en el conjunto de prueba es 0,751, con IC95% [0,686, 0,816]. Una interpretación especialmente útil del AUC es la siguiente: si se selecciona aleatoriamente un empleado que rota y otro que no rota, el modelo asignará una probabilidad de riesgo mayor al empleado que rota en aproximadamente 75,1% de esas parejas.
Como el intervalo de confianza se sitúa completamente por encima de 0,5, valor que correspondería a una clasificación al azar (línea diagonal), el modelo tiene una capacidad real para distinguir entre ambos grupos, aunque de magnitud moderada, en coherencia con el pseudo-R² obtenido.
La amplitud del IC95% refleja la incertidumbre asociada a una muestra de prueba finita: el rendimiento poblacional compatible con los datos abarca un rango apreciable. La forma de la curva permite además valorar el coste de usar el modelo en la práctica: por ejemplo, con el umbral de Youden (sección 6) el modelo identifica al 61,1% de los empleados que rotan a costa de señalar también como casos de riesgo al 20,0% de quienes permanecen.
El uso de un único hold-out 70/30 es apropiado para este ejercicio y evita evaluar el modelo sobre las mismas observaciones utilizadas para entrenarlo. Sin embargo, el resultado depende parcialmente de la partición aleatoria. Por ello, los apartados siguientes complementan esta evaluación con validación cruzada repetida y con un análisis explícito de calibración.
Conviene señalar que el AUC resume la capacidad de ordenar a los empleados según su riesgo, pero no indica si las probabilidades predichas son precisas ni cuál es el umbral de decisión más adecuado, que dependerá del coste relativo que la organización asigne a no detectar una salida frente a intervenir innecesariamente.
El hold-out 70/30 proporciona una evaluación independiente, pero depende de una sola partición. Como análisis de estabilidad se añade una validación cruzada estratificada de 10 particiones repetida 20 veces.
cv_auc <- validacion_cruzada_auc(
datos_modelo,
formula_final,
k = 10,
repeticiones = 20,
seed = 2026
)
resumen_cv
| AUC_media | AUC_DE | AUC_mediana | AUC_Q1 | AUC_Q3 |
|---|---|---|---|---|
| 0.767 | 0.058 | 0.769 | 0.723 | 0.808 |
El AUC medio en los 200 ajustes de validación cruzada es 0,767 con desviación estándar 0,058. Esta validación cruzada se presenta como análisis complementario de estabilidad sobre la base completa y no se utiliza para seleccionar variables ni ajustar el punto de corte. Su proximidad al AUC del hold-out (0,751) indica que el rendimiento observado en test no depende exclusivamente de una partición excepcionalmente favorable o desfavorable.
La discriminación responde a si el modelo ordena correctamente empleados de mayor y menor riesgo. La calibración responde a otra pregunta: si una probabilidad predicha de, por ejemplo, 30% se corresponde aproximadamente con una frecuencia observada del 30%.
brier_test <- mean((test$Rotacion_num - prob_test)^2)
modelo_calibracion <- glm(
test$Rotacion_num ~ qlogis(pmin(pmax(prob_test, 1e-6), 1 - 1e-6)),
family = binomial("logit")
)
coef(modelo_calibracion)
| Indicador | Valor |
|---|---|
| Brier score del modelo | 0.1186 |
| Brier score modelo nulo | 0.1364 |
| Intercepto de calibración | -0.3030 |
| Pendiente de calibración | 0.7695 |
| Hosmer-Lemeshow p | 0.0095 |
La pendiente de calibración es 0,77. Al ser inferior a 1, sugiere que las probabilidades tienden a ser algo demasiado extremas: los riesgos altos se sobreseparan de los bajos. El contraste de Hosmer–Lemeshow produce \(p\) < 0,01: existe evidencia de discrepancia entre probabilidades predichas y frecuencias observadas en los grupos de riesgo.
Por su parte, el Brier score del modelo (0,119) es un 13,0% inferior al del modelo nulo (0,136), que asigna a todos los empleados la prevalencia media; las probabilidades del modelo aportan, por tanto, información útil respecto a esa referencia.
Hosmer–Lemeshow es sensible a la forma de agrupar y no debe usarse como único criterio. La lectura conjunta de la curva de calibración, la pendiente y el Brier score es más informativa. En este ejercicio, el modelo puede emplearse con mayor confianza para priorizar riesgos relativos que para interpretar cada porcentaje como una frecuencia futura exacta.
La curva ROC evalúa el ranking de probabilidades, pero una estrategia operativa requiere decidir a partir de qué probabilidad un empleado será marcado para intervención. Debido al desbalance de la respuesta, el corte 0,50 no debe asumirse automáticamente como óptimo.
En lugar de comparar únicamente tres valores aislados, se recorre el intervalo completo de umbrales entre 0,01 y 0,99. El gráfico se calcula sobre entrenamiento, de modo que la elección operativa no se optimice a partir del conjunto de prueba.
cortes_barrido <- seq(0.01, 0.99, by = 0.01)
barrido_umbral_train <- purrr::map_dfr(
cortes_barrido,
~ metricas_clasificacion(
train$Rotacion_num,
prob_train,
.x,
"Barrido"
)
)
Entre 0,15 y 0,25, la exactitud balanceada en entrenamiento se mueve entre 0,721 y 0,731. La existencia de una zona relativamente plana indica que, dentro de ese intervalo, pequeñas variaciones del umbral no producen cambios drásticos en el equilibrio global entre sensibilidad y especificidad. En ese contexto, la estadística no determina por sí sola una única frontera: la capacidad de intervención de RR. HH. y el coste relativo de falsos negativos y falsos positivos pasan a ser parte explícita de la decisión. En umbrales altos, especialmente cuando quedan muy pocos empleados clasificados como positivos, métricas como la precisión pueden fluctuar de forma marcada y no conviene sobreinterpretar pequeñas diferencias entre cortes vecinos.
# Corte convencional
metricas_050 <- metricas_clasificacion(
test$Rotacion_num, prob_test, 0.50, "Corte 0,50"
)
# Corte operativo orientado a aumentar sensibilidad
metricas_020 <- metricas_clasificacion(
test$Rotacion_num, prob_test, 0.20, "Corte operativo 0,20"
)
# Alternativa intermedia
metricas_025 <- metricas_clasificacion(
test$Rotacion_num, prob_test, 0.25, "Corte 0,25"
)
# Corte que maximiza sensibilidad + especificidad - 1.
# Se selecciona en TRAIN y después se evalúa en TEST, evitando optimizar el
# mismo conjunto usado para informar el rendimiento final.
youden_df <- as.data.frame(
pROC::coords(
roc_train,
x = "best",
best.method = "youden",
ret = c("threshold", "sensitivity", "specificity"),
transpose = FALSE
)
)
umbral_youden <- as.numeric(youden_df$threshold[1])
metricas_youden <- metricas_clasificacion(
test$Rotacion_num,
prob_test,
umbral_youden,
"Índice de Youden"
)
| Estrategia | Corte | TP | FP | TN | FN | Sensibilidad | Especificidad | Precision | Exactitud | F1 | Exactitud_balanceada | Tasa_marcados |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Corte 0,50 | 0.500 | 9 | 10 | 360 | 63 | 0.125 | 0.973 | 0.474 | 0.835 | 0.198 | 0.549 | 0.043 |
| Corte operativo 0,20 | 0.200 | 45 | 88 | 282 | 27 | 0.625 | 0.762 | 0.338 | 0.740 | 0.439 | 0.694 | 0.301 |
| Corte 0,25 | 0.250 | 40 | 58 | 312 | 32 | 0.556 | 0.843 | 0.408 | 0.796 | 0.471 | 0.699 | 0.222 |
| Índice de Youden | 0.217 | 44 | 74 | 296 | 28 | 0.611 | 0.800 | 0.373 | 0.769 | 0.463 | 0.706 | 0.267 |
Con el corte 0,50, la sensibilidad es 12,5% y la especificidad 97,3%. El modelo detecta solo 9 de los 72 empleados con rotación del conjunto de prueba y deja escapar 63 falsos negativos. Su exactitud es 83,5%, prácticamente igual a la exactitud de 83,7% que se obtendría clasificando a todos como No rota. Este resultado demuestra por qué una exactitud alta puede ser engañosa cuando la clase positiva es minoritaria: el corte 0,50 ofrece una especificidad excelente, pero una capacidad muy pobre para identificar el evento que interesa prevenir.
Al reducir el umbral a 0,20, la sensibilidad aumenta hasta 62,5% y la especificidad desciende a 76,2%. Frente a 0,50 se recuperan 36 verdaderos positivos adicionales, a costa de 78 falsos positivos adicionales. La precisión queda en 33,8%: aproximadamente uno de cada 3,0 empleados señalados por la regla presenta rotación en test. El F1 (0,439) y la exactitud balanceada (0,694) muestran que la ganancia de sensibilidad produce una clasificación más útil para una política preventiva, aunque con mayor carga de intervenciones.
Con el corte 0,20, el modelo marca para intervención a 133 de 442 empleados (30,1%) y detecta 62,5% de los casos que rotan. Con 0,25, la fracción marcada desciende a 22,2% y la sensibilidad a 55,6%. Esta comparación cuantifica la carga operativa: elevar el corte reduce intervenciones, pero también deja sin detectar una mayor proporción de casos positivos.
El índice de Youden se selecciona en el conjunto de entrenamiento y se aplica después al conjunto de prueba, evitando elegir el corte con los mismos datos utilizados para informar su desempeño. Su umbral es 0,217, con sensibilidad 61,1%, especificidad 80,0%, F1 0,463 y exactitud balanceada 0,706. Este punto sirve como referencia estadística de equilibrio, pero no incorpora el coste relativo de falsos negativos y falsos positivos.
Para esta actividad se adopta 0,20 como umbral operativo porque el objetivo de negocio prioriza no dejar sin detectar empleados con riesgo relevante cuando la intervención es de baja intensidad —por ejemplo, conversación de seguimiento, revisión de carga o evaluación de expectativas—. Esta elección debe leerse como una decisión de utilidad y costes, no como el umbral que maximiza todas las métricas. Si el coste de intervenir fuera alto o la capacidad de RR. HH. limitada, un corte más próximo al de Youden podría ser preferible. El umbral debe revisarse si cambian la prevalencia, los costes o la capacidad operativa.
Se plantean dos perfiles. El primero combina varios factores asociados con mayor riesgo y permite comprobar el cálculo completo de logit → odds → probabilidad. El segundo se sitúa cerca de la zona de decisión y permite mostrar por qué el punto de corte importa operativamente.
empleado_hipotetico <- tibble(
Horas_Extra = factor("Si", levels = levels(datos_modelo$Horas_Extra)),
Estado_Civil = factor("Soltero", levels = levels(datos_modelo$Estado_Civil)),
Viaje_de_Negocios = factor(
"Frecuentemente",
levels = levels(datos_modelo$Viaje_de_Negocios)
),
Edad = 30,
Ingreso_1000 = 3,
Antiguedad_Cargo = 1
)
# Predictor lineal o logit
eta_empleado <- predict(
modelo_final,
newdata = empleado_hipotetico,
type = "link"
)
# Odds y probabilidad
odds_empleado <- exp(eta_empleado)
prob_empleado <- predict(
modelo_final,
newdata = empleado_hipotetico,
type = "response"
)
umbral_intervencion <- 0.20
decision_empleado <- ifelse(
prob_empleado >= umbral_intervencion,
"Intervenir preventivamente",
"No priorizar intervención"
)
| Edad | Horas_Extra | Estado_Civil | Viaje_de_Negocios | Ingreso_Mensual | Antiguedad_Cargo | Logit | Odds | Probabilidad_Rotacion | Umbral_Intervencion | Decision |
|---|---|---|---|---|---|---|---|---|---|---|
| 30 | Si | Soltero | Frecuentemente | 3000 | 1 | 0.9695 | 2.6365 | 0.725 | 0.2 | Intervenir preventivamente |
Una vez evaluada la especificación mediante el hold-out, la
predicción ilustrativa se obtiene con modelo_final,
reestimado sobre la muestra completa para aprovechar
toda la información disponible en los coeficientes finales. El modelo
produce un predictor lineal (logit) de 0,969. Al exponenciarlo
se obtienen unos odds de 2,637: en este perfil, los
odds del evento son 2,64 veces los del no-evento. La
transformación logística \(p=odds/(1+odds)\) produce una probabilidad
estimada de rotación de 72,5%.
Como 72,5% es superior al umbral operativo de 20%, la regla de decisión clasifica al empleado como Intervenir preventivamente. Su puntuación se sitúa aproximadamente en el percentil 99,3% de las probabilidades generadas por el modelo final en la muestra. Por ello es un caso de riesgo extremo y la decisión apenas depende del umbral elegido.
La validación de calibración anterior obliga a matizar el significado del 72,5%: debe interpretarse principalmente como riesgo muy alto en relación con la plantilla, y no como una garantía de que exactamente esa proporción de empleados con el mismo perfil vaya a rotar.
El segundo perfil tiene 35 años, realiza horas extra, está casado, viaja raramente, percibe 5.000 unidades mensuales y lleva 3 años en el cargo.
empleado_frontera <- tibble(
Horas_Extra = factor("Si", levels = levels(datos_modelo$Horas_Extra)),
Estado_Civil = factor("Casado", levels = levels(datos_modelo$Estado_Civil)),
Viaje_de_Negocios = factor("Raramente", levels = levels(datos_modelo$Viaje_de_Negocios)),
Edad = 35,
Ingreso_1000 = 5,
Antiguedad_Cargo = 3
)
predict(modelo_final, empleado_frontera, type = "response")
| Edad | Horas_Extra | Estado_Civil | Viaje_de_Negocios | Ingreso_Mensual | Antiguedad_Cargo | Logit | Probabilidad_Rotacion | Decision_corte_020 | Decision_corte_030 |
|---|---|---|---|---|---|---|---|---|---|
| 35 | Si | Casado | Raramente | 5000 | 3 | -0.9673 | 0.2754 | Intervenir | No intervenir |
Su probabilidad estimada es 27,5%. Con un umbral de 0,20 se prioriza para intervención, mientras que con un umbral de 0,30 dejaría de priorizarse. Este perfil muestra con mayor claridad la función del cutoff: el modelo produce una puntuación continua y la decisión final depende de una política operativa, no de una discontinuidad natural en los datos.
Los resultados son coherentes entre los tres niveles del análisis. Descriptivamente, la rotación afecta a 16,1% de la muestra y aparece con mayor frecuencia entre quienes realizan horas extra, los solteros y quienes viajan con mayor frecuencia; los empleados que rotan también presentan valores centrales inferiores de edad, ingreso y antigüedad. Los modelos bivariados confirman la dirección esperada en los siete contrastes principales. Al introducir simultáneamente las covariables, las asociaciones de interés conservan en general su dirección, aunque edad, ingreso y antigüedad se atenúan, lo que indica que parte de su información es compartida con otras características laborales y demográficas.
Entre las variables modificables por la organización, horas extra destaca por la magnitud y estabilidad de su asociación ajustada (OR 4,27, IC95% [3,13, 5,82]). Los viajes frecuentes también mantienen una asociación elevada frente a no viajar (OR 3,76, IC95% [1,88, 7,51]), mientras que un mayor ingreso se asocia con menores odds de rotación. La menor rotación asociada a una mayor antigüedad en el cargo sugiere, además, que los primeros años en un puesto son el periodo de mayor riesgo.
La traducción a probabilidades estandarizadas permite comunicar mejor estas magnitudes: manteniendo la distribución observada de las demás covariables, la probabilidad media predicha cambia de 10,6% con Horas extra = No a 30,1% con Horas extra = Sí. En viajes, pasa de 9,0% con No viaja a 23,5% con Frecuentemente. Estos contrastes apoyan priorizar la revisión de cargas sostenidas de horas extra, la necesidad y frecuencia de desplazamientos, la competitividad y equidad de la compensación y los mecanismos de integración y desarrollo durante los primeros años en el puesto, que concentran la mayor rotación.
El estado civil requiere una lectura más matizada, los solteros presentan mayores odds que los casados después del ajuste, mientras que el contraste entre divorciados y casados no es estadísticamente concluyente. Edad y estado civil pueden contribuir a la predicción, pero no constituyen palancas legítimas de intervención individual ni criterios para trato desfavorable. Una política de retención debería actuar sobre condiciones laborales modificables y utilizar cualquier puntuación de riesgo como apoyo a una revisión humana.
En evaluación fuera de muestra, el modelo alcanza un AUC de 0,751 (IC95% [0,686, 0,816]), lo que indica una discriminación útil pero imperfecta. El corte 0,50 resulta poco adecuado para el objetivo preventivo porque sacrifica demasiada sensibilidad y ofrece una exactitud similar a clasificar a todos como no rotación. El corte 0,20 aumenta de forma importante la detección de casos, a cambio de más falsos positivos; por ello su adopción se justifica únicamente bajo el supuesto de que las intervenciones preventivas tienen un coste bajo frente al coste de omitir empleados realmente en riesgo.
En síntesis, el modelo es útil como herramienta de priorización preventiva: combina señales individuales en una probabilidad estimada y ayuda a dirigir recursos hacia perfiles con mayor riesgo. Su uso responsable consiste en apoyar conversaciones y acciones sobre condiciones laborales modificables, manteniendo supervisión humana y evitando convertir asociaciones estadísticas en decisiones automáticas sobre las personas.