library(readxl)
Datos_Rotacion <- read_excel("Clase 10 septiembre/Datos_Rotacion.xlsx")
View(Datos_Rotacion)
#Edad : Se espera obervar dentro de esta base de datos que a menor edad se presente mayor indice de rotación en comparación con las personas de mayor edad. La hipotesis en este caso sugiere que las personas mas jovenes o de menor edad presentaran mayores indices de rotación, dado que tienen mayor facilidad para acceder al mercado laboral, mientras que una persona de mayor edad se encuentra restringido en el abanico de mercado.
#Distancia : El personal que habite a mayor distancia rotara con mayor frecuencia en relación a aquellos que habiten mas cerca a su sitio de trabajo. En esta variable la hipotesis ronda en que el colaborador o empleado que viva a mayor distancia de su lugar de trabajo rotara mas en la busqueda constante de una mayor cercania entre su hogar y su trabajo.
#Ingresos : Se espera que los colaboradores con mejor nivel salarial roten menos que los colaboradores con salarios de nivel bajo o basico, esto debido a que las personas con ingresos bajos no lograr satisfacer completamente sus necesidades en relación con el costos de vida de las familias por lo que estas personas esten constantemente en busca de empleos con mejores remuneraciones.
summary(Datos_Rotacion$Edad)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 18.00 30.00 36.00 36.92 43.00 60.00
sd(Datos_Rotacion$Edad)
## [1] 9.135373
hist(Datos_Rotacion$Edad,
main = "Edad",
border = "blue",
col = "green",
labels = F,
density = 5,
angle = 30)
boxplot(Datos_Rotacion$Edad,
main = "Edad Empleados",
boxfill = "green")
La población de la base de datos tiene una edad promedio de 37 Años con una desviación de 9 años.
summary(Datos_Rotacion$Distancia_Casa)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 2.000 7.000 9.193 14.000 29.000
sd(Datos_Rotacion$Distancia_Casa)
## [1] 8.106864
hist(Datos_Rotacion$Distancia_Casa,
main = "Distancia Vivienda - Oficina",
border = "blue",
col = "green",
labels = F,
density = 5,
angle = 30)
boxplot(Datos_Rotacion$Edad,
main = "Distancia Vivienda - Oficina",
boxfill = "green")
La distancia promedio entre las viviendas de los empleados y el lugar de trabajo tiene un promedio de 9 Kilometros con una desviación de 8 Kilometros.
summary(Datos_Rotacion$Ingreso_Mensual)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1009 2911 4919 6503 8379 19999
sd(Datos_Rotacion$Ingreso_Mensual)
## [1] 4707.957
hist(Datos_Rotacion$Ingreso_Mensual,
main = "Ingresos Mensuales",
border = "blue",
col = "green",
labels = F,
density = 5,
angle = 30)
boxplot(Datos_Rotacion$Edad,
main = "Ingresos Mensuales",
boxfill = "green")
El ingreso promedio mensual para los empleados de la base de datos tiene un promedio de 6,503 Millones con una desviacion de 4,707 Millones
#Variable Campo de Educación
table(Datos_Rotacion$Campo_Educacion)
##
## Ciencias Humanidades Mercadeo Otra Salud Tecnicos
## 606 27 159 82 464 132
La compañia tiene mayor número de colaboradores en las area de Ciencias y salud, en relación a las areas de mercadeo y tecnicas.
#Variable Horas Extras
table(Datos_Rotacion$Horas_Extra)
##
## No Si
## 1054 416
Solo el 29% de los empleados de la empresa realizan trabajo extra.
#Variable Estado cilvil
table(Datos_Rotacion$Estado_Civil)
##
## Casado Divorciado Soltero
## 673 327 470
#La mayor parte de los empleados son casados, sim embargo el grupo de empleados sin una relacion actual es de 797 colaboradores.
attach(Datos_Rotacion)
tapply(Edad,Rotacion,summary)
## $No
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 18.00 31.00 36.00 37.56 43.00 60.00
##
## $Si
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 18.00 28.00 32.00 33.61 39.00 58.00
#El promedio de edad de las personas que si rotan esta en los 34 años mientras que los que no rotan tienen un promedio de edad de 38.
tapply(Distancia_Casa,Rotacion,mean)
## No Si
## 8.915653 10.632911
#Las persona que han rotado de la empresa vivian en promedio a 11 Kilometros mientras que los que han permanecido en la compañia se encuentra a 9 Kilometros de su sitio de trabajo.
tapply(Ingreso_Mensual,Rotacion,mean)
## No Si
## 6832.740 4787.093
TablaHE=table(Rotacion,Horas_Extra)
TablaHE
## Horas_Extra
## Rotacion No Si
## No 944 289
## Si 110 127
prop.table(TablaHE,margin = 1)*100
## Horas_Extra
## Rotacion No Si
## No 76.56123 23.43877
## Si 46.41350 53.58650
prop.table(TablaHE,margin = 2)*100
## Horas_Extra
## Rotacion No Si
## No 89.56357 69.47115
## Si 10.43643 30.52885
TablaEc=table(Rotacion,Estado_Civil)
TablaEc
## Estado_Civil
## Rotacion Casado Divorciado Soltero
## No 589 294 350
## Si 84 33 120
prop.table(TablaEc,margin = 1)*100
## Estado_Civil
## Rotacion Casado Divorciado Soltero
## No 47.76967 23.84428 28.38605
## Si 35.44304 13.92405 50.63291
prop.table(TablaEc,margin = 2)*100
## Estado_Civil
## Rotacion Casado Divorciado Soltero
## No 87.51857 89.90826 74.46809
## Si 12.48143 10.09174 25.53191
TablaCE=table(Rotacion,Campo_Educacion)
TablaCE
## Campo_Educacion
## Rotacion Ciencias Humanidades Mercadeo Otra Salud Tecnicos
## No 517 20 124 71 401 100
## Si 89 7 35 11 63 32
prop.table(TablaCE,margin = 1)*100
## Campo_Educacion
## Rotacion Ciencias Humanidades Mercadeo Otra Salud Tecnicos
## No 41.930251 1.622060 10.056772 5.758313 32.522303 8.110300
## Si 37.552743 2.953586 14.767932 4.641350 26.582278 13.502110
prop.table(TablaCE,margin = 2)*100
## Campo_Educacion
## Rotacion Ciencias Humanidades Mercadeo Otra Salud Tecnicos
## No 85.31353 74.07407 77.98742 86.58537 86.42241 75.75758
## Si 14.68647 25.92593 22.01258 13.41463 13.57759 24.24242
Se presenta el modelo de regresión logistica con el fin de encontrar la relación existente entre las variable seleccionadas y la rotacion del personal en la empresa
Rotacion2=as.numeric(Rotacion=="Si")
modrle=glm(Rotacion2~Edad+Distancia_Casa+Ingreso_Mensual+Campo_Educacion+Horas_Extra+Estado_Civil,family = "binomial")
summary(modrle)
##
## Call:
## glm(formula = Rotacion2 ~ Edad + Distancia_Casa + Ingreso_Mensual +
## Campo_Educacion + Horas_Extra + Estado_Civil, family = "binomial")
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.6309 -0.5849 -0.3977 -0.2431 2.9312
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.290e+00 3.768e-01 -3.425 0.000616 ***
## Edad -2.950e-02 1.011e-02 -2.918 0.003521 **
## Distancia_Casa 3.149e-02 9.250e-03 3.404 0.000663 ***
## Ingreso_Mensual -1.096e-04 2.591e-05 -4.230 2.33e-05 ***
## Campo_EducacionHumanidades 1.140e+00 4.915e-01 2.320 0.020315 *
## Campo_EducacionMercadeo 6.540e-01 2.493e-01 2.624 0.008702 **
## Campo_EducacionOtra -2.701e-01 3.705e-01 -0.729 0.466036
## Campo_EducacionSalud -1.206e-01 1.915e-01 -0.630 0.528943
## Campo_EducacionTecnicos 6.694e-01 2.571e-01 2.603 0.009229 **
## Horas_ExtraSi 1.506e+00 1.587e-01 9.488 < 2e-16 ***
## Estado_CivilDivorciado -2.832e-01 2.297e-01 -1.233 0.217488
## Estado_CivilSoltero 9.083e-01 1.725e-01 5.266 1.40e-07 ***
## ---
## 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: 1085.3 on 1458 degrees of freedom
## AIC: 1109.3
##
## Number of Fisher Scoring iterations: 5
#Con respecto a los ingresos, se presenta una relación inversa, donde a menor ingreso se genera mayor rotación del personal, con esto se confirma la hipotesis planteada inicialmente.
predict(modrle,list(Edad=29,Distancia_Casa=10,Ingreso_Mensual=5000,Campo_Educacion="Ciencias",Horas_Extra="No",Estado_Civil="Soltero"),type="response")
## 1
## 0.1868535
#Con base en el modelo para una persona de 29 años que vive a 10 Kilometros de su lugar de trabajo, con un ingreso mensual de 5 millones, que labore en el campo de las ciencias, no genere horas extras y de estado civil soltero se tiene una probabilidad de rotación del 18,68% la cual no es muy alta ya que sus ingresos son altos en comparacion con los otros empleados.
y_modrle=modrle$fitted.values
y=Rotacion
y_modrle2=as.numeric(y_modrle>0.4)
mat_confu=table(y_modrle2,y)
mat_confu
## y
## y_modrle2 No Si
## 0 1182 166
## 1 51 71
(mat_confu[1,1]+mat_confu[2,2])/sum(mat_confu)*100
## [1] 85.2381
cal_metrica=function(corte){
y_modrle2=as.numeric(y_modrle>corte)
mat_confu=table(y_modrle2,y)
metrica=(mat_confu[1,1]+mat_confu[2,2])/sum(mat_confu)*100
return(metrica)
}
cal_metrica(0.4) #test
## [1] 85.2381
cortes=seq(from = 0.05,to = 0.8,by = 0.02) #es igual a seq(0.05,0.8,0.02)
por_clasificados=sapply(cortes, cal_metrica)
plot(cortes,por_clasificados,type="b")
# Este modelo tienen un poder predictivo del 85,23 % para determinar la probabilidad de que un empleado rote o no.
##Punto 7 : Conclusiones
#Fomentar canales de estudio, creando convenios o alianzas con instituciones acreditadas de nivel medio y superior, para escalafones internamente dentro de la compañía permitiendo así que colaboradores con edades inferiores a los 33 años permanezcan y no se generen rotaciones del mismo
#Desarrollar programas de alternancia en las que se fomente el trabajo en casa, cumpliendo cronogramas de actividades en los que se le permita al empleado tener más espacio personal y familiar como un incentivo pese a las largas distancias que puedan existir entre su hogar y la empresa para aquellos días que deberá asistir a la misma
#crear incentivos económicos para aquellos colaboradores que reflejen aptitudes en campos de conocimiento específicos de la empresa ya sea de manera empírica o de formación, valorando tanto su conocimiento como experiencia sin importar su rago de edad
#crear canales por departamentos de estudio específico( humanidades Ciencias, mercadeo, etc) en las que el personal cree un perfil versátil y tanto sus conocimientos como sus aptitudes pueda ser desarrolladas en diversidad de tareas no propias de su campo de estudio pero si remuneradas)
#Motivar al personal que se encuentre ubicado a mayor distancia de su trabajo con bonificaciones no constitutivas de salario para facilitar su desplazamiento donde esté no acarree un costo adicional o egreso cuantioso.