Informe Regresión Generalizada Múltiple
CASO ROTACIÓN
MAESTRÍA EN CIENCIA DE DATOS UNIVERSIDAD JAVERIANA DE CALI
MÉTODOS ESTADÍSTICOS PARA LA TOMA DE DECISIONES
Carolina Galindres Bernal, Adrian Rodriguez Amaya
SELECCIÓN DE VARIABLES
Para el desarrollo de la presente simulación utilizaremos los datos relacionados con la rotación del personal de una compañía con base en algunas varibles definidas, a saber:
## 'data.frame': 1470 obs. of 24 variables:
## $ Rotación : Factor w/ 2 levels "No","Si": 2 1 2 1 1 1 1 1 1 1 ...
## $ Edad : num 41 49 37 33 27 32 59 30 38 36 ...
## $ Viaje.de.Negocios : Factor w/ 3 levels "Frecuentemente",..: 3 1 3 1 3 1 3 3 1 3 ...
## $ Departamento : Factor w/ 3 levels "IyD","RH","Ventas": 3 1 1 1 1 1 1 1 1 1 ...
## $ Distancia_Casa : num 1 8 2 3 2 2 3 24 23 27 ...
## $ Educación : Factor w/ 5 levels "1","2","3","4",..: 2 1 2 4 1 2 3 1 3 3 ...
## $ Campo_Educación : Factor w/ 6 levels "Ciencias","Humanidades",..: 1 1 4 1 5 1 5 1 1 5 ...
## $ Satisfacción_Ambiental : Factor w/ 4 levels "1","2","3","4": 2 3 4 4 1 4 3 4 4 3 ...
## $ Genero : chr "F" "M" "M" "F" ...
## $ Cargo : chr "Ejecutivo_Ventas" "Investigador_Cientifico" "Tecnico_Laboratorio" "Investigador_Cientifico" ...
## $ Satisfación_Laboral : num 4 2 3 3 2 4 1 3 3 3 ...
## $ Estado_Civil : Factor w/ 3 levels "Casado","Divorciado",..: 3 1 3 1 1 3 1 2 3 1 ...
## $ Ingreso_Mensual : num 5993 5130 2090 2909 3468 ...
## $ Trabajos_Anteriores : num 8 1 6 1 9 0 4 1 0 6 ...
## $ Horas_Extra : Factor w/ 2 levels "No","Si": 2 1 2 2 1 1 2 1 1 1 ...
## $ Porcentaje_aumento_salarial: num 11 23 15 11 12 13 20 22 21 13 ...
## $ Rendimiento_Laboral : Factor w/ 2 levels "3","4": 1 2 1 1 1 1 2 2 2 1 ...
## $ Años_Experiencia : num 8 10 7 8 6 8 12 1 10 17 ...
## $ Capacitaciones : num 0 3 3 3 3 2 3 2 2 3 ...
## $ Equilibrio_Trabajo_Vida : num 1 3 3 3 3 2 2 3 3 2 ...
## $ Antigüedad : num 6 10 0 8 2 7 1 1 9 7 ...
## $ Antigüedad_Cargo : num 4 7 0 7 2 7 0 0 7 7 ...
## $ Años_ultima_promoción : num 0 1 0 3 2 3 0 0 1 7 ...
## $ Años_acargo_con_mismo_jefe : num 5 7 0 0 2 6 0 0 8 7 ...
Como punto de partida, se seleccionarán tres variables categóricas y tres variables cuantitativas; a partir de estas variables, estableceremos algunas hipótesis que evaluaremos en el desarrollo de la presente simulación. Las varibles seleccionadas son: Viaje de Negocios, Estado Civil,Departamento,Ingreso Mensual,Edad, y Años de Experiencia.
DEFINICIÓN DE HIPÓTESIS
Se espera que el personal que realice viajes de negocios con mayor frecuencia, tienda a rotar.
Se espera que las personas con estado civil ‘soltero’ roten más que las personas con estado civil casadas.
Se espera que las personas en el departamento de ventas roten más que las de recursos humanos e investigación y desarrollo.
Se espera que las personas con mayor ingreso mensual tiendan a rotar menos que las de menor ingreso mensual.
Se espera que las personas más jóvenes roten más que las personas con mayor edad.
Se espera que los trabajadores con mayor antigüedad roten menos que los que ingresaron recientemente a la empresa.
ANÁLISIS UNIVARIADO
Ahora, realizaremos un análisis univariado de las variables seleccionadas para observar su comportamiento.
De acuerdo con los gráficos de análisis univariado de las variables cualitativas podemos observar que para la variable viajes de negocios la mayor parte del personal viaja raramente, mientras que los que viajan con mayor frecuencia son un número menor. Por otra parte, para la variable estado civil observamos que la mayor parte de los trabajadores tienen estado civil casado y soltero, siendo la primera la de mayor representación en el dataset. Para la variable departamento, se aprecia que la mayor parte de personal pertenecen al área de investigación y desarrollo, seguido por el departamento de ventas y con muy poco volumen de trabajadores el departamento de recursos humanos.
Los gráficos del análisis univariado para variables cuantitativas nos ilustran que para el caso de la variable Ingreso Mensual la mayor parte del personal gana menos de 5 millones aproximadamente. El rango de edad de los trabajadores oscila entre 45 y 28 aproximadamente y la mayor parte del personal cuenta con experiencia menor a 10 años.
ANÁLISIS BIVARIADO
En este punto, realizaremos un análisis bivariado de las variables seleccionadas para observar su comportamiento con respecto a la rotación.
A partir de las gráficas de análisis bivariado de variables categóricas, para el caso de la variable Viaje de Negocios evidenciamos que las personas que viajan frecuentemente tienen mayor probabilidad de rotar ~25%, mientras que los trabajadores que no viajan rotan menos en un ~8%. Ahora, para el caso del Estado Civil observamos que los trabajadores solteros tienden a rotar con una proporción del ~26%, mientras que los divorciados manejan un porcentaje de aproximadamente 10%. Con respecto a la variable Departamento, el personal de recursos humanos y ventas rotan casi en la misma proporción, ~20%; el departamento de investigación y desarrollo tiende a rotar en un ~14%.
Con respecto al análisis bivariado de las variables cuantitativas, observamos que las personas que manejan menores ingresos tienden a rotar, a diferencia de los trabajadores que tienen sueldos superiores. También evidenciamos que, la edad también se encuentra relacionada con la rotación, en el sentido que los más jóvenes tienden a rotar más que los de mayor edad. Finalmente, los años de experiencia del personal con menor número tienden a rotar más que las personas más experimentadas dentro de la empresa.
MODELO DE REGRESIÓN LOGÍSTICO
En este punto realizaremos la construcción del modelo de regresión logístico a partir de las variables seleccionadas.
modelo_glm = glm(data = data,
formula = Rotación ~ Viaje.de.Negocios + Estado_Civil + Departamento + Ingreso_Mensual + Edad + Años_Experiencia,
family = 'binomial')
summary(modelo_glm)
##
## Call:
## glm(formula = Rotación ~ Viaje.de.Negocios + Estado_Civil +
## Departamento + Ingreso_Mensual + Edad + Años_Experiencia,
## family = "binomial", data = data)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.2178 -0.6217 -0.4740 -0.2807 2.8565
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.539e-01 3.814e-01 -0.666 0.505566
## Viaje.de.NegociosNo_Viaja -1.367e+00 3.403e-01 -4.016 5.92e-05 ***
## Viaje.de.NegociosRaramente -6.171e-01 1.721e-01 -3.586 0.000336 ***
## Estado_CivilDivorciado -2.032e-01 2.227e-01 -0.913 0.361416
## Estado_CivilSoltero 7.829e-01 1.639e-01 4.775 1.79e-06 ***
## DepartamentoRH 5.423e-01 3.502e-01 1.549 0.121494
## DepartamentoVentas 5.531e-01 1.612e-01 3.430 0.000603 ***
## Ingreso_Mensual -8.142e-05 3.167e-05 -2.571 0.010132 *
## Edad -1.793e-02 1.127e-02 -1.590 0.111735
## Años_Experiencia -2.454e-02 1.994e-02 -1.230 0.218518
## ---
## 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: 1169.6 on 1460 degrees of freedom
## AIC: 1189.6
##
## Number of Fisher Scoring iterations: 5
De acuerdo con los resultados del modelo, podemos evidenciar que las variables más significativas son: Viaje.de.NegociosNo_Viaja, Viaje.de.NegociosRaramente, Estado_CivilSoltero, DepartamentoVentas y Ingreso_Mensual. Podemos destacar que la variable que más disminuye la probabilidad de rotación, es la de ingreso mensual al igual que Viaje.de.NegociosRaramente. Por el contrario, la variable Estado_CivilSoltero es la que más aumenta la probabilidad de rotación, seguida de DepartamentoVentas.
Ahora, con el modelo calculado procedemos a comparar las varianzas entre las medias de los grupos de las variables del modelo. Para ello utilizaremos el análisis ANOVA:
anova(modelo_glm, test = "Chisq")
## Analysis of Deviance Table
##
## Model: binomial, link: logit
##
## Response: Rotación
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 1469 1298.6
## Viaje.de.Negocios 2 23.760 1467 1274.8 6.927e-06 ***
## Estado_Civil 2 43.016 1465 1231.8 4.562e-10 ***
## Departamento 2 10.581 1463 1221.2 0.005039 **
## Ingreso_Mensual 1 43.125 1462 1178.1 5.136e-11 ***
## Edad 1 6.989 1461 1171.1 0.008203 **
## Años_Experiencia 1 1.538 1460 1169.6 0.214921
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
A partir de los resultados de análisis ANOVA, podemos identificar que la mayoría de las variables son significativas, con excepción de Años_Experiencia. Se debe evaluar si esta última se puede eliminar del modelo de regresión logístico.
Complementamos el análisis anterior con el análisis de factores de inflación de la varianza VIF; así:
vif(modelo_glm)
## GVIF Df GVIF^(1/(2*Df))
## Viaje.de.Negocios 1.004343 2 1.001084
## Estado_Civil 1.021394 2 1.005306
## Departamento 1.064078 2 1.015648
## Ingreso_Mensual 1.955567 1 1.398416
## Edad 1.626312 1 1.275269
## Años_Experiencia 2.568182 1 1.602555
Podemos confirmar que la variable Años_Experiencia es que la refleja mayor varianza de inflación, sin embargo, se encuentra dentro de los valores aceptados.
CURVA ROC Y AUC
Ahora evaluaremos el poder predictivo del modelo calculado, para tal fin debemos identificar la bondad del modelo.
predicciones = ifelse(modelo_glm$fitted.values > 0.2, yes = 1, no = 0)
matriz_confusion = table(modelo_glm$model$Rotación, predicciones,
dnn = c('observaciones', 'predicciones'))
matriz_confusion
## predicciones
## observaciones 0 1
## No 930 303
## Si 103 134
mosaic(matriz_confusion, shade = TRUE, colorize = TRUE,
gp = gpar(fill = matrix(c('#b5ead7', '#fbb4ae', '#fbb4ae', '#b5ead7'), 2, 2)))
sum(diag(matriz_confusion))/sum(matriz_confusion)
## [1] 0.7238095
Conforme a los resultados podemos identificar que de 1233 observaciones identificó 930 observaciones que efectivamente correspondían a la no rotación del personal, mientras que 303 de ellas fueron falsos negativos. Por otra parte, identificó que de las 237 observaciones 134 de ellas eran efectivamente positivas indicando la rotación del personal, pero con 103 falsos positivos.
En general podemos estimar una bondad del ajuste del modelo de regresión logístico de aproximadamente 72% entre el conjunto de datos observados.
Ahora, realizaremos un análisis ROC con la finalidad de identificar la proporción de verdaderos positivos frente a la proporción de falsos positivos según varía el umbral de discriminación. Así:
##
## Call:
## roc.default(response = data$Rotación, predictor = modelo_glm$fitted.values, percent = TRUE, plot = TRUE, legacy.axes = TRUE, xlab = "Falsos Positivos [%]", ylab = "Verdaderos Positivos [%]", col = "#ff9aa2", lwd = 4, print.auc = TRUE, print.thres = "best")
##
## Data: modelo_glm$fitted.values in 1233 controls (data$Rotación No) < 237 cases (data$Rotación Si).
## Area under the curve: 71.8%
Como podemos observar en la gráfica anterior, el punto óptimo más cercano a una sensibilidad igual al 100% y especificidad igual al 100% corresponde a un valor de 0.2. Este, fue el valor que se seleccionó como threshold para evaluar la matriz de confusión en el punto anterior. También es posible identificar que el área debajo de la curva refleja la bondad del test para discriminar el personal que rota o no dentro de la empresa, este valor corresponde a 71.8%, muy aproximado al valor calculado anteriormente con ~72%.
PRUEBA DE PREDICCÓN DEL MODELO
A partir de todos los análisis anteriormente realizados frente a los resultados del modelo y análisis ROC, evaluaremos un caso en particular con algunas características de un trabajador hipotético. Para tal fin se plantea un trabajador que viaja frecuentemente, soltero, del departamento de ventas, con ingresos mensuales de 3 millones, edad de 30 años y con 6 años de experiencia.
newdata = data.frame(
Viaje.de.Negocios = 'Frecuentemente',
Estado_Civil = 'Soltero',
Departamento = 'Ventas',
Ingreso_Mensual = 3000,
Edad = 30,
Años_Experiencia = 6)
predict(object = modelo_glm, newdata = newdata, type = 'response')
## 1
## 0.5381013
De acuerdo con estas características, es posible estimar que esta persona tenga una probabilidad de rotación de alrededor de 53%.
CONCLUSIONES
A continuación, detallaremos algunas recomendaciones a partir de los datos de rotación y las variables seleccionadas:
No se recomienda ninguna acción sobre la variable de años de experiencia, de acuerdo con los datos, esta variable no es significativa en el modelo calculado; se valido suprimir esta variable y se pudo constatar que no aporta ni resta en el modelo de regresión logística estimado.
Es recomendable establecer mejores incentivos para el personal que realiza viajes de negocios en la empresa, ya sean a modo de tiempo de descanso o económico; como por ejemplo se podría pensar en días compensatorios de acuerdo con la cantidad de viajes que realiza. En el análisis se pudo identificar que el personal que viaja con frecuencia tiende a rotar en un 25%. Además, el hecho de no viajar reduce la probabilidad de rotación.
Se recomienda establecer políticas que ofrezcan mayor libertad y manejo del tiempo en general para todos los trabajadores, pero puntualmente reforzar sobre los trabajadores solteros y jóvenes, ya que para los primeros tienen una probabilidad de rotación de alrededor del 26% y se pudo evidenciar también que el personal más joven tiende a rotar con mayor frecuencia. Para los jóvenes por ejemplo se podría estableces trabajos remotos que les permita poder trabajar desde cualquier parte del mundo y teniendo en cuenta el tipo de funciones realizadas.
Se recomienda evaluar las políticas y condiciones laborales para todas las áreas de la empresa, pero en especial sobre las de ventas y recursos humanos que, según los datos manejan una probabilidad de rotación del 20%, mientras que el área de investigación y desarrollo del 14%.
Finalmente, es recomendable evaluar la pertinencia de aumento salariar o implementación de bandas salariales, ya que los trabajadores con menos ingresos mensuales tienden a rotar más a los que se encuentran en una media estimada de ~5 millones. Por ejemplo, para estos que tienen menores ingresos, se podría establecer beneficios de acuerdo con los resultados obtenidos. Esta evaluación se puede complementar con un estudio de mercado de las condiciones laborales de empresas dentro del mismo sector.
*** Fin del documento ***