1. Seleccionar 3 variables categóricas (distintas de rotación) y 3 variables cuantitativas, que consideren estén relacionadas con la rotación.

##VARIABLES ESCOGIDAS:

CUALITATIVAS:

  1. ESTADO CIVIL: Se espera que una persona soltera tenga menos dificultades para decidir rotar, especialmente con cambio de localidad, que una persona casada.

  2. SATISFACCIÓN LABORAL: Se espera que una persona insatisfecha en su trabajo tienda a rotar con mayor frecuencia que una persona que se encuentra agusto con el mismo.

  3. EQUILIBRIO TRABAJO VS. VIDA: Se espera que una persona que se encuentre en un empleo donde puede distribuir mejor su tiempo entre su vida laboral y personal rote menos.

CUANTITATIVAS:

  1. EDAD: Se espera una relación inversa entre la edad y la rotación en la que a medida que una persona envejece tiende menos a rotar, al querer afrontar menos riesgos.

  2. SALARIO: Se espera que a mayor ingreso se genere una menor rotación. Generando una relación inversa entre estas variables.

  3. ANTIGUEDAD: Se espera que una persona con pocos años en la empresa (menos lazos) tienda a rotar con mayor facilidad que una persona con muchos años en la misma empresa.

2. Realizar un análisis univariado (caracterización). Nota: Los indicadores o gráficos se usan dependiendo del tipo de variable (cuanti o cuali).

VARIABLES CUALITATIVAS:

ESTADO CIVIL

library(readxl)
datos_rotacion <- read_excel("E:/Users/Diana Torres/Downloads/datos_rotacion.xlsx")
porcentajes1 = as.numeric(round(((prop.table(table(datos_rotacion$Estado_Civil)))*100),2))
porcentajes1
## [1] 45.78 22.24 31.97
etiquetas1 <- c("Casado", "Divorciado", "Soltero")
etiquetas1
## [1] "Casado"     "Divorciado" "Soltero"
etiquetas1 = paste(etiquetas1, porcentajes1)
etiquetas1
## [1] "Casado 45.78"     "Divorciado 22.24" "Soltero 31.97"
etiquetas1 <- paste(etiquetas1, "%", sep = "")
etiquetas1
## [1] "Casado 45.78%"     "Divorciado 22.24%" "Soltero 31.97%"
pie(porcentajes1, etiquetas1,
    main = "EMPLEADOS DE LA EMPRESA",
    sub = "Composición por ESTADO CIVIL")

SATISFACCIÓN LABORAL

porcentajes2 = as.numeric(round(((prop.table(table(datos_rotacion$Satisfación_Laboral)))*100),2))
porcentajes2
## [1] 19.66 19.05 30.07 31.22
etiquetas2 <- c("Muy Insatisfecho", "Insatisfecho", "Satisfecho", "Muy Satisfecho")
etiquetas2
## [1] "Muy Insatisfecho" "Insatisfecho"     "Satisfecho"       "Muy Satisfecho"
etiquetas2 = paste(etiquetas2, porcentajes2)
etiquetas2
## [1] "Muy Insatisfecho 19.66" "Insatisfecho 19.05"     "Satisfecho 30.07"      
## [4] "Muy Satisfecho 31.22"
etiquetas2 <- paste(etiquetas2, "%", sep = "")
etiquetas2
## [1] "Muy Insatisfecho 19.66%" "Insatisfecho 19.05%"    
## [3] "Satisfecho 30.07%"       "Muy Satisfecho 31.22%"
pie(porcentajes2, etiquetas2,
    main = "EMPLEADOS DE LA EMPRESA",
    sub = "Estado de Satisfacción")

EQUILIBRIO TRABAJO VIDA

porcentajes3 = as.numeric(round(((prop.table(table(datos_rotacion$Equilibrio_Trabajo_Vida)))*100),2))
porcentajes3
## [1]  5.44 23.40 60.75 10.41
etiquetas3 <- c("Muy descompensado", "Inequilibrado", "Equilibrado","Muy equilibrado")
etiquetas3
## [1] "Muy descompensado" "Inequilibrado"     "Equilibrado"      
## [4] "Muy equilibrado"
etiquetas3 = paste(etiquetas3, porcentajes3)
etiquetas3
## [1] "Muy descompensado 5.44" "Inequilibrado 23.4"     "Equilibrado 60.75"     
## [4] "Muy equilibrado 10.41"
etiquetas3 <- paste(etiquetas3, "%", sep = "")
etiquetas3
## [1] "Muy descompensado 5.44%" "Inequilibrado 23.4%"    
## [3] "Equilibrado 60.75%"      "Muy equilibrado 10.41%"
pie(porcentajes3, etiquetas3,
    main = "EMPLEADOS DE LA EMPRESA",
    sub = "Equilibrio Vida Vs. Trabajo")

VARIABLES CUANTITATIVAS:

EDAD

promedio = mean(datos_rotacion$Edad)
desviación =sd(datos_rotacion$Edad)
data.frame(promedio,desviación)
##   promedio desviación
## 1 36.92381   9.135373
require(ggplot2)
ggplot(datos_rotacion,aes(x=Edad))+geom_histogram(fill="red")+theme_bw()

summary(datos_rotacion$Edad)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   18.00   30.00   36.00   36.92   43.00   60.00

INGRESO MENSUAL

promedio = mean(datos_rotacion$Ingreso_Mensual)
desviación =sd(datos_rotacion$Ingreso_Mensual)
data.frame(promedio,desviación)
##   promedio desviación
## 1 6502.931   4707.957
require(ggplot2)
ggplot(datos_rotacion,aes(x=Ingreso_Mensual))+geom_histogram(fill="red")+theme_bw()

summary(datos_rotacion$Ingreso_Mensual)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1009    2911    4919    6503    8379   19999

ANTIGUEDAD

promedio = mean(datos_rotacion$Antigüedad)
desviación =sd(datos_rotacion$Antigüedad)
data.frame(promedio,desviación)
##   promedio desviación
## 1 7.008163   6.126525
require(ggplot2)
ggplot(datos_rotacion,aes(x=Antigüedad))+geom_histogram(fill="red")+theme_bw()

summary(datos_rotacion$Antigüedad)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   3.000   5.000   7.008   9.000  40.000

3. Realizar un análisis bivariado (siempre contra la rotación)

Bivariado - Cuali vs. Cuali

ESTADO CIVIL:

attach(datos_rotacion)
tabla1=table(Rotación,`Estado_Civil`)
tabla1
##         Estado_Civil
## Rotación Casado Divorciado Soltero
##       No    589        294     350
##       Si     84         33     120
prop.table(tabla1, margin=1)*100
##         Estado_Civil
## Rotación   Casado Divorciado  Soltero
##       No 47.76967   23.84428 28.38605
##       Si 35.44304   13.92405 50.63291
prop.table(tabla1,margin=2)*100
##         Estado_Civil
## Rotación   Casado Divorciado  Soltero
##       No 87.51857   89.90826 74.46809
##       Si 12.48143   10.09174 25.53191

INTERPRETACIÓN:

Entre las personas que NO rotan, los casados tienen el mayor peso con un 47,76%. Los que presentan una mayor rotación son los solteros quienes constituyen el 50,63% de las personas quer rotan. Los solteros tienden tambien a ser los que más rotan dentro de su categoría, con un 25,5% de solteros que cambiaron de trabajo; frente a los divorciados y casados que en su categoria rotaron 10,09% y 12,48% respectivamente.

SATISFACCIÓN LABORAL:

attach(datos_rotacion)
tabla2=table(Rotación,`Satisfación_Laboral`)
tabla2
##         Satisfación_Laboral
## Rotación   1   2   3   4
##       No 223 234 369 407
##       Si  66  46  73  52
prop.table(tabla2, margin=1)*100
##         Satisfación_Laboral
## Rotación        1        2        3        4
##       No 18.08597 18.97810 29.92701 33.00892
##       Si 27.84810 19.40928 30.80169 21.94093
prop.table(tabla2,margin=2)*100
##         Satisfación_Laboral
## Rotación        1        2        3        4
##       No 77.16263 83.57143 83.48416 88.67102
##       Si 22.83737 16.42857 16.51584 11.32898

INTERPRETACIÓN:

Se observa que las personas que estan muy satisfechas con su trabajo tienden a permanecer en su empleo más que aquellas muy insatisfechas. De todas las personas que permanecieron en su empleo el 33% estan muy satisfechas en el mismo, mientras que solo el 18% de las que permanecen son personas muy insatisfechas. Entre las personas muy satisfechas solo el 11% de estas rotaron; mientras que entre las personas muy insatisfechas el 22% rotaron.

EQUILIBRIO TRABAJO VIDA:

attach(datos_rotacion)
tabla3=table(Rotación,`Equilibrio_Trabajo_Vida`)
tabla3
##         Equilibrio_Trabajo_Vida
## Rotación   1   2   3   4
##       No  55 286 766 126
##       Si  25  58 127  27
prop.table(tabla3, margin=1)*100
##         Equilibrio_Trabajo_Vida
## Rotación         1         2         3         4
##       No  4.460665 23.195458 62.124899 10.218978
##       Si 10.548523 24.472574 53.586498 11.392405
prop.table(tabla3,margin=2)*100
##         Equilibrio_Trabajo_Vida
## Rotación        1        2        3        4
##       No 68.75000 83.13953 85.77828 82.35294
##       Si 31.25000 16.86047 14.22172 17.64706

INTERPRETACIÓN:

Se observa que la mayoría de personas considera que tiene una vida bien equilibrada, al concentrarse la mayoría de la muestra en niveles de 3 y 4. Los resultados son consistentes con la hipotesis que una persona desequilibrada tiende a rotar más que una que se siente en equilibrio, con 31,25 % de las personas muy desequilibradas rotando, frente a 17,64% de las personas muy en equilibrio rotando.Esto en el caso de los extremos: Muy equilibrado y Muy desequilibrado. Cuando el estado de equilibrio no se encuentra en un extremo se observa un comportamiento más similar encuanto a la rotación.

Bivariado - Cuali vs. Cuanti:

EDAD

tapply(Edad, Rotación, mean)
##       No       Si 
## 37.56123 33.60759

INTERPRECIÓN: En promedio una persona que decide cambiar de trabajo es más joven, con 33,60 años promedio, que una personas que decide permanecer en el mismo, con 37,56 años promedio.

SALARIO

tapply(Ingreso_Mensual, Rotación, mean)
##       No       Si 
## 6832.740 4787.093

INTERPRETACIÓN: En promedio una persona con un ingreso bajo, cercano a los 4787.09 en promedio, tiende a rotar más que una persona con un ingreso mayor, cercano a 6832,74 en promedio.

ANTIGUEDAD

tapply(Antigüedad, Rotación, mean)
##       No       Si 
## 7.369019 5.130802

INTERPRETACIÓN: Una persona con una antigüedad cercana a los 5 años en promedio tiende a rotar más que una persona con 7 años promedio en la misma empresa.

4. Estime un modelo de regresión logística para la relación entre la rotación y las variables seleccionadas. Interprete el summary del modelo y concluya que variables si afectan y cómo la rotación. Comparar los resultados con la hipótesis planteada inicialmente y determinar si los datos apoyan o no la hipótesis.

#MODELO LOGISCICO:

datos_rotacion$Rotación2=as.numeric(datos_rotacion$Rotación=="Si")

mod5 = glm(formula = Rotación2~`Satisfación_Laboral`+`Estado_Civil`+`Equilibrio_Trabajo_Vida`+Edad+Ingreso_Mensual+Antigüedad,data = datos_rotacion,family="binomial")
summary(mod5)
## 
## Call:
## glm(formula = Rotación2 ~ Satisfación_Laboral + Estado_Civil + 
##     Equilibrio_Trabajo_Vida + Edad + Ingreso_Mensual + Antigüedad, 
##     family = "binomial", data = datos_rotacion)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.2728  -0.6246  -0.4736  -0.3038   3.1107  
## 
## Coefficients:
##                           Estimate Std. Error z value Pr(>|z|)    
## (Intercept)              1.108e+00  4.732e-01   2.342  0.01917 *  
## Satisfación_Laboral     -2.856e-01  6.650e-02  -4.295 1.74e-05 ***
## Estado_CivilDivorciado  -2.642e-01  2.219e-01  -1.191  0.23382    
## Estado_CivilSoltero      7.983e-01  1.633e-01   4.887 1.02e-06 ***
## Equilibrio_Trabajo_Vida -2.689e-01  1.025e-01  -2.623  0.00871 ** 
## Edad                    -2.540e-02  9.663e-03  -2.628  0.00859 ** 
## Ingreso_Mensual         -6.757e-05  2.541e-05  -2.660  0.00782 ** 
## Antigüedad              -4.149e-02  1.824e-02  -2.275  0.02291 *  
## ---
## 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: 1177.0  on 1462  degrees of freedom
## AIC: 1193
## 
## Number of Fisher Scoring iterations: 5

INTERPRECIÓN: En el modelo estimado, se observa que las variables mas relevantes y determinantes en la rotacion son la satisfaccion laboral, y el estado civil soltero. Consideramos que el modelo esta bien estimado, ya que 5 de las 7 variables escogidas tienen relevancia.

5. Proponga los datos de las variables predictoras para predecir la probabilidad de que un empleado rote (los datos los deben proponer con base en la información, no incluir valores ilógicos no observados).

predict(mod5,list(Satisfación_Laboral=3,Estado_Civil="Soltero",Equilibrio_Trabajo_Vida=2,Edad=35,Ingreso_Mensual=5000, Antigüedad=6,type="response"))
##          1 
## -0.9637235

INTERPRETACIÓN: Con los datos propuestos, el modelo preditivo tiene una propabilidad del 96%

6. Utilice el modelo para predecir la probabilidad de que cada empleado rote y proponga un corte de probabilidad para comparar si el modelo clasifica bien o no (presente la matriz de confusión y métrica de % de buenos clasificados).

MODELO PARA PREDECIR:

datos_rotacion$Rotación2=as.numeric(datos_rotacion$Rotación=="Si")
datos_rotacion$Estado_Civil2=as.numeric(datos_rotacion$Estado_Civil=="Soltero")

mod6 = glm(formula = Rotación2~`Satisfación_Laboral`+`Estado_Civil2`+`Equilibrio_Trabajo_Vida`+Edad+Ingreso_Mensual+Distancia_Casa,data = datos_rotacion,family="binomial")
summary(mod6)
## 
## Call:
## glm(formula = Rotación2 ~ Satisfación_Laboral + Estado_Civil2 + 
##     Equilibrio_Trabajo_Vida + Edad + Ingreso_Mensual + Distancia_Casa, 
##     family = "binomial", data = datos_rotacion)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.4864  -0.6349  -0.4698  -0.3018   2.9985  
## 
## Coefficients:
##                           Estimate Std. Error z value Pr(>|z|)    
## (Intercept)              0.6966209  0.4772293   1.460 0.144367    
## Satisfación_Laboral     -0.2886247  0.0666043  -4.333 1.47e-05 ***
## Estado_Civil2            0.9089178  0.1507130   6.031 1.63e-09 ***
## Equilibrio_Trabajo_Vida -0.2554256  0.1031920  -2.475 0.013314 *  
## Edad                    -0.0283987  0.0097314  -2.918 0.003520 ** 
## Ingreso_Mensual         -0.0000928  0.0000242  -3.835 0.000126 ***
## Distancia_Casa           0.0291246  0.0088235   3.301 0.000964 ***
## ---
## 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: 1173.3  on 1463  degrees of freedom
## AIC: 1187.3
## 
## Number of Fisher Scoring iterations: 5

MODIFICACIÓN DEL MODELO: Cambiamos la variable Antigüedad dado que al correr el modelo se observa que no es tan significativa para explicar la rotación laboral. Ésta es reemplazada por: Distancia a Casa, que pensamos es un factor relevante a la hora de escoger un trabajo, especialmente si el trabajo se encuentra en un municipio o ciudad diferente al que se vive. Con esto conseguimos un modelo con variables explicativas más robustas que el anterior.

Supongamos que quiero saber el valor de y (default)

beta0= 0.6966209
beta1= -0.2886247
beta2= 0.9089178
beta3= -0.2554256
beta4= -0.0283987
beta5= -0.0000928
beta6= 0.0291246

lineal= beta0 +(beta1*2) + (beta2*1) + (beta3*3) + (beta4*27) + (beta5*3000) + (beta6*4)

exp(lineal)/(1+exp(lineal))
## [1] 0.3392465
predict(mod6,list(Satisfación_Laboral=2,Estado_Civil2=1,Equilibrio_Trabajo_Vida=3, Edad=27,Ingreso_Mensual=3000,Distancia_Casa=4),type="response")
##         1 
## 0.3392459
y_mod=mod6$fitted.values
y_real=Rotación

y_mod_binario=as.numeric(y_mod>0.05)
tabla=table(y_mod_binario,y_real)
tabla
##              y_real
## y_mod_binario   No   Si
##             0  162   11
##             1 1071  226
(tabla[1,1]+tabla[2,2])/sum(tabla)*100
## [1] 26.39456
##Definir el mejor corte

cal_corte=function(corte){
y_mod_binario=as.numeric(y_mod>corte)
tabla=table(y_mod_binario,y_real)
buenos_clasificados=(tabla[1,1]+tabla[2,2])/sum(tabla)*100
return(buenos_clasificados)
}

cal_corte(0.4)
## [1] 84.35374
cortes=seq(0.04,0.5,0.01)
probas=sapply(cortes,cal_corte)

plot(cortes,probas,type="b")

7. En las conclusiones se discute sobre cual seria la estrategia para disminuir la rotación en la empresa con base en los resultados de las variables significativas. Ejemplo: Mejorar el ambiente laboral, los incentivos económicos, distribuir la carga de horas extra (menos turnos y mas personal).

ESTRATEGIAS PARA DISMINUIR LA ROTACIÓN:

  1. DISTANCIA A CASA: Se propone establecer el teletrabajo para aquellas personas cuyas funciones lo permitan y que vivan en municipios por fuera del municipio donde esta ubicada la empresa. Tambien para todos aquellos que vivan a una distancia considerable.

Crear una linea de crédito para compra de vivienda con tasas bajas para apoyar la compra de vivienda cercana al lugar de trabajo.

  1. INGRESO MENSUAL: Establecer incentivos que aumenten el ingreso salarial de los empleados como recompensa a una mayor productividad. De tal manera que se beneficien ambas partes, tanto empresa como empleados.

  2. SATISFACCION LABORAL: Desarrollar actividades y programas que incentiven el buen ambiente laboral, como: Fiestas de Fin de Año, Dias libres por cumpleaños, Reconocimientos por Antigüedad en la empresa, Regalos de navidad a hijos de empleados menores de 8 años. Establecer horarios flexibles para aquellos cargos cuyas funciones lo permitan.

  3. ESTADO CIVIL (SOLTERO): Nos abstenemos de hacer sugerencias respecto dicha variable pues podría presentarse para hechos discriminatorios.

  4. EDAD: Nos abstenemos de hacer sugerencias respecto dicha variable pues podría presentarse para hechos discriminatorios.

  5. EQUILIBRIO VIDA TRABAJO: Variable irrelevante, por lo que decidimos enfocar nuestros esfuerzos en las 3 primeras variables mencionadas.