Actividad 3: Modelos Estadísticos para la toma de decisiones - Rotación de cargo

Descripción

La rotación de personal representa uno de los desafíos más críticos para la sostenibilidad y competitividad de una organización, no solo por los costos directos asociados al reclutamiento y la capacitación de nuevos talentos, sino también por la pérdida de conocimiento y la afectación en el clima laboral. Actualmente, la empresa enfrenta la necesidad de identificar cuáles son los factores determinantes que impulsan a los empleados a renunciar. A través del análisis de variables clave como la compensación económica, la carga laboral expresada en horas extra, la etapa de vida del trabajador y su nivel de satisfacción, este estudio busca construir un modelo predictivo que permita a la alta gerencia anticipar las idas de talento y diseñar estrategias de retención basadas en datos.

Objetivos

Objetivo general

Desarrollar un modelo de regresión logística que permita estimar la probabilidad de que un empleado cambie de cargo en el próximo período y determinar cuales factores de mayor relevancia al momento de realizar la estimación.

Objetivos específicos

  • Realizar un análisis univariado.
  • Realizar un análisis bivariado.
  • Estimar un modelo de regresión logístico con variable respuesta rotación.
  • Evaluar el modelo.
  • Predecir la probabilidad de que un individuo rote.
  • Definir un corte para decidir si se debe intervenir a un empleado o no.

Base de datos y variables

TABLA 1. DESCRIPCION DE LAS VARIABLES DE LA BASE DE DATOS
Nombre Descripcion Clasificacion.por.naturaleza
Rotacion Indica si cambio de cargo en el siguiente periodo Cualitativa nominal
Edad Edad Cuantitativa continua
Viaje de negocios Frecuencia de viajes de negocios Cualitativa nominal
Departamento Departamento Cualitativa nominal
Distancia_Casa Distancia entre el hogar y la oficina Cuantitativa continua
Educacion Nivel educativo Cualitativa ordinal
Campo_Educacion Area de formacion Cualitativa nominal
Satisfaccion_Ambiental Nivel de satisfaccion con el ambiente laboral Cualitativa ordinal
Genero Genero Cualitativa nominal
Cargo Cargo o puesto de trabajo Cualitativa nominal
Satisfaccion_Laboral Nivel de satisfaccion laboral Cualitativa ordinal
Estado_Civil Estado civil Cualitativa nominal
Ingreso_Mensual Ingreso mensual Cuantitativa continua
Trabajos_Anteriores Numero de empleos previos Cuantitativa discreta
Horas_Extra Indica si realiza horas extra Cualitativa nominal
Porcentaje_aumento_salarial Porcentaje de aumento salarial Cuantitativa continua
Rendimiento_Laboral Nivel de rendimiento laboral Cualitativa ordinal
Años_Experiencia Años de experiencia laboral Cuantitativa continua
Capacitaciones Numero de capacitaciones realizadas Cuantitativa discreta
Equilibrio_Trabajo_Vida Nivel de equilibrio entre trabajo y vida personal Cualitativa ordinal
Antigüedad Años en la compañia Cuantitativa continua
Antigüedad_Cargo Años en el cargo actual Cuantitativa continua
Años_ultima_promocion Años desde la ultima promocion Cuantitativa continua
Años_acargo_con_mismo_jefe Años con el mismo jefe Cuantitativa continua

Descripción de la base de datos

La base de datos contiene datos históricos de 1470 trabajadores y 24 columnas con información sobre sus empleos. Esta información se muestra en la Tabla 1.

Variable respuesta

La variable respuesta para este problema de negocio es rotación, la cual indica si un empleado se mueve hacia otro cargo y se codifica como 1 si hay rotación y como 0 si no la hay.

Variables explicativas seleccionadas

Variables Cuantitativas

Ingreso Mensual

Hipótesis: Entre menor es el ingreso mensual, aumenta la probabilidad de rotación, ya que si el salario no cubre las expectativas del empleado o está por debajo del mercado, este buscará más opciones.

Edad

Hipótesis: Se plantea que, a menor edad, existe una mayor probabilidad de rotación. Esto se debe a que los perfiles más jóvenes están en una etapa de exploración profesional y poseen una mayor flexibilidad para el cambio.

