En una organización, se busca comprender y prever los factores que influyen en la rotación de empleados entre distintos cargos. La empresa ha recopilado datos históricos sobre el empleo de sus trabajadores, incluyendo variables como la antigüedad en el cargo actual, el nivel de satisfacción laboral, el salario actual, edad y otros factores relevantes. La gerencia planea desarrollar un modelo de regresión logística que permita estimar la probabilidad de que un empleado cambie de cargo en el próximo período y determinar cuales factores indicen en mayor proporción a 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 tranquilo. La predicción de la probabilidad de rotación de empleados ayudará a la empresa a tomar decisiones estratégicas informadas y a mantener un equipo de trabajo comprometido y satisfecho en sus roles actuales.
A continuación se desarrollan los pasos que la gerencia ha propuesto para el análisis:
Se importa la base de datos utilizada en la presente actividad.
## Rows: 1,470
## Columns: 24
## $ Rotación <chr> "Si", "No", "Si", "No", "No", "No", "No", …
## $ Edad <dbl> 41, 49, 37, 33, 27, 32, 59, 30, 38, 36, 35…
## $ `Viaje de Negocios` <chr> "Raramente", "Frecuentemente", "Raramente"…
## $ Departamento <chr> "Ventas", "IyD", "IyD", "IyD", "IyD", "IyD…
## $ Distancia_Casa <dbl> 1, 8, 2, 3, 2, 2, 3, 24, 23, 27, 16, 15, 2…
## $ Educación <dbl> 2, 1, 2, 4, 1, 2, 3, 1, 3, 3, 3, 2, 1, 2, …
## $ Campo_Educación <chr> "Ciencias", "Ciencias", "Otra", "Ciencias"…
## $ Satisfacción_Ambiental <dbl> 2, 3, 4, 4, 1, 4, 3, 4, 4, 3, 1, 4, 1, 2, …
## $ Genero <chr> "F", "M", "M", "F", "M", "M", "F", "M", "M…
## $ Cargo <chr> "Ejecutivo_Ventas", "Investigador_Cientifi…
## $ Satisfación_Laboral <dbl> 4, 2, 3, 3, 2, 4, 1, 3, 3, 3, 2, 3, 3, 4, …
## $ Estado_Civil <chr> "Soltero", "Casado", "Soltero", "Casado", …
## $ Ingreso_Mensual <dbl> 5993, 5130, 2090, 2909, 3468, 3068, 2670, …
## $ Trabajos_Anteriores <dbl> 8, 1, 6, 1, 9, 0, 4, 1, 0, 6, 0, 0, 1, 0, …
## $ Horas_Extra <chr> "Si", "No", "Si", "Si", "No", "No", "Si", …
## $ Porcentaje_aumento_salarial <dbl> 11, 23, 15, 11, 12, 13, 20, 22, 21, 13, 13…
## $ Rendimiento_Laboral <dbl> 3, 4, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, …
## $ Años_Experiencia <dbl> 8, 10, 7, 8, 6, 8, 12, 1, 10, 17, 6, 10, 5…
## $ Capacitaciones <dbl> 0, 3, 3, 3, 3, 2, 3, 2, 2, 3, 5, 3, 1, 2, …
## $ Equilibrio_Trabajo_Vida <dbl> 1, 3, 3, 3, 3, 2, 2, 3, 3, 2, 3, 3, 2, 3, …
## $ Antigüedad <dbl> 6, 10, 0, 8, 2, 7, 1, 1, 9, 7, 5, 9, 5, 2,…
## $ Antigüedad_Cargo <dbl> 4, 7, 0, 7, 2, 7, 0, 0, 7, 7, 4, 5, 2, 2, …
## $ Años_ultima_promoción <dbl> 0, 1, 0, 3, 2, 3, 0, 0, 1, 7, 0, 0, 4, 1, …
## $ Años_acargo_con_mismo_jefe <dbl> 5, 7, 0, 0, 2, 6, 0, 0, 8, 7, 3, 8, 3, 2, …
## tibble [1,470 × 24] (S3: tbl_df/tbl/data.frame)
## $ Rotación : chr [1:1470] "Si" "No" "Si" "No" ...
## $ Edad : num [1:1470] 41 49 37 33 27 32 59 30 38 36 ...
## $ Viaje de Negocios : chr [1:1470] "Raramente" "Frecuentemente" "Raramente" "Frecuentemente" ...
## $ Departamento : chr [1:1470] "Ventas" "IyD" "IyD" "IyD" ...
## $ Distancia_Casa : num [1:1470] 1 8 2 3 2 2 3 24 23 27 ...
## $ Educación : num [1:1470] 2 1 2 4 1 2 3 1 3 3 ...
## $ Campo_Educación : chr [1:1470] "Ciencias" "Ciencias" "Otra" "Ciencias" ...
## $ Satisfacción_Ambiental : num [1:1470] 2 3 4 4 1 4 3 4 4 3 ...
## $ Genero : chr [1:1470] "F" "M" "M" "F" ...
## $ Cargo : chr [1:1470] "Ejecutivo_Ventas" "Investigador_Cientifico" "Tecnico_Laboratorio" "Investigador_Cientifico" ...
## $ Satisfación_Laboral : num [1:1470] 4 2 3 3 2 4 1 3 3 3 ...
## $ Estado_Civil : chr [1:1470] "Soltero" "Casado" "Soltero" "Casado" ...
## $ Ingreso_Mensual : num [1:1470] 5993 5130 2090 2909 3468 ...
## $ Trabajos_Anteriores : num [1:1470] 8 1 6 1 9 0 4 1 0 6 ...
## $ Horas_Extra : chr [1:1470] "Si" "No" "Si" "Si" ...
## $ Porcentaje_aumento_salarial: num [1:1470] 11 23 15 11 12 13 20 22 21 13 ...
## $ Rendimiento_Laboral : num [1:1470] 3 4 3 3 3 3 4 4 4 3 ...
## $ Años_Experiencia : num [1:1470] 8 10 7 8 6 8 12 1 10 17 ...
## $ Capacitaciones : num [1:1470] 0 3 3 3 3 2 3 2 2 3 ...
## $ Equilibrio_Trabajo_Vida : num [1:1470] 1 3 3 3 3 2 2 3 3 2 ...
## $ Antigüedad : num [1:1470] 6 10 0 8 2 7 1 1 9 7 ...
## $ Antigüedad_Cargo : num [1:1470] 4 7 0 7 2 7 0 0 7 7 ...
## $ Años_ultima_promoción : num [1:1470] 0 1 0 3 2 3 0 0 1 7 ...
## $ Años_acargo_con_mismo_jefe : num [1:1470] 5 7 0 0 2 6 0 0 8 7 ...
La base de datos rotacion cuenta con 1470 registros y 24 variables, las cuales estan conformadas de la siguiente forma:
Variables categóricas:
Rotación
Viaje de Negocios
Departamento Campo Educación
Género
Cargo
Estado Civil
Horas Extra
Variables numéricas:
Edad
Distancia Casa
Educación
Satisfacción Ambiental
Satisfacción Laboral
Ingreso Mensual
Trabajos Anteriores
Porcentaje de Aumento Salarial
Rendimiento Laboral
Años de Experiencia
Capacitaciones
Equilibrio Trabajo-Vida
Antigüedad
Antigüedad en el Cargo
Años desde la Última Promoción
Años al Cargo con el Mismo Jefe
Se presentan las estadísticas descriptivas para cada una de las variables númericas.
## Rotación Edad Viaje de Negocios Departamento
## Length:1470 Min. :18.00 Length:1470 Length:1470
## Class :character 1st Qu.:30.00 Class :character Class :character
## Mode :character Median :36.00 Mode :character Mode :character
## Mean :36.92
## 3rd Qu.:43.00
## Max. :60.00
## Distancia_Casa Educación Campo_Educación Satisfacción_Ambiental
## Min. : 1.000 Min. :1.000 Length:1470 Min. :1.000
## 1st Qu.: 2.000 1st Qu.:2.000 Class :character 1st Qu.:2.000
## Median : 7.000 Median :3.000 Mode :character Median :3.000
## Mean : 9.193 Mean :2.913 Mean :2.722
## 3rd Qu.:14.000 3rd Qu.:4.000 3rd Qu.:4.000
## Max. :29.000 Max. :5.000 Max. :4.000
## Genero Cargo Satisfación_Laboral Estado_Civil
## Length:1470 Length:1470 Min. :1.000 Length:1470
## Class :character Class :character 1st Qu.:2.000 Class :character
## Mode :character Mode :character Median :3.000 Mode :character
## Mean :2.729
## 3rd Qu.:4.000
## Max. :4.000
## Ingreso_Mensual Trabajos_Anteriores Horas_Extra
## Min. : 1009 Min. :0.000 Length:1470
## 1st Qu.: 2911 1st Qu.:1.000 Class :character
## Median : 4919 Median :2.000 Mode :character
## Mean : 6503 Mean :2.693
## 3rd Qu.: 8379 3rd Qu.:4.000
## Max. :19999 Max. :9.000
## Porcentaje_aumento_salarial Rendimiento_Laboral Años_Experiencia
## Min. :11.00 Min. :3.000 Min. : 0.00
## 1st Qu.:12.00 1st Qu.:3.000 1st Qu.: 6.00
## Median :14.00 Median :3.000 Median :10.00
## Mean :15.21 Mean :3.154 Mean :11.28
## 3rd Qu.:18.00 3rd Qu.:3.000 3rd Qu.:15.00
## Max. :25.00 Max. :4.000 Max. :40.00
## Capacitaciones Equilibrio_Trabajo_Vida Antigüedad Antigüedad_Cargo
## Min. :0.000 Min. :1.000 Min. : 0.000 Min. : 0.000
## 1st Qu.:2.000 1st Qu.:2.000 1st Qu.: 3.000 1st Qu.: 2.000
## Median :3.000 Median :3.000 Median : 5.000 Median : 3.000
## Mean :2.799 Mean :2.761 Mean : 7.008 Mean : 4.229
## 3rd Qu.:3.000 3rd Qu.:3.000 3rd Qu.: 9.000 3rd Qu.: 7.000
## Max. :6.000 Max. :4.000 Max. :40.000 Max. :18.000
## Años_ultima_promoción Años_acargo_con_mismo_jefe
## Min. : 0.000 Min. : 0.000
## 1st Qu.: 0.000 1st Qu.: 2.000
## Median : 1.000 Median : 3.000
## Mean : 2.188 Mean : 4.123
## 3rd Qu.: 3.000 3rd Qu.: 7.000
## Max. :15.000 Max. :17.000
A continución se verifica si la base de datos contiene datos faltantes.
# Cuento el número de valores N/A en cada variable de la variable vivienda.
rotacion %>%
summarise_all(list(~ sum(is.na(.))))Como se puede observar no hay datos faltantes en la data rotación.
Posteriormente, Selecciono 3 variables categóricas (distintas de rotación) y 3 variables cuantitativas, que se consideren estén relacionadas con la rotación. Nota: Debes justificar porque estas variables están relacionadas y que tipo de relación se espera entre ellas (Hipótesis).
A continuación selecciono 3 variables categoricas y 3 variables cuantitativas. Especificadas a continuación:
Variables Categoricas
Justificación: Considero que la variable departamento esta relacionada con la variable rotación porque el departamento en el que trabaja un empleado puede influir en su decisión de rotación, es posible que los empleados de ciertos departamentos tengan más oportunidades de crecimiento profesional o que experimenten diferentes niveles de satisfacción laboral debido a la naturaleza de las tareas o la cultura organizacional.
Hipótesis: Se espera que los empleados de ciertos departamentos, donde hay una alta competencia o demanda laboral, tengan una mayor propensión a rotar en busca de mejores oportunidades o condiciones de trabajo.
Justificación:Considero que la variable género esta relacionada con la variable rotación porque historicamente se ha estudiado como el genero puede afectar diversos aspectos del empleo.Se podría explorar si hay disparidades de género en términos de oportunidades o si ciertos géneros tienen una mayor propensión a buscar nuevas oportunidades laborales.
Hipótesis:Se cree que podría haber diferencias en la rotación entre géneros, con posibles factores como la discriminación de género, expectativas sociales o desigualdades en las oportunidades laborales que podrían influir en esta relación.
Justificación:Considero que la variable horas extra esta relacionada con la variable rotación porque las horas extra pueden ser indicativas de varios factores, como la carga de trabajo o la presión laboral. Se supone que aquellos que trabajan horas extra de manera regular pueden tener una mayor probabilidad de rotación debido al agotamiento o insatisfacción laboral.
Hipótesis: Se plantea que los empleados que trabajan más horas extra podrían tener una mayor probabilidad de rotación debido al agotamiento o falta de satisfacción laboral.
Variables númericas
Justificación:Considero que la variable edad esta relacionada con la variable rotación porque las oportunidades laborales a veces ecigen cierta experiencia que no tienen los jovenes, ademas puede influir la edad en la búsqueda de nuevas experiencias profesionales a lo largo de la carrera.
Hipótesis: Se plantea que los empleados más jóvenes podrían tener una mayor probabilidad de rotación debido a su búsqueda de nuevas experiencias. Por otro lado, los empleados más mayores podrían tener una menor probabilidad de rotación debido a su estabilidad laboral y compromiso con la empresa.
Justificación:Considero que la variable satisfacción laboral esta relacionada con la variable rotación porque los empleados insatisfechos podrían ser más propensos a buscar nuevas oportunidades laborales.
Hipótesis: Se espera que los empleados con niveles más bajos de satisfacción laboral tengan una mayor probabilidad de rotación. La falta de satisfacción puede impulsar a los empleados a buscar nuevas oportunidades que ofrezcan un ambiente laboral mejor.
Justificación:Considero que la variable años de experiencia esta relacionada con la variable rotación porque los empleados con más experiencia podrían tener un sentido de arraigo a la empresa o tener menos incentivos para buscar nuevas oportunidades laborales debido a su experiencia en el puesto actual.
Hipótesis: Se plantea que los empleados con más años de experiencia en la empresa tendrán una menor probabilidad de rotación. Esto podría deberse a un sentido de lealtad hacia la empresa, la comodidad en el puesto actual o la constumbre.
Realiza un análisis univariado (caracterización) de la información contenida en la base de datos rotacion. Nota: los indicadores o gráficos se usan dependiendo del tipo de variable (cuantitativas o cualitativas). Incluir interpretaciones de la variable rotacion.
#Creo una copia de la base de datos antes de inciar con el análisis univariado
data <- rotacion
data# Resumen de la variable "Departamento" en forma de tabla
Departamento_summary <- table(data$Departamento)
Departamento_summary##
## IyD RH Ventas
## 961 63 446
# Creación del gráfico de barras interactivo con plotly
plot_ly(data, x = ~Departamento, type = "histogram", marker = list(color = "#ADD8E6")) %>%
plotly::layout(title = "Distribución de Empleados por Departamento",
xaxis = list(title = "Departamento"),
yaxis = list(title = "Número de Empleados"))Este gráfico proporciona una representación visual de la distribución de empleados en diferentes departamentos, como se puede observar la empresa tiene 3 departamentos que son: IyD, RH, y Ventas. El departamento que tiene el mayor número de empleados es IyD con 961 empleados, seguido por Ventas con 446 empleados y luego RH con 61 empleados, para un total de 1470 empleados en la emnpresa.
# Resumen de la variable "Genero" en forma de tabla
genero_summary <- table(data$Genero)
genero_summary##
## F M
## 588 882
# Creación del gráfico de torta interactivo con plotly
plot_ly(data, labels = ~Genero, type = "pie", marker = list(colors = c("#FFC0CB", "#E6E6FA"))) %>%
plotly::layout(title = "Distribución de Género de los Empleados")Este gráfico proporciona una representación visual clara de la distribución de género de los empleados, mostrando la proporcion del número de empleados desagregado por femenino y masculino. Como se puede observar el 60% de los empleados son masculinos con (882) y el 40% son femeninos con (588) empleados.En total la empresa cuenta con 1470 empleados.
# Resumen de la variable "Horas_Extra" en forma de tabla
Horas_Extra_summary <- table(data$Horas_Extra)
Horas_Extra_summary##
## No Si
## 1054 416
# Creación del gráfico de torta interactivo con plotly para la variable "Horas_Extra"
plot_ly(data, labels = ~Horas_Extra, type = "pie", marker = list(colors = c("#ADD8E6", "#FFA500"))) %>%
plotly::layout(title = "Distribución de Horas Extra")Este gráfico proporciona una representación visual clara de la distribución de Horas Extra de los empleados, mostrando la proporcion del número de empleados que hacen horas extera y los que no hacen horas extra. Como se puede observar el 71.7% de los empleados no hacen horas extra (1054) y el 28.3% son si hacen horas extra (416) empleados.
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 18.00 30.00 36.00 36.92 43.00 60.00
# Creación del gráfico de barras interactivo con plotly
plot_ly(data, x = ~factor(Edad)) %>%
group_by(Edad) %>%
summarise(count = n()) %>%
add_trace(y = ~count, type = "bar", marker = list(color = "#ADD8E6")) %>%
plotly::layout(title = "Distribución de Edades", xaxis = list(title = "Edad"), yaxis = list(title = "Frecuencia"))Este gráfico muestra la distribución de edades. La edad que tienen mas empleados en la empresa es 35 años con un total de 78 empleados, la media se encuentra en la edad de 36 años, la edad minima es 18 años y la edad maxima 60 años.
# Resumen de la variable "Satisfacción laboral" en forma de tabla
Satisfación_Laboral_summary <- table(data$Satisfación_Laboral)
Satisfación_Laboral_summary##
## 1 2 3 4
## 289 280 442 459
library(plotly)
# Crear el gráfico de barras con separación entre las barras y color morado claro
plot_ly(data, x = ~Satisfación_Laboral, type = "histogram", marker = list(color = "rgba(153, 102, 255, 0.7)")) %>%
plotly::layout(title = "Distribución de Satisfacción Laboral",
xaxis = list(title = "Satisfacción Laboral"),
yaxis = list(title = "Frecuencia"),
bargap = 0.1) # Ajusta el valor según el espacio deseado entre las barrasComo se observa en le histograma la satisfacción laboral se mide en una escala del 1 al 4, la barra más alta corresponde a la satisfacción laboral con una puntuación de 4, seguida por la puntuación de 3, mientras que una minoría tiene una satisfacción laboral baja (puntuaciones 1 y 2).
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 6.00 10.00 11.28 15.00 40.00
El valor minimo de la variable Años_especiencia es 0, el 25% de los datos tienen una experiencia igual o menor a 6 años, el valor medio o la mediana de la variable es 10 años de experiencia, la media de la variable es aproximadamente 11.28 años de experienci, por su parte, el 75% de los datos tienen una experiencia igual o menor a 15 año y finalizando se observa que el valor máximo de la variable es 40 años de experiencia.
# Crear el histograma
hist(data$Años_Experiencia,
main = "Distribución de Años de Experiencia",
xlab = "Años de Experiencia",
ylab = "Frecuencia",
col = "skyblue", # Color de las barras
border = "white" # Color del borde de las barras
)El histograma muestra la distribución de años de experiencia, la mayoría de las personas parecen tener entre 5 y 10 años de experiencia, como se evidencia por la barra más alta, y se puede observar que hay una disminución gradual en la frecuencia a medida que aumentan los años de experiencia, lo cual es esperado ya que es menos común tener una gran cantidad de años de experiencia.
Realiza un análisis de bivariado en donde la variable respuesta sea rotacion codificada de la siguiente manera (y=1 es si rotación, y=0 es no rotación). Con base en estos resultados identifique cuales son las variables determinantes de la rotación e interpretar el signo del coeficiente estimado. Compare estos resultados con la hipotesis planteada en el punto 2.
# Convertir la variable Rotación a factor
data$Rotación <- as.factor(data$Rotación)
# Ajustar el modelo de regresión logística
modelo_Departamento <- glm(Rotación ~ Departamento, data = data, family = "binomial")
# Resumen del modelo
summary(modelo_Departamento)##
## Call:
## glm(formula = Rotación ~ Departamento, family = "binomial",
## data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.82866 0.09342 -19.576 < 2e-16 ***
## DepartamentoRH 0.38175 0.33417 1.142 0.25330
## DepartamentoVentas 0.48116 0.14974 3.213 0.00131 **
## ---
## 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: 1288.1 on 1467 degrees of freedom
## AIC: 1294.1
##
## Number of Fisher Scoring iterations: 4
De los resultados obtenidos podemos concluir que la variable departamento no es un predictor fuerte dado que sus valores son cercanos a 0.
# Convertir la variable Rotación a factor
data$Rotación <- as.factor(data$Rotación)
# Ajustar el modelo de regresión logística
modelo_Genero <- glm(Rotación ~ Genero, data = data, family = "binomial")
# Resumen del modelo
summary(modelo_Genero)##
## Call:
## glm(formula = Rotación ~ Genero, family = "binomial", data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.7507 0.1161 -15.073 <2e-16 ***
## GeneroM 0.1656 0.1467 1.128 0.259
## ---
## 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: 1297.3 on 1468 degrees of freedom
## AIC: 1301.3
##
## Number of Fisher Scoring iterations: 4
De los resultados obtenidos podemos concluir que la variable genero no es un predictor fuerte dado que sus valores son cercanos a 0.
# Convertir la variable Rotación a factor
data$Rotación <- as.factor(data$Rotación)
# Ajustar el modelo de regresión logística
modelo_Horas_Extra <- glm(Rotación ~ Horas_Extra, data = data, family = "binomial")
# Resumen del modelo
summary(modelo_Horas_Extra)##
## Call:
## glm(formula = Rotación ~ Horas_Extra, family = "binomial", data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.1496 0.1007 -21.338 <2e-16 ***
## Horas_ExtraSi 1.3274 0.1466 9.056 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1298.6 on 1469 degrees of freedom
## Residual deviance: 1217.2 on 1468 degrees of freedom
## AIC: 1221.2
##
## Number of Fisher Scoring iterations: 4
De los resultados obtenidos podemos concluir que la variable Horas_extra si es un predictor fuerte dado que sus valores son cercanos a 1 cuando hacen horas extras, esto se puede deber al agotamiento por demasiado trabajo.
# Convertir la variable Rotación a factor
data$Rotación <- as.factor(data$Rotación)
# Ajustar el modelo de regresión logística
modelo_Edad <- glm(Rotación ~ Edad, data = data, family = "binomial")
# Resumen del modelo
summary(modelo_Edad)##
## Call:
## glm(formula = Rotación ~ Edad, family = "binomial", data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.20637 0.30597 0.674 0.5
## Edad -0.05225 0.00870 -6.006 1.9e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1298.6 on 1469 degrees of freedom
## Residual deviance: 1259.1 on 1468 degrees of freedom
## AIC: 1263.1
##
## Number of Fisher Scoring iterations: 4
De los resultados obtenidos podemos concluir que la variable edad tiene un coeficiente negativo significativo, a mayor edad, menor rotación.
# Convertir la variable Rotación a factor
data$Rotación <- as.factor(data$Rotación)
# Ajustar el modelo de regresión logística
modelo_Satisfación_Laboral <- glm(Rotación ~ Satisfación_Laboral, data = data, family = "binomial")
# Resumen del modelo
summary(modelo_Satisfación_Laboral)##
## Call:
## glm(formula = Rotación ~ Satisfación_Laboral, family = "binomial",
## data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.9903 0.1757 -5.635 1.75e-08 ***
## Satisfación_Laboral -0.2510 0.0637 -3.940 8.16e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1298.6 on 1469 degrees of freedom
## Residual deviance: 1283.1 on 1468 degrees of freedom
## AIC: 1287.1
##
## Number of Fisher Scoring iterations: 4
De los resultados obtenidos podemos concluir que la variable satisfacción laboral tiene un coeficiente negativo significativo, a mayor satisfacción laboral, menor rotación.
# Convertir la variable Rotación a factor
data$Rotación <- as.factor(data$Rotación)
# Ajustar el modelo de regresión logística
modelo_Años_Experiencia <- glm(Rotación ~ Años_Experiencia, data = data, family = "binomial")
# Resumen del modelo
summary(modelo_Años_Experiencia)##
## Call:
## glm(formula = Rotación ~ Años_Experiencia, family = "binomial",
## data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.88306 0.12744 -6.929 4.23e-12 ***
## Años_Experiencia -0.07773 0.01217 -6.387 1.69e-10 ***
## ---
## 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: 1248.1 on 1468 degrees of freedom
## AIC: 1252.1
##
## Number of Fisher Scoring iterations: 5
De los resultados obtenidos podemos concluir que la variable años de experiencia tiene un coeficiente negativo significativo, a mas años de experiencia, menor rotación.
Realiza la estimación de un modelo de regresión logístico en el cual la variable respuesta es rotacion (y=1 es si rotación, y=0 es no rotación) y las covariables las 6 seleccionadas en el punto 1. Interprete los coeficientes del modelo y la significancia de los parámetros.
# Definir la variable respuesta y las covariables
y <- as.factor(data$Rotación)
covariates <- c("Departamento", "Genero", "Horas_Extra", "Edad", "Satisfación_Laboral", "Años_Experiencia")
X <- data[, covariates]
# Estimar el modelo de regresión logística
modelo_logistico <- glm(y ~ ., data = X, family = "binomial")
# Mostrar un resumen del modelo
summary(modelo_logistico)##
## Call:
## glm(formula = y ~ ., family = "binomial", data = X)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.17276 0.39817 -0.434 0.664376
## DepartamentoRH 0.45217 0.35929 1.258 0.208212
## DepartamentoVentas 0.54961 0.16104 3.413 0.000643 ***
## GeneroM 0.25229 0.15833 1.593 0.111055
## Horas_ExtraSi 1.49853 0.15600 9.606 < 2e-16 ***
## Edad -0.02634 0.01157 -2.277 0.022788 *
## Satisfación_Laboral -0.32223 0.06812 -4.730 2.24e-06 ***
## Años_Experiencia -0.06334 0.01594 -3.974 7.08e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1298.6 on 1469 degrees of freedom
## Residual deviance: 1121.4 on 1462 degrees of freedom
## AIC: 1137.4
##
## Number of Fisher Scoring iterations: 5
Interpretación de los coeficientes del modelo y de la significancia de los parámetros teniendo en cuenta las 6 variables elegidas en el punto 1:
Intercepto: El intercepto estimado indica el logaritmo de la razon de momios (odds ratio) de rotación cuando todas las demás variables son cero. En este caso, el intercepto no es directamente interpretable por si solo.
DepartamentoRH y DepartamentoVentas: Los empleados en el departamento RH y Ventas tienen una mayor probabilidad de rotación en comparación con otros departamentos, ya que los coeficientes (0.45217, 0.54961) son positivos y significativos.
GeneroM: Los empleados masculinos tienen una mayor probabilidad de rotación en comparación con los empleados femeninos, ya que el coeficiente (0.25229) es positivo y significativo.
Horas_ExtraSi: Los empleados que hacen horas extras tienen una mayor probabilidad de rotación en comparación con los que no las hacen, ya que el coeficiente (1.49853) es positivo y significativo.
Edad: A medida que la edad aumenta, la probabilidad de rotación disminuye, ya que el coeficiente (-0.02634) es negativo y significativo.
Satisfacción_Laboral y Años_Experiencia: Tanto la satisfacción laboral como los años de experiencia tienen un impacto negativo en la probabilidad de rotación, ya que los coeficientes (-0.32223, -0.06334) son negativos y significativos.
Evaluar el poder predictivo del modelo con base en la curva ROC y el AUC.
A continuación se evalua elpoder predictivo del modelo ya que esto es crucial para entender su capacidad para hacer predicciones precisas sobre datos nuevos o no vistos. Este proceso se realizara por medio de la curva ROC (Receiver Operating Characteristic) y el área bajo la curva (AUC).
# Obtener las probabilidades predichas del modelo
y_pred <- predict(modelo_logistico, type = "response")
# Calcular la curva ROC
roc_obj <- roc(data$Rotación, y_pred)## Setting levels: control = No, case = Si
## Setting direction: controls < cases
# Plotear la curva ROC
plot(roc_obj, main = "Curva ROC del Modelo Logístico", col = "blue", lwd = 2)## AUC: 0.7582463
El AUC es de aproximadamente 0.758, lo que sugiere que el modelo tiene un rendimiento moderado para discriminar entre las clases positiva y negativ, por su parte, la curva ROC evidencia que el modelo tiene una alta sensibilidad y especificidad en general, lo que sugiere que es capaz de clasificar correctamente la mayoría de los casos. Sin embargo, hay un punto donde la curva se inclina hacia la esquina superior izquierda, lo que indica un buen equilibrio entre sensibilidad y especificidad en ese punto específico del umbral de discriminación.
El modelo parece tener un beuen rendimeinto en la clasificación de las instancias positivas y negativa
Realiza una predicción la probabilidad de que un individuo (hipotético) rote y defina un corte para decidir si se debe intervenir a este empleado o no (posible estrategia para motivar al empleado).
empleado_predicción <- data.frame(
`Departamento` = "Ventas",
`Genero` = "F",
`Horas_Extra` = "Si",
`Edad` = 25,
`Satisfación_Laboral` = 2,
`Años_Experiencia` = 5
)
predicción <- predict(modelo_logistico, newdata = empleado_predicción, type = "response")
umbral <- 0.3 # 30% de probabilidad como umbral
# Evalúa la probabilidad calculada comparándola con el umbral
if (predicción > umbral) {
cat("Se debe intervenir al empleado para motivarlo.")
} else {
cat("No se requiere intervención en este momento.")
}## Se debe intervenir al empleado para motivarlo.
Para motivar a este empleado y evitar que rote, podríamos implementar varias estrategias como se evidencia a continuación:
Ambiente laboral positivo: Fomentar un ambiente laboral positivo en el departamento de Ventas y de apoyo donde el empleado se sienta valorado, respetado y parte importante del equipo. Esto puede lograrse promoviendo la comunicación abierta y brindando retroalimentación constructiva.
Flexibilidad laboral: Ofrecer flexibilidad en los horarios de trabajo y disminuyendo el número de horas extra que tiene este empleado a Cargo.
Asignación de responsabilidades y empoderamiento: Dar al empleado la oportunidad de asumir mayores responsabilidades y tomar decisiones dentro de su área de trabajo puede aumentar su sentido de pertenencia y compromiso con la empresa y permitir sentir empoderamiento a esta mujer.
En las conclusiones adicione una discución sobre cuál sería la estrategia para disminuir la rotación en la empresa (con base en las variables que resultaron significativas en el punto 3).
Basandome en los resultados obtenidos en el punto 3, puedo hacer las siguientes conclusiones con el fin de disminuir la rotación en la empresa:
Departamento: Aunque el coeficiente para el departamento es cercano a cero, lo que indica una influencia relativamente débil en la rotación, considero que es importante tener en cuenta las diferencias entre departamentos al desarrollar estrategias de retención identificando posibles áreas de mejora en términos de satisfacción laboral y condiciones de trabajo.
Género: Si bien el género no parece ser un predictor fuerte de rotación, es de vital importancia mantener un enfoque en la igualdad de género en el lugar de trabajo para garantizar que todos los empleados reciban el mismo trato y oportunidades.
Horas Extra: La variable de horas extras muestra un coeficiente cercano a 1, lo que sugiere que las horas extras están asociadas con un mayor riesgo de rotación. Para abordar esto, la empresa puede considerar revisar las políticas de gestión del tiempo y carga de trabajo buscando reducir el agotamiento y el estrés.
Edad, Satisfacción Laboral y Años de Experiencia: Estas variables muestran coeficientes negativos significativos, lo que indica que a medida que aumenta la edad, la satisfacción laboral y los años de experiencia, la probabilidad de rotación disminuye. Esto resalta la importancia de invertir en el desarrollo profesional y el bienestar de los empleados a lo largo de su carrera para fomentar la retención.