PRIMER PUNTO
INTRODUCCIÓN
En el campo de la gestión del capital humano, la analítica de
personas es esencial para identificar los elementos que impactan en la
rotación de empleados. Mantener al personal es uno de los principales
retos para las empresas, ya que una alta tasa de rotación puede implicar
costos elevados y perjudicar la estabilidad operacional.
Un posible factor que influye en la decisión de un colaborador de
dejar la organización es la carga de trabajo, particularmente las horas
extras. Se sospecha que quienes realizan horas extras tienen mayor
tendencia a renunciar en comparación con quienes no lo hacen. Esto se
debe a que el exceso de trabajo puede provocar fatiga física y
emocional, alterando el equilibrio entre vida personal y laboral, lo que
reduciría la satisfacción y, eventualmente, impulsaría la decisión de
abandonar la empresa.
DESCRIPCIÓN DE LOS DATOS
Se ha seleccionado un conjunto de datos que contiene información
relevante sobre los empleados de una organización. Estas variables
permitirán evaluar diversos factores que pueden influir en la decisión
de los empleados de permanecer o abandonar la empresa.
Departamento: Indica el área o departamento en el
que trabaja cada empleado. Esta variable es relevante, ya que algunos
departamentos pueden tener mayores exigencias laborales o condiciones de
trabajo diferentes, lo que podría afectar la rotación.
Estado Civil: Clasifica a los empleados según su
estado civil (por ejemplo, soltero, casado, divorciado). El estado civil
puede influir en la decisión de rotación, ya que las personas con
responsabilidades familiares pueden valorar más la estabilidad y el
equilibrio entre la vida personal y laboral.
Satisfacción Laboral: Mide el nivel de satisfacción
del empleado con su trabajo. Un nivel bajo de satisfacción podría estar
relacionado con una mayor intención de rotación, mientras que una mayor
satisfacción podría indicar estabilidad laboral.
Ingreso Mensual: Representa el salario mensual del
empleado. Un ingreso bajo podría incentivar la búsqueda de mejores
oportunidades laborales, mientras que un salario competitivo podría
fomentar la permanencia en la empresa.
Antigüedad: Indica el tiempo que el empleado ha
trabajado en la empresa (en años). La antigüedad puede influir en la
rotación, ya que los empleados con mayor tiempo en la organización
pueden tener un mayor sentido de compromiso, mientras que los nuevos
empleados podrían estar más propensos a buscar otras oportunidades
EXPLORACIÓN DE LAS VARIABLES
El análisis exploratorio de los datos ayuda a detectar patrones
clave relacionados con la rotación de personal. Uno de los resultados
más relevantes es que los empleados con menor antigüedad, generalmente
más jóvenes, tienden a renunciar con mayor frecuencia.
Esta tendencia se intensifica cuando se presentan ciertas
condiciones laborales y personales. Por ejemplo, quienes trabajan en el
área de Ventas, un departamento con altos niveles de estrés y exigencia,
muestran una mayor probabilidad de rotación. Además, los empleados que
frecuentemente laboran horas extra, están solteros, tienen bajos niveles
de satisfacción laboral (≤2 en una escala de evaluación) y perciben
salarios inferiores a $3,000 al mes son aún más propensos a dejar la
empresa.
Estos resultados indican que la rotación no es causada por un solo
factor, sino por la combinación de varios elementos. La presión laboral,
los ingresos insuficientes y la falta de apoyo emocional o familiar
podrían estar generando un desgaste acumulativo, impulsando a estos
trabajadores a buscar alternativas en otras organizaciones.
Dado que la rotación afecta principalmente a empleados jóvenes en
condiciones laborales desfavorables, es crucial desarrollar estrategias
de retención específicas para este grupo. Iniciativas como mentorías
para talento joven, ajustes en la distribución de cargas de trabajo,
reevaluación salarial y programas de bienestar laboral podrían ser
determinantes para reducir la rotación y promover un entorno de trabajo
más estable y atractivo.
SEGUNDO PUNTO
Realizar un análisis univariado (caracterización). Nota: Los
indicadores o gráficos se usan dependiendo del tipo de variable (cuanti
o cuali). Incluir interpretaciones de la rotación.
library(readxl)
Parcial_estadistica <- read_excel("Parcial estadistica.xlsx")
View(Parcial_estadistica)
Departamento (Variable Cualitativa)
# GRAFICO 1 - DEPARTAMENTO
# Frecuencias absolutas y relativas
table(Parcial_estadistica$Departamento)
##
## IyD RH Ventas
## 961 63 446
prop.table(table(Parcial_estadistica$Departamento)) * 100
##
## IyD RH Ventas
## 65.374150 4.285714 30.340136
# Gráfico de barras
barplot(table(Parcial_estadistica$Departamento),
main = "Distribución por Departamento",
xlab = "Departamento",
ylab = "Frecuencia",
col = "skyblue")

