El presente trabajo se enmarca en el ámbito de la gestión de recursos humanos, centrado específicamente en el fenómeno de la rotación de empleados dentro de una organización. La rotación laboral, entendida como el cambio de empleados entre distintos cargos o su salida de la empresa, representa una de las principales preocupaciones para la gestión de recursos humanos debido a su impacto en la estabilidad operativa, los costos asociados con la selección y capacitación de nuevos empleados, y la preservación del conocimiento organizacional. A través del análisis de datos históricos sobre el empleo de sus trabajadores, incluyendo variables como antigüedad en el cargo actual, nivel de satisfacción laboral, salario actual, edad, entre otros factores relevantes, este estudio busca comprender y prever los factores que influyen en la rotación de empleados.
La gerencia de la empresa busca, mediante el desarrollo de un modelo de regresión logística, estimar la probabilidad de que un empleado cambie de cargo en el próximo período y determinar cuáles factores inciden en mayor medida en estos cambios. Con esta información, la empresa podrá tomar medidas proactivas para retener a su talento clave, identificar áreas de mejora en la gestión de recursos humanos y fomentar un ambiente laboral más estable y satisfactorio para sus empleados. La predicción de la probabilidad de rotación de empleados no solo ayudará a la empresa a tomar decisiones estratégicas informadas, sino también a mantener un equipo de trabajo comprometido y satisfecho en sus roles actuales.
Identificar los factores clave que influyen en la rotación de empleados: A través de un análisis detallado de las variables proporcionadas, se buscará identificar cuáles son los factores que tienen una mayor influencia en la decisión de un empleado de cambiar de cargo o dejar la empresa. Este objetivo implica la selección cuidadosa de variables basada en la literatura existente y la justificación de su relevancia para el estudio.
Desarrollar un modelo predictivo de regresión logística: El segundo objetivo consiste en desarrollar y validar un modelo de regresión logística que pueda predecir la probabilidad de rotación de los empleados. Esto incluye la selección de variables, la validación del modelo y la interpretación de los coeficientes para entender cómo las diferentes variables impactan en la probabilidad de rotación.
Realizar análisis univariado y bivariado de las variables seleccionadas: Antes de proceder al modelado predictivo, se llevará a cabo un análisis descriptivo univariado y bivariado para comprender la distribución y las relaciones básicas entre las variables de interés y la rotación. Esto ayudará a validar las hipótesis iniciales y a ajustar el enfoque del modelado si es necesario.
Esta etapa es crucial para asegurar que los datos estén listos para su análisis, ayudando a obtener insights más precisos y a construir modelos predictivos más eficaces. La calidad y preparación de los datos pueden tener un impacto significativo en la fiabilidad y validez de los resultados obtenidos en fases posteriores.
Procederemos a cargar el set de datos denominado rotacion para realizar un análisis detallado. Este paso inicial es crucial para asegurar que dispongamos de toda la información necesaria y que esté correctamente preparada para las etapas siguientes de nuestro estudio.
data("rotacion")
La estructura del set de datos, obtenida mediante la ejecución del comando str(rotacion), se presenta a continuación:
En resumen, el set de datos contiene un total de 1,470 registros distribuidos en 24 columnas distribuidas de la siguiente manera:
Adicionalmente, revisando el set de datos cargado y considerando la naturaleza de las variables presentes, se identificó que ciertas variables numéricas representan en realidad categorías o clasificaciones en lugar de valores cuantitativos. Específicamente, las siguientes variables deberían considerarse para ser tratadas como categóricas son:
Este cambio de tipo de datos es crucial para un correcto tratamiento de los datos, permitiendo aplicar métodos estadísticos y de modelado más apropiados para cada tipo de variable.
# Creamos una copia del dataframe original para preservar los datos
rotacion_num_a_categoricas <- rotacion
# Convertimos las variables numéricas a categóricas (factores)
rotacion_num_a_categoricas$Educación <- factor(rotacion_num_a_categoricas$Educación,
levels = c(1, 2, 3, 4, 5),
labels = c("Primaria", "Secundaria", "Técnico/Tecnólogo", "Pregrado", "Posgrado"))
rotacion_num_a_categoricas$Satisfacción_Ambiental <- factor(rotacion_num_a_categoricas$Satisfacción_Ambiental,
levels = c(1, 2, 3, 4),
labels = c("Muy insatisfecho", "Insatisfecho", "Satisfecho", "Muy satisfecho"))
rotacion_num_a_categoricas$Satisfación_Laboral <- factor(rotacion_num_a_categoricas$Satisfación_Laboral,
levels = c(1, 2, 3, 4),
labels = c("Muy insatisfecho", "Insatisfecho", "Satisfecho", "Muy satisfecho"))
rotacion_num_a_categoricas$Rendimiento_Laboral <- factor(rotacion_num_a_categoricas$Rendimiento_Laboral,
levels = c(1, 2, 3, 4),
labels = c("Bajo", "Medio", "Alto", "Muy alto"))
rotacion_num_a_categoricas$Equilibrio_Trabajo_Vida <- factor(rotacion_num_a_categoricas$Equilibrio_Trabajo_Vida,
levels = c(1, 2, 3, 4),
labels = c("Muy bajo", "Bajo", "Medio", "Alto"))
# Calculamos el total de valores nulos por columna
total_nulos_por_columna <- colSums(is.na(rotacion_num_a_categoricas))
# Convertimos a un dataframe para flextable
total_nulos_df <- data.frame(
Variable = names(total_nulos_por_columna),
`Total de Nulos` = as.numeric(total_nulos_por_columna)
)
# Creamos el flextable
ft <- flextable(total_nulos_df)
# Aplicamos personalizaciones
ft <- ft |>
theme_vanilla() |>
set_header_labels(Variable = "Variable", `Total de Nulos` = "Total de Nulos") |>
bg(bg = "#F7F7F7", part = "body") |>
color(color = "white", part = "header") |>
bg(bg = "navy", part = "header") |>
bold(part = "header", bold = TRUE) |>
align(align = "center", part = "all") |>
autofit()
# Mostramos el flextable
ft
Variable | Total.de.Nulos |
|---|---|
Rotación | 0 |
Edad | 0 |
Viaje de Negocios | 0 |
Departamento | 0 |
Distancia_Casa | 0 |
Educación | 0 |
Campo_Educación | 0 |
Satisfacción_Ambiental | 0 |
Genero | 0 |
Cargo | 0 |
Satisfación_Laboral | 0 |
Estado_Civil | 0 |
Ingreso_Mensual | 0 |
Trabajos_Anteriores | 0 |
Horas_Extra | 0 |
Porcentaje_aumento_salarial | 0 |
Rendimiento_Laboral | 0 |
Años_Experiencia | 0 |
Capacitaciones | 0 |
Equilibrio_Trabajo_Vida | 0 |
Antigüedad | 0 |
Antigüedad_Cargo | 0 |
Años_ultima_promoción | 0 |
Años_acargo_con_mismo_jefe | 0 |
Observaciones:
Una vez revisado el set de datos, se confirma que no se encontraron valores nulos.
# Contamos registros duplicados en el dataframe
duplicados <- sum(duplicated(rotacion_num_a_categoricas))
# Asignamos el resultado a una variable
mensaje_duplicados <- if(duplicados == 0) {
"No se encontraron registros duplicados en el set de datos."
} else {
paste("Se encontraron", duplicados, "registros duplicados en el set de datos.")
}
Observaciones
No se encontraron registros duplicados en el set de datos..
Eliminar espacios en variables categóricas es crucial para mantener la calidad de los datos, evitando duplicados indebidos y asegurando análisis precisos. Esta limpieza es un paso esencial en el preprocesamiento de datos.
rotacion_num_a_categoricas <- rotacion_num_a_categoricas %>%
mutate_if(~is.factor(.) || is.character(.), trimws)
# Función para combinar los conteos de todas las variables categóricas y mostrar en un flextable
imprimir_agrupados_en_un_flextable <- function(df) {
# Inicializamos un dataframe para almacenar los resultados combinados
resultados_combinados <- data.frame(Variable = character(),
Categoria = character(),
Frecuencia = integer(),
stringsAsFactors = FALSE)
# Identificamos variables categóricas
cols_cat <- sapply(df, is.factor) | sapply(df, is.character)
# Iteraramos sobre cada variable categórica para agregar sus conteos al dataframe de resultados
for (col in names(cols_cat[cols_cat])) {
# Agrupamos por la variable categórica y contar frecuencias
datos_agrupados <- df %>%
group_by(.data[[col]]) %>%
summarise(Frecuencia = n(), .groups = 'drop') %>%
mutate(Variable = col) %>%
select(Variable, Categoria = .data[[col]], Frecuencia)
# Combinamos con el dataframe de resultados
resultados_combinados <- rbind(resultados_combinados, datos_agrupados)
}
# Creamos el flextable con estilos personalizados
ft <- flextable(resultados_combinados) %>%
theme_vanilla() %>%
set_header_labels(Variable = "Variable", Categoria = "Categoría", Frecuencia = "Frecuencia") %>%
bg(bg = "#F7F7F7", part = "body") %>%
color(color = "white", part = "header") %>%
bg(bg = "navy", part = "header") %>%
bold(part = "header", bold = TRUE) %>%
align(align = "center", part = "all") %>%
autofit()
# Mostramos el flextable
ft
}
imprimir_agrupados_en_un_flextable(rotacion_num_a_categoricas)
## Warning: Use of .data in tidyselect expressions was deprecated in tidyselect 1.2.0.
## ℹ Please use `all_of(var)` (or `any_of(var)`) instead of `.data[[var]]`
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Variable | Categoría | Frecuencia |
|---|---|---|
Rotación | No | 1,233 |
Rotación | Si | 237 |
Viaje de Negocios | Frecuentemente | 277 |
Viaje de Negocios | No_Viaja | 150 |
Viaje de Negocios | Raramente | 1,043 |
Departamento | IyD | 961 |
Departamento | RH | 63 |
Departamento | Ventas | 446 |
Educación | Posgrado | 48 |
Educación | Pregrado | 398 |
Educación | Primaria | 170 |
Educación | Secundaria | 282 |
Educación | Técnico/Tecnólogo | 572 |
Campo_Educación | Ciencias | 606 |
Campo_Educación | Humanidades | 27 |
Campo_Educación | Mercadeo | 159 |
Campo_Educación | Otra | 82 |
Campo_Educación | Salud | 464 |
Campo_Educación | Tecnicos | 132 |
Satisfacción_Ambiental | Insatisfecho | 287 |
Satisfacción_Ambiental | Muy insatisfecho | 284 |
Satisfacción_Ambiental | Muy satisfecho | 446 |
Satisfacción_Ambiental | Satisfecho | 453 |
Genero | F | 588 |
Genero | M | 882 |
Cargo | Director_Investigación | 80 |
Cargo | Director_Manofactura | 145 |
Cargo | Ejecutivo_Ventas | 326 |
Cargo | Gerente | 102 |
Cargo | Investigador_Cientifico | 292 |
Cargo | Recursos_Humanos | 52 |
Cargo | Representante_Salud | 131 |
Cargo | Representante_Ventas | 83 |
Cargo | Tecnico_Laboratorio | 259 |
Satisfación_Laboral | Insatisfecho | 280 |
Satisfación_Laboral | Muy insatisfecho | 289 |
Satisfación_Laboral | Muy satisfecho | 459 |
Satisfación_Laboral | Satisfecho | 442 |
Estado_Civil | Casado | 673 |
Estado_Civil | Divorciado | 327 |
Estado_Civil | Soltero | 470 |
Horas_Extra | No | 1,054 |
Horas_Extra | Si | 416 |
Rendimiento_Laboral | Alto | 1,244 |
Rendimiento_Laboral | Muy alto | 226 |
Equilibrio_Trabajo_Vida | Alto | 153 |
Equilibrio_Trabajo_Vida | Bajo | 344 |
Equilibrio_Trabajo_Vida | Medio | 893 |
Equilibrio_Trabajo_Vida | Muy bajo | 80 |
Observaciones:
Una vez revisada las variables categóricas (Visualmente) en nuestro conjunto de datos, confirmamos que todos los subniveles están correctamente etiquetados y no existen discrepancias en su escritura. No se requiere acción adicional para unificar subniveles, permitiéndonos avanzar en nuestro análisis con datos consistentes y precisos.
# Verificamos valores negativos en variables numéricas
valores_negativos <- sapply(rotacion_num_a_categoricas, function(x) {
if(is.numeric(x)) {
return(any(x < 0))
} else {
return(FALSE)
}
})
# Contamos el número de columnas con valores negativos
num_col_negativas <- sum(valores_negativos)
# Asignamos el resultado a una variable
mensaje_valores_negativos <- if(num_col_negativas == 0) {
"No se encontraron valores negativos en las variables numéricas del set de datos."
} else {
nombres_cols_negativas <- names(valores_negativos[valores_negativos == TRUE])
paste("Hay valores negativos en las siguientes columnas numéricas:",
paste(nombres_cols_negativas, collapse=", "), ".")
}
Observaciones
No se encontraron valores negativos en las variables numéricas del set de datos..
## [1] "Análisis Original"
## Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 36.92449 36 35 18 60 30 36 43 13
Observaciones:
El análisis de la variable Edad revela que la edad promedio de los empleados es aproximadamente 36.92 años, con una mediana de 36 años, indicando una distribución de edad equilibrada. La edad más frecuente entre los los empleados es de 35 años (moda). Las edades varían desde un mínimo de 18 años hasta un máximo de 60 años, mostrando una amplia gama de edades dentro del grupo.
El 25% de los empleados tienen 30 años o menos (primer cuartil), y el 75% tienen 43 años o menos (tercer cuartil), con un rango intercuartílico de 13 años, lo que señala una variabilidad moderada en las edades del grupo. Este análisis subraya una distribución de edades con una concentración en torno a los mid-30s y una diversidad de edades que abarca desde jóvenes adultos hasta personas de edad de jubilación.
## [1] "Análisis Original"
## Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 9.192517 7 2 1 29 2 7 14 12
Observaciones:
La variable Distancia_Casa muestra una media de aproximadamente 9.19 kilómetros, lo que indica la distancia promedio que los empleados deben recorrer desde su casa al trabajo. La mediana es de 7 kilómetros, sugiriendo que la mitad de los empledos tiene una distancia al trabajo de 7 kilómetros o menos, lo cual, junto a la media, indica una tendencia general hacia distancias moderadas.
La moda de 2 kilómetros destaca como la distancia más comúnmente reportada, lo que podría indicar una preferencia o mayor frecuencia de empleados viviendo relativamente cerca de su lugar de trabajo. Los valores mínimo y máximo, de 1 a 29 kilómetros respectivamente, muestran un rango amplio de distancias casa-trabajo entre los empleados.
El analisis de los cuartiles muestra que el 75% de los empleados vive a 14 kilómetros o menos. El rango intercuartílico (RIQ) es de 12 kilómetros, mostrando una variabilidad considerable en la distancia al trabajo entre el grupo intermedio de empleados.
Este análisis de la variable Distancia_Casa subraya la existencia de una amplia gama de distancias al trabajo entre los empleados, con una concentración notable de casos en distancias cortas (evidenciada por la moda) y una variabilidad significativa dentro del grupo, especialmente entre aquellos que viven más lejos de su lugar de empleo.
## [1] "Análisis Original"
## Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 6502.931 4919 2342 1009 19999 2911 4919 8379 5468
## [1] "Análisis Filtrado"
## Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 5502.763 4643 2342 1009 16555 2911 4643 8379 5468
Observaciones:
Antes del ajuste, la distribución de ingresos muestra una considerable amplitud, con valores que van desde tan bajo como $1,009 hasta tan alto como $19,999. La media de ingresos, situada en $6,502.93, es significativamente mayor que la mediana de $4,919, lo que sugiere una distribución asimétrica con una cola larga hacia los ingresos más altos. Esta asimetría es típica en los datos de ingresos, donde unos pocos empleados ganan significativamente más que el promedio. El RIQ, una medida de dispersión que describe la variabilidad de los ingresos en el 50% central de los datos, es de $5,468, indicando una variabilidad considerable en el ingreso mensual.
Después del ajuste con un RIQ de 1.5, se observa una reducción en la media a $5,502.76 y en el valor máximo a $16,555. Esto indica que el ajuste ha tenido un efecto reductor en los valores extremos superiores, lo que a su vez ha acercado la media hacia la mediana. Este efecto es deseado en muchos análisis estadísticos, ya que reduce la influencia de valores atípicos, proporcionando una visión más representativa de la situación financiera de la mayoría de los empleados. La mediana se reduce ligeramente a $4,643, reflejando este cambio en la distribución. Notablemente, la moda no cambia, manteniéndose en $2,342, lo que indica que el valor más frecuente de ingreso mensual permanece constante y que el ajuste afecta principalmente a la cola de la distribución.
## [1] "Análisis Original"
## Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 2.693197 2 1 0 9 1 2 4 3
## [1] "Análisis Filtrado"
## Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 2.461918 1 1 0 8 1 1 4 3
Observaciones:
El análisis detallado de la variable “Trabajos Anteriores” muestra que, en general, los empleados tienden a tener una cantidad moderada de experiencias laborales previas antes de unirse a la empresa actual, con la mayoría habiendo trabajado en 1 a 4 trabajos previos. La aplicación de un rango intercuartílico de 1.5 ajusta ligeramente la distribución hacia menos trabajos anteriores, reflejando la eliminación de valores atípicos pero manteniendo la tendencia general y la variabilidad. Este ajuste ofrece una imagen más nítida y posiblemente más representativa de las experiencias laborales previas de la mayoría de los empleados, destacando la importancia de considerar la cantidad de roles anteriores al evaluar la experiencia laboral de los empleados. La presencia de una moda constante antes y después del ajuste subraya una tendencia común de tener un trabajo anterior antes de la posición actual, lo que podría ser indicativo de patrones de movilidad laboral o estabilidad en la carrera profesional antes de unirse a la empresa actual.
## [1] "Análisis Original"
## Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 15.20952 14 11 11 25 12 14 18 6
Observaciones:
El análisis de la variable “Porcentaje de aumento salarial más reciente del empleado” revela detalles significativos sobre los ajustes salariales dentro de la empresa. La media del porcentaje de aumento salarial es aproximadamente 15.21%, lo que indica el incremento promedio reciente en los salarios de los empleados. La mediana, establecida en 14%, sugiere que la mitad de los empleados recibieron aumentos por debajo de este porcentaje, mientras que la otra mitad recibió aumentos por encima, apuntando a una distribución equilibrada de los incrementos salariales.
La moda de 11% es el porcentaje de aumento más comúnmente reportado, lo que podría reflejar una política estándar de incremento salarial o un piso para los aumentos en un período reciente. El rango de los porcentajes de aumento va de 11% a 25%, mostrando que todos los empleados recibieron algún incremento, con un mínimo del 11%. Este rango también destaca que algunos empleados recibieron aumentos sustancialmente mayores, hasta un 25%.
Los cuartiles se dividen de la siguiente manera: el primer cuartil (Q1) en 12%, indicando que el 25% de los empleados recibió aumentos de hasta 12% o menos. La mediana (Q2) en 14% y el tercer cuartil (Q3) en 18%, mostrando que el 75% de los empleados recibió aumentos de hasta 18% o menos. El rango intercuartílico (RIQ) es de 6%, lo que señala una variabilidad moderada en los porcentajes de aumento salarial entre los empleados.
## [1] "Análisis Original"
## Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 11.27959 10 10 0 40 6 10 15 9
## [1] "Análisis Filtrado"
## Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 10.32409 9 10 0 28 6 9 15 9
Observaciones:
El ajuste mediante el RIQ de 1.5 revela una ligera disminución en la media y mediana de años de experiencia, lo que sugiere que la eliminación de datos extremos ha resultado en un enfoque más centrado en empleados con menor antigüedad. La persistencia de la moda en 10 años subraya un punto focal común de experiencia dentro de la empresa. La reducción del rango máximo de experiencia de 40 a 28 años tras el ajuste indica que los valores extremos superiores han sido moderados, ofreciendo una visión más representativa de la experiencia laboral predominante entre los empleados. A pesar de estos ajustes, la distribución general de la experiencia laboral se mantiene relativamente estable, con la mayoría de los empleados concentrados en un rango de 6 a 15 años de experiencia, como lo demuestran los cuartiles y el RIQ constantes. Este análisis subraya la presencia de una fuerza laboral con una base sólida de experiencia, aunque con variaciones considerables.
## [1] "Análisis Original"
## Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 2.79932 3 2 0 6 2 3 3 1
## [1] "Análisis Filtrado"
## Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 2.540584 2 2 1 4 2 2 3 1
Observaciones:
El análisis demuestra que la mayoría de los empleados reciben una cantidad moderada de capacitaciones anuales, con una tendencia hacia 2 a 3 sesiones. La aplicación del RIQ de 1.5 ajusta ligeramente los datos, minimizando el impacto de los extremos y centrando la atención en la experiencia más común de capacitación entre los empleados. Este ajuste proporciona una perspectiva más concentrada y, posiblemente, más representativa del acceso y la participación en programas de capacitación dentro de la organización. La estabilidad del RIQ y de los cuartiles antes y después del ajuste refleja una consistencia en la distribución de las capacitaciones, subrayando una política de desarrollo profesional que alcanza a una amplia mayoría de empleados, aunque con un rango relativamente estrecho de variación en el número de capacitaciones recibidas.
## [1] "Análisis Original"
## Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 7.008163 5 5 0 40 3 5 9 6
## [1] "Análisis Filtrado"
## Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 5.751098 5 5 0 18 3 5 9 6
*Observaciones:
El análisis de la antigüedad de los empleados en la empresa muestra una tendencia hacia periodos moderados de vinculación, con una notable presencia de empleados que tienen alrededor de 5 a 9 años de antigüedad. El ajuste basado en el RIQ de 1.5 aclara esta tendencia al reducir la influencia de los casos extremadamente veteranos, resultando en una disminución en la media de antigüedad y una concentración en un rango de 0 a 18 años. La estabilidad de la mediana y la moda, tanto antes como después del ajuste, subraya la consistencia en la duración más típica de la relación laboral. Este enfoque destaca la presencia de una fuerza laboral con una mezcla equilibrada de antigüedad, desde recién incorporados hasta empleados de larga duración, aunque priorizando aquellos con menos de dos décadas de servicio.
## [1] "Análisis Original"
## Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 4.229252 3 2 0 18 2 3 7 5
## [1] "Análisis Filtrado"
## Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 4.058661 3 2 0 14 2 3 7 5
Observaciones:
La antigüedad en el cargo refleja un promedio de tiempo relativamente corto que los empleados pasan en su posición actual, con la mayoría de los empleados teniendo entre 2 a 7 años de antigüedad en su puesto. El ajuste realizado a través del RIQ de 1.5 muestra una leve disminución en la media, destacando la eliminación de outliers que representaban períodos largos en el mismo cargo. Sin embargo, la mediana, la moda, los cuartiles y el RIQ permanecen constantes, lo que indica que el ajuste no ha modificado significativamente la estructura central de la distribución. Este análisis sugiere que, aunque hay variabilidad en cuánto tiempo los empleados permanecen en sus cargos, existe una tendencia general hacia períodos más cortos, posiblemente reflejando políticas internas de promoción, rotación de personal o reasignaciones dentro de la empresa.
## [1] "Análisis Original"
## Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 2.187755 1 0 0 15 0 1 3 3
## [1] "Análisis Filtrado"
## Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 1.48496 1 0 0 7 0 1 3 3
Observaciones:
El análisis de “Años desde la Última Promoción” destaca una tendencia hacia períodos de espera moderados entre promociones, con la mayoría de los empleados experimentando promociones en un marco de tiempo de 2 a 7 años. El ajuste mediante el RIQ de 1.5 muestra un leve enfoque en intervalos más cortos, al eliminar valores extremos y resaltar una tendencia general hacia esperas razonables para la promoción. La estabilidad de la mediana y la moda antes y después del ajuste enfatiza una consistencia en la experiencia más común entre promociones. Sin embargo, la variabilidad señalada por el RIQ indica que, mientras muchos empleados son promovidos en un período razonable, existe un grupo significativo que espera períodos más largos. Este análisis sugiere la importancia de considerar las políticas de promoción y su percepción entre los empleados, especialmente en términos de retención y satisfacción laboral, ya que períodos prolongados sin promoción pueden influir en la decisión de buscar nuevas oportunidades.
## [1] "Análisis Original"
## Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 4.123129 3 2 0 17 2 3 7 5
## [1] "Análisis Filtrado"
## Media Mediana Moda Minimo Maximo Q1 Q2 Q3 RIQ
## 25% 4.007555 3 2 0 14 2 3 7 5
Observaciones:
El análisis de “Años bajo la Supervisión del Mismo Jefe” subraya una tendencia general hacia períodos moderados de supervisión bajo el mismo jefe, con la mayoría de los empleados experimentando cambios de supervisión en un marco de tiempo de 2 a 7 años. El leve ajuste en la media después del cálculo del RIQ de 1.5 sugiere una ligera concentración hacia períodos más cortos bajo el mismo jefe, al eliminar los casos de estabilidad extrema. La consistencia en la mediana y la moda antes y después del ajuste refuerza la noción de que hay una experiencia común en cuanto a la duración bajo la supervisión directa, aunque la variabilidad indicada por el RIQ destaca que también hay una gama significativa de experiencias. Este análisis resalta la importancia de la dinámica de supervisión en la experiencia laboral del empleado, sugiriendo que cambios periódicos en la supervisión podrían ser normales y esperados dentro de la estructura organizativa de la empresa.
tabla <- rotacion_num_a_categoricas
# Gráfica de Educación por Departamento
grafica_educacion_departamento <- ggplot(tabla, aes(x = Departamento, fill = Educación)) +
geom_bar(position = "fill") +
scale_y_continuous(labels = scales::percent_format()) +
labs(title = "Distribución de Educación por Departamento",
x = "Departamento",
y = "Porcentaje") +
theme_minimal() +
theme(legend.position = "bottom")
resumen_educacion_departamento <- tabla %>%
count(Departamento, Educación) %>%
group_by(Departamento) %>%
mutate(Percent = n / sum(n) * 100) %>%
ungroup()
ft_educacion_departamento <- flextable(resumen_educacion_departamento) %>%
theme_vanilla() %>%
set_header_labels(Departamento = "Departamento", Educación = "Educación", n = "Frecuencia", Percent = "Porcentaje (%)") %>%
autofit()
# Mostramos resultados
ft_educacion_departamento
Departamento | Educación | Frecuencia | Porcentaje (%) |
|---|---|---|---|
IyD | Posgrado | 30 | 3.121748 |
IyD | Pregrado | 255 | 26.534860 |
IyD | Primaria | 115 | 11.966701 |
IyD | Secundaria | 182 | 18.938606 |
IyD | Técnico/Tecnólogo | 379 | 39.438085 |
RH | Posgrado | 3 | 4.761905 |
RH | Pregrado | 15 | 23.809524 |
RH | Primaria | 5 | 7.936508 |
RH | Secundaria | 13 | 20.634921 |
RH | Técnico/Tecnólogo | 27 | 42.857143 |
Ventas | Posgrado | 15 | 3.363229 |
Ventas | Pregrado | 128 | 28.699552 |
Ventas | Primaria | 50 | 11.210762 |
Ventas | Secundaria | 87 | 19.506726 |
Ventas | Técnico/Tecnólogo | 166 | 37.219731 |
print(grafica_educacion_departamento)
Observaciones:
El análisis de la distribución de niveles educativos dentro de los departamentos de Investigación y Desarrollo (IyD), Recursos Humanos (RH) y Ventas muestra patrones interesantes sobre cómo la formación académica se alinea con los roles departamentales específicos.
En el departamento de Investigación y Desarrollo (IyD), la categoría con mayor frecuencia es “Técnico/Tecnólogo” con un 39.44% de los empleados, seguido de “Pregrado” con un 26.53%. Esto sugiere que IyD valora tanto la formación técnica especializada como la educación universitaria general. La presencia significativa de empleados con educación secundaria y primaria (11.97% y 18.94% respectivamente) indica también una diversidad de roles dentro del departamento que requieren diferentes niveles de formación.
En Recursos Humanos (RH), “Técnico/Tecnólogo” representa el mayor porcentaje con un 42.86%, lo que indica una preferencia similar por la formación técnica especializada. Sin embargo, se observa una menor proporción de empleados con “Pregrado” (23.81%) en comparación con IyD, posiblemente reflejando diferentes requisitos de habilidades o responsabilidades de rol. Las categorías de “Posgrado”, “Primaria” y “Secundaria” presentan porcentajes menores, sugiriendo que las posiciones en RH pueden no requerir tan frecuentemente un nivel educativo avanzado.
En el departamento de Ventas, la distribución de la educación muestra una preferencia por “Técnico/Tecnólogo” (37.22%) y “Pregrado” (28.70%) similar a IyD, pero con una notable participación de empleados con “Secundaria” y “Primaria” (19.51% y 11.21% respectivamente). Esto podría indicar que el departamento de Ventas valora una combinación de habilidades técnicas y educación formal, junto con competencias que pueden ser adquiridas sin una educación universitaria completa.
Este análisis subraya cómo los diferentes departamentos priorizan diversos niveles de educación para sus empleados, reflejando posiblemente las necesidades específicas y las funciones del rol dentro de cada área. Mientras que IyD y Ventas muestran una fuerte inclinación hacia empleados con formación técnica o tecnológica y pregrado, posiblemente debido a la necesidad de conocimientos especializados, RH tiene una distribución más equilibrada, enfatizando la importancia de la experiencia técnica pero también abriendo espacio a una variedad más amplia de antecedentes educativos. Este patrón de distribución refleja no solo las diferentes necesidades de habilidades entre los departamentos sino también la diversidad de oportunidades dentro de la organización para personas con una amplia gama de antecedentes educativos.
# Gráfica de Satisfacción Ambiental por Departamento
grafica_satisfaccion_departamento <- ggplot(tabla, aes(x = Departamento, fill = Satisfacción_Ambiental)) +
geom_bar(position = "fill") +
scale_y_continuous(labels = scales::percent_format()) +
labs(title = "Distribución de Satisfacción Ambiental por Departamento",
x = "Departamento",
y = "Porcentaje") +
theme_minimal() +
theme(legend.position = "bottom")
resumen_satisfaccion_departamento <- tabla %>%
count(Departamento, Satisfacción_Ambiental) %>%
group_by(Departamento) %>%
mutate(Percent = n / sum(n) * 100) %>%
ungroup()
ft_satisfaccion_departamento <- flextable(resumen_satisfaccion_departamento) %>%
theme_vanilla() %>%
set_header_labels(Departamento = "Departamento", Satisfacción_Ambiental = "Satisfacción Ambiental", n = "Frecuencia", Percent = "Porcentaje (%)") %>%
autofit()
# Mostramos resultados
ft_satisfaccion_departamento
Departamento | Satisfacción Ambiental | Frecuencia | Porcentaje (%) |
|---|---|---|---|
IyD | Insatisfecho | 177 | 18.41831 |
IyD | Muy insatisfecho | 187 | 19.45890 |
IyD | Muy satisfecho | 305 | 31.73777 |
IyD | Satisfecho | 292 | 30.38502 |
RH | Insatisfecho | 12 | 19.04762 |
RH | Muy insatisfecho | 11 | 17.46032 |
RH | Muy satisfecho | 14 | 22.22222 |
RH | Satisfecho | 26 | 41.26984 |
Ventas | Insatisfecho | 98 | 21.97309 |
Ventas | Muy insatisfecho | 86 | 19.28251 |
Ventas | Muy satisfecho | 127 | 28.47534 |
Ventas | Satisfecho | 135 | 30.26906 |
print(grafica_satisfaccion_departamento)
Observaciones:
En el departamento de Investigación y Desarrollo (IyD), se observa una distribución relativamente equilibrada en términos de satisfacción ambiental. Un 31.74% de los empleados se sienten “Muy satisfechos” y un 30.39% “Satisfechos”, lo que sugiere que la mayoría de los empleados en IyD tienen una percepción positiva de su entorno de trabajo. Sin embargo, también hay una proporción significativa de empleados que se sienten “Insatisfechos” (18.42%) y “Muy insatisfechos” (19.46%), lo que indica que hay aspectos del ambiente laboral en IyD que requieren atención y mejora.
En Recursos Humanos (RH), la mayoría de los empleados se sienten “Satisfechos” (41.27%), seguido de aquellos que se sienten “Muy satisfechos” (22.22%). Las proporciones de empleados “Insatisfechos” (19.05%) y “Muy insatisfechos” (17.46%) son comparables a las de IyD, pero la mayor satisfacción general podría reflejar diferencias en las políticas de trabajo, la cultura departamental o las relaciones interpersonales específicas de RH.
En el departamento de Ventas, la satisfacción se distribuye de manera más uniforme entre las cuatro categorías, con un ligero predominio de empleados “Satisfechos” (30.27%) y “Muy satisfechos” (28.48%). Similar a IyD y RH, hay una cantidad notable de empleados “Insatisfechos” (21.97%) y “Muy insatisfechos” (19.28%), sugiriendo que, a pesar de los esfuerzos por mantener un ambiente de trabajo positivo, existen desafíos en el entorno laboral que afectan a una fracción importante de la fuerza laboral.
# Gráfica de Género por Satisfacción Ambiental
grafica_genero_satisfaccion <- ggplot(tabla, aes(x = Satisfacción_Ambiental, fill = Genero)) +
geom_bar(position = "fill") +
scale_y_continuous(labels = scales::percent_format()) +
labs(title = "Distribución de Género por Satisfacción Ambiental",
x = "Satisfacción Ambiental",
y = "Porcentaje") +
theme_minimal() +
theme(legend.position = "bottom")
resumen_genero_satisfaccion <- tabla %>%
count(Satisfacción_Ambiental, Genero) %>%
group_by(Satisfacción_Ambiental) %>%
mutate(Percent = n / sum(n) * 100) %>%
ungroup()
ft_genero_satisfaccion <- flextable(resumen_genero_satisfaccion) %>%
theme_vanilla() %>%
set_header_labels(Satisfacción_Ambiental = "Satisfacción Ambiental", Genero = "Género", n = "Frecuencia", Percent = "Porcentaje (%)") %>%
autofit()
# Mostramos resultados
ft_genero_satisfaccion
Satisfacción Ambiental | Género | Frecuencia | Porcentaje (%) |
|---|---|---|---|
Insatisfecho | F | 112 | 39.02439 |
Insatisfecho | M | 175 | 60.97561 |
Muy insatisfecho | F | 113 | 39.78873 |
Muy insatisfecho | M | 171 | 60.21127 |
Muy satisfecho | F | 174 | 39.01345 |
Muy satisfecho | M | 272 | 60.98655 |
Satisfecho | F | 189 | 41.72185 |
Satisfecho | M | 264 | 58.27815 |
print(grafica_genero_satisfaccion)
Observaciones:
El análisis de la satisfacción ambiental desglosado por género revela patrones distintivos en cómo los empleados masculinos (M) y femeninos (F) perciben su entorno de trabajo. A través de las cuatro categorías de satisfacción ambiental —“Insatisfecho”, “Muy insatisfecho”, “Muy satisfecho” y “Satisfecho”—, se observa una tendencia consistente donde los empleados masculinos representan una mayor proporción en cada categoría comparado con sus contrapartes femeninas.
En la categoría “Insatisfecho”, el 60.98% son empleados masculinos, mientras que el 39.02% son femeninos. Similarmente, entre los “Muy insatisfechos”, los hombres representan el 60.21%, en comparación con el 39.79% de las mujeres. Esta tendencia se mantiene en las categorías positivas: el 60.99% de los empleados “Muy satisfechos” son hombres, frente al 39.01% de mujeres, y en la categoría “Satisfecho”, el 58.28% son hombres, comparado con el 41.72% de mujeres.
Este patrón sugiere que, independientemente del nivel de satisfacción ambiental, hay una representación desproporcionadamente alta de empleados masculinos en todas las categorías. Esto podría reflejar diferencias en la percepción del entorno de trabajo entre géneros o, posiblemente, diferencias en la distribución de género dentro de la organización.
Una interpretación podría ser que los hombres, siendo mayoritarios en esta muestra, tienden a reportar una gama más amplia de experiencias ambientales, o que las diferencias en la percepción o en las experiencias laborales reales entre géneros conducen a estas distribuciones. Por ejemplo, si los hombres están sobre-representados en ciertos roles o departamentos con distintas condiciones de trabajo, esto podría influir en su percepción general del ambiente laboral.
También es notable que, aunque hay una mayor proporción de hombres en cada categoría de satisfacción, la diferencia es relativamente más equilibrada en las categorías “Satisfecho” y “Muy satisfecho”, sugiriendo que, en términos de experiencias positivas, las percepciones entre géneros son ligeramente más parejas. Sin embargo, el hecho de que los hombres constituyan una mayoría en todas las categorías refuerza la importancia de considerar las dinámicas de género al evaluar y mejorar la satisfacción ambiental en el lugar de trabajo.
# Gráfica de Género por Satisfacción Ambiental y Departamento
grafica_genero_satisfaccion_departamento <- ggplot(tabla, aes(x = Departamento, fill = Genero)) +
geom_bar(aes(y = ..count../sum(..count..)), position = "dodge") +
facet_wrap(~Satisfacción_Ambiental) +
scale_y_continuous(labels = scales::percent_format()) +
labs(title = "Distribución de Género por Satisfacción Ambiental y Departamento",
x = "Departamento",
y = "Porcentaje") +
theme_minimal() +
theme(legend.position = "bottom")
resumen_genero_satisfaccion_departamento <- tabla %>%
count(Departamento, Satisfacción_Ambiental, Genero) %>%
group_by(Departamento, Satisfacción_Ambiental) %>%
mutate(Percent = n / sum(n) * 100) %>%
ungroup()
ft_genero_satisfaccion_departamento <- flextable(resumen_genero_satisfaccion_departamento) %>%
theme_vanilla() %>%
set_header_labels(Departamento = "Departamento", Satisfacción_Ambiental = "Satisfacción Ambiental", Genero = "Género", n = "Frecuencia", Percent = "Porcentaje (%)") %>%
autofit()
# Mostramos resultados
ft_genero_satisfaccion_departamento
Departamento | Satisfacción Ambiental | Género | Frecuencia | Porcentaje (%) |
|---|---|---|---|---|
IyD | Insatisfecho | F | 69 | 38.98305 |
IyD | Insatisfecho | M | 108 | 61.01695 |
IyD | Muy insatisfecho | F | 74 | 39.57219 |
IyD | Muy insatisfecho | M | 113 | 60.42781 |
IyD | Muy satisfecho | F | 114 | 37.37705 |
IyD | Muy satisfecho | M | 191 | 62.62295 |
IyD | Satisfecho | F | 122 | 41.78082 |
IyD | Satisfecho | M | 170 | 58.21918 |
RH | Insatisfecho | F | 2 | 16.66667 |
RH | Insatisfecho | M | 10 | 83.33333 |
RH | Muy insatisfecho | F | 3 | 27.27273 |
RH | Muy insatisfecho | M | 8 | 72.72727 |
RH | Muy satisfecho | F | 6 | 42.85714 |
RH | Muy satisfecho | M | 8 | 57.14286 |
RH | Satisfecho | F | 9 | 34.61538 |
RH | Satisfecho | M | 17 | 65.38462 |
Ventas | Insatisfecho | F | 41 | 41.83673 |
Ventas | Insatisfecho | M | 57 | 58.16327 |
Ventas | Muy insatisfecho | F | 36 | 41.86047 |
Ventas | Muy insatisfecho | M | 50 | 58.13953 |
Ventas | Muy satisfecho | F | 54 | 42.51969 |
Ventas | Muy satisfecho | M | 73 | 57.48031 |
Ventas | Satisfecho | F | 58 | 42.96296 |
Ventas | Satisfecho | M | 77 | 57.03704 |
print(grafica_genero_satisfaccion_departamento)
## Warning: The dot-dot notation (`..count..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(count)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Observaciones:
En Investigación y Desarrollo (IyD), se observa una tendencia en la que los hombres (M) reportan una mayor insatisfacción ambiental en comparación con las mujeres (F), con porcentajes que superan el 60% en categorías como “Insatisfecho” y “Muy insatisfecho”. Sin embargo, esta tendencia se mantiene incluso en las categorías positivas de “Muy satisfecho” y “Satisfecho”, donde los hombres también representan la mayoría. Esta distribución sugiere que, aunque hay una mayor proporción de empleados masculinos expresando tanto satisfacción como insatisfacción, las preocupaciones ambientales son compartidas entre géneros, aunque con una presencia más fuerte de respuesta masculina.
En Recursos Humanos (RH), las diferencias de género en la satisfacción ambiental se acentúan, especialmente en la categoría de “Insatisfecho”, donde el 83.33% son hombres, contrastando marcadamente con el porcentaje femenino. Aunque en categorías de satisfacción más alta como “Muy satisfecho” la distribución se equilibra un poco más, los hombres continúan dominando en términos de porcentajes. Este patrón podría indicar diferencias en cómo los entornos de trabajo son percibidos por género dentro de RH, o reflejar diferencias en la composición de género del departamento.
En el departamento de Ventas, se mantiene una distribución relativamente equilibrada entre géneros en todas las categorías de satisfacción ambiental, aunque con una inclinación hacia mayores porcentajes de empleados masculinos expresando tanto satisfacción como insatisfacción. Aún así, las mujeres representan una proporción considerable, especialmente en categorías positivas, sugiriendo una percepción algo más equitativa del entorno de trabajo entre géneros en comparación con IyD y RH.
Este análisis destaca cómo la percepción del entorno de trabajo puede variar no solo entre departamentos sino también entre géneros dentro de los mismos.
# Creamos la tabla resumen
resumen_rotacion_satisfaccion <- tabla %>%
count(Rotación, Satisfacción_Ambiental) %>%
group_by(Rotación) %>%
mutate(Percent = n / sum(n) * 100) %>%
ungroup()
# Creamos la gráfica
grafica_rotacion_satisfaccion <- ggplot(resumen_rotacion_satisfaccion, aes(x = Rotación, y = Percent, fill = Satisfacción_Ambiental)) +
geom_bar(stat = "identity", position = "dodge") +
geom_text(aes(label = paste0(sprintf("%.1f%%", Percent), " (", n, ")")), position = position_dodge(width = 0.9), vjust = -0.5, size = 3) +
labs(title = "Rotación y Satisfacción Ambiental", x = "Rotación", y = "Porcentaje") +
theme_minimal() +
scale_fill_brewer(palette = "Set1") +
theme(legend.position = "bottom")
# Creamos la flextable
ft_rotacion_satisfaccion <- flextable(resumen_rotacion_satisfaccion) %>%
theme_vanilla() %>%
autofit()
# Mostramos resultados
ft_rotacion_satisfaccion
Rotación | Satisfacción_Ambiental | n | Percent |
|---|---|---|---|
No | Insatisfecho | 244 | 19.78913 |
No | Muy insatisfecho | 212 | 17.19384 |
No | Muy satisfecho | 386 | 31.30576 |
No | Satisfecho | 391 | 31.71127 |
Si | Insatisfecho | 43 | 18.14346 |
Si | Muy insatisfecho | 72 | 30.37975 |
Si | Muy satisfecho | 60 | 25.31646 |
Si | Satisfecho | 62 | 26.16034 |
print(grafica_rotacion_satisfaccion)
Observaciones:
Entre los empleados que no han rotado, la mayoría reporta niveles altos de satisfacción ambiental, con un 31.71% que se siente “Satisfecho” y un 31.31% “Muy satisfecho”. Estos porcentajes sugieren que una percepción positiva del entorno de trabajo juega un papel crucial en la retención de empleados. Sin embargo, aún hay una proporción significativa de empleados que, a pesar de permanecer en la empresa, expresan insatisfacción (“Insatisfecho” 19.79% y “Muy insatisfecho” 17.19%), lo que indica que la decisión de no rotar puede estar influenciada por factores adicionales más allá de la satisfacción ambiental.
Por otro lado, entre los empleados que han rotado, se observa una mayor proporción que reporta niveles bajos de satisfacción ambiental. El 30.38% se siente “Muy insatisfecho”, lo que es notablemente más alto que el porcentaje de empleados “Muy insatisfechos” que han decidido permanecer en la empresa. Además, los porcentajes de “Insatisfecho” (18.14%) y “Satisfecho” (26.16%) entre los que han rotado son comparables, pero con una inclinación hacia la insatisfacción. Esto sugiere que la insatisfacción con el ambiente de trabajo puede ser un factor determinante para aquellos que eligen dejar la empresa.
Interesantemente, un 25.32% de los empleados que han rotado se clasificaron como “Muy satisfechos”, indicando que, aunque una percepción positiva del entorno laboral puede reducir la propensión a rotar, no necesariamente garantiza la retención de todos los empleados satisfechos. Esto puede reflejar la complejidad de la decisión de rotar, donde otros factores como el desarrollo de carrera, la compensación o las relaciones interpersonales pueden influir.
Este análisis revela que la satisfacción ambiental tiene un papel importante en la rotación de empleados, con una clara tendencia a que aquellos menos satisfechos con su entorno laboral sean más propensos a rotar.
# Creamos la tabla resumen
resumen_rotacion_genero <- tabla %>%
count(Rotación, Genero) %>%
group_by(Rotación) %>%
mutate(Percent = n / sum(n) * 100) %>%
ungroup()
# Creamos la gráfica
grafica_rotacion_genero <- ggplot(resumen_rotacion_genero, aes(x = Rotación, y = Percent, fill = Genero)) +
geom_bar(stat = "identity", position = "dodge") +
geom_text(aes(label = paste0(sprintf("%.1f%%", Percent), " (", n, ")")), position = position_dodge(width = 0.9), vjust = -0.5, size = 3) +
labs(title = "Rotación y Género", x = "Rotación", y = "Porcentaje") +
theme_minimal() +
scale_fill_brewer(palette = "Pastel1") +
theme(legend.position = "bottom")
# Creamos la flextable
ft_rotacion_genero <- flextable(resumen_rotacion_genero) %>%
theme_vanilla() %>%
autofit()
# Mostramos resultados
ft_rotacion_genero
Rotación | Genero | n | Percent |
|---|---|---|---|
No | F | 501 | 40.63260 |
No | M | 732 | 59.36740 |
Si | F | 87 | 36.70886 |
Si | M | 150 | 63.29114 |
print(grafica_rotacion_genero)
Observaciones:
El análisis de la relación entre la rotación y el género muestra cómo los empleados masculinos (M) y femeninos (F) difieren en sus tasas de permanencia y salida de la empresa. Dentro de los empleados que han optado por no rotar (“No”), los hombres representan una mayor proporción (59.37%) en comparación con las mujeres (40.63%). Esta tendencia se mantiene entre aquellos que han decidido rotar (“Sí”), donde los hombres constituyen el 63.29%, superando nuevamente a las mujeres, que representan el 36.71%.
Este patrón sugiere que los hombres, tanto en el grupo que permanece en la empresa como en el que opta por la rotación, tienen una presencia más significativa que las mujeres. La mayor proporción de hombres en ambos grupos podría reflejar dinámicas de género más amplias dentro del mercado laboral o específicamente dentro de la empresa en cuestión. Por ejemplo, podría haber más hombres en roles o departamentos con mayores tasas de rotación o, alternativamente, los hombres podrían sentirse más cómodos cambiando de empleo por razones culturales o sociales.
Se seleccionarán tres variables categóricas y tres cuantitativas para investigar su relación con la rotación del personal. Cada variable será elegida basada en la evidencia que sugiere su impacto en la decisión de los empleados de dejar la empresa. Se formularán hipótesis concretas para explicar cómo y por qué estas variables podrían influir en la rotación, estableciendo una base para análisis y estrategias de retención posteriores.
A continuación se detallan las variables seleccionadas:
Variables Categóricas:
Departamento: Los diferentes departamentos pueden tener culturas de trabajo distintas, niveles de estrés variables y oportunidades de desarrollo profesional desiguales, lo cual podría influir en la decisión de un empleado de permanecer en la empresa o buscar nuevas oportunidades. Hipótesis: Es probable que los departamentos con mayores cargas de trabajo o menor satisfacción general muestren tasas de rotación más altas.
Satisfacción Ambiental: Esta variable mide cómo los empleados perciben su entorno de trabajo físico y social. Una satisfacción ambiental baja podría indicar problemas en el ambiente de trabajo que lleven a una mayor rotación. Hipótesis: Los empleados insatisfechos con su ambiente laboral tienen mayor probabilidad de rotar, buscando mejores condiciones de trabajo en otra parte.
Satisfacción Laboral: Refleja el grado de felicidad del empleado con su trabajo, incluyendo aspectos como la naturaleza del trabajo, el reconocimiento recibido y las oportunidades de crecimiento. Hipótesis: Los empleados que reportan bajos niveles de satisfacción laboral son más propensos a dejar la empresa, en busca de puestos que satisfagan mejor sus expectativas y necesidades.
Variables Cuantitativas:
Edad: La edad puede influir en las expectativas de carrera y en la estabilidad deseada, afectando así la rotación. Hipótesis: Los empleados más jóvenes, quienes están explorando opciones de carrera y aún no se han asentado, podrían tener tasas de rotación más altas en comparación con empleados mayores que buscan estabilidad.
Ingreso Mensual: El nivel de ingresos afecta directamente la satisfacción general y puede ser un factor determinante en la decisión de permanecer en la empresa o buscar mejores oportunidades. Hipótesis: Los empleados con ingresos mensuales bajos son más propensos a rotar, especialmente si perciben que su compensación no es acorde con su rol o contribución a la empresa.
Años de Experiencia: Este indicador refleja la trayectoria profesional del empleado, lo que puede afectar su lealtad a la empresa y su propensión a buscar nuevas oportunidades. Hipótesis: Los empleados con menos años de experiencia son más propensos a rotar, buscando diversificar su experiencia y crecimiento profesional, mientras que los más experimentados buscan consolidar su carrera y por lo tanto son más estables.
Estas seis variables ofrecen una combinación equilibrada de factores internos relacionados con el trabajo y aspectos personales/profesionales que pueden influir significativamente en la decisión de un empleado de permanecer en la empresa o buscar nuevas oportunidades. La selección está orientada a entender cómo las condiciones de trabajo, la satisfacción con el empleo y las características individuales interactúan para influir en la rotación.
Se realizará un análisis bivariado para evaluar cómo cada variable del set de datos se asocia con la rotación de empleados. El objetivo es discernir patrones y tendencias que puedan influir en la permanencia del personal en la empresa, y los resultados se presentarán enfocados en la variable de rotación:
# Nos aseguramos de que las variables categóricas y 'Rotación' están en el formato correcto
datos <- rotacion_num_a_categoricas %>%
mutate(Rotación = as.factor(Rotación),
`Viaje de Negocios` = as.factor(`Viaje de Negocios`),
Departamento = as.factor(Departamento),
Educación = as.factor(Educación),
Campo_Educación = as.factor(Campo_Educación),
Satisfacción_Ambiental = as.factor(Satisfacción_Ambiental),
Genero = as.factor(Genero),
Cargo = as.factor(Cargo),
Satisfación_Laboral = as.factor(Satisfación_Laboral),
Estado_Civil = as.factor(Estado_Civil),
Horas_Extra = as.factor(Horas_Extra),
Rendimiento_Laboral = as.factor(Rendimiento_Laboral),
Equilibrio_Trabajo_Vida = as.factor(Equilibrio_Trabajo_Vida))
# Lista de variables numéricas
variables_numericas <- c("Edad", "Distancia_Casa", "Ingreso_Mensual", "Trabajos_Anteriores",
"Porcentaje_aumento_salarial", "Años_Experiencia", "Capacitaciones",
"Antigüedad", "Antigüedad_Cargo", "Años_ultima_promoción", "Años_acargo_con_mismo_jefe")
# Lista de variables categóricas
variables_categoricas <- setdiff(names(datos), variables_numericas)
variables_categoricas <- setdiff(variables_categoricas, "Rotación") # Excluir 'Rotación' de las categóricas
# Preparamos el dataframe para los resultados de las pruebas t
resultados_t_test <- data.frame(Variable = character(),
Estadístico = numeric(),
P_valor = numeric(),
stringsAsFactors = FALSE)
# Análisis bivariado para variables numéricas y almacenamiento de resultados
for(variable in variables_numericas) {
resultado <- t.test(as.formula(paste(variable, "~ Rotación")), data = datos)
resultados_t_test <- rbind(resultados_t_test,
data.frame(Variable = variable,
Estadístico = resultado$statistic,
P_valor = resultado$p.value))
}
# Creamos flextable para las variables numéricas
flextable_num <- flextable(resultados_t_test) %>%
theme_vanilla() %>%
autofit()
# Mostramos el flextable de las variables numéricas
flextable_num
Variable | Estadístico | P_valor |
|---|---|---|
Edad | 5.8291495 | 0.0000000137124908200 |
Distancia_Casa | -2.8881831 | 0.0041365119715114137 |
Ingreso_Mensual | 7.4826216 | 0.0000000000004433589 |
Trabajos_Anteriores | -1.5746511 | 0.1163340260169765106 |
Porcentaje_aumento_salarial | 0.5042445 | 0.6144300580581378846 |
Años_Experiencia | 7.0191785 | 0.0000000000115981675 |
Capacitaciones | 2.3305223 | 0.0203637921269869300 |
Antigüedad | 5.2825961 | 0.0000002285905175273 |
Antigüedad_Cargo | 6.8470792 | 0.0000000000318739037 |
Años_ultima_promoción | 1.2879266 | 0.1986512827690630201 |
Años_acargo_con_mismo_jefe | 6.6333988 | 0.0000000001185021900 |
# Preparamos el dataframe para los resultados de las pruebas Chi-cuadrado
resultados_chi_cuadrado <- data.frame(Variable = character(),
Chi_cuadrado = numeric(),
P_valor = numeric(),
stringsAsFactors = FALSE)
# Análisis bivariado para variables categóricas y almacenamiento de resultados
for(variable in variables_categoricas) {
tabla <- table(datos[[variable]], datos$Rotación)
resultado <- tryCatch({
chisq.test(tabla)
}, warning = function(w) {
return(list(statistic = NA, p.value = NA))
}, error = function(e) {
return(list(statistic = NA, p.value = NA))
})
resultados_chi_cuadrado <- rbind(resultados_chi_cuadrado,
data.frame(Variable = variable,
Chi_cuadrado = resultado$statistic,
P_valor = resultado$p.value))
}
# Creamos flextable para las variables categóricas
flextable_cat <- flextable(resultados_chi_cuadrado)%>%
theme_vanilla() %>%
autofit()
# Mostramos el flextable de las variables categóricas
flextable_cat
Variable | Chi_cuadrado | P_valor |
|---|---|---|
Viaje de Negocios | 24.1824136857 | 0.000005608614476449930737363 |
Departamento | 10.7960073224 | 0.004525606574479631993845885 |
Educación | 3.0739613982 | 0.545525337656594833113388177 |
Campo_Educación | ||
Satisfacción_Ambiental | 22.5038814358 | 0.000051234689062894279171917 |
Genero | 1.1169671242 | 0.290572449028911661272900346 |
Cargo | 86.1902536767 | 0.000000000000002752481638051 |
Satisfación_Laboral | 17.5050770103 | 0.000556300451038755847110728 |
Estado_Civil | 46.1636765408 | 0.000000000094555110603408226 |
Horas_Extra | 87.5642936583 | 0.000000000000000000008158424 |
Rendimiento_Laboral | 0.0001547544 | 0.990074546593457616161515489 |
Equilibrio_Trabajo_Vida | 16.3250970916 | 0.000972569884534883223603519 |
Observaciones:
Al analizar las variables numéricas y categóricas proporcionadas y su impacto basado en los valores estadísticos y de p-valor, se identifican las variables con mayor influencia de acuerdo con sus resultados en los análisis bivariados.
Variables numéricas con mayor impacto
Ingreso_Mensual: Con un estadístico de 7.4826216 y un p-valor extremadamente bajo de aproximadamente 0.000000000000443, esta variable muestra una diferencia significativa en los grupos comparados. La magnitud del estadístico indica una fuerte asociación con la variable de interés, haciéndola la más impactante entre las variables numéricas.
Años_Experiencia: Presenta un estadístico de 7.0191785 y un p-valor de aproximadamente 0.0000000000116, lo que indica una asociación significativa. La relevancia de los años de experiencia es evidente en la medida en que impacta significativamente en los resultados del análisis bivariado.
Antigüedad_Cargo: Con un estadístico de 6.8470792 y un p-valor de aproximadamente 0.0000000000319, esta variable muestra un fuerte impacto. La antigüedad en el cargo se correlaciona significativamente con la variable de interés, destacando su importancia en el análisis.
Variables categóricas con mayor impacto
Horas_Extra: Esta variable presenta el chi cuadrado más alto con 87.5642936583 y un p-valor extremadamente bajo, prácticamente cero, lo que indica una fuerte asociación y diferencias significativas entre grupos. La cantidad de horas extras trabajadas tiene una influencia predominante en el análisis.
Cargo: Con un chi cuadrado de 86.1902536767 y un p-valor de aproximadamente 0.00000000000000275, muestra una diferencia significativa y una fuerte asociación con la variable de interés. El cargo ocupado por los empleados tiene un impacto significativo.
Estado_Civil: Con un chi cuadrado de 46.1636765408 y un p-valor de aproximadamente 0.0000000000946, esta variable demuestra ser significativamente influyente. El estado civil de los empleados se asocia fuertemente con la variable de interés, marcando una diferencia notable en el análisis.
Las variables numéricas y categóricas seleccionadas se destacan por sus bajos p-valores y altos estadísticos o chi cuadrado, indicando una fuerte evidencia de asociación y diferencias significativas entre los grupos comparados. Estos resultados sugieren que el Ingreso Mensual, los Años de Experiencia, y la Antigüedad en el Cargo, junto con las Horas Extra, el Cargo, y el Estado Civil, son determinantes clave que tienen un impacto considerable en el análisis bivariado realizado.
Nota:
En el modelo de predicción de rotación laboral se seleccionaron variables basadas en hipótesis cuidadosamente consideradas. El análisis estadístico ha conducido a mantener algunas de las variables del las hipotesis (Punto desarrollado con el titulo de este documento: Seleccion de variables para la generacion del modelo) y a excluir otras, ajustando el modelo a las que mostraron un impacto significativo. Se mantuvieron el Ingreso Mensual y los Años de Experiencia, dada su fuerte asociación estadística con la rotación. A su vez, se agregaron la Antigüedad en el Cargo y las Horas Extra, que emergieron como variables influyentes en el análisis bivariado. Por otro lado, variables como Departamento, Satisfacción ambiental, edad y Satisfacción laboral, pese a las hipótesis iniciales sobre su influencia, no se incluyeron en el modelo final debido a su menor relevancia estadística en los análisis preliminares.
Este refinamiento del modelo refleja un enfoque pragmático, centrado en la evidencia empírica y en la significancia estadística, lo que conlleva a un análisis más preciso.
Se prentaran visualizaciones de los datos basadas en selecciones estadísticas (valores estadísticos y de p-valor) para entender mejor los factores que afectan la rotación laboral. Estos gráficos centrarán la atención en las características del empleo y personales que, según los análisis previos, muestran una influencia significativa en la probabilidad de que un empleado deje la empresa.
boxplot( rotacion_num_a_categoricas$Ingreso_Mensual ~ rotacion_num_a_categoricas$Rotación,
xlab = "Rotación", ylab = "Ingreso mensual")
boxplot( rotacion_num_a_categoricas$Años_Experiencia ~ rotacion_num_a_categoricas$Rotación,
xlab = "Rotación", ylab = "Años de experiencia")
boxplot( rotacion_num_a_categoricas$Antigüedad_Cargo ~ rotacion_num_a_categoricas$Rotación,
xlab = "Rotación", ylab = "Antigüedad Cargo")
ggplot(rotacion_num_a_categoricas, aes(x=Horas_Extra, fill=Rotación)) +
geom_bar(position="dodge") +
labs(x="Horas Extra", y="Conteo", title="Horas Extra por Estado de Rotación") +
scale_fill_brewer(palette="Pastel1") +
theme_minimal()
ggplot(rotacion_num_a_categoricas, aes(x=Cargo, fill=Rotación)) +
geom_bar(position="dodge") +
labs(x="Cargo", y="Conteo", title="Cargo por Estado de Rotación") +
scale_fill_brewer(palette="Pastel2") +
theme_minimal() +
theme(axis.text.x = element_text(angle=45, hjust=1, vjust=1))
ggplot(rotacion_num_a_categoricas, aes(x=Estado_Civil, fill=Rotación)) +
geom_bar(position="dodge") +
labs(x="Estado_Civil", y="Conteo", title="Estado_Civil por Estado de Rotación") +
scale_fill_brewer(palette="Pastel1") +
theme_minimal()
Observaciones:
Las gráficas analizadas ofrecen una comparación visual entre varios factores y la rotación de empleados en una empresa. Los diagramas de caja muestran que hay una mediana de ingreso mensual ligeramente superior entre los empleados que no han rotado, lo que sugiere una correlación entre mayores ingresos y estabilidad laboral. Además, los empleados con mayor antigüedad en el cargo y más años de experiencia también tienden a mostrar una menor rotación, indicando que la experiencia y la estabilidad en un puesto pueden contribuir a la retención.
Por otro lado, los gráficos de barras revelan que realizar horas extra se asocia con una mayor rotación, lo que implica que las largas horas de trabajo podrían estar impulsando a los empleados a dejar la empresa. En cuanto a los cargos, ciertos roles demuestran ser más propensos a la rotación, sugiriendo que algunos puestos pueden ser intrínsecamente menos estables o menos satisfactorios. Finalmente, el estado civil muestra que los empleados solteros rotan con más frecuencia que los casados, lo que podría reflejar diferencias en las necesidades o deseos de estabilidad entre estos grupos.
Este análisis sugiere que la empresa podría beneficiarse de estrategias dirigidas a mejorar los salarios, ofrecer trayectorias profesionales más claras, equilibrar las demandas de trabajo y considerar las diferencias individuales, como el estado civil, para reducir la rotación de empleados.
Se convertirán las variables Rotación y Horas_Extra a factores para un análisis adecuado. Luego, se dividirá el conjunto de datos en entrenamiento y prueba, con el 70% para entrenamiento y el 30% para prueba, usando set.seed(100) para reproducibilidad. Esta partición asegura una validación efectiva del modelo en datos no vistos. Se revisarán las dimensiones de ambos subconjuntos para confirmar la distribución equitativa de los datos.
rotacion_num_a_categoricas$Rotación <- as.factor(rotacion_num_a_categoricas$Rotación)
rotacion_num_a_categoricas$Horas_Extra <- as.factor(rotacion_num_a_categoricas$Horas_Extra)
set.seed(100)
particion <- createDataPartition(y=rotacion_num_a_categoricas$Rotación,
p = 0.7,
list = FALSE)
r_train <- rotacion_num_a_categoricas[particion,]
r_test <- rotacion_num_a_categoricas[-particion,]
#distribuciones de la particion
dim(r_train)
## [1] 1030 24
dim(r_test)
## [1] 440 24
La división del conjunto de datos ha resultado en la creación de dos subconjuntos diferenciados para fines de análisis: un conjunto de entrenamiento y un conjunto de prueba. El conjunto de entrenamiento, que se utilizará para el desarrollo de modelo (regresión logística), cuenta con 1030 observaciones, abarcando 24 variables en total. En contraste, el conjunto de prueba, destinado a evaluar la capacidad predictiva y el rendimiento de los modelos en datos no vistos previamente, está compuesto por 440 observaciones, manteniendo igualmente 24 variables. Esta estructura de partición subraya el compromiso con un entrenamiento exhaustivo y una evaluación rigurosa de los modelos, facilitando una balance adecuado entre la optimización del modelo y su capacidad de generalización.
Se ha desarrollado un modelo de regresión logística para analizar y predecir la rotación laboral, utilizando como variables predictoras el Ingreso Mensual, los Años de Experiencia, la Antigüedad en el Cargo, la realización de Horas Extra, el Cargo, y el Estado Civil.
m_rotacion_train <- glm(Rotación~Ingreso_Mensual+Años_Experiencia+Antigüedad_Cargo+Horas_Extra+Cargo+Estado_Civil,data = r_train, family = binomial(link = "logit"))
summary(m_rotacion_train)
##
## Call:
## glm(formula = Rotación ~ Ingreso_Mensual + Años_Experiencia +
## Antigüedad_Cargo + Horas_Extra + Cargo + Estado_Civil, family = binomial(link = "logit"),
## data = r_train)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.236e+00 1.109e+00 -2.917 0.003529 **
## Ingreso_Mensual -2.382e-05 6.323e-05 -0.377 0.706399
## Años_Experiencia 1.186e-03 2.225e-02 0.053 0.957481
## Antigüedad_Cargo -1.192e-01 3.610e-02 -3.302 0.000960 ***
## Horas_ExtraSi 1.611e+00 1.957e-01 8.233 < 2e-16 ***
## CargoDirector_Manofactura 2.998e-01 9.542e-01 0.314 0.753350
## CargoEjecutivo_Ventas 1.425e+00 8.928e-01 1.596 0.110460
## CargoGerente 6.455e-01 8.795e-01 0.734 0.462988
## CargoInvestigador_Cientifico 1.003e+00 1.012e+00 0.991 0.321514
## CargoRecursos_Humanos 1.604e+00 1.072e+00 1.496 0.134775
## CargoRepresentante_Salud 4.041e-01 9.637e-01 0.419 0.674941
## CargoRepresentante_Ventas 2.587e+00 1.049e+00 2.466 0.013658 *
## CargoTecnico_Laboratorio 1.739e+00 1.009e+00 1.723 0.084813 .
## Estado_CivilDivorciado -2.625e-01 2.782e-01 -0.944 0.345389
## Estado_CivilSoltero 7.292e-01 2.072e-01 3.519 0.000434 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 909.69 on 1029 degrees of freedom
## Residual deviance: 739.37 on 1015 degrees of freedom
## AIC: 769.37
##
## Number of Fisher Scoring iterations: 6
m_rotacion_test <- glm(Rotación~Ingreso_Mensual+Años_Experiencia+Antigüedad_Cargo+Horas_Extra+Cargo+Estado_Civil,data = r_test,family = "binomial")
summary(m_rotacion_train)
##
## Call:
## glm(formula = Rotación ~ Ingreso_Mensual + Años_Experiencia +
## Antigüedad_Cargo + Horas_Extra + Cargo + Estado_Civil, family = binomial(link = "logit"),
## data = r_train)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.236e+00 1.109e+00 -2.917 0.003529 **
## Ingreso_Mensual -2.382e-05 6.323e-05 -0.377 0.706399
## Años_Experiencia 1.186e-03 2.225e-02 0.053 0.957481
## Antigüedad_Cargo -1.192e-01 3.610e-02 -3.302 0.000960 ***
## Horas_ExtraSi 1.611e+00 1.957e-01 8.233 < 2e-16 ***
## CargoDirector_Manofactura 2.998e-01 9.542e-01 0.314 0.753350
## CargoEjecutivo_Ventas 1.425e+00 8.928e-01 1.596 0.110460
## CargoGerente 6.455e-01 8.795e-01 0.734 0.462988
## CargoInvestigador_Cientifico 1.003e+00 1.012e+00 0.991 0.321514
## CargoRecursos_Humanos 1.604e+00 1.072e+00 1.496 0.134775
## CargoRepresentante_Salud 4.041e-01 9.637e-01 0.419 0.674941
## CargoRepresentante_Ventas 2.587e+00 1.049e+00 2.466 0.013658 *
## CargoTecnico_Laboratorio 1.739e+00 1.009e+00 1.723 0.084813 .
## Estado_CivilDivorciado -2.625e-01 2.782e-01 -0.944 0.345389
## Estado_CivilSoltero 7.292e-01 2.072e-01 3.519 0.000434 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 909.69 on 1029 degrees of freedom
## Residual deviance: 739.37 on 1015 degrees of freedom
## AIC: 769.37
##
## Number of Fisher Scoring iterations: 6
Observaciones:
El análisis detallado del modelo de regresión logística que predice la rotación laboral se basa en una selección de variables, incluyendo el Ingreso Mensual, los Años de Experiencia, la Antigüedad en el Cargo, si se trabajan Horas Extra, el Cargo desempeñado y el Estado Civil del empleado. Este modelo, ajustado usando la familia binomial con un enlace logit, permite examinar la influencia de cada una de estas variables sobre la probabilidad de que un empleado decida dejar su puesto de trabajo.
Los resultados obtenidos arrojan varios aspectos claves:
Explicado de otra manera, este número negativo en términos de log-odds sugiere que, previo a la inclusión de cualquier variable adicional, la probabilidad básica de rotación es relativamente baja. Cuanto más negativo es el valor del intercepto, menor es la probabilidad de inicio de que el evento en cuestión (en este caso, la rotación) se presente. Dicho valor actúa como el “punto de partida” del modelo, al cual se le añaden o sustraen los efectos de otras variables para calcular la probabilidad final de rotación.
Variables significativas:
Horas Extra (‘Si’): Con un coeficiente de 1.611 y altamente significativo, sugiere un fuerte efecto positivo sobre la probabilidad de rotación, indicando que los empleados que trabajan horas extra tienen una mayor tendencia a dejar la empresa.
Antigüedad en el Cargo: Presenta un efecto negativo significativo (-0.119), lo que implica que a mayor antigüedad en el cargo, menor es la probabilidad de rotación.
Cargo (‘Representante de Ventas’): Muestra un efecto positivo (2.587) con significancia al nivel 0.05, sugiriendo que los representantes de ventas tienen una mayor probabilidad de rotación en comparación con el grupo de referencia.
Estado Civil (‘Soltero’): Exhibe un coeficiente positivo (0.729) y significativo, indicando que los empleados solteros tienen una mayor probabilidad de rotar que sus contrapartes casadas o divorciadas.
Variables no significativas: Variables como el Ingreso Mensual y los Años de Experiencia no mostraron una asociación significativa con la rotación, lo que sugiere que su efecto directo podría ser mínimo o que otros factores no considerados en el modelo pueden estar influyendo en la relación.
Medidas de ajuste: La reducción en la devianza residual desde 909.69 a 739.37 al incluir las variables predictoras indica un mejor ajuste del modelo respecto al modelo nulo. El AIC de 769.37 ofrece un balance entre la complejidad del modelo y su capacidad predictiva, sugiriendo una adecuada selección de variables.
Importancia de la significancia estadística: Los códigos de significancia (’’ para p < 0.001, ’’ para p < 0.01, ’’ para p < 0.05 y ‘.’ para p < 0.1) resaltan la relevancia de ciertas variables en el modelo. La significancia estadística de variables como las Horas Extra y el Estado Civil ‘Soltero’ resalta su importancia en la comprensión de la rotación laboral.
Se realiza una predicción sobre el conjunto de datos utilizando el modelo de regresión logística, con el objetivo de estimar la probabilidad de rotación de los empleados.
pp1 = predict.glm(m_rotacion_test, newdata = rotacion_num_a_categoricas, type = "response")
resp = table(rotacion_num_a_categoricas$Rotación, ifelse(pp1 >0.2, 1, 0), dnn = c("observaciones", "predicciones"))
resp
## predicciones
## observaciones 0 1
## No 944 289
## Si 88 149
Observaciones:
El resultado de la tabla muestra cómo se comparan las predicciones del modelo de rotación con los datos reales observados. A continuación, se detalla el significado de los valores:
Significado de los valores:
Conclusión:
En resumen, aunque el modelo tiene un buen rendimiento al predecir a los empleados que no rotan, tiene espacio para mejorar en la identificación precisa de los que sí rotan, especialmente en reducir tanto los falsos positivos como los falsos negativos para ser más equilibrado.
##Grafica ROC/AUC
Se empleará el modelo para realizar predicciones sobre la probabilidad de rotación de los empleados, basándose en variables como el Cargo, Estado Civil, Años de Experiencia, si realizan Horas Extra, el Ingreso Mensual y la Antigüedad en el Cargo. Estas predicciones serán evaluadas utilizando una curva ROC, que mide la capacidad del modelo para distinguir entre empleados que dejan la empresa y los que se quedan, a través de la sensibilidad (verdaderos positivos) contra la especificidad (verdaderos negativos). Finalmente, se graficará la curva ROC, resaltando el área bajo la curva (AUC) y el mejor umbral.
prediccion= predict(m_rotacion_test,list( Cargo=rotacion_num_a_categoricas$Cargo, Estado_Civil=rotacion_num_a_categoricas$Estado_Civil, Años_Experiencia = rotacion_num_a_categoricas$Años_Experiencia, Horas_Extra = rotacion_num_a_categoricas$Horas_Extra, Ingreso_Mensual = rotacion_num_a_categoricas$Ingreso_Mensual, Antigüedad_Cargo = rotacion_num_a_categoricas$Antigüedad_Cargo ),type = "response")
ROC_resp= roc(rotacion_num_a_categoricas$Rotación~prediccion, percent = T, ci=T)
## Setting levels: control = No, case = Si
## Setting direction: controls < cases
plot(ROC_resp,print.auc=T,print.thres = "best",col="green"
,xlab = "Specificity", ylab = "Sensitivity")
Observaciones:
La gráfica que se presenta es una curva ROC, que actúa como un termómetro para medir la eficacia de un modelo predictivo en términos simples. La curva traza dos conceptos: la tasa de aciertos, llamada sensibilidad, y la tasa de verdaderos rechazos, conocida como especificidad. En esta imagen, la curva verde indica cómo el modelo predice los eventos, con un punto clave donde la sensibilidad es del 75.2% y la especificidad del 65%. Este punto sugiere que el modelo tiene una habilidad moderada para distinguir entre los empleados que se quedarán o se irán.
El área bajo la curva, o AUC, es del 76.5%, un indicador que resume el rendimiento general del modelo: cuanto más cerca esté el valor de 100%, mejor es el modelo. Aquí, un AUC de aproximadamente 76% muestra un modelo con una capacidad razonablemente buena para hacer predicciones correctas.
Se identificará el punto más efectivo para determinar las predicciones, obteniendo el umbral óptimo desde la curva ROC previamente generada. Este valor crítico permitirá clasificar las observaciones con la mayor precisión posible.
coords(ROC_resp, "best", ret="threshold")
## threshold
## 1 0.1922811
Observaciones:
Complementando el análisis de la curva ROC y el umbral óptimo identificado de 0.1922811, este valor de corte específico ofrece una perspectiva adicional sobre cómo el modelo equilibra la detección de empleados propensos a la rotación frente a aquellos que probablemente se quedarán.
El uso de este umbral en la práctica implica que se considerará que los empleados con una probabilidad de rotación mayor a 0.1922811 están en riesgo de dejar la organización. Esta decisión basada en el umbral afecta directamente tanto la capacidad del modelo para identificar a los empleados en riesgo (reflejada en una sensibilidad del 75.2%) como su precisión para confirmar cuándo los empleados no están en riesgo (especificidad del 65%).
Con las variables seleccionadas basadas en los valores estadísticos y p-valores, se concluye que la estrategia para disminuir la rotación en la empresa debería centrarse en los siguientes factores clave:
Ingreso mensual: Los años de experiencia, la antigüedad en el cargo y las horas extra. para abordar el ingreso mensual, la empresa podría considerar revisar sus estructuras de compensación y asegurarse de que están alineadas con las expectativas del mercado y las contribuciones de los empleados.
Años de experiencia: Se sugiere implementar programas que fomenten la retención a largo plazo, ofreciendo trayectorias de carrera claras y oportunidades de desarrollo profesional que mantengan a los empleados comprometidos y motivados.
Antigüedad en el cargo: Se recomienda promover políticas de reconocimiento y progreso interno, incentivando la lealtad y el crecimiento dentro de la empresa.
Horas extra: Como indicador significativo, requieren un enfoque en la gestión de la carga de trabajo para asegurar un equilibrio entre la vida laboral y personal. al poner en práctica estas estrategias, la empresa podría no solo disminuir la rotación sino también mejorar el ambiente laboral y la satisfacción general de los empleados.