##1. Selección de variables
Seleccione 3 variables categóricas (distintas de rotación) y 3 variables cuantitativas, que se consideren estén relacionadas con la rotación.
Se espera que la Satisfacción laboral se relacione con la rotación debido a que un empleado con una satisfacción laboral baja buscara otras oportunidades laborales que llenen sus expectativas.
Se espera que el estado civil se relacione con la rotación debido a que un empleado soltero tomara decisiones más arriesgadas y no se preocupara tanto por la estabilidad o continuidad laboral.
Se espera que el Equilibrio Trabajo Vida se relacione con la rotación debido a que un empleado con un equilibrio trabajo vida bajo buscara otras oportunidades laborales que permitan mejorar sus condiciones de vida o disfrutar de su tiempo libre.
Se espera que el estado civil se relacione con la rotación debido a que un empleado joven tomara decisiones más arriesgadas y no se preocupara tanto por la estabilidad o continuidad laboral.
Se espera que la cantidad de Trabajos Anteriores se relacione con la rotación debido a que un empleado con muchos trabajos anteriores puede indicar que la rotación es costumbre en sus ámbito laboral.
Se espera que el Porcentaje Aumento Salarial se relacione con la rotación debido a que un empleado con porcentaje bajo de aumento salarial puede buscar otras oportunidades laborales que permitan mejorar sus condiciones económicas.
##2. Análisis Univariado
Realiza un análisis univariado (caracterización) de la información contenida en la base de datos rotación.
Para realizar el análisis univariado segmentaremos la base de datos en dos, una base cuantitativa y otra cualitativa.
Iniciando por la base cuantitativa:
# Cargar los datos de rotación
rot_cuantiativa <- rotacion[, c("Rotación", "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")]
# Crear un marco de datos vacío para resumir estadísticas
summary_df <- data.frame(
Variable = character(1),
Minimum = numeric(1),
Q1 = numeric(1),
Median = numeric(1),
Mean = numeric(1),
Q3 = numeric(1),
Maximum = numeric(1)
)
# Obtener los nombres de las columnas
column_names <- colnames(rot_cuantiativa)
# Loop a través de las columnas
for (col in column_names) {
# Verificar si la columna es numérica
if (is.numeric(rot_cuantiativa[[col]])) {
# Configurar una disposición de gráficos de 1 fila y 2 columnas
par(mfrow=c(1,2))
# Crear un histograma
hist(rot_cuantiativa[[col]], main = paste("Histograma de", col), xlab = col)
# Crear un diagrama de caja
boxplot(rot_cuantiativa[[col]], main = paste("Diagrama de caja de", col), ylab = col)
# Restaurar la disposición de gráficos a la configuración predeterminada
par(mfrow=c(1,1))
# Imprimir una línea en blanco para separar las salidas
cat("\n\n")
# Resumir estadísticas descriptivas y agregarlas al marco de datos
summary_stats <- summary(rot_cuantiativa[[col]])
summary_df <- rbind(summary_df, c(Variable = col, summary_stats))
}
}
# Imprimir la tabla de resumen
kable(summary_df)
Variable | Minimum | Q1 | Median | Mean | Q3 | Maximum |
---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | |
Edad | 18 | 30 | 36 | 36.9244897959184 | 43 | 60 |
Distancia_Casa | 1 | 2 | 7 | 9.19251700680272 | 14 | 29 |
Ingreso_Mensual | 1009 | 2911 | 4919 | 6502.93129251701 | 8379 | 19999 |
Trabajos_Anteriores | 0 | 1 | 2 | 2.69319727891156 | 4 | 9 |
Porcentaje_aumento_salarial | 11 | 12 | 14 | 15.2095238095238 | 18 | 25 |
Años_Experiencia | 0 | 6 | 10 | 11.2795918367347 | 15 | 40 |
Capacitaciones | 0 | 2 | 3 | 2.79931972789116 | 3 | 6 |
Antigüedad | 0 | 3 | 5 | 7.00816326530612 | 9 | 40 |
Antigüedad_Cargo | 0 | 2 | 3 | 4.22925170068027 | 7 | 18 |
Años_ultima_promoción | 0 | 0 | 1 | 2.18775510204082 | 3 | 15 |
Años_acargo_con_mismo_jefe | 0 | 2 | 3 | 4.12312925170068 | 7 | 17 |
De las variables cuantitativas seleccionadas en el punto número 1 se puede decir que:
La edad no presenta datos atípicos, su media es de 36.9 años aproximadamente, sin embargo, existen personas de hasta 60 años trabajando, pero el 75% de las personas se encuentran por debajo de los 43 años.
Trabajos anteriores, presenta pocos datos atípicos, su media es 2.7, sin embargo, existen personas que han tenido hasta 9 trabajos, pero el 75% de las personas han tenido 4 trabajos.
Porcentaje de aumento salarial, no presenta datos atípicos, su media es 15.2, sin embargo, existen personas que han tenido hasta 25 % de aumento, pero el 75% de las personas ha tenido aumento de hasta el 18 %.
Siguiendo por la base cualitativa:
# Cargar los datos de rotación
rot_cualitativa <- rotacion[, c("Rotación", "Viaje de Negocios", "Departamento", "Educación", "Campo_Educación", "Satisfacción_Ambiental", "Genero", "Cargo", "Satisfación_Laboral", "Estado_Civil", "Horas_Extra", "Rendimiento_Laboral", "Equilibrio_Trabajo_Vida")]
# Obtener los nombres de las columnas categóricas
columnas_categoricas <- colnames(rot_cualitativa)
# Loop a través de las columnas categóricas
for (col in columnas_categoricas) {
# Configurar una disposición de gráficos de 1 fila y 2 columnas
par(mfrow=c(1,2))
# Calcular frecuencia absoluta y relativa de cada categoría
frecuencia_absoluta <- table(rot_cualitativa[[col]])
frecuencia_relativa <- prop.table(frecuencia_absoluta)
# Crear una tabla de frecuencias
tabla_frecuencias <- data.frame(Categoria = names(frecuencia_absoluta),
Frecuencia_Absoluta = as.numeric(frecuencia_absoluta),
Frecuencia_Relativa = as.numeric(frecuencia_relativa))
# Crear un gráfico de barras para la frecuencia absoluta
barplot(frecuencia_absoluta, main = paste("Frecuencia Absoluta de", col),
xlab = "Categoría", ylab = "Frecuencia Absoluta")
# Crear un gráfico de pastel para la frecuencia absoluta
pie(frecuencia_absoluta, main = paste("Frecuencia Absoluta de", col))
# Calcular la moda y el número de categorías únicas
moda <- names(frecuencia_absoluta)[which.max(frecuencia_absoluta)]
categorias_unicas <- length(unique(rot_cualitativa[[col]]))
# Imprimir la moda y el número de categorías únicas
cat("La moda de", col, "es:", moda, "\n")
cat("Número de categorías únicas en", col, ":", categorias_unicas, "\n")
# Imprimir información adicional
cat("La variable", col, "presenta la categoría más frecuente:", moda, "\n")
cat("Hay un total de", categorias_unicas, "categorías únicas en los datos.", "\n")
# Imprimir una línea en blanco para separar las salidas
cat("\n\n")
# Restaurar la disposición de gráficos a la configuración predeterminada
par(mfrow=c(1,1))
}
## La moda de Rotación es: No
## Número de categorías únicas en Rotación : 2
## La variable Rotación presenta la categoría más frecuente: No
## Hay un total de 2 categorías únicas en los datos.
## La moda de Viaje de Negocios es: Raramente
## Número de categorías únicas en Viaje de Negocios : 3
## La variable Viaje de Negocios presenta la categoría más frecuente: Raramente
## Hay un total de 3 categorías únicas en los datos.
## La moda de Departamento es: IyD
## Número de categorías únicas en Departamento : 3
## La variable Departamento presenta la categoría más frecuente: IyD
## Hay un total de 3 categorías únicas en los datos.
## La moda de Educación es: 3
## Número de categorías únicas en Educación : 5
## La variable Educación presenta la categoría más frecuente: 3
## Hay un total de 5 categorías únicas en los datos.
## La moda de Campo_Educación es: Ciencias
## Número de categorías únicas en Campo_Educación : 6
## La variable Campo_Educación presenta la categoría más frecuente: Ciencias
## Hay un total de 6 categorías únicas en los datos.
## La moda de Satisfacción_Ambiental es: 3
## Número de categorías únicas en Satisfacción_Ambiental : 4
## La variable Satisfacción_Ambiental presenta la categoría más frecuente: 3
## Hay un total de 4 categorías únicas en los datos.
## La moda de Genero es: M
## Número de categorías únicas en Genero : 2
## La variable Genero presenta la categoría más frecuente: M
## Hay un total de 2 categorías únicas en los datos.
## La moda de Cargo es: Ejecutivo_Ventas
## Número de categorías únicas en Cargo : 9
## La variable Cargo presenta la categoría más frecuente: Ejecutivo_Ventas
## Hay un total de 9 categorías únicas en los datos.
## La moda de Satisfación_Laboral es: 4
## Número de categorías únicas en Satisfación_Laboral : 4
## La variable Satisfación_Laboral presenta la categoría más frecuente: 4
## Hay un total de 4 categorías únicas en los datos.
## La moda de Estado_Civil es: Casado
## Número de categorías únicas en Estado_Civil : 3
## La variable Estado_Civil presenta la categoría más frecuente: Casado
## Hay un total de 3 categorías únicas en los datos.
## La moda de Horas_Extra es: No
## Número de categorías únicas en Horas_Extra : 2
## La variable Horas_Extra presenta la categoría más frecuente: No
## Hay un total de 2 categorías únicas en los datos.
## La moda de Rendimiento_Laboral es: 3
## Número de categorías únicas en Rendimiento_Laboral : 2
## La variable Rendimiento_Laboral presenta la categoría más frecuente: 3
## Hay un total de 2 categorías únicas en los datos.
## La moda de Equilibrio_Trabajo_Vida es: 3
## Número de categorías únicas en Equilibrio_Trabajo_Vida : 4
## La variable Equilibrio_Trabajo_Vida presenta la categoría más frecuente: 3
## Hay un total de 4 categorías únicas en los datos.
##3. Análisis bivariado
Realiza un análisis bivariado en donde la variable respuesta sea rotación codificada de la siguiente manera (y=1 es si rotación, 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 hipótesis planteada en el punto 1
# Renombrar columnas con espacios en los nombres
names(rotacion)[names(rotacion) == 'Viaje de Negocios'] <- 'Viaje_de_Negocios'
names(rotacion)[names(rotacion) == 'Satisfación_Laboral'] <- 'Satisfacion_Laboral'
# Crear variables binarias basadas en valores categóricos
rotacion$rot_binaria <- ifelse(rotacion$Rotación == "Si", 1, 0)
rotacion$Viaje_Negocios_Frecuente <- ifelse(rotacion$Viaje_de_Negocios == "Frecuentemente", 1, 0)
rotacion$Viaje_Negocios_NoViaja <- ifelse(rotacion$Viaje_de_Negocios == "No_Viaja", 1, 0)
rotacion$Viaje_Negocios_Raramente <- ifelse(rotacion$Viaje_de_Negocios == "Raramente", 1, 0)
rotacion$Dpto_IyD <- ifelse(rotacion$Departamento == "IyD", 1, 0)
rotacion$Dpto_RH <- ifelse(rotacion$Departamento == "RH", 1, 0)
rotacion$Dpto_Ventas <- ifelse(rotacion$Departamento == "Ventas", 1, 0)
rotacion$CampoEd_Ciencias <- ifelse(rotacion$Campo_Educación == "Ciencias", 1, 0)
rotacion$CampoEd_Humanidades <- ifelse(rotacion$Campo_Educación == "Humanidades", 1, 0)
rotacion$CampoEd_Mercadeo <- ifelse(rotacion$Campo_Educación == "Mercadeo", 1, 0)
rotacion$CampoEd_Salud <- ifelse(rotacion$Campo_Educación == "Salud", 1, 0)
rotacion$CampoEd_Tecnicos <- ifelse(rotacion$Campo_Educación == "Tecnicos", 1, 0)
rotacion$Genero_Dummy <- ifelse(rotacion$Genero == "M", 1, 0)
rotacion$Cargo_Director_Investigación <- ifelse(rotacion$Cargo == "Director_Investigación", 1, 0)
rotacion$Cargo_Director_Manofactura <- ifelse(rotacion$Cargo == "Director_Manofactura", 1, 0)
rotacion$Cargo_Ejecutivo_Ventas <- ifelse(rotacion$Cargo == "Ejecutivo_Ventas", 1, 0)
rotacion$Cargo_Gerente <- ifelse(rotacion$Cargo == "Gerente", 1, 0)
rotacion$Cargo_Investigador_Cientifico <- ifelse(rotacion$Cargo == "Investigador_Cientifico", 1, 0)
rotacion$Cargo_Recursos_Humanos <- ifelse(rotacion$Cargo == "Recursos_Humanos", 1, 0)
rotacion$Cargo_Representante_Salud <- ifelse(rotacion$Cargo == "Representante_Salud", 1, 0)
rotacion$Cargo_Representante_Ventas <- ifelse(rotacion$Cargo == "Representante_Ventas", 1, 0)
rotacion$Cargo_Tecnico_Laboratorio <- ifelse(rotacion$Cargo == "Tecnico_Laboratorio", 1, 0)
rotacion$Estado_Civil_Casado <- ifelse(rotacion$Estado_Civil == "Casado", 1, 0)
rotacion$Estado_Civil_Divorciado <- ifelse(rotacion$Estado_Civil == "Divorciado", 1, 0)
rotacion$Estado_Civil_Soltero <- ifelse(rotacion$Estado_Civil == "Soltero", 1, 0)
rotacion$Horas_Extra_Dummy <- ifelse(rotacion$Horas_Extra == "Si", 1, 0)
# Ajustar un modelo de regresión logística
modelo_logistico <- glm(rot_binaria ~ 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 + Viaje_Negocios_Frecuente + Viaje_Negocios_NoViaja + Dpto_IyD + Dpto_RH + Educación + CampoEd_Ciencias + CampoEd_Humanidades + CampoEd_Mercadeo + CampoEd_Salud + CampoEd_Tecnicos + Satisfacción_Ambiental + Genero_Dummy + Cargo_Director_Investigación + Cargo_Director_Manofactura + Cargo_Ejecutivo_Ventas + Cargo_Gerente + Cargo_Investigador_Cientifico + Cargo_Recursos_Humanos + Cargo_Representante_Salud + Cargo_Representante_Ventas + Satisfacion_Laboral + Estado_Civil_Casado + Estado_Civil_Divorciado + Horas_Extra_Dummy + Rendimiento_Laboral + Equilibrio_Trabajo_Vida, data = rotacion, family = "binomial")
# Resumen del modelo
summary(modelo_logistico)
##
## Call:
## glm(formula = rot_binaria ~ 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 + Viaje_Negocios_Frecuente +
## Viaje_Negocios_NoViaja + Dpto_IyD + Dpto_RH + Educación +
## CampoEd_Ciencias + CampoEd_Humanidades + CampoEd_Mercadeo +
## CampoEd_Salud + CampoEd_Tecnicos + Satisfacción_Ambiental +
## Genero_Dummy + Cargo_Director_Investigación + Cargo_Director_Manofactura +
## Cargo_Ejecutivo_Ventas + Cargo_Gerente + Cargo_Investigador_Cientifico +
## Cargo_Recursos_Humanos + Cargo_Representante_Salud + Cargo_Representante_Ventas +
## Satisfacion_Laboral + Estado_Civil_Casado + Estado_Civil_Divorciado +
## Horas_Extra_Dummy + Rendimiento_Laboral + Equilibrio_Trabajo_Vida,
## family = "binomial", data = rotacion)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.7938 -0.5091 -0.2716 -0.0994 3.4048
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 3.243e+00 1.588e+00 2.042 0.041107 *
## Edad -3.655e-02 1.328e-02 -2.753 0.005899 **
## Distancia_Casa 4.250e-02 1.046e-02 4.063 4.85e-05 ***
## Ingreso_Mensual -9.588e-07 5.854e-05 -0.016 0.986932
## Trabajos_Anteriores 1.756e-01 3.746e-02 4.688 2.76e-06 ***
## Porcentaje_aumento_salarial -2.302e-02 3.805e-02 -0.605 0.545193
## Años_Experiencia -5.408e-02 2.782e-02 -1.944 0.051874 .
## Capacitaciones -1.828e-01 7.125e-02 -2.566 0.010301 *
## Antigüedad 9.630e-02 3.750e-02 2.568 0.010220 *
## Antigüedad_Cargo -1.414e-01 4.386e-02 -3.224 0.001264 **
## Años_ultima_promoción 1.787e-01 4.112e-02 4.345 1.39e-05 ***
## Años_acargo_con_mismo_jefe -1.563e-01 4.599e-02 -3.399 0.000677 ***
## Viaje_Negocios_Frecuente 8.215e-01 2.062e-01 3.984 6.78e-05 ***
## Viaje_Negocios_NoViaja -9.414e-01 3.654e-01 -2.576 0.009990 **
## Dpto_IyD -1.231e-01 1.023e+00 -0.120 0.904238
## Dpto_RH -1.305e+01 3.780e+02 -0.035 0.972468
## Educación -1.149e-02 8.552e-02 -0.134 0.893169
## CampoEd_Ciencias -5.979e-02 4.024e-01 -0.149 0.881890
## CampoEd_Humanidades 7.744e-01 8.445e-01 0.917 0.359176
## CampoEd_Mercadeo 3.225e-01 4.753e-01 0.679 0.497431
## CampoEd_Salud -1.734e-01 4.094e-01 -0.424 0.671891
## CampoEd_Tecnicos 8.684e-01 4.565e-01 1.902 0.057154 .
## Satisfacción_Ambiental -4.424e-01 8.119e-02 -5.449 5.05e-08 ***
## Genero_Dummy 3.248e-01 1.795e-01 1.809 0.070386 .
## Cargo_Director_Investigación -2.587e+00 1.018e+00 -2.541 0.011041 *
## Cargo_Director_Manofactura -1.318e+00 4.462e-01 -2.954 0.003132 **
## Cargo_Ejecutivo_Ventas -5.983e-01 1.058e+00 -0.565 0.571771
## Cargo_Gerente -1.340e+00 9.312e-01 -1.439 0.150022
## Cargo_Investigador_Cientifico -9.439e-01 2.607e-01 -3.620 0.000294 ***
## Cargo_Recursos_Humanos 1.260e+01 3.780e+02 0.033 0.973407
## Cargo_Representante_Salud -1.550e+00 4.671e-01 -3.319 0.000905 ***
## Cargo_Representante_Ventas 3.750e-01 1.070e+00 0.350 0.726095
## Satisfacion_Laboral -4.048e-01 7.925e-02 -5.109 3.24e-07 ***
## Estado_Civil_Casado -1.033e+00 1.941e-01 -5.323 1.02e-07 ***
## Estado_Civil_Divorciado -1.431e+00 2.582e-01 -5.541 3.00e-08 ***
## Horas_Extra_Dummy 1.872e+00 1.869e-01 10.014 < 2e-16 ***
## Rendimiento_Laboral 1.702e-01 3.889e-01 0.438 0.661621
## Equilibrio_Trabajo_Vida -3.654e-01 1.207e-01 -3.027 0.002470 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1298.58 on 1469 degrees of freedom
## Residual deviance: 893.23 on 1432 degrees of freedom
## AIC: 969.23
##
## Number of Fisher Scoring iterations: 14
Según el modelo las variables más significativas son las siguientes:
-Edad: Coeficiente negativo, implica que un aumento en la edad disminuye la probabilidad de que se de rotación de personal. Lo cual es acorde a los supuestos o hipótesis del punto número 1.
-Distancia Casa: Coeficiente positivo, implica que un aumento en la distancia a casa aumenta la probabilidad de que se de rotación de personal.
-Trabajos Anteriores: Coeficiente positivo, implica que un aumento en la cantidad de trabajos anteriores aumenta la probabilidad de que se de rotación de personal. Lo cual es acorde a los supuestos o hipótesis del punto número 1.
-Capacitaciones: Coeficiente negativo, implica que un aumento en las capacitaciones disminuye la probabilidad de que se de rotación de personal.
-Antigüedad: Coeficiente positivo, implica que un aumento en la antigüedad aumenta la probabilidad de que se de rotación de personal.
-Antigüedad Cargo: Coeficiente negativo, implica que un aumento en la antigüedad del cargo disminuye la probabilidad de que se de rotación de personal. Sin embargo, se contradice con el coeficiente positivo de la variable Antigüedad.
-Años_ultima_promoción: Coeficiente positivo, implica que un aumento en el tiempo desde la última promoción aumenta la probabilidad de que se de rotación de personal.
-Años_acargo_con_mismo_jefe: Coeficiente negativo, implica que un aumento los años con el mismo jefe disminuye la probabilidad de que se de rotación de personal.
-Viaje_Negocios_Frecuente: Coeficiente positivo, implica que un aumento la frecuencia de los viajes de negocio aumenta la probabilidad de que se de rotación de personal.
-Viaje_Negocios_NoViaja: Coeficiente negativo, implica que un aumento en el no viajar disminuye la probabilidad de que se de rotación de personal.
-Satisfacción_Ambiental: Coeficiente negativo, implica que un aumento en la satisfacción ambiental disminuye la probabilidad de que se de rotación de personal.
-Cargo_Director_Investigación: Coeficiente negativo, implica que el ser parte del cargo de director investigativo disminuye la probabilidad de que se de rotación de personal.
-Cargo_Director_Manofactura: Coeficiente negativo, implica que el ser parte del cargo de director de manufactura disminuye la probabilidad de que se de rotación de personal.
-Cargo_Investigador_Cientifico: Coeficiente negativo, implica que el ser parte del cargo de investigador cientifico disminuye la probabilidad de que se de rotación de personal.
-Cargo_Representante_Salud: Coeficiente negativo, implica que el ser parte del cargo de representante de salud disminuye la probabilidad de que se de rotación de personal.
-Satisfacion_Laboral: Coeficiente negativo, implica que el aumento de la satisfacción laboral disminuye la probabilidad de que se de rotación de personal. Lo cual es acorde a los supuestos o hipótesis del punto número 1.
-Estado_Civil_Casado: Coeficiente negativo, implica que el estar casado disminuye la probabilidad de que se de rotación de personal. Lo cual es acorde a los supuestos o hipótesis del punto número 1.
-Estado_Civil_Divorciado: Coeficiente negativo, implica que el estar divorciado disminuye la probabilidad de que se de rotación de personal. Lo cual es acorde a los supuestos o hipótesis del punto número 1.
-Horas_Extra_Dummy:Coeficiente positivo, implica que el persona que realiza horas extra aumenta la probabilidad de que se de rotación de personal.
-Equilibrio_Trabajo_Vida: Coeficiente negativo, implica que un aumento del equilibrio de trabajo vida disminuye la probabilidad de que se de rotación de personal. Lo cual es acorde a los supuestos o hipótesis del punto número 1.
##4. Estimación del modelo
Realiza la estimación de un modelo de regresión logístico en el cual la variable respuesta es rotación (es si rotación, 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.
# Ajustar un modelo de regresión logística
modelo_logistico <- glm(rot_binaria ~ Edad + Trabajos_Anteriores + Porcentaje_aumento_salarial + Satisfacion_Laboral + Estado_Civil_Soltero + Equilibrio_Trabajo_Vida, data = rotacion, family = "binomial")
# Resumen del modelo
summary(modelo_logistico)
##
## Call:
## glm(formula = rot_binaria ~ Edad + Trabajos_Anteriores + Porcentaje_aumento_salarial +
## Satisfacion_Laboral + Estado_Civil_Soltero + Equilibrio_Trabajo_Vida,
## family = "binomial", data = rotacion)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.5505 -0.6251 -0.4707 -0.3356 2.7512
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.379302 0.565062 2.441 0.014648 *
## Edad -0.057600 0.009369 -6.148 7.85e-10 ***
## Trabajos_Anteriores 0.106544 0.029547 3.606 0.000311 ***
## Porcentaje_aumento_salarial -0.008944 0.020570 -0.435 0.663709
## Satisfacion_Laboral -0.270277 0.066241 -4.080 4.50e-05 ***
## Estado_Civil_Soltero 0.896226 0.149854 5.981 2.22e-09 ***
## Equilibrio_Trabajo_Vida -0.287965 0.101949 -2.825 0.004734 **
## ---
## 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: 1187.4 on 1463 degrees of freedom
## AIC: 1201.4
##
## Number of Fisher Scoring iterations: 5
Coeficiente negativo, implica que un aumento en la edad disminuye la probabilidad de que se de rotación de personal en -0.057600.
Coeficiente positivo, implica que un aumento en la cantidad de trabajos anteriores aumenta la probabilidad de que se de rotación de personal en 0.106544.
Coeficiente negativo, implica que el aumento de la satisfacción laboral disminuye la probabilidad de que se de rotación de personal en -0.27027.
Coeficiente positivo, implica que el estar soltero aumenta la probabilidad de que se de rotación de personal en 0.896226.
Coeficiente negativo, implica que un aumento del equilibrio de trabajo vida disminuye la probabilidad de que se de rotación de personal en -0.287965.
##5. Evaluación
Evaluar el poder predictivo del modelo con base en la curva ROC y el AUC
# Obtener las probabilidades predichas del modelo
predicciones <- predict(modelo_logistico, type = "response")
# Crear un objeto ROC con las probabilidades y la variable de respuesta binaria
roc_obj <- roc(rotacion$rot_binaria, predicciones)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
# Dibujar la Curva ROC
plot(roc_obj, main = "Curva ROC")
abline(a = 0, b = 1, col = "gray", lty = 2)
# Calcular el AUC
auc_resultado <- auc(roc_obj)
cat("Área bajo la Curva ROC (AUC):", auc_resultado, "\n")
## Área bajo la Curva ROC (AUC): 0.7043299
El área bajo la Curva ROC es cercana a 1 con un valor de 0.704 indica que el modelo tiene un poder predictivo moderado, el cual se puede mejorar si consideramos diferentes modelos con diferentes variables que puedan explicar mejor el comportamiento de la rotación de personal.
##6. Predicciones
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).
Para el desarrollo de este punto vamos a suponer a un individuo con las siguientes características
Edad: 27 años Trabajos Anteriores: 5 trabajos Porcentaje_aumento_salarial: 5 Satisfacion_Laboral: 2 Estado_Civil_Soltero: SI Equilibrio_Trabajo_Vida: 2
y vamos a variar dos características que puede controlar o sobre las que la empresa puede incidir como la Satisfacion_Laboral y Equilibrio_Trabajo_Vida para ver el efecto de estas dos variables.
# Crear un data frame con nuevos datos para hacer predicciones
nuevos_datos <- data.frame(
Edad = c(27, 27),
Trabajos_Anteriores = c(5, 5),
Porcentaje_aumento_salarial = c(5, 5),
Satisfacion_Laboral = c(2, 4),
Estado_Civil_Soltero = c(1, 1),
Equilibrio_Trabajo_Vida = c(2, 4)
# Agrega las demás variables predictoras según corresponda
)
# Realizar predicciones con el modelo
predicciones <- predict(modelo_logistico, nuevos_datos, type = "response")
# Las predicciones contendrán las probabilidades de pertenecer a la clase positiva (1)
umbral <- 0.5
clases_predichas <- ifelse(predicciones >= umbral, 1, 0)
# Las clases_predichas ahora contendrán las predicciones binarias
print(clases_predichas)
## 1 2
## 1 0
El individuo debe ser intervenido con el objetivo de mejorar su satisfacción laboral y el equilibrio trabajo vida, ya que estas dos variables son sobre las cuales la empresa puede intervenir. según el modelo al generar un aumento únicamente en esas dos variables podría evitarse la rotación de esta persona.
##7. Conclusiones
En las conclusiones adicione una discusió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).
Basado en los resultados del punto 3 se puede decir que una estrategia para disminuir la rotación puede estar enfocada en dos momentos, el momento de contratación del personal nuevo y el momento en el que ya se encuentran trabajando.
El primer momento se debe enfocar en aquellas variables que la empresa no puede controlar, con el objetivo de clasificar al personal que se postula para prevenir la contratación de personas propensas a la rotación. En este caso se evaluarían las siguientes variables:
-Edad: Se le daría prioridad a personal no tan joven, que se encuentren cercanos al promedio de la empresa en edad.
-Distancia a casa: Se le daría prioridad a personal que no viva lejos o que tenga la posibilidad de cambiar de residencia a un lugar más cercano.
-Trabajos Anteriores: Se le daría prioridad a personal que no haya tenido muchos trabajos, ya que esto puede indicar que la rotación es constante en su vida laboral.
-Estado Civil: Se le daría prioridad a personal casado o con pareja estable, debido a que las personas solteras pueden ser más propensas a la rotación.
El segundo momento se debe enfocar en aquellas variables que la empresa puede controlar, con el objetivo de mejorar en aspectos internos o en condiciones que generen satisfacción en los empleados y de esa forma reducir la probabilidad de rotación.
Capacitaciones: Se deben implementar planes de capacitaciones constantes, con el objetivo de mantener al personal al día en conocimiento sobre las áreas relacionadas a su labor o también que exista la posibilidad de que aprendan cosas nuevas.
Años de última promoción: Se debe procurar realizar cambios internos de personal, con el objetivo de darle prioridad en promoción al personal existente sobre nuevo personal.
Años a cargo del mismo jefe: Se debe procurar no realizar cambios en los puestos de liderazgo que puedan generar discontinuidad den la subordinación del personal.
Viaje de Negocios: Se debe procurar no realizar viajes frecuentemente o incentivar de manera diferenciada al personal que lo hace con el objetivo de evitar un aumento en la rotación.
Satisfacción ambiental: Se debe garantizar espacios y conficiones laborales optimas que permitan mejorar la satisfacción del empleado frente a su ambiente.
Horas extra: Se debe incentivar de manera diferenciada al personal que hace horas extra y procurar que no sea de manera constante o repetitiva.
Equilibrio Trabajo Vida: Se debe incentivar el tiempo libre de las personas, considerando días compensatorios o días libres destinado a la familia o recreación.
Siguiendo con las pautas anteriores se mejora la retención del personal y se evita la rotación que finalmente puede ser más costosa que implementar la estrategia aquí planteada.