# GRAFICA 2 - ESTADO CIVIL
# Frecuencias
table(Parcial_estadistica$Estado_civil)
##
## Casado Divorciado Soltero
## 673 327 470
prop.table(table(Parcial_estadistica$Estado_civil)) * 100
##
## Casado Divorciado Soltero
## 45.78231 22.24490 31.97279
# Gráfico de barras
barplot(table(Parcial_estadistica$Estado_civil),
main = "Distribución por Estado Civil",
xlab = "Estado Civil",
ylab = "Frecuencia",
col = "lightgreen")

#GRAFICA 3 - HORAS EXTRA
# Frecuencias
table(Parcial_estadistica$Horas_Extra)
##
## No Si
## 1054 416
prop.table(table(Parcial_estadistica$Horas_Extra)) * 100
##
## No Si
## 71.70068 28.29932
# Gráfico de barras
barplot(table(Parcial_estadistica$Horas_Extra),
main = "Realización de Horas Extra",
xlab = "Horas Extra",
ylab = "Frecuencia",
col = "orange")

# GRAFICO 4 - SATISFACCION LABORAL
# Estadísticas descriptivas
summary(Parcial_estadistica$Satisfaccion_Laboral)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 2.000 3.000 2.729 4.000 4.000
sd(Parcial_estadistica$Satisfaccion_Laboral, na.rm = TRUE) # Evitar problemas con valores NA
## [1] 1.102846
# Gráfico de barras
barplot(table(Parcial_estadistica$Satisfaccion_Laboral),
main = "Realización de Satisfaccion laboral",
xlab = "Nivel de satisfacción",
ylab = "Frecuencia",
col = "red")

# GRAFICO 5 - INGRESO MENSUAL
# Estadísticas descriptivas
summary(Parcial_estadistica$Ingreso_Mensual)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1009 2911 4919 6503 8379 19999
sd(Parcial_estadistica$Ingreso_Mensual)
## [1] 4707.957
# Histograma
hist(Parcial_estadistica$Ingreso_Mensual,
main = "Distribución de Ingresos Mensuales",
xlab = "Ingreso Mensual",
ylab = "Frecuencia",
col = "lightblue")

#GRAFICO 6 - ANTIGUEDAD
# Estadísticas descriptivas
summary(Parcial_estadistica$Antiguedad)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 3.000 5.000 7.008 9.000 40.000
sd(Parcial_estadistica$Antiguedad)
## [1] 6.126525
# Histograma
hist(Parcial_estadistica$Antiguedad,
main = "Distribución de Antigüedad",
xlab = "Años de Antigüedad",
ylab = "Frecuencia",
col = "lightgreen")

INTERPRETACIONES DEL 2 PUNTO
GRAFICO 1 - DEPARTAMENTO
El departamento de Investigación y Desarrollo (IyD) cuenta con la
mayor cantidad de empleados, lo que podría estar relacionado con una
mayor rotación si no existen suficientes oportunidades de crecimiento.
Además, en este tipo de áreas, la presión por la innovación y la
posibilidad de mejores ofertas laborales pueden incentivar la movilidad
del talento. Por otro lado, el departamento de Ventas, que también tiene
una presencia significativa, suele experimentar una alta rotación debido
a la presión por cumplir metas y la dependencia de incentivos. Si los
empleados de este sector no perciben estabilidad o buenas condiciones
laborales, es probable que busquen oportunidades en otras empresas, por
ultimo el departamento de recursos humanos puede presentar una menor
cantidad de rotaciones debido a la estabilidad asociada a sus puestos
aunque en algunos casos pueden depender mucho de las condiciones de su
entorno laboral y si estos no son favorables, optaran por buscar mejores
oportunidades en otras empresas.
GRAFICO 2 - ESTADO CIVIL
La distribución del personal según su estado civil muestra que la
mayoría de los empleados son casados, seguidos por los solteros y, en
menor proporción, los divorciados. Esta variable puede influir en la
rotación laboral, ya que las personas casadas suelen buscar mayor
estabilidad laboral debido a sus responsabilidades familiares, lo que
podría reducir su tendencia a cambiar de empleo con frecuencia. En
contraste, los empleados solteros podrían estar más dispuestos a aceptar
nuevas oportunidades laborales, ya que suelen tener mayor flexibilidad
para cambiar de trabajo o incluso de ciudad. Los divorciados, al
encontrarse en una etapa de reestructuración personal y económica,
podrían presentar comportamientos mixtos en cuanto a la rotación,
dependiendo de su situación financiera y estabilidad laboral.
GRAFICO 4 - SATISFACCION LABORAL
La distribución de empleados según su nivel de satisfacción laboral
indica que la mayoría tiene niveles de satisfacción medios y altos (3 y
4), mientras que una menor proporción reporta niveles bajos (1 y 2). La
satisfacción laboral es un factor clave en la rotación, ya que los
empleados insatisfechos suelen estar más propensos a buscar nuevas
oportunidades en otras empresas. En cambio, aquellos con mayor
satisfacción tienden a permanecer más tiempo en la organización, lo que
reduce la rotación y mejora la estabilidad del equipo. Por eso es
importante tener en cuenta algunos aspectos del entorno laboral para
todos los empleados ya que estos influyen mucho en su satisfaccion.
GRAFICO 5 - INGRESO MENSUAL
La distribución de ingresos mensuales muestra que la mayoría de los
empleados gana entre 0 y 5,000, con una disminución progresiva en la
frecuencia a medida que aumentan los salarios. Esta desigualdad en la
distribución salarial puede influir significativamente en la rotación
laboral, ya que los empleados con ingresos más bajos pueden estar más
propensos a buscar nuevas oportunidades que les ofrezcan mejores
condiciones económicas. Por otro lado, aquellos con salarios más altos
suelen tener mayor estabilidad y compromiso con la empresa, lo que
reduce su intención de cambiar de trabajo.
GRAFICO 6 - ANTIGUEDAD
La distribución de antigüedad en la empresa revela que la mayoría de
los empleados tiene pocos años de servicio, con una alta concentración
en los primeros cinco años y una disminución gradual a medida que
aumenta la permanencia. Esto sugiere que la rotación laboral es más
elevada en los primeros años, posiblemente debido a la falta de
oportunidades de desarrollo, condiciones laborales poco atractivas o un
proceso de adaptación en el que muchos trabajadores optan por cambiar de
empleo. En contraste, aquellos con mayor antigüedad muestran una
tendencia a permanecer en la organización, lo que indica que la
estabilidad laboral se consolida con el tiempo.
TERCER PUNTO
Realizar un análisis bivariado (siempre contra la rotación). Nota:
Los indicadores y gráficos se usan dependiendo del tipo de variable
(cuanti VS cuali, cuali VS cuali). Comparar los resultados con la
hipótesis planteada inicialmente y determinar si los datos apoyan o no
la hipótesis
GRAFICOS CUALITATIVA VS CUANTITATIVA SEGUN SU
ROTACION
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
#GRAFICO 1 - DEPARTAMENTO VS INGRESO MENSUAL EN CONTRA DE LA ROTACION
ggplot(Parcial_estadistica, aes(x = Departamento, y = Ingreso_Mensual, fill = Rotacion)) + geom_boxplot() + theme_minimal() + ggtitle("Departamento vs Ingreso Mensual segun su Rotación")

#GRAFICO 2 - ESTADO CIVIL VS SATISFACCION LABORAL EN CONTRA DE LA ROTACION
ggplot(Parcial_estadistica, aes(x = Estado_civil, y = Satisfaccion_Laboral, fill = Rotacion)) + geom_boxplot() + theme_minimal() + ggtitle("Estado civil vs Satisfaccion laboral según su Rotación")

#GRAFICO 3 - ESTADO CIVIL VS INGRESO MENSUAL EN CONTRA DE LA ROTACION
ggplot(Parcial_estadistica, aes(x = Estado_civil, y = Ingreso_Mensual, fill = Rotacion)) + geom_boxplot() + theme_minimal() + ggtitle("Estado civil vs Ingreso Mensual según su Rotación")

TABLAS PARA MEJOR INTERPRETACION DE GRAFICOS DE CUALITATIVA
VS CUANTITATIVA EN CONTRA DE LA ROTACION
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
tabla_resumen <- Parcial_estadistica %>%
group_by(Departamento, Rotacion) %>%
summarise(
Promedio = mean(Ingreso_Mensual, na.rm = TRUE),
Mediana = median(Ingreso_Mensual, na.rm = TRUE),
Min = min(Ingreso_Mensual, na.rm = TRUE),
Max = max(Ingreso_Mensual, na.rm = TRUE),
Desviacion = sd(Ingreso_Mensual, na.rm = TRUE),
Conteo = n(),
.groups = "drop" # <- Esto elimina el agrupamiento
)
# Mostrar tabla
print(tabla_resumen)
## # A tibble: 6 × 8
## Departamento Rotacion Promedio Mediana Min Max Desviacion Conteo
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
## 1 IyD No 6630. 4708 1051 19999 5010. 828
## 2 IyD Si 4108. 2759 1009 19859 3393. 133
## 3 RH No 7346. 4936 2064 19717 6077. 51
## 4 RH Si 3716. 2652. 1555 10482 3064. 12
## 5 Ventas No 7232. 6074. 1052 19847 4084. 354
## 6 Ventas Si 5908. 5314 1081 19845 3799. 92
library(dplyr)
# Crear tabla con estadísticas descriptivas
tabla_resumen <- Parcial_estadistica %>%
group_by(Estado_civil, Rotacion) %>%
summarise(
Promedio_Satisfaccion = mean(Satisfaccion_Laboral, na.rm = TRUE),
Mediana_Satisfaccion = median(Satisfaccion_Laboral, na.rm = TRUE),
Min_Satisfaccion = min(Satisfaccion_Laboral, na.rm = TRUE),
Max_Satisfaccion = max(Satisfaccion_Laboral, na.rm = TRUE),
Desviacion_Satisfaccion = sd(Satisfaccion_Laboral, na.rm = TRUE),
Conteo = n(),
.groups = "drop"
)
# Mostrar tabla
print(tabla_resumen)
## # A tibble: 6 × 8
## Estado_civil Rotacion Promedio_Satisfaccion Mediana_Satisfaccion
## <chr> <chr> <dbl> <dbl>
## 1 Casado No 2.75 3
## 2 Casado Si 2.51 3
## 3 Divorciado No 2.71 3
## 4 Divorciado Si 2.58 3
## 5 Soltero No 2.89 3
## 6 Soltero Si 2.41 2
## # ℹ 4 more variables: Min_Satisfaccion <dbl>, Max_Satisfaccion <dbl>,
## # Desviacion_Satisfaccion <dbl>, Conteo <int>
INTERPRETACION DE CADA GRAFICO CUALITATIVA VS CUANTITATIVA
SEGUN SU ROTACION
DEPARTAMENTO VS INGRESO MENSUAL
El gráfico y la tabla indican que los empleados que rotan tienden a
tener ingresos mensuales más bajos en comparación con aquellos que
permanecen en la empresa, independientemente del departamento. La
diferencia de ingresos es más marcada en el departamento de IyD, donde
la mediana de ingresos de quienes rotan es considerablemente menor que
la de quienes permanecen. En RH y Ventas, aunque la diferencia persiste,
es menos pronunciada. Esto sugiere que mejorar los salarios,
especialmente en los niveles más bajos, podría ser una estrategia
efectiva para reducir la rotación, particularmente en IyD.
ESTADO CIVIL VS SATISFACCION LABORAL
El gráfico y la tabla muestran la relación entre el estado civil, la
satisfacción laboral y la rotación. Se observa que, en promedio, los
empleados que no rotan tienen una mayor satisfacción laboral en
comparación con aquellos que sí lo hacen, independientemente de su
estado civil. Sin embargo, los empleados solteros presentan la mayor
brecha de satisfacción entre quienes permanecen en la empresa y quienes
la abandonan, con un promedio de satisfacción de 2.89 para los que se
quedan y 2.40 para los que rotan. Los empleados casados y divorciados
también muestran esta diferencia, aunque en menor medida. Además, la
mediana de satisfacción es la misma en todos los casos (3), pero los
valores mínimos de satisfacción reflejan que hay empleados con niveles
muy bajos (1) en todos los grupos. Esto sugiere que la insatisfacción
laboral es un factor determinante en la rotación, y que mejorar la
percepción del ambiente de trabajo y las condiciones laborales podría
ayudar a reducir la rotación, especialmente entre los empleados
solteros
ESTADO CIVIL VS INGRESO MENSUAL
El gráfico y la tabla muestran que los empleados que rotan en la
empresa tienen, en promedio, menores ingresos mensuales en comparación
con aquellos que permanecen, independientemente de su estado civil. Sin
embargo, la diferencia es más marcada en los empleados casados y
divorciados, donde la mediana de ingresos de quienes rotan es
significativamente menor. En los empleados solteros, aunque la brecha
persiste, la variabilidad de los ingresos es menor. Esto sugiere que los
empleados con mayores responsabilidades económicas pueden verse más
afectados por bajos salarios, lo que incrementa su rotación. Para
reducir la rotación, sería clave mejorar los salarios y brindar
incentivos económicos que favorezcan la estabilidad financiera de los
empleados.
GRAFICOS CUALITATIVA VS CUALITATIVA
#GRAFICO DEPARTAMENTO VS HORAS EXTRA EN CONTRA DE LA ROTACION
ggplot(Parcial_estadistica, aes(x = Departamento, fill = Horas_Extra)) +
geom_bar(position = "fill") +
facet_wrap(~ Rotacion) +
theme_minimal() +
ggtitle("Departamento vs Horas Extras según Rotación") +
ylab("Frecuencia")

#GRAFCIO DEPARTAMENTO VS ESTADO CIVIL EN CONTRA DE LA ROTACION
ggplot(Parcial_estadistica, aes(x = Departamento, fill = Estado_civil)) +
geom_bar(position = "fill") +
facet_wrap(~ Rotacion) +
theme_minimal() +
ggtitle("Departamento vs Estado civil según Rotación") +
ylab("Frecuencia")

TABLAS PARA MEJOR INTERPRETACION DE GRAFICOS DE CUALITATIVA
VS CUALITATIVA EN CONTRA DE LA ROTACION
library(dplyr)
# Crear tabla de frecuencias
tabla_resumen <- Parcial_estadistica %>%
group_by(Departamento, Horas_Extra, Rotacion) %>%
summarise(Conteo = n(), .groups = "drop")
# Mostrar tabla
print(tabla_resumen)
## # A tibble: 12 × 4
## Departamento Horas_Extra Rotacion Conteo
## <chr> <chr> <chr> <int>
## 1 IyD No No 631
## 2 IyD No Si 59
## 3 IyD Si No 197
## 4 IyD Si Si 74
## 5 RH No No 39
## 6 RH No Si 7
## 7 RH Si No 12
## 8 RH Si Si 5
## 9 Ventas No No 274
## 10 Ventas No Si 44
## 11 Ventas Si No 80
## 12 Ventas Si Si 48
library(dplyr)
# Crear tabla de frecuencias
tabla_resumen <- Parcial_estadistica %>%
group_by(Departamento, Estado_civil, Rotacion) %>%
summarise(Conteo = n(), .groups = "drop")
# Mostrar tabla
print(tabla_resumen)
## # A tibble: 18 × 4
## Departamento Estado_civil Rotacion Conteo
## <chr> <chr> <chr> <int>
## 1 IyD Casado No 384
## 2 IyD Casado Si 49
## 3 IyD Divorciado No 206
## 4 IyD Divorciado Si 18
## 5 IyD Soltero No 238
## 6 IyD Soltero Si 66
## 7 RH Casado No 28
## 8 RH Casado Si 6
## 9 RH Divorciado No 11
## 10 RH Divorciado Si 5
## 11 RH Soltero No 12
## 12 RH Soltero Si 1
## 13 Ventas Casado No 177
## 14 Ventas Casado Si 29
## 15 Ventas Divorciado No 77
## 16 Ventas Divorciado Si 10
## 17 Ventas Soltero No 100
## 18 Ventas Soltero Si 53
INTERPRETACION DE CADA GRAFICO CUALITATIVA VS CUALITATIVA
SEGUN SU ROTACION
El gráfico y la tabla muestran la relación entre las horas extras y
la rotación en distintos departamentos. Se observa que en los
departamentos de IyD y RH, la mayoría de los empleados no realizan horas
extras, y quienes las hacen no tienden tanto en la rotación. En cambio,
en el departamento de Ventas, un porcentaje significativo de empleados
que realizan horas extras termina rotando. Esto sugiere que en Ventas,
las horas extras podrían estar asociadas a una mayor sobrecarga laboral,
lo que incrementa la rotación. Para mitigar este problema, se recomienda
evaluar la carga de trabajo y establecer mejores condiciones para
quienes realizan horas extras, evitando que se convierta en un factor de
insatisfacción y abandono del puesto.
DEPARTAMENTO VS ESTADO CIVIL SEGUN LA ROTACION
El gráfico y la tabla muestran la relación entre el estado civil y
la rotación en los distintos departamentos. Se observa que en los tres
departamentos (IyD, RH y Ventas), la mayoría de los empleados que
permanecen en la empresa están casados, mientras que los solteros y
divorciados presentan una mayor proporción de rotación. En IyD, por
ejemplo, 49 empleados casados han rotado frente a 66 solteros y 18
divorciados. En Ventas, la rotación es más evidente en los solteros (53
empleados) en comparación con los casados (29) y los divorciados (10).
Esto sugiere que los empleados solteros pueden estar más propensos a
cambiar de trabajo, posiblemente debido a una menor estabilidad familiar
o una mayor disposición a buscar nuevas oportunidades.
CUARTO PUNTO
Otra estrategia es mejorar los beneficios, como seguros médicos,
bonos por desempeño o apoyo para el cuidado infantil, lo que puede ser
especialmente útil para empleados con familia. Además, fortalecer el
liderazgo mediante capacitaciones en gestión y comunicación puede
reducir la insatisfacción y fomentar un ambiente laboral positivo.
Reconocer el desempeño con incentivos como bonificaciones por
antigüedad y premios puede aumentar la lealtad de los empleados.
Asimismo, mejorar los procesos de selección de personal para asegurar
que los nuevos contratados se alineen con la cultura de la empresa puede
prevenir la rotación prematura.
Implementar encuestas de satisfacción laboral permite detectar
problemas a tiempo y tomar medidas correctivas antes de que los
empleados decidan irse. Finalmente, promover una cultura de inclusión y
diversidad fortalece el sentido de pertenencia y mejora el ambiente
laboral. Estas estrategias, en conjunto, pueden contribuir
significativamente a reducir la rotación y mejorar la estabilidad dentro
de la empresa.
QUINTO PUNTO
Elaborar un modelo predictive con base en las variables mas
importantes identificadas en el análisis bivariado
# Cargar paquetes necesarios
library(readxl) # Para leer archivos Excel
library(dplyr) # Para manipulación de datos
library(caret) # Para la matriz de confusión y métricas de desempeño
## Cargando paquete requerido: lattice
# Cargar la base de datos
Parcial_estadistica <- read_excel("Parcial estadistica.xlsx")
# Convertir las variables cualitativas en factores
Parcial_estadistica$Departamento <- as.factor(Parcial_estadistica$Departamento)
Parcial_estadistica$Estado_civil <- as.factor(Parcial_estadistica$Estado_civil)
Parcial_estadistica$Horas_Extra <- as.factor(Parcial_estadistica$Horas_Extra)
Parcial_estadistica$Rotacion <- as.factor(Parcial_estadistica$Rotacion) # Asegúrate de que 'Rotacion' sea un factor
# Ajustar el modelo de regresión logística
modelo_logistico <- glm(Rotacion ~ Departamento + Estado_civil + Horas_Extra +
Satisfaccion_Laboral + Ingreso_Mensual + Antiguedad,
data = Parcial_estadistica, family = binomial)
# Resumen del modelo
summary(modelo_logistico)
##
## Call:
## glm(formula = Rotacion ~ Departamento + Estado_civil + Horas_Extra +
## Satisfaccion_Laboral + Ingreso_Mensual + Antiguedad, family = binomial,
## data = Parcial_estadistica)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -9.741e-01 2.603e-01 -3.742 0.000183 ***
## DepartamentoRH 6.534e-01 3.586e-01 1.822 0.068415 .
## DepartamentoVentas 6.622e-01 1.671e-01 3.963 7.41e-05 ***
## Estado_civilDivorciado -3.608e-01 2.319e-01 -1.556 0.119721
## Estado_civilSoltero 8.832e-01 1.703e-01 5.186 2.15e-07 ***
## Horas_ExtraSi 1.520e+00 1.592e-01 9.548 < 2e-16 ***
## Satisfaccion_Laboral -3.272e-01 6.938e-02 -4.716 2.40e-06 ***
## Ingreso_Mensual -1.218e-04 2.628e-05 -4.633 3.60e-06 ***
## Antiguedad -3.913e-02 1.844e-02 -2.122 0.033821 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1298.6 on 1469 degrees of freedom
## Residual deviance: 1082.0 on 1461 degrees of freedom
## AIC: 1100
##
## Number of Fisher Scoring iterations: 5
- Satisfacción Laboral tiene un coeficiente
negativo significativo (-3.272), lo que sugiere que a medida que la
satisfacción laboral aumenta, la probabilidad de rotación disminuye
considerablemente.
- Ingreso Mensual también tiene un coeficiente
negativo significativo (-0.0001218), lo que implica que a mayor salario,
menor probabilidad de que el empleado renuncie.
- Antigüedad presenta un coeficiente negativo
significativo (-0.391), indicando que los empleados con mayor tiempo en
la empresa tienen menos probabilidades de rotar.
Por otro lado, las variables Departamento y
Estado Civil no muestran significancia estadística
clara en todas sus categorías, por lo que su impacto en la rotación no
es concluyente.
SEXTO PUNTO
Identifique un humbral de corte de probabilidad con base en los
datos para clasificar con el modelo y calcule la métrica de desempeño de
clasificación.
# Cargar paquetes necesarios
library(pROC)
## Type 'citation("pROC")' for a citation.
##
## Adjuntando el paquete: 'pROC'
## The following objects are masked from 'package:stats':
##
## cov, smooth, var
library(caret)
library(ggplot2)
# Obtener probabilidades de predicción
predicciones_prob <- predict(modelo_logistico, type = "response", newdata = Parcial_estadistica)
# Función para evaluar diferentes umbrales
evaluar_umbral <- function(umbral) {
# Convertir las probabilidades en predicciones binarias
predicciones_ajustadas <- ifelse(predicciones_prob > umbral, "Si", "No")
# Convertir a factor con los mismos niveles que la variable real
predicciones_ajustadas <- factor(predicciones_ajustadas, levels = c("No", "Si"))
Parcial_estadistica$Rotacion <- factor(Parcial_estadistica$Rotacion, levels = c("No", "Si"))
# Evaluar la matriz de confusión
confusion_matrix <- confusionMatrix(predicciones_ajustadas, Parcial_estadistica$Rotacion)
# Obtener métricas de desempeño
accuracy <- confusion_matrix$overall['Accuracy']
sensitivity <- confusion_matrix$byClass['Sensitivity']
specificity <- confusion_matrix$byClass['Specificity']
f1_score <- confusion_matrix$byClass['F1']
# Retornar los resultados en un data frame
return(data.frame(Umbral = umbral, Accuracy = accuracy, Sensitivity = sensitivity,
Specificity = specificity, F1_Score = f1_score))
}
# Definir una secuencia de umbrales desde 0.1 hasta 0.9
umbrales <- seq(0.1, 0.9, by = 0.05)
# Evaluar todos los umbrales y guardar los resultados
resultados <- do.call(rbind, lapply(umbrales, evaluar_umbral))
# Función para graficar cada métrica individualmente
graficar_metrica <- function(data, metrica, color, titulo) {
ggplot(data, aes(x = Umbral, y = get(metrica))) +
geom_line(color = color, size = 1) +
geom_point(color = color, size = 2) +
labs(title = titulo, x = "Umbral de clasificación", y = metrica) +
theme_minimal()
}
# Generar gráficos separados para cada métrica
grafico_accuracy <- graficar_metrica(resultados, "Accuracy", "blue", "Precisión (Accuracy) vs. Umbral")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
grafico_sensitivity <- graficar_metrica(resultados, "Sensitivity", "red", "Sensibilidad (Recall) vs. Umbral")
grafico_specificity <- graficar_metrica(resultados, "Specificity", "green", "Especificidad vs. Umbral")
grafico_f1_score <- graficar_metrica(resultados, "F1_Score", "purple", "F1-Score vs. Umbral")
# Mostrar los gráficos
print(grafico_accuracy)

print(grafico_sensitivity)

print(grafico_specificity)

print(grafico_f1_score)

# Mostrar los resultados numéricos
print(resultados)
## Umbral Accuracy Sensitivity Specificity F1_Score
## Accuracy 0.10 0.5666667 0.5141930 0.839662447 0.6656168
## Accuracy1 0.15 0.6911565 0.6796431 0.751054852 0.7868545
## Accuracy2 0.20 0.7693878 0.7907543 0.658227848 0.8519004
## Accuracy3 0.25 0.8088435 0.8588808 0.548523207 0.8828679
## Accuracy4 0.30 0.8272109 0.9026764 0.434599156 0.8975806
## Accuracy5 0.35 0.8374150 0.9261963 0.375527426 0.9052715
## Accuracy6 0.40 0.8557823 0.9602595 0.312236287 0.9178295
## Accuracy7 0.45 0.8564626 0.9740470 0.244725738 0.9192499
## Accuracy8 0.50 0.8551020 0.9837794 0.185654008 0.9192876
## Accuracy9 0.55 0.8530612 0.9910787 0.135021097 0.9187970
## Accuracy10 0.60 0.8530612 0.9967559 0.105485232 0.9192221
## Accuracy11 0.65 0.8462585 0.9975669 0.059071730 0.9158600
## Accuracy12 0.70 0.8421769 0.9983779 0.029535865 0.9138827
## Accuracy13 0.75 0.8394558 0.9991890 0.008438819 0.9125926
## Accuracy14 0.80 0.8380952 0.9991890 0.000000000 0.9119171
## Accuracy15 0.85 0.8387755 1.0000000 0.000000000 0.9123196
## Accuracy16 0.90 0.8387755 1.0000000 0.000000000 0.9123196
# Calcular el promedio de Accuracy, Sensitivity y Specificity
resultados$Promedio <- rowMeans(resultados[, c("Accuracy", "Sensitivity", "Specificity")])
# Encontrar el umbral con el mayor promedio
mejor_umbral <- resultados[which.max(resultados$Promedio), ]
# Imprimir el mejor umbral y su valor promedio
print(paste("El mejor umbral para el modelo logístico es:", round(mejor_umbral$Umbral, 4),
"con un promedio de métricas de:", round(mejor_umbral$Promedio, 4)))
## [1] "El mejor umbral para el modelo logístico es: 0.2 con un promedio de métricas de: 0.7395"
INTERPRETACION
El mejor umbral identificado en el modelo logístico representa el
punto óptimo en el que se logra el mejor equilibrio entre la precisión,
la sensibilidad y la especificidad al predecir la rotación de los
empleados. Este umbral es fundamental para validar nuestras hipótesis,
ya que nos indica en qué punto podemos distinguir de manera más efectiva
a los empleados que tienen una alta probabilidad de rotación de aquellos
que permanecerán en la empresa.
Si el umbral es muy bajo (0,3), el modelo prioriza la sensibilidad,
detectando la mayoría de los casos de rotación, pero con el riesgo de
clasificar erróneamente a empleados que realmente no rotarán. Por el
contrario, si el umbral es demasiado alto (0,7), el modelo se vuelve más
preciso, pero podría no identificar a empleados que efectivamente
dejarán la empresa. Al seleccionar el umbral óptimo, encontramos el
punto donde las variables explicativas, como la satisfacción laboral,
las horas extra y el ingreso mensual, tienen el mayor poder predictivo
sin comprometer la confiabilidad del modelo.
Este resultado confirma que las variables seleccionadas influyen en
la rotación y permite a la empresa tomar decisiones estratégicas para
mitigarla. Por ejemplo, si la baja satisfacción laboral y las largas
jornadas de trabajo son factores determinantes, la compañía podría
implementar programas de bienestar laboral y ajustar las cargas horarias
para mejorar la retención de talento
SEPTIMO PUNTO
ACTUACION
Para hacer la actuacion en los diferentes tipos los cuales son Alto
riesgo de rotacion, medio y bajo. Se utilizaran estos valores para
verificar los resultados
Rango Alto: X ≥7
Rango Medio: 0,3 ≤ X ≤ 0,6
Rango bajo: X ≤ 0,25
Alto riesgo:
- Departamento: RH
- Estado civil: Soltero
- Satisfaccion laboral:2
- Ingreso mensual: 3000
- Antiguedad: 3
- PROBABILIDAD DE ROTACION: 0,88
Medio riesgo:
- Departamento: Ventas
- Estado civil: Divorciado
- Satisfaccion laboral:3
- Ingreso mensual: 2300
- Antiguedad: 4
- PROBABILIDAD DE ROTACION: 0,35
Bajo riesgo:
- Departamento: IyD
- Estado civil: Casado
- Satisfaccion laboral:4
- Ingreso mensual: 3500
- Antiguedad: 15
- PROBABILIDAD DE ROTACION: 0,22
OCTAVO PUNTO
Discuta como podría este modelo predictivo ser útil para gestionar
el personal de la compañía.
# Cargar paquetes necesarios
library(rpart)
library(rpart.plot)
## Warning: package 'rpart.plot' was built under R version 4.4.3
library(caret)
library(dplyr)
library(readxl)
# 1. Cargar los datos
df <- read_excel("Parcial estadistica.xlsx")
# 2. Convertir variables categóricas a factores y limpiar espacios
df <- df %>% mutate(
Rotacion = as.factor(Rotacion),
Departamento = as.factor(trimws(Departamento)),
Estado_civil = as.factor(trimws(Estado_civil)),
Horas_Extra = as.factor(trimws(Horas_Extra))
)
# 3. Dividir los datos en entrenamiento y prueba
set.seed(123)
trainIndex <- createDataPartition(df$Rotacion, p = 0.7, list = FALSE)
df_train <- df[trainIndex, ]
df_test <- df[-trainIndex, ]
# 4. Entrenar el modelo
modelo <- rpart(Rotacion ~ Departamento + Estado_civil + Horas_Extra +
Satisfaccion_Laboral + Ingreso_Mensual + Antiguedad,
data = df_train, method = "class",
control = rpart.control(cp = 0.01))
# 5. Crear un nuevo dato de prueba
nuevo_dato <- data.frame(
Departamento = factor("IyD", levels = levels(df_train$Departamento)),
Estado_civil = factor("Casado", levels = levels(df_train$Estado_civil)),
Horas_Extra = factor("Si", levels = levels(df_train$Horas_Extra)),
Satisfaccion_Laboral = 4,
Ingreso_Mensual = 3500,
Antiguedad = 15
)
# 6. Predecir la probabilidad de rotación
probabilidades <- predict(modelo, nuevo_dato, type = "prob")
# 7. Asignar probabilidad si no es nula
nuevo_dato <- nuevo_dato %>% mutate(
Probabilidad = ifelse(!is.null(probabilidades) && !any(is.na(probabilidades)), probabilidades[,2], NA),
Prediccion = case_when(
Probabilidad >= 0.7 ~ "Alta",
Probabilidad >= 0.3 & Probabilidad < 0.7 ~ "Media",
Probabilidad >= 0.18 & Probabilidad < 0.3 ~ "Baja",
TRUE ~ "Fuera de rango"
)
)
# 8. Mostrar resultados
print(nuevo_dato)
## Departamento Estado_civil Horas_Extra Satisfaccion_Laboral Ingreso_Mensual
## 1 IyD Casado Si 4 3500
## Antiguedad Probabilidad Prediccion
## 1 15 0.2258065 Baja
# 9. Visualizar el árbol (opcional)
rpart.plot(modelo, type = 3, extra = 104, fallen.leaves = TRUE)

Este modelo predictivo es una herramienta valiosa para la gestión
del personal, ya que permite identificar a los empleados con mayor
riesgo de rotación y tomar decisiones estratégicas para mejorar la
retención. Al clasificar a los empleados en niveles de riesgo bajo,
medio y alto, la empresa puede anticiparse a posibles renuncias y
diseñar acciones específicas, como mejorar la satisfacción laboral,
ajustar los salarios o regular las horas extra. Además, el modelo
optimiza la planificación de recursos humanos, reduciendo costos
asociados a la rotación y permitiendo una contratación más eficiente. Su
implementación también facilita la creación de un sistema de alerta
temprana, ayudando a los gerentes a intervenir oportunamente antes de
que un empleado decida dejar la compañía. En conclusión, este modelo no
solo ayuda a prevenir la rotación, sino que también mejora la
estabilidad y productividad organizacional, promoviendo un ambiente
laboral más eficiente y sostenible. parafraseame esto