Años de Experiencia

Hipótesis: A menor nivel de experiencia laboral, mayor es la probabilidad de rotación del personal. Los empleados con mayor trayectoria tienden a ocupar cargos de mayor responsabilidad y estabilidad, mientras que los perfiles junior atraviesan procesos de aprendizaje y mantienen una búsqueda activa de crecimiento profesional, lo que puede incrementar su propensión a cambiar de empleo.

Variables Categóricas

Horas Extra

Hipótesis: Las personas que trabajan horas extra tienen una mayor probabilidad de rotar que las que no. El exceso de jornada laboral genera agotamiento físico y mental, lo que hace que el empleado pierda el interés en su puesto y prefiera buscar un lugar con un ritmo más tranquilo.

Estado_Civil

Hipótesis: Las personas solteras tienen una mayor probabilidad de renunciar o cambiar de empleo. Esto sucede porque, al no tener tantas responsabilidades familiares o compromisos económicos, tienen más libertad para tomar riesgos y buscar nuevas experiencias laborales.

Satisfacción Laboral

Hipótesis: A menor nivel en la escala de satisfacción laboral (niveles 1 y 2: “Muy insatisfecho” e “Insatisfecho”), mayor es la probabilidad de rotación del personal. Un bajo nivel de satisfacción o un mal clima laboral incrementa la probabilidad de que los empleados busquen oportunidades laborales que les parezca mejor.

Análisis Exploratorio de datos

Se realizó un análisis explotatorio de datos para revisar el estado de la base de datos. En este análisis se realizó una verificación de datos faltantes, revisión de registros duplicados, la codificación de la variable respuesta y se arreglaron errores tipográficos en las variables categóricas.

Análisis univariado

Análisis de la Variable Respuesta: Rotación

El punto de partida del análisis consiste en caracterizar la variable dependiente (Rotación). De acuerdo con el procesamiento de los datos, en la Figura 1 se identifica la siguiente distribución:

  • Empleados que NO rotaron: 1,233 registros.
  • Empleados que SI rotaron: 237 registros.

La organización presenta una tasa de rotación del 16.12%. Desde una perspectiva analítica, nos enfrentamos a un conjunto de datos desbalanceado, donde la clase mayoritaria (empleados que permanecen) supera significativamente a la clase minoritaria (empleados que se retiran).

Distribución por Edad

La Figura 2 muestra la distribución de edades de los empleados agrupadas en intervalos de 5 años. Se observa que la edad de los empleados se concentran en rangos entre los 30 y 40 años, donde se alcanzan las mayores frecuencias (306, 332 y 243 empleados, respectivamente). Existe también un grupo importante de empleados jóvenes (menores de 25 años), quienes, de acuerdo con la hipótesis inicial, representan un segmento con mayor riesgo de rotación por búsqueda de crecimiento. Por otro lado, se observa una disminución progresiva en la frecuencia a partir de los 45 años, con una representación mínima en el rango de 55 a 60 años.

Distribución del Ingreso Mensual

Como se observa en la Figura 3, la distribución del ingreso mensual muestra una alta concentración en los rangos salariales bajos y medios, especialmente entre $2.000 y $5.000 USD, donde se registran las mayores frecuencias. El intervalo de $2.000–$3.000 USD presenta el valor más alto (286 empleados).

El histograma presenta una “cola larga” hacia la derecha. Esto indica que, a medida que el salario aumenta, la frecuencia de empleados disminuye.

Este sesgo a la derecha es un gran indicador, ya que si la rotación se concentra en los rangos de 2K a 4K USD, puede tratarse de un problema de competitividad salarial. Por el contrario, si la rotación es baja en estos niveles pero alta en niveles medios, el problema podría ser de crecimiento profesional.

Trayectoria Profesional

La Figura 4 muestra los años totales de experiencia laboral de los empleados. Se observa una gran cantidad de personas en el rango de 5 a 10 años de experiencia, con un máximo de 485 empleados en el intervalo cercano a los 10 años. Esto nos indica que la empresa cuenta con empleados con gran trayectoria profesioanl.

Por otro lado, existe un grupo de 123 empleados con menos de 5 años de experiencia (perfiles junior), mientras que el número de empleados con más de 20 años de trayectoria disminuye notablemente.

Carga Laboral (Horas Extra)

La Figura 5 presenta la distribución de los empleados en relación con las horas extra. Esta variable es un indicador crítico de la ‘presión laboral’ y el equilibrio vida-trabajo: Se observa que la mayoría (más de 1,000 empleados) no realiza horas extra. Sin embargo, existe un grupo considerable de aproximadamente 400 empleados (cerca del 28% de la muestra) que sí tienen una carga laboral extendida.

Aunque la mayoría mantiene una jornada normal, el volumen de empleados con horas extra es lo suficientemente alto como para ser un factor determinante en la rotación, lo cual analizaremos más adelante.

Estado Civil

La Figura 6 presenta la distribución del estado civil de los empleados, lo que permite aproximarse a las etapas de vida y a los posibles niveles de compromiso dentro de la organización.

Se observa que la mayoría de los empleados se encuentran casados (cerca de 700 personas), seguidos por los solteros (aproximadamente 470). Por su parte, el grupo de empleados divorciados representa la menor proporción dentro de la muestra.

En relación con la hipótesis planteada sobre el estado civil, se propone que los empleados solteros tienden a mostrar una mayor disposición al cambio. Esto podría explicarse por una menor carga de responsabilidades familiares y una mayor apertura a asumir riesgos, en comparación con otros grupos.

Nivel de Satisfacción Laboral

La Figura 7 presenta la percepción de los empleados sobre su entorno laboral y su rol dentro de la organización, medida a través de una escala de Likert de 1 a 4.

Los resultados muestran que la mayoría tiene percepciones positivas, concentradas en los niveles 3 (satisfecho) y 4 (muy satisfecho), que en conjunto agrupan aproximadamente a 900 colaboradores. Este comportamiento indica que, la organización mantiene un entorno laboral favorable.

Por otro lado, también se identifica un grupo de alrededor de 570 empleados ubicados en los niveles 1 (muy insatisfecho) y 2 (insatisfecho). Este segmento, representa una proporción considerable que podría estar asociada a mayores niveles de inconformidad y, potencialmente, a una mayor rotación y busqueda de nuevas opciones de empleo.

Análisis Bivariado

En esta sección se analiza la relación individual entre cada variable y la variable rotación. Como se observa en la Tabla 2, se emplean dos enfoques: pruebas de inferencia estadística clásica (prueba t para comparación de medias y chi-cuadrado para asociaciones entre variables categóricas) y, por otro, modelos de regresión logística simple.

Variables cuantitativas (ingreso, edad y experiencia)

Ingreso mesual

Presenta un coeficiente \(\beta = -0.0001\) y una significancia tanto en la prueba de promedios (\(p = 4.43 \times 10^{-13}\)) como en el modelo logístico. Como se observa en la Figura 8 (Boxplot de Distribución de Ingresos), la mediana salarial del grupo que rota se encuentra cerca de los 3,500 USD, por debajo de la mediana del grupo que permanece, que ronda los 5,000 USD. La Curva Logit indica que a medida que el ingreso supera los 15,000 USD, la probabilidad de rotación baja a niveles cercanos al 5%.

El signo negativo confirma la hipótesis planteada: a menores ingresos, mayor probabilidad de rotación, lo que indica que el salario es un factor relevante en la decisión de permanencia de un empleado.

Edad

La inferencia muestra que la edad promedio de los empleados que rotan es significativamente menor (\(p = 1.37 \times 10^{-8}\)).

En la Figura 10 se observa que los empleados más jóvenes presentan mayores probabilidades de rotación, alrededor del 30% en edades cercanas a los 20 años, mientras que en empleados de mayor edad (superiores a 50 años) esta probabilidad se encuentra debajo del 10%.

Este resultado es coherente con la hipótesis planteada inicialmente, ya que los perfiles jóvenes suelen encontrarse en etapas de exploración laboral y presentan mayor disposición al cambio.

Experiencia Laboral

Es la variable cuantitativa con mayor impacto con un Valor \(Z \approx -6.38\) (basado en su P-valor de \(1.69 \times 10^{-10}\)).

Este resultado sustenta la hipótesis de que, a mayor trayectoria laboral, menor es la probabilidad de abandono. En este sentido, la rotación tiende a concentrarse en empleados con menor experiencia.

Variables categóricas

Horas Extra

Es la variable con mayor riesgo de rotación identificado. Su p-valor de inferencia (\(p = 8.16 \times 10^{-21}\)) indica una relación directa. La Figura 11 muestra que los empleados que trabajan tiempo adicional, la rotación es aproximadamente el 30%, frente a un 10% en quienes no lo hacen, esto confirma la hipótesis: el exceso de carga laboral incrementa la probabilidad de rotación, lo que indica que el ‘cansancio’ o ‘desgaste’ asociado a jornadas extendidas es un factor crítico de rotación.

Estado Civil

Como se observa en la Figura 12, los empleados solteros presentan una mayor proporción de rotación (25.5%), en comparación con los casados (12.5%) y divorciados (10.1%).

Como se planteó en la hipotesis incial, el estado civil puede estar asociado a distintos niveles de estabilidad personal. En este caso, los solteros muestran una mayor propensión al cambio.

Satisfacción Laboral

Como se observa en la Figura 13, a menores niveles de satisfacción, mayor es la proporción de empleados que abandonan la organización. En el nivel más bajo, la rotación alcanza cerca del 25%, mientras que en el nivel más alto (muy satisfecho) se reduce a aproximadamente el 10%. La inferencia (\(p = 5.56 \times 10^{-4}\)) confirma que incrementos en la satisfacción se asocian con una menor probabilidad de rotación.

TABLA 2. RESUMEN ANALISIS BIVARIADO
Comparativa de Inferencia y Modelado Logistico
Variable Estimacion_Logit P_Valor_Logit P_Valor_Inferencia
Ingreso Mensual −0.0001 4.12 × 10−9 4.43 × 10−13
Edad −0.0523 1.90 × 10−9 1.37 × 10−8
Experiencia −0.0777 1.69 × 10−10 1.16 × 10−11
Horas Extra 1.3274 1.35 × 10−19 8.16 × 10−21
Estado Civil −0.2395 2.71 × 10−1 9.46 × 10−11
Satisfaccion Laboral −0.2510 8.16 × 10−5 5.56 × 10−4

Estimación del modelo

En esta fase se presenta el análisis multivariado, el cual permite entender el impacto real de cada variable sobre la rotación cuando todas actúan al mismo tiempo. A diferencia del análisis bivariado, este modelo nos permite identificar qué variables son determinantes y cuáles pierden fuerza al ser controladas por otras.

Pruebas de significancia individual

Al observar los resultados de la Tabla 3, podemos identificar lo siguiente:

  • Alta significancia (\(p < 0.01\)): Las Horas Extra (\(Z = 9.60\)), el estado civil Soltero (\(Z = 5.03\)) y la Satisfacción Laboral (\(Z = -4.72\)) presentan una significancia estadística alta, lo que indica que son variables clave en la explicación de la rotación de empleados.

  • Significancia moderada (\(p < 0.05\)): El Ingreso Mensual (\(Z = -2.08\)) mantiene una relación significativa. Aunque con un efecto menor en comparación con las variables anteriores.

  • Baja o no significativa: Un resultado importante del modelo es la pérdida de significancia estadística de la edad (\(p = 0.093\)) y los años de experiencia (\(p = 0.079\)), variables que en el análisis bivariado habían mostrado una relación fuerte con la rotación. Este cambio nos indica que dichas variables, estan influenciadas por otras variables incluidas en el modelo.

Interpretación de los Coeficientes (Beta) y Odds Ratio

Con el fin de facilitar la interpretación práctica del modelo, se analizan los coeficientes estimados tanto en términos de su signo (dirección del efecto) como de su magnitud, a través del odds ratio.

1. Horas Extra (Coeficiente: 1.5208): Es el factor con mayor peso positivo en el modelo. Al convertir este coeficiente a Odds Ratio (\(exp(1.52)\)), encontramos que trabajar horas extra incrementa en más de 4.5 veces las posibilidades de rotación en comparación con quienes tienen una jornada normal. Este resultado nos indica que la sobre carga laboral es la principal causa de renuncias.

2. Estado Civil Soltero (Coeficiente: 0.8587): Los empleados solteros tienen mayor probabilidad de rotar (aprox. 2.3 veces más) en comparación con los demás. Esto valida la hipótesis de que la falta de cargas familiares facilita la rotación en un empleado.

3. Satisfacción Laboral (Coeficiente: -0.3270): El signo negativo indica que es un gran factor protector. Por cada nivel que aumenta la satisfacción, el riesgo de rotación disminuye.

4. Ingreso Mensual (Coeficiente: -0.0001): Su signo negativo indica que a mayor salario, menor probabilidad de rotación. Lo que valida la hipótesis inicial.

TABLA 3. RESUMEN DE FACTORES DE ROTACION (MODELO GLOBAL)
Punto 4: Estimacion de Regresion Logistica Multivariada
Variable Analizada Coeficiente (Beta) Error Estandar Valor Z P-Valor
Constante (Intercepto) −0.2226 0.4055 −0.5489 5.83 × 10−1
Ingreso Mensual −0.0001 0.0000 −2.0891 3.67 × 10−2
Edad −0.0194 0.0116 −1.6781 9.33 × 10−2
Años de Experiencia −0.0359 0.0205 −1.7562 7.91 × 10−2
Horas Extra (Si) 1.5208 0.1583 9.6055 7.58 × 10−22
Estado_CivilDivorciado −0.3241 0.2293 −1.4137 1.57 × 10−1
Estado_CivilSoltero 0.8587 0.1706 5.0340 4.80 × 10−7
Satisfaccion Laboral −0.3270 0.0692 −4.7262 2.29 × 10−6

Evaluación del modelo

En esta sección se evalúa la efectividad del modelo de regresión logística para predecir la rotación de personal, utilizando las métricas de desempeño obtenidas tras la validación de los datos.

Curva AUC y ROC

Como se observa en la Figura 14, el modelo presenta un AUC (Área Bajo la Curva) de 0.773, lo que indica un buen nivel de discriminación entre empleados que rotan y aquellos que permanecen.

Un AUC de este nivel indica que el modelo tiene una capacidad predictiva adecuada, superior al azar, y que logra capturar patrones relevantes en los datos. El valor indica que, existe una probabilidad del 77.3% de que el modelo asigne correctamente una mayor probabilidad de rotación a un empleado que efectivamente se retirará, en comparación con uno que permanecerá.

Métricas de Clasificación

Al analizar la Tabla 4 de indicadores bajo el punto de corte estándar de 0.5, se observan los siguientes resultados:

1. Accuracy 85.85%: El modelo clasifica correctamente a la gran mayoría de los empleados. Sin embargo, este valor está influenciado por el alto número de personas que NO rotan (clase mayoritaria).

2.Precision 73.02%: De cada 10 predicciones de rotación que genera el modelo, aproximadamente 7 son aciertos reales.

3. Recall 19.41%: Es la métrica más baja. Indica que el modelo solo logra detectar al 19.4% de las personas que realmente se van. El modelo deja pasar muchos casos de riesgo sin alertar (Falsos Negativos).

4. F1-Score 0.3067: Este valor indica que, aunque el modelo es relativamente preciso, su capacidad para detectar casos positivos es limitada.

TABLA 4. MÉTRICAS DE DESEMPEÑO DEL MODELO
Evaluación de la capacidad predictiva
Indicador Resultado
Exactitud (Accuracy) 85.85%
Precisión (Precision) 73.02%
Exhaustividad (Recall) 19.41%
F1-Score 0.3067
AUC 0.7729

Matriz de Confusión

A partir de la matriz de confusión (Figura 15), se observa que el modelo clasifica correctamente la mayoría de los casos de no rotación (1216 verdaderos negativos), pero presenta dificultades para identificar los casos de rotación.

En particular, se identifican 191 falsos negativos, es decir, empleados que efectivamente rotaron pero que el modelo clasificó como permanentes. Por otro lado, los falsos positivos son bajos (17 casos).

Predicciones

Individuo hipotético

Con el fin de ilustrar la utilidad del modelo, se definió un individuo hipotético con características asociadas a mayor riesgo de rotación: ingreso mensual de $2800 USD, edad de 27 años, 4 años de experiencia laboral, realización de horas extra, estado civil soltero y nivel 1 de satisfacción laboral.

Al aplicar el modelo de regresión logística, la probabilidad estimada de rotación para este empleado fue de 72.67%. Este resultado indica que, bajo las condiciones planteadas, el empleado presenta una probabilidad considerable de rotar, lo cual justificaría una revisión preventiva por parte del área de talento humano.

Definición de punto de corte

Una vez estimadas las probabilidades de rotación, es necesario definir un punto de corte que permita clasificar a los empleados en dos grupos: aquellos con riesgo de rotación y aquellos con probabilidad de permanencia.

En una primera aproximación, se empleó un punto de corte de 0.5, de modo que si la probabilidad estimada es mayor o igual a 0.5, el empleado se clasifica como potencial rotación; en caso contrario, se clasifica como permanencia.

Sin embargo, dado que la base de datos presenta desbalance de clases, este valor no necesariamente es el más conveniente desde el punto de vista gerencial. Por esta razón, se realizó un análisis de sensibilidad para comparar distintos puntos de corte y evaluar cuál ofrece un mejor equilibrio entre detección de empleados en riesgo y errores de clasificación.

Sensibilidad del punto de corte

Con el fin de evaluar la estabilidad de la clasificación, se compararon distintos puntos de corte: 0.3, 0.4, 0.5 y 0.6. Los resultados muestran que, a medida que el punto de corte aumenta, la precisión y la especificidad del modelo también aumentan; sin embargo, la sensibilidad (recall) disminuye de forma importante. Esto indica que, aunque el modelo se vuelve más estricto al identificar empleados en riesgo, también deja de detectar una mayor proporción de casos reales de rotación.

TABLA 5. RESULTADOS ANALISIS DE SENSIBILIDAD
Comparación de métricas para distintos puntos de corte
Punto de corte Exactitud Precision Sensibilidad Especificidad F1-Score
0.3 0.8259 0.4578 0.4346 0.9011 0.4459
0.4 0.8490 0.5630 0.2827 0.9578 0.3764
0.5 0.8585 0.7302 0.1941 0.9862 0.3067
0.6 0.8483 0.7500 0.0886 0.9943 0.1585

En la Tabla 5 se nota que con un punto de corte de 0.3 se obtuvo el mayor valor de recall (43.46%) y el mejor F1-score (0.4459), lo que sugiere un mejor equilibrio entre detección de empleados en riesgo y consistencia de la clasificación. Por el contrario, aunque el punto de corte de 0.5 presenta la mayor exactitud global (85.85%) y una precisión más alta (73.02%), su sensibilidad cae a 19.41%, lo que implica que el modelo identifica correctamente a una proporción muy reducida de los empleados que realmente rotan.

Dado que el propósito del análisis es apoyar decisiones preventivas en gestión humana, resulta más conveniente priorizar un punto de corte que permita detectar un mayor número de empleados en riesgo, aun si ello implica aceptar algunos falsos positivos. En este sentido, el punto de corte de 0.3 se considera el más adecuado para fines de intervención.

Criterio de intervención

Todo empleado con una probabilidad estimada de rotación igual o superior a 0.3 será clasificado como caso de riesgo y podrá ser priorizado para seguimiento por parte del área de talento humano.

Este criterio se justifica porque, en contextos organizacionales, suele ser más costoso no identificar a tiempo a un empleado con alta probabilidad de rotación que revisar preventivamente algunos casos adicionales que finalmente no roten. Por ello, se considera razonable privilegiar la sensibilidad del modelo sobre una clasificación excesivamente estricta.

Estrategias para disminuir la rotación

De acuerdo con los resultados obtenidos, una estrategia para disminuir la rotación debería concentrarse en los factores que mostraron mayor asociación con el evento. En primer lugar, se recomienda revisar la distribución de horas extra y la carga laboral, dado que esta variable fue la de mayor efecto positivo en el modelo. En segundo lugar, conviene fortalecer acciones orientadas a mejorar la satisfacción laboral, mediante seguimiento al clima organizacional, espacios de retroalimentación y estrategias de bienestar. Finalmente, sería pertinente evaluar la competitividad salarial en ciertos perfiles o cargos, especialmente en aquellos grupos donde la probabilidad de rotación es más alta. Estas acciones permitirían intervenir de manera más focalizada sobre los empleados con mayor riesgo estimado de rotación.

Conclusiones

  • La rotación del personal no depende de un único factor, sino de la interacción de múltiples condiciones laborales y personales, lo que refuerza la necesidad de un enfoque integral en la gestión del talento humano.

  • Los resultados evidencian que las condiciones actuales del empleo tienen mayor relevancia en la rotación que las características demográficas, lo que sugiere que las decisiones de permanencia están más influenciadas por la experiencia dentro de la organización que por atributos individuales.

  • El modelo de regresión logística demostró ser una herramienta útil para estimar la probabilidad de rotación y apoyar la toma de decisiones, permitiendo priorizar casos con mayor riesgo de manera objetiva.

  • La evaluación del modelo indica que, aunque su capacidad predictiva es adecuada, existe una limitación en la detección de todos los casos de rotación, lo cual debe ser considerado al momento de interpretar sus resultados.

  • La selección del punto de corte influye directamente en la utilidad práctica del modelo, por lo que su elección debe responder al objetivo organizacional y no únicamente a criterios de exactitud estadística.

  • Desde una perspectiva de gestión, resulta más conveniente adoptar un enfoque preventivo que permita identificar tempranamente a empleados en riesgo, aun si esto implica evaluar casos que finalmente no presenten rotación.

  • El uso de modelos predictivos en recursos humanos permite pasar de una gestión reactiva a una gestión anticipativa, facilitando la implementación de estrategias más focalizadas y eficientes.

Anexos

Anexo 1

## ----setup, include=FALSE----------------------------------------------------------------------------------------------
options(repos = c(CRAN = "https://cloud.r-project.org"))


knitr::opts_chunk$set(echo = TRUE, 
                      warning = FALSE, 
                      message = FALSE, 
                      comment = "|>", 
                      fig.height = 6) 

library(gt)
library(dplyr)
library(readr)
library(tidyr)
library(readxl)
library(knitr)
library(kableExtra)
library(ggplot2)
library(factoextra)
library(paqueteMODELOS)



source ("04-Modelo.R")



## ----tabla_variables, echo = FALSE-------------------------------------------------------------------------------------

tabla_variables <- read.csv(
  "C:/Users/Alejandra/Desktop/Modelos/diccionario.csv",
  fileEncoding = "UTF-8",
  stringsAsFactors = FALSE
)

tabla_variables %>%
  gt() %>%
  tab_header(
    title = "TABLA 1. DESCRIPCION DE LAS VARIABLES DE LA BASE DE DATOS"
  )%>%
  tab_options(
    table.font.names = "sans",
    table.width = pct(100),
    heading.background.color = "#2C3E50",
    column_labels.background.color = "#F4F6F6",
    column_labels.font.weight = "bold"
  )



## ----include=FALSE-----------------------------------------------------------------------------------------------------

source("01-Importar.R")



## ----echo = FALSE, include = FALSE-------------------------------------------------------------------------------------


source ("02-Analisis.R")



## ----echo=FALSE--------------------------------------------------------------------------------------------------------
g1



## ----echo=FALSE--------------------------------------------------------------------------------------------------------
g2


## ----echo=FALSE--------------------------------------------------------------------------------------------------------
g3


## ----echo=FALSE--------------------------------------------------------------------------------------------------------
g4


## ----echo=FALSE--------------------------------------------------------------------------------------------------------
g5


## ----echo=FALSE--------------------------------------------------------------------------------------------------------
g6


## ----echo=FALSE--------------------------------------------------------------------------------------------------------
g7


## ----echo = FALSE, include = FALSE-------------------------------------------------------------------------------------

source ("03-AnalisisBivariado.R")



## ----echo=FALSE--------------------------------------------------------------------------------------------------------
grid.arrange(g_box, g_curva, ncol = 2, widths = c(1.1, 1))


## ----echo=FALSE--------------------------------------------------------------------------------------------------------
g9


## ----echo=FALSE--------------------------------------------------------------------------------------------------------
g10


## ----echo=FALSE--------------------------------------------------------------------------------------------------------
g11_nuevo


## ----echo=FALSE--------------------------------------------------------------------------------------------------------
g12


## ----echo=FALSE--------------------------------------------------------------------------------------------------------
tabla_final_3


## ----echo=FALSE--------------------------------------------------------------------------------------------------------
tabla_modelado


## ----echo=FALSE--------------------------------------------------------------------------------------------------------
plot(roc_obj, col = "#2E86C1", lwd = 3, 
     main = paste("Figura 14. Evaluación del Modelo - AUC:", round(auc_val, 3)))
abline(a = 0, b = 1, lty = 2, col = "red")


## ----echo=FALSE--------------------------------------------------------------------------------------------------------
tabla_metricas


## ----echo=FALSE--------------------------------------------------------------------------------------------------------
g_matriz


## ----echo = FALSE, include = FALSE-------------------------------------------------------------------------------------

# Individuo hipotético
individuo_hipotetico <- data.frame(
  Ingreso_Mensual = 2800,
  Edad = 27,
  Años_Experiencia = 4,
  Horas_Extra = factor("Si", levels = levels(rotacion$Horas_Extra)),
  Estado_Civil = factor("Soltero", levels = levels(rotacion$Estado_Civil)),
  Satisfaccion_Laboral = 1
)

prob_hipotetico <- predict(modelo_global, newdata = individuo_hipotetico, type = "response")
prob_hipotetico



## ----echo = FALSE, tab.cap= "Tabla 5. Muestra los resultados del análisis de sensibilidad del punto de corte"----------

# Función para calcular métricas según punto de corte
calcular_metricas_corte <- function(corte, prob, y_real) {
  pred <- ifelse(prob >= corte, 1, 0)
  
  TP <- sum(pred == 1 & y_real == 1)
  TN <- sum(pred == 0 & y_real == 0)
  FP <- sum(pred == 1 & y_real == 0)
  FN <- sum(pred == 0 & y_real == 1)
  
  accuracy <- (TP + TN) / length(y_real)
  precision <- ifelse((TP + FP) == 0, NA, TP / (TP + FP))
  recall <- ifelse((TP + FN) == 0, NA, TP / (TP + FN))
  especificidad <- ifelse((TN + FP) == 0, NA, TN / (TN + FP))
  f1 <- ifelse(is.na(precision) | is.na(recall) | (precision + recall) == 0,
               NA, 2 * precision * recall / (precision + recall))
  
  data.frame(
    Punto_Corte = corte,
    Accuracy = accuracy,
    Precision = precision,
    Recall = recall,
    Especificidad = especificidad,
    F1 = f1
  )
}

# Comparar varios puntos de corte
cortes <- c(0.30, 0.40, 0.50, 0.60)
tabla_cortes <- do.call(rbind, lapply(cortes, calcular_metricas_corte,
                                      prob = probabilidades,
                                      y_real = rotacion$y))

tabla_sensibilidad <- tabla_cortes %>%
  mutate(
    Accuracy = round(Accuracy, 4),
    Precision = round(Precision, 4),
    Recall = round(Recall, 4),
    Especificidad = round(Especificidad, 4),
    F1 = round(F1, 4)
  ) %>%
  gt() %>%
  tab_header(
    title = "TABLA 5. RESULTADOS ANALISIS DE SENSIBILIDAD",
    subtitle = "Comparación de métricas para distintos puntos de corte"
  ) %>%
  cols_label(
    Punto_Corte = "Punto de corte",
    Accuracy = "Exactitud",
    Precision = "Precision",
    Recall = "Sensibilidad",
    Especificidad = "Especificidad",
    F1 = "F1-Score"
  ) %>%
  tab_options(
    table.font.names = "sans",
    table.width = pct(100),
    heading.background.color = "#2C3E50",
    column_labels.background.color = "#F4F6F6",
    column_labels.font.weight = "bold"
  )

tabla_sensibilidad



## ----echo = FALSE, results = 'asis'------------------------------------------------------------------------------------

# Leer todo el archivo .R
#codigo <- readLines("Anexo_codigo.R")

# Mostrarlo como texto en el documento
#cat(paste(c("```r", codigo, "```"), collapse = "\n"))

# Evitar que R imprima el resultado del chunk
#invisible(NULL)