Rotación de cargo
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 describen los pasos que la gerencia ha propuesto para el análisis:
Seleccione 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).
Rotación: esta es la variable que buscamos explicar
Genero: se plantea que por las demás obligaciones del hogar que tienen principalmente las mujeres, estas tendrían una mayor probabilidad de rotar de empleo dado que necesitan un trabajo que se adapte a sus demás compromisos.
Departamento: se plantea que departamentos como ventas tienen mayor exigencia sobre sus empelados, por tanto, estos buscan mayor rotación laboral. Caso contrario a lo ocurrido en departamentos como recursos humanos.
Estado civil: se plantea que una persona que esté casada buscará una mayor estabilidad laboral dadas sus obligaciones familiares, esto frente a una persona soltera y/o divorsiada que estaría más abierta a cambiar de empleo.
Ingresos mensuales: se plantea que personas con ingresos bajos tendrían mayores incentivos a rotar de trabajo en busca de mayores y mejores ingresos.
Edad: se plantea que a mayor edad las personas tienen menores incentivos en rotar de trabajo, esto dado que conocen y saben desempeñar una labor y comenzar con otra nueva puede asociarse a un riesgo alto. Caso contrario ocurriría con los jóvenes, los cuales estarían más abiertos a aprender y desempeñar diferentes roles en las empresas.
Distancia casa: se plantea que una persona que vive lejos de su sitio de trabajo tiene mayores incentivos a rotar de trabajo, dados los costo en téminos de tiempo que debe afrontar para llegar a este.
Realiza un análisis univariado (caracterización) de la información contenida en la base de datos rotacion.
#devtools::install_github("dgonxalex80/paqueteMODELOS", force = TRUE)
library(paqueteMODELOS)
data("rotacion")
#Descripción general de las variables de la base de datos
summary(rotacion)
## 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
#devtools::install_github("dgonxalex80/paqueteMODELOS", force = TRUE)
library(paqueteMODELOS)
data("rotacion")
#Descripción general de las variables de la base de datos
freq(rotacion)
## Frequencies
## rotacion$Rotación
## Type: Character
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
## No 1233 83.88 83.88 83.88 83.88
## Si 237 16.12 100.00 16.12 100.00
## <NA> 0 0.00 100.00
## Total 1470 100.00 100.00 100.00 100.00
##
## rotacion$Viaje de Negocios
## Type: Character
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## -------------------- ------ --------- -------------- --------- --------------
## Frecuentemente 277 18.84 18.84 18.84 18.84
## No_Viaja 150 10.20 29.05 10.20 29.05
## Raramente 1043 70.95 100.00 70.95 100.00
## <NA> 0 0.00 100.00
## Total 1470 100.00 100.00 100.00 100.00
##
## rotacion$Departamento
## Type: Character
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ------------ ------ --------- -------------- --------- --------------
## IyD 961 65.37 65.37 65.37 65.37
## RH 63 4.29 69.66 4.29 69.66
## Ventas 446 30.34 100.00 30.34 100.00
## <NA> 0 0.00 100.00
## Total 1470 100.00 100.00 100.00 100.00
##
## rotacion$Educación
## Type: Numeric
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
## 1 170 11.56 11.56 11.56 11.56
## 2 282 19.18 30.75 19.18 30.75
## 3 572 38.91 69.66 38.91 69.66
## 4 398 27.07 96.73 27.07 96.73
## 5 48 3.27 100.00 3.27 100.00
## <NA> 0 0.00 100.00
## Total 1470 100.00 100.00 100.00 100.00
##
## rotacion$Campo_Educación
## Type: Character
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ----------------- ------ --------- -------------- --------- --------------
## Ciencias 606 41.22 41.22 41.22 41.22
## Humanidades 27 1.84 43.06 1.84 43.06
## Mercadeo 159 10.82 53.88 10.82 53.88
## Otra 82 5.58 59.46 5.58 59.46
## Salud 464 31.56 91.02 31.56 91.02
## Tecnicos 132 8.98 100.00 8.98 100.00
## <NA> 0 0.00 100.00
## Total 1470 100.00 100.00 100.00 100.00
##
## rotacion$Satisfacción_Ambiental
## Type: Numeric
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
## 1 284 19.32 19.32 19.32 19.32
## 2 287 19.52 38.84 19.52 38.84
## 3 453 30.82 69.66 30.82 69.66
## 4 446 30.34 100.00 30.34 100.00
## <NA> 0 0.00 100.00
## Total 1470 100.00 100.00 100.00 100.00
##
## rotacion$Genero
## Type: Character
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
## F 588 40.00 40.00 40.00 40.00
## M 882 60.00 100.00 60.00 100.00
## <NA> 0 0.00 100.00
## Total 1470 100.00 100.00 100.00 100.00
##
## rotacion$Cargo
## Type: Character
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ----------------------------- ------ --------- -------------- --------- --------------
## Director_Investigación 80 5.44 5.44 5.44 5.44
## Director_Manofactura 145 9.86 15.31 9.86 15.31
## Ejecutivo_Ventas 326 22.18 37.48 22.18 37.48
## Gerente 102 6.94 44.42 6.94 44.42
## Investigador_Cientifico 292 19.86 64.29 19.86 64.29
## Recursos_Humanos 52 3.54 67.82 3.54 67.82
## Representante_Salud 131 8.91 76.73 8.91 76.73
## Representante_Ventas 83 5.65 82.38 5.65 82.38
## Tecnico_Laboratorio 259 17.62 100.00 17.62 100.00
## <NA> 0 0.00 100.00
## Total 1470 100.00 100.00 100.00 100.00
##
## rotacion$Satisfación_Laboral
## Type: Numeric
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
## 1 289 19.66 19.66 19.66 19.66
## 2 280 19.05 38.71 19.05 38.71
## 3 442 30.07 68.78 30.07 68.78
## 4 459 31.22 100.00 31.22 100.00
## <NA> 0 0.00 100.00
## Total 1470 100.00 100.00 100.00 100.00
##
## rotacion$Estado_Civil
## Type: Character
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ---------------- ------ --------- -------------- --------- --------------
## Casado 673 45.78 45.78 45.78 45.78
## Divorciado 327 22.24 68.03 22.24 68.03
## Soltero 470 31.97 100.00 31.97 100.00
## <NA> 0 0.00 100.00
## Total 1470 100.00 100.00 100.00 100.00
##
## rotacion$Trabajos_Anteriores
## Type: Numeric
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
## 0 197 13.40 13.40 13.40 13.40
## 1 521 35.44 48.84 35.44 48.84
## 2 146 9.93 58.78 9.93 58.78
## 3 159 10.82 69.59 10.82 69.59
## 4 139 9.46 79.05 9.46 79.05
## 5 63 4.29 83.33 4.29 83.33
## 6 70 4.76 88.10 4.76 88.10
## 7 74 5.03 93.13 5.03 93.13
## 8 49 3.33 96.46 3.33 96.46
## 9 52 3.54 100.00 3.54 100.00
## <NA> 0 0.00 100.00
## Total 1470 100.00 100.00 100.00 100.00
##
## rotacion$Horas_Extra
## Type: Character
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
## No 1054 71.70 71.70 71.70 71.70
## Si 416 28.30 100.00 28.30 100.00
## <NA> 0 0.00 100.00
## Total 1470 100.00 100.00 100.00 100.00
##
## rotacion$Porcentaje_aumento_salarial
## Type: Numeric
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
## 11 210 14.29 14.29 14.29 14.29
## 12 198 13.47 27.76 13.47 27.76
## 13 209 14.22 41.97 14.22 41.97
## 14 201 13.67 55.65 13.67 55.65
## 15 101 6.87 62.52 6.87 62.52
## 16 78 5.31 67.82 5.31 67.82
## 17 82 5.58 73.40 5.58 73.40
## 18 89 6.05 79.46 6.05 79.46
## 19 76 5.17 84.63 5.17 84.63
## 20 55 3.74 88.37 3.74 88.37
## 21 48 3.27 91.63 3.27 91.63
## 22 56 3.81 95.44 3.81 95.44
## 23 28 1.90 97.35 1.90 97.35
## 24 21 1.43 98.78 1.43 98.78
## 25 18 1.22 100.00 1.22 100.00
## <NA> 0 0.00 100.00
## Total 1470 100.00 100.00 100.00 100.00
##
## rotacion$Rendimiento_Laboral
## Type: Numeric
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
## 3 1244 84.63 84.63 84.63 84.63
## 4 226 15.37 100.00 15.37 100.00
## <NA> 0 0.00 100.00
## Total 1470 100.00 100.00 100.00 100.00
##
## rotacion$Capacitaciones
## Type: Numeric
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
## 0 54 3.67 3.67 3.67 3.67
## 1 71 4.83 8.50 4.83 8.50
## 2 547 37.21 45.71 37.21 45.71
## 3 491 33.40 79.12 33.40 79.12
## 4 123 8.37 87.48 8.37 87.48
## 5 119 8.10 95.58 8.10 95.58
## 6 65 4.42 100.00 4.42 100.00
## <NA> 0 0.00 100.00
## Total 1470 100.00 100.00 100.00 100.00
##
## rotacion$Equilibrio_Trabajo_Vida
## Type: Numeric
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
## 1 80 5.44 5.44 5.44 5.44
## 2 344 23.40 28.84 23.40 28.84
## 3 893 60.75 89.59 60.75 89.59
## 4 153 10.41 100.00 10.41 100.00
## <NA> 0 0.00 100.00
## Total 1470 100.00 100.00 100.00 100.00
##
## rotacion$Antigüedad_Cargo
## Type: Numeric
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
## 0 244 16.60 16.60 16.60 16.60
## 1 57 3.88 20.48 3.88 20.48
## 2 372 25.31 45.78 25.31 45.78
## 3 135 9.18 54.97 9.18 54.97
## 4 104 7.07 62.04 7.07 62.04
## 5 36 2.45 64.49 2.45 64.49
## 6 37 2.52 67.01 2.52 67.01
## 7 222 15.10 82.11 15.10 82.11
## 8 89 6.05 88.16 6.05 88.16
## 9 67 4.56 92.72 4.56 92.72
## 10 29 1.97 94.69 1.97 94.69
## 11 22 1.50 96.19 1.50 96.19
## 12 10 0.68 96.87 0.68 96.87
## 13 14 0.95 97.82 0.95 97.82
## 14 11 0.75 98.57 0.75 98.57
## 15 8 0.54 99.12 0.54 99.12
## 16 7 0.48 99.59 0.48 99.59
## 17 4 0.27 99.86 0.27 99.86
## 18 2 0.14 100.00 0.14 100.00
## <NA> 0 0.00 100.00
## Total 1470 100.00 100.00 100.00 100.00
##
## rotacion$Años_ultima_promoción
## Type: Numeric
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
## 0 581 39.52 39.52 39.52 39.52
## 1 357 24.29 63.81 24.29 63.81
## 2 159 10.82 74.63 10.82 74.63
## 3 52 3.54 78.16 3.54 78.16
## 4 61 4.15 82.31 4.15 82.31
## 5 45 3.06 85.37 3.06 85.37
## 6 32 2.18 87.55 2.18 87.55
## 7 76 5.17 92.72 5.17 92.72
## 8 18 1.22 93.95 1.22 93.95
## 9 17 1.16 95.10 1.16 95.10
## 10 6 0.41 95.51 0.41 95.51
## 11 24 1.63 97.14 1.63 97.14
## 12 10 0.68 97.82 0.68 97.82
## 13 10 0.68 98.50 0.68 98.50
## 14 9 0.61 99.12 0.61 99.12
## 15 13 0.88 100.00 0.88 100.00
## <NA> 0 0.00 100.00
## Total 1470 100.00 100.00 100.00 100.00
##
## rotacion$Años_acargo_con_mismo_jefe
## Type: Numeric
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## ----------- ------ --------- -------------- --------- --------------
## 0 263 17.89 17.89 17.89 17.89
## 1 76 5.17 23.06 5.17 23.06
## 2 344 23.40 46.46 23.40 46.46
## 3 142 9.66 56.12 9.66 56.12
## 4 98 6.67 62.79 6.67 62.79
## 5 31 2.11 64.90 2.11 64.90
## 6 29 1.97 66.87 1.97 66.87
## 7 216 14.69 81.56 14.69 81.56
## 8 107 7.28 88.84 7.28 88.84
## 9 64 4.35 93.20 4.35 93.20
## 10 27 1.84 95.03 1.84 95.03
## 11 22 1.50 96.53 1.50 96.53
## 12 18 1.22 97.76 1.22 97.76
## 13 14 0.95 98.71 0.95 98.71
## 14 5 0.34 99.05 0.34 99.05
## 15 5 0.34 99.39 0.34 99.39
## 16 2 0.14 99.52 0.14 99.52
## 17 7 0.48 100.00 0.48 100.00
## <NA> 0 0.00 100.00
## Total 1470 100.00 100.00 100.00 100.00
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.
library(paqueteMODELOS)
data("rotacion")
#Recodificar
rotacion$Rotación[rotacion$Rotación == "Si"] <- 1
rotacion$Rotación[rotacion$Rotación == "No"] <- 0
table(rotacion$Rotación)
##
## 0 1
## 1233 237
#Variables cuantitativas (Educación - rotación)
#1. Histograma
config_grafico <- par(mfrow=c(1,2))
hist(rotacion$Educación[rotacion$Rotación==1],
xlab="Educación (años)",ylab="Densidad",
main="Sí - rotación")
hist(rotacion$Educación[rotacion$Rotación==0],
xlab="Educación (años)",ylab="Densidad",
main="No - rotación")
#2. gráfico de cajas
config_grafico <- par(mfrow=c(1,1))
boxplot(Educación~Rotación,
rotacion,
xlab="Rotación",
ylab="Educación",
xaxt="n")
axis(1, at=1:2,
labels=c("No rotación","Sí rotación"))
#3. medidas
by(rotacion$Educación,rotacion$Rotación,summary)
## rotacion$Rotación: 0
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 2.000 3.000 2.927 4.000 5.000
## ------------------------------------------------------------
## rotacion$Rotación: 1
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.00 2.00 3.00 2.84 4.00 5.00
by(rotacion$Educación,rotacion$Rotación,IQR)
## rotacion$Rotación: 0
## [1] 2
## ------------------------------------------------------------
## rotacion$Rotación: 1
## [1] 2
#Comparación de las funciones de distribución de los grupos.
plot(ecdf(rotacion$Educación[rotacion$Rotación==1]),
main="")
lines(ecdf(rotacion$Educación[rotacion$Rotación==0]),
col=2)
#Prueba de hipótesis.
t.test(Educación~Rotación,rotacion)
##
## Welch Two Sample t-test
##
## data: Educación by Rotación
## t = 1.2177, df = 336.95, p-value = 0.2242
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
## -0.05374319 0.22843290
## sample estimates:
## mean in group 0 mean in group 1
## 2.927007 2.839662
#Variables cuantitativas (Satisfacción_Ambiental - rotación)
#1. Histograma
config_grafico <- par(mfrow=c(1,2))
hist(rotacion$Satisfacción_Ambiental[rotacion$Rotación==1],
xlab="Satisfacción ambiental",ylab="Densidad",
main="Sí - rotación")
hist(rotacion$Satisfacción_Ambiental [rotacion$Rotación==0],
xlab="Satisfacción ambiental",ylab="Densidad",
main="No - rotación")
#2. gráfico de cajas
config_grafico <- par(mfrow=c(1,1))
boxplot(Satisfacción_Ambiental~Rotación,
rotacion,
xlab="Rotación",
ylab="Satisfacción_Ambiental",
xaxt="n")
axis(1, at=1:2,
labels=c("No rotación","Sí rotación"))
#3. medidas
by(rotacion$Satisfacción_Ambiental,rotacion$Rotación,summary)
## rotacion$Rotación: 0
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 2.000 3.000 2.771 4.000 4.000
## ------------------------------------------------------------
## rotacion$Rotación: 1
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 1.000 3.000 2.464 4.000 4.000
by(rotacion$Satisfacción_Ambiental,rotacion$Rotación,IQR)
## rotacion$Rotación: 0
## [1] 2
## ------------------------------------------------------------
## rotacion$Rotación: 1
## [1] 3
#Comparación de las funciones de distribución de los grupos.
plot(ecdf(rotacion$Satisfacción_Ambiental[rotacion$Rotación==1]),
main="")
lines(ecdf(rotacion$Satisfacción_Ambiental[rotacion$Rotación==0]),
col=2)
#Prueba de hipótesis.
t.test(Satisfacción_Ambiental~Rotación,rotacion)
##
## Welch Two Sample t-test
##
## data: Satisfacción_Ambiental by Rotación
## t = 3.7513, df = 316.62, p-value = 0.0002092
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
## 0.146056 0.468253
## sample estimates:
## mean in group 0 mean in group 1
## 2.771290 2.464135
#Variables cuantitativas (Satisfacción_Laboral - rotación)
#1. Histograma
config_grafico <- par(mfrow=c(1,2))
hist(rotacion$Satisfación_Laboral[rotacion$Rotación==1],
xlab="Satisfacción laboral",ylab="Densidad",
main="Sí - rotación")
hist(rotacion$Satisfación_Laboral[rotacion$Rotación==0],
xlab="Satisfacción laboral",ylab="Densidad",
main="No - rotación")
#2. gráfico de cajas
config_grafico <- par(mfrow=c(1,1))
boxplot(Satisfación_Laboral~Rotación,
rotacion,
xlab="Rotación",
ylab="Satisfacción laboral",
xaxt="n")
axis(1, at=1:2,
labels=c("No rotación","Sí rotación"))
#3. medidas
by(rotacion$Satisfación_Laboral,rotacion$Rotación,summary)
## rotacion$Rotación: 0
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 2.000 3.000 2.779 4.000 4.000
## ------------------------------------------------------------
## rotacion$Rotación: 1
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 1.000 3.000 2.468 3.000 4.000
by(rotacion$Satisfación_Laboral,rotacion$Rotación,IQR)
## rotacion$Rotación: 0
## [1] 2
## ------------------------------------------------------------
## rotacion$Rotación: 1
## [1] 2
#Comparación de las funciones de distribución de los grupos.
plot(ecdf(rotacion$Satisfación_Laboral[rotacion$Rotación==1]),
main="")
lines(ecdf(rotacion$Satisfación_Laboral[rotacion$Rotación==0]),
col=2)
#Prueba de hipótesis.
t.test(Satisfación_Laboral~Rotación,rotacion)
##
## Welch Two Sample t-test
##
## data: Satisfación_Laboral by Rotación
## t = 3.9261, df = 328.59, p-value = 0.0001052
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
## 0.1547890 0.4656797
## sample estimates:
## mean in group 0 mean in group 1
## 2.778589 2.468354
#Variables cuantitativas (Trabajos_Anteriores - rotación)
#1. Histograma
config_grafico <- par(mfrow=c(1,2))
hist(rotacion$Trabajos_Anteriores[rotacion$Rotación==1],
xlab="Trabajos Anteriores",ylab="Densidad",
main="Sí - rotación")
hist(rotacion$Trabajos_Anteriores[rotacion$Rotación==0],
xlab="Trabajos Anteriores",ylab="Densidad",
main="No - rotación")
#2. gráfico de cajas
config_grafico <- par(mfrow=c(1,1))
boxplot(Trabajos_Anteriores~Rotación,
rotacion,
xlab="Rotación",
ylab="Trabajos Anteriores",
xaxt="n")
axis(1, at=1:2,
labels=c("No rotación","Sí rotación"))
#3. medidas
by(rotacion$Trabajos_Anteriores,rotacion$Rotación,summary)
## rotacion$Rotación: 0
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 1.000 2.000 2.646 4.000 9.000
## ------------------------------------------------------------
## rotacion$Rotación: 1
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 1.000 1.000 2.941 5.000 9.000
by(rotacion$Trabajos_Anteriores,rotacion$Rotación,IQR)
## rotacion$Rotación: 0
## [1] 3
## ------------------------------------------------------------
## rotacion$Rotación: 1
## [1] 4
#Comparación de las funciones de distribución de los grupos.
plot(ecdf(rotacion$Trabajos_Anteriores[rotacion$Rotación==1]),
main="")
lines(ecdf(rotacion$Trabajos_Anteriores[rotacion$Rotación==0]),
col=2)
#Prueba de hipótesis.
t.test(Trabajos_Anteriores~Rotación,rotacion)
##
## Welch Two Sample t-test
##
## data: Trabajos_Anteriores by Rotación
## t = -1.5747, df = 317.14, p-value = 0.1163
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
## -0.66437603 0.07367926
## sample estimates:
## mean in group 0 mean in group 1
## 2.645580 2.940928
#Variables cuantitativas (Porcentaje_aumento_salarial - rotación)
#1. Histograma
config_grafico <- par(mfrow=c(1,2))
hist(rotacion$Porcentaje_aumento_salarial[rotacion$Rotación==1],
xlab="Porcentaje aumento salarial",ylab="Densidad",
main="Sí - rotación")
hist(rotacion$Porcentaje_aumento_salarial[rotacion$Rotación==0],
xlab="Porcentaje aumento salarial",ylab="Densidad",
main="No - rotación")
#2. gráfico de cajas
config_grafico <- par(mfrow=c(1,1))
boxplot(Porcentaje_aumento_salarial~Rotación,
rotacion,
xlab="Rotación",
ylab="Porcentaje aumento salarial",
xaxt="n")
axis(1, at=1:2,
labels=c("No rotación","Sí rotación"))
#3. medidas
by(rotacion$Porcentaje_aumento_salarial,rotacion$Rotación,summary)
## rotacion$Rotación: 0
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 11.00 12.00 14.00 15.23 18.00 25.00
## ------------------------------------------------------------
## rotacion$Rotación: 1
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 11.0 12.0 14.0 15.1 17.0 25.0
by(rotacion$Porcentaje_aumento_salarial,rotacion$Rotación,IQR)
## rotacion$Rotación: 0
## [1] 6
## ------------------------------------------------------------
## rotacion$Rotación: 1
## [1] 5
#Comparación de las funciones de distribución de los grupos.
plot(ecdf(rotacion$Porcentaje_aumento_salarial[rotacion$Rotación==1]),
main="")
lines(ecdf(rotacion$Porcentaje_aumento_salarial[rotacion$Rotación==0]),
col=2)
#Prueba de hipótesis.
t.test(Porcentaje_aumento_salarial~Rotación,rotacion)
##
## Welch Two Sample t-test
##
## data: Porcentaje_aumento_salarial by Rotación
## t = 0.50424, df = 326.11, p-value = 0.6144
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
## -0.3890709 0.6572652
## sample estimates:
## mean in group 0 mean in group 1
## 15.23114 15.09705
#Variables cuantitativas (Rendimiento_Laboral - rotación)
#1. Histograma
config_grafico <- par(mfrow=c(1,2))
hist(rotacion$Rendimiento_Laboral[rotacion$Rotación==1],
xlab="Rendimiento Laboral",ylab="Densidad",
main="Sí - rotación")
hist(rotacion$Rendimiento_Laboral[rotacion$Rotación==0],
xlab="Rendimiento Laboral",ylab="Densidad",
main="No - rotación")
#2. gráfico de cajas
config_grafico <- par(mfrow=c(1,1))
boxplot(Rendimiento_Laboral~Rotación,
rotacion,
xlab="Rotación",
ylab="Rendimiento Laboral",
xaxt="n")
axis(1, at=1:2,
labels=c("No rotación","Sí rotación"))
#3. medidas
by(rotacion$Rendimiento_Laboral,rotacion$Rotación,summary)
## rotacion$Rotación: 0
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.000 3.000 3.000 3.153 3.000 4.000
## ------------------------------------------------------------
## rotacion$Rotación: 1
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.000 3.000 3.000 3.156 3.000 4.000
by(rotacion$Rendimiento_Laboral,rotacion$Rotación,IQR)
## rotacion$Rotación: 0
## [1] 0
## ------------------------------------------------------------
## rotacion$Rotación: 1
## [1] 0
#Comparación de las funciones de distribución de los grupos.
plot(ecdf(rotacion$Rendimiento_Laboral[rotacion$Rotación==1]),
main="")
lines(ecdf(rotacion$Rendimiento_Laboral[rotacion$Rotación==0]),
col=2)
#Prueba de hipótesis.
t.test(Rendimiento_Laboral~Rotación,rotacion)
##
## Welch Two Sample t-test
##
## data: Rendimiento_Laboral by Rotación
## t = -0.10999, df = 331.22, p-value = 0.9125
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
## -0.05350780 0.04784086
## sample estimates:
## mean in group 0 mean in group 1
## 3.153285 3.156118
#Variables cuantitativas (Capacitaciones - rotación)
#1. Histograma
config_grafico <- par(mfrow=c(1,2))
hist(rotacion$Capacitaciones[rotacion$Rotación==1],
xlab="Capacitaciones",ylab="Densidad",
main="Sí - rotación")
hist(rotacion$Capacitaciones[rotacion$Rotación==0],
xlab="Capacitaciones",ylab="Densidad",
main="No - rotación")
#2. gráfico de cajas
config_grafico <- par(mfrow=c(1,1))
boxplot(Capacitaciones~Rotación,
rotacion,
xlab="Rotación",
ylab="Capacitaciones",
xaxt="n")
axis(1, at=1:2,
labels=c("No rotación","Sí rotación"))
#3. medidas
by(rotacion$Capacitaciones,rotacion$Rotación,summary)
## rotacion$Rotación: 0
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 2.000 3.000 2.833 3.000 6.000
## ------------------------------------------------------------
## rotacion$Rotación: 1
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 2.000 2.000 2.624 3.000 6.000
by(rotacion$Capacitaciones,rotacion$Rotación,IQR)
## rotacion$Rotación: 0
## [1] 1
## ------------------------------------------------------------
## rotacion$Rotación: 1
## [1] 1
#Comparación de las funciones de distribución de los grupos.
plot(ecdf(rotacion$Capacitaciones[rotacion$Rotación==1]),
main="")
lines(ecdf(rotacion$Capacitaciones[rotacion$Rotación==0]),
col=2)
#Prueba de hipótesis.
t.test(Capacitaciones~Rotación,rotacion)
##
## Welch Two Sample t-test
##
## data: Capacitaciones by Rotación
## t = 2.3305, df = 339.56, p-value = 0.02036
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
## 0.03251776 0.38439273
## sample estimates:
## mean in group 0 mean in group 1
## 2.832928 2.624473
#Variables cuantitativas (Equilibrio_Trabajo_Vida - rotación)
#1. Histograma
config_grafico <- par(mfrow=c(1,2))
hist(rotacion$Equilibrio_Trabajo_Vida[rotacion$Rotación==1],
xlab="Equilibrio_Trabajo_Vida",ylab="Densidad",
main="Sí - rotación")
hist(rotacion$Equilibrio_Trabajo_Vida[rotacion$Rotación==0],
xlab="Equilibrio_Trabajo_Vida",ylab="Densidad",
main="No - rotación")
#2. gráfico de cajas
config_grafico <- par(mfrow=c(1,1))
boxplot(Equilibrio_Trabajo_Vida~Rotación,
rotacion,
xlab="Rotación",
ylab="Equilibrio_Trabajo_Vida",
xaxt="n")
axis(1, at=1:2,
labels=c("No rotación","Sí rotación"))
#3. medidas
by(rotacion$Equilibrio_Trabajo_Vida,rotacion$Rotación,summary)
## rotacion$Rotación: 0
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 2.000 3.000 2.781 3.000 4.000
## ------------------------------------------------------------
## rotacion$Rotación: 1
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 2.000 3.000 2.658 3.000 4.000
by(rotacion$Equilibrio_Trabajo_Vida,rotacion$Rotación,IQR)
## rotacion$Rotación: 0
## [1] 1
## ------------------------------------------------------------
## rotacion$Rotación: 1
## [1] 1
#Comparación de las funciones de distribución de los grupos.
plot(ecdf(rotacion$Equilibrio_Trabajo_Vida[rotacion$Rotación==1]),
main="")
lines(ecdf(rotacion$Equilibrio_Trabajo_Vida[rotacion$Rotación==0]),
col=2)
#Prueba de hipótesis.
t.test(Equilibrio_Trabajo_Vida~Rotación,rotacion)
##
## Welch Two Sample t-test
##
## data: Equilibrio_Trabajo_Vida by Rotación
## t = 2.1742, df = 302.49, p-value = 0.03047
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
## 0.01165453 0.23393357
## sample estimates:
## mean in group 0 mean in group 1
## 2.781022 2.658228
#Variables cuantitativas (Antigüedad_Cargo - rotación)
#1. Histograma
config_grafico <- par(mfrow=c(1,2))
hist(rotacion$Antigüedad_Cargo[rotacion$Rotación==1],
xlab="Antigüedad_Cargo",ylab="Densidad",
main="Sí - rotación")
hist(rotacion$Antigüedad_Cargo[rotacion$Rotación==0],
xlab="Antigüedad_Cargo",ylab="Densidad",
main="No - rotación")
#2. gráfico de cajas
config_grafico <- par(mfrow=c(1,1))
boxplot(Antigüedad_Cargo~Rotación,
rotacion,
xlab="Rotación",
ylab="Antigüedad_Cargo",
xaxt="n")
axis(1, at=1:2,
labels=c("No rotación","Sí rotación"))
#3. medidas
by(rotacion$Antigüedad_Cargo,rotacion$Rotación,summary)
## rotacion$Rotación: 0
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 2.000 3.000 4.484 7.000 18.000
## ------------------------------------------------------------
## rotacion$Rotación: 1
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 0.000 2.000 2.903 4.000 15.000
by(rotacion$Antigüedad_Cargo,rotacion$Rotación,IQR)
## rotacion$Rotación: 0
## [1] 5
## ------------------------------------------------------------
## rotacion$Rotación: 1
## [1] 4
#Comparación de las funciones de distribución de los grupos.
plot(ecdf(rotacion$Antigüedad_Cargo[rotacion$Rotación==1]),
main="")
lines(ecdf(rotacion$Antigüedad_Cargo[rotacion$Rotación==0]),
col=2)
#Prueba de hipótesis.
t.test(Antigüedad_Cargo~Rotación,rotacion)
##
## Welch Two Sample t-test
##
## data: Antigüedad_Cargo by Rotación
## t = 6.8471, df = 366.57, p-value = 3.187e-11
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
## 1.127107 2.035355
## sample estimates:
## mean in group 0 mean in group 1
## 4.484185 2.902954
#Variables cuantitativas (Años_ultima_promoción - rotación)
#1. Histograma
config_grafico <- par(mfrow=c(1,2))
hist(rotacion$Años_ultima_promoción[rotacion$Rotación==1],
xlab="Años_ultima_promoción",ylab="Densidad",
main="Sí - rotación")
hist(rotacion$Años_ultima_promoción[rotacion$Rotación==0],
xlab="Años_ultima_promoción",ylab="Densidad",
main="No - rotación")
#2. gráfico de cajas
config_grafico <- par(mfrow=c(1,1))
boxplot(Años_ultima_promoción~Rotación,
rotacion,
xlab="Rotación",
ylab="Años_ultima_promoción",
xaxt="n")
axis(1, at=1:2,
labels=c("No rotación","Sí rotación"))
#3. medidas
by(rotacion$Años_ultima_promoción,rotacion$Rotación,summary)
## rotacion$Rotación: 0
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 0.000 1.000 2.234 3.000 15.000
## ------------------------------------------------------------
## rotacion$Rotación: 1
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 0.000 1.000 1.945 2.000 15.000
by(rotacion$Años_ultima_promoción,rotacion$Rotación,IQR)
## rotacion$Rotación: 0
## [1] 3
## ------------------------------------------------------------
## rotacion$Rotación: 1
## [1] 2
#Comparación de las funciones de distribución de los grupos.
plot(ecdf(rotacion$Años_ultima_promoción[rotacion$Rotación==1]),
main="")
lines(ecdf(rotacion$Años_ultima_promoción[rotacion$Rotación==0]),
col=2)
#Prueba de hipótesis.
t.test(Años_ultima_promoción~Rotación,rotacion)
##
## Welch Two Sample t-test
##
## data: Años_ultima_promoción by Rotación
## t = 1.2879, df = 338.49, p-value = 0.1987
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
## -0.1525043 0.7309843
## sample estimates:
## mean in group 0 mean in group 1
## 2.234388 1.945148
#Variables cuantitativas (Años_acargo_con_mismo_jefe - rotación)
#1. Histograma
config_grafico <- par(mfrow=c(1,2))
hist(rotacion$Años_acargo_con_mismo_jefe[rotacion$Rotación==1],
xlab="Años_acargo_con_mismo_jefe",ylab="Densidad",
main="Sí - rotación")
hist(rotacion$Años_acargo_con_mismo_jefe[rotacion$Rotación==0],
xlab="Años_acargo_con_mismo_jefe",ylab="Densidad",
main="No - rotación")
#2. gráfico de cajas
config_grafico <- par(mfrow=c(1,1))
boxplot(Años_acargo_con_mismo_jefe~Rotación,
rotacion,
xlab="Rotación",
ylab="Años_acargo_con_mismo_jefe",
xaxt="n")
axis(1, at=1:2,
labels=c("No rotación","Sí rotación"))
#3. medidas
by(rotacion$Años_acargo_con_mismo_jefe,rotacion$Rotación,summary)
## rotacion$Rotación: 0
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 2.000 3.000 4.367 7.000 17.000
## ------------------------------------------------------------
## rotacion$Rotación: 1
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 0.000 2.000 2.852 5.000 14.000
by(rotacion$Años_acargo_con_mismo_jefe,rotacion$Rotación,IQR)
## rotacion$Rotación: 0
## [1] 5
## ------------------------------------------------------------
## rotacion$Rotación: 1
## [1] 5
#Comparación de las funciones de distribución de los grupos.
plot(ecdf(rotacion$Años_acargo_con_mismo_jefe[rotacion$Rotación==1]),
main="")
lines(ecdf(rotacion$Años_acargo_con_mismo_jefe[rotacion$Rotación==0]),
col=2)
#Prueba de hipótesis.
t.test(Años_acargo_con_mismo_jefe~Rotación,rotacion)
##
## Welch Two Sample t-test
##
## data: Años_acargo_con_mismo_jefe by Rotación
## t = 6.6334, df = 365.1, p-value = 1.185e-10
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
## 1.065929 1.964223
## sample estimates:
## mean in group 0 mean in group 1
## 4.367397 2.852321
########
#Variables cualitativas (viaje de negocios - rotación)
tabla1 <- table(rotacion$Rotación, rotacion$`Viaje de Negocios`)
tabla1
##
## Frecuentemente No_Viaja Raramente
## 0 208 138 887
## 1 69 12 156
barplot(tabla1, beside = TRUE, las=1,
xlab='Viaje de negocios', ylab='Rotación',
col = c("lightblue", "mistyrose"))
legend('topleft', legend=rownames(tabla1), bty='n',
fill=c("lightblue", "mistyrose"))
#Prueba de hipótesis
chisq.test(rotacion$Rotación, rotacion$`Viaje de Negocios`)
##
## Pearson's Chi-squared test
##
## data: rotacion$Rotación and rotacion$`Viaje de Negocios`
## X-squared = 24.182, df = 2, p-value = 5.609e-06
library(DescTools)
ContCoef(rotacion$Rotación, rotacion$`Viaje de Negocios`)
## [1] 0.1272178
CramerV(rotacion$Rotación, rotacion$`Viaje de Negocios`)
## [1] 0.12826
#Recordar lo siguiente :
#Más de 0.5 Alta asociación.
#0.3 a 0.5 Asociación moderada.
#0.1 a 0.3 Baja asociación.
#0 a 0.1 Muy baja (si existiese).
#Variables cualitativas (Departamento - rotación)
tabla1 <- table(rotacion$Rotación, rotacion$Departamento)
tabla1
##
## IyD RH Ventas
## 0 828 51 354
## 1 133 12 92
barplot(tabla1, beside = TRUE, las=1,
xlab='Departamento', ylab='Rotación',
col = c("lightblue", "mistyrose"))
legend('topleft', legend=rownames(tabla1), bty='n',
fill=c("lightblue", "mistyrose"))
#Prueba de hipótesis
chisq.test(rotacion$Rotación, rotacion$Departamento)
##
## Pearson's Chi-squared test
##
## data: rotacion$Rotación and rotacion$Departamento
## X-squared = 10.796, df = 2, p-value = 0.004526
ContCoef(rotacion$Rotación, rotacion$Departamento)
## [1] 0.08538547
CramerV(rotacion$Rotación, rotacion$Departamento)
## [1] 0.08569844
#Recordar lo siguiente :
#Más de 0.5 Alta asociación.
#0.3 a 0.5 Asociación moderada.
#0.1 a 0.3 Baja asociación.
#0 a 0.1 Muy baja (si existiese).
#Variables cualitativas (Campo_Educación - rotación)
tabla1 <- table(rotacion$Rotación, rotacion$Campo_Educación)
tabla1
##
## Ciencias Humanidades Mercadeo Otra Salud Tecnicos
## 0 517 20 124 71 401 100
## 1 89 7 35 11 63 32
barplot(tabla1, beside = TRUE, las=1,
xlab='Campo_Educación', ylab='Rotación',
col = c("lightblue", "mistyrose"))
legend('topleft', legend=rownames(tabla1), bty='n',
fill=c("lightblue", "mistyrose"))
#Prueba de hipótesis
chisq.test(rotacion$Rotación, rotacion$Campo_Educación)
##
## Pearson's Chi-squared test
##
## data: rotacion$Rotación and rotacion$Campo_Educación
## X-squared = 16.025, df = 5, p-value = 0.006774
ContCoef(rotacion$Rotación, rotacion$Campo_Educación)
## [1] 0.103844
CramerV(rotacion$Rotación, rotacion$Campo_Educación)
## [1] 0.1044085
#Recordar lo siguiente :
#Más de 0.5 Alta asociación.
#0.3 a 0.5 Asociación moderada.
#0.1 a 0.3 Baja asociación.
#0 a 0.1 Muy baja (si existiese).
#Variables cualitativas (Genero - rotación)
tabla1 <- table(rotacion$Rotación, rotacion$Genero)
tabla1
##
## F M
## 0 501 732
## 1 87 150
barplot(tabla1, beside = TRUE, las=1,
xlab='Genero', ylab='Rotación',
col = c("lightblue", "mistyrose"))
legend('topleft', legend=rownames(tabla1), bty='n',
fill=c("lightblue", "mistyrose"))
#Prueba de hipótesis
chisq.test(rotacion$Rotación, rotacion$Genero)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: rotacion$Rotación and rotacion$Genero
## X-squared = 1.117, df = 1, p-value = 0.2906
ContCoef(rotacion$Rotación, rotacion$Genero)
## [1] 0.02944049
CramerV(rotacion$Rotación, rotacion$Genero)
## [1] 0.02945325
#Recordar lo siguiente :
#Más de 0.5 Alta asociación.
#0.3 a 0.5 Asociación moderada.
#0.1 a 0.3 Baja asociación.
#0 a 0.1 Muy baja (si existiese).
#Variables cualitativas (Cargo - rotación)
tabla1 <- table(rotacion$Rotación, rotacion$Cargo)
tabla1
##
## Director_Investigación Director_Manofactura Ejecutivo_Ventas Gerente
## 0 78 135 269 97
## 1 2 10 57 5
##
## Investigador_Cientifico Recursos_Humanos Representante_Salud
## 0 245 40 122
## 1 47 12 9
##
## Representante_Ventas Tecnico_Laboratorio
## 0 50 197
## 1 33 62
barplot(tabla1, beside = TRUE, las=1,
xlab='Cargo', ylab='Rotación',
col = c("lightblue", "mistyrose"))
legend('topleft', legend=rownames(tabla1), bty='n',
fill=c("lightblue", "mistyrose"))
#Prueba de hipótesis
chisq.test(rotacion$Rotación, rotacion$Cargo)
##
## Pearson's Chi-squared test
##
## data: rotacion$Rotación and rotacion$Cargo
## X-squared = 86.19, df = 8, p-value = 2.752e-15
ContCoef(rotacion$Rotación, rotacion$Cargo)
## [1] 0.2353411
CramerV(rotacion$Rotación, rotacion$Cargo)
## [1] 0.2421422
#Recordar lo siguiente :
#Más de 0.5 Alta asociación.
#0.3 a 0.5 Asociación moderada.
#0.1 a 0.3 Baja asociación.
#0 a 0.1 Muy baja (si existiese).
#Variables cualitativas (Estado_Civil - rotación)
tabla1 <- table(rotacion$Rotación, rotacion$Estado_Civil)
tabla1
##
## Casado Divorciado Soltero
## 0 589 294 350
## 1 84 33 120
barplot(tabla1, beside = TRUE, las=1,
xlab='Estado_Civil', ylab='Rotación',
col = c("lightblue", "mistyrose"))
legend('topleft', legend=rownames(tabla1), bty='n',
fill=c("lightblue", "mistyrose"))
#Prueba de hipótesis
chisq.test(rotacion$Rotación, rotacion$Estado_Civil)
##
## Pearson's Chi-squared test
##
## data: rotacion$Rotación and rotacion$Estado_Civil
## X-squared = 46.164, df = 2, p-value = 9.456e-11
ContCoef(rotacion$Rotación, rotacion$Estado_Civil)
## [1] 0.1744927
CramerV(rotacion$Rotación, rotacion$Estado_Civil)
## [1] 0.1772113
#Recordar lo siguiente :
#Más de 0.5 Alta asociación.
#0.3 a 0.5 Asociación moderada.
#0.1 a 0.3 Baja asociación.
#0 a 0.1 Muy baja (si existiese).
#Variables cualitativas (Horas_Extra - rotación)
tabla1 <- table(rotacion$Rotación, rotacion$Horas_Extra)
tabla1
##
## No Si
## 0 944 289
## 1 110 127
barplot(tabla1, beside = TRUE, las=1,
xlab='Horas_Extra', ylab='Rotación',
col = c("lightblue", "mistyrose"))
legend('topleft', legend=rownames(tabla1), bty='n',
fill=c("lightblue", "mistyrose"))
#Prueba de hipótesis
chisq.test(rotacion$Rotación, rotacion$Horas_Extra)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: rotacion$Rotación and rotacion$Horas_Extra
## X-squared = 87.564, df = 1, p-value < 2.2e-16
ContCoef(rotacion$Rotación, rotacion$Horas_Extra)
## [1] 0.2389862
CramerV(rotacion$Rotación, rotacion$Horas_Extra)
## [1] 0.246118
#Recordar lo siguiente :
#Más de 0.5 Alta asociación.
#0.3 a 0.5 Asociación moderada.
#0.1 a 0.3 Baja asociación.
#0 a 0.1 Muy baja (si existiese).
Con base en lo planteado en el punto anterior, se identificó que:
Variables categóricas:
Las variables género y departamento, no son tan valiosas para el modelo como se pensó inicialmente. Por lo cual, estas se cambiarán por: horas extras y viajes de negocios.
Variables cuantitativas:
Con base en los resultados, la variable edad no aporta de manera significativa al modelo, por tanto, esta será reemplazada por trabajos anteriores que al parecer contribuyen en mayor medida al modelo.
Realice una partición en los datos de forma aleatoria donde 70% sea un set para entrenar el modelo y 30% para prueba. Estime un modelo logístico con la muestra del 70%. Muestre los resultados.
library(paqueteMODELOS)
library(ggcorrplot)
library(plotly)
library(car)
data("rotacion")
rotacion$Rotación[rotacion$Rotación == "Si"] <- 1
rotacion$Rotación[rotacion$Rotación == "No"] <- 0
rotacion$Rotación = as.numeric(rotacion$Rotación)
#Aquí sacamos una submuestra
#Dividimos los datos entre el conjunto de entrenamiento y prueba.
data.samples <- sample(1:nrow(rotacion), nrow(rotacion) * 0.7, replace = FALSE)
training.data <- rotacion[data.samples, ]
test.data <- rotacion[-data.samples, ]
#Ahora aplicamos el modelo propuesto sobre el conjunto de entrenamiento:
modelo1=glm(Rotación ~ Ingreso_Mensual + Distancia_Casa + Trabajos_Anteriores + Horas_Extra + `Viaje de Negocios` + Estado_Civil, data = training.data, family=binomial(link="logit"))
summary(modelo1)
##
## Call:
## glm(formula = Rotación ~ Ingreso_Mensual + Distancia_Casa +
## Trabajos_Anteriores + Horas_Extra + `Viaje de Negocios` +
## Estado_Civil, family = binomial(link = "logit"), data = training.data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.8411107 0.3075582 -5.986 2.15e-09 ***
## Ingreso_Mensual -0.0001271 0.0000270 -4.707 2.51e-06 ***
## Distancia_Casa 0.0316533 0.0110651 2.861 0.004228 **
## Trabajos_Anteriores 0.1073309 0.0351081 3.057 0.002234 **
## Horas_ExtraSi 1.1926784 0.1871865 6.372 1.87e-10 ***
## `Viaje de Negocios`No_Viaja -1.4543871 0.4222917 -3.444 0.000573 ***
## `Viaje de Negocios`Raramente -0.5591750 0.2133442 -2.621 0.008767 **
## Estado_CivilDivorciado -0.2158151 0.2766924 -0.780 0.435401
## Estado_CivilSoltero 1.0156155 0.2034478 4.992 5.98e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 906.03 on 1028 degrees of freedom
## Residual deviance: 772.83 on 1020 degrees of freedom
## AIC: 790.83
##
## Number of Fisher Scoring iterations: 5
Evaluar el poder predictivo del modelo con base en la curva ROC y el AUC en el set de datos de prueba.
La curva ROC es una representación gráfica de la sensibilidad frente a la especificidad para un sistema clasificador binario según se varía el umbral de discriminación. Otra interpretación de este gráfico es la representación de la razón o proporción de verdaderos positivos (VPR = Razón de Verdaderos Positivos) frente a la razón o proporción de falsos positivos (FPR = Razón de Falsos Positivos) también según se varía el umbral de discriminación (valor a partir del cual decidimos que un caso es un positivo).
#Coeficientes del modelo
com<-coefficients(modelo1)
com
## (Intercept) Ingreso_Mensual
## -1.8411106497 -0.0001271159
## Distancia_Casa Trabajos_Anteriores
## 0.0316533204 0.1073308542
## Horas_ExtraSi `Viaje de Negocios`No_Viaja
## 1.1926784419 -1.4543870817
## `Viaje de Negocios`Raramente Estado_CivilDivorciado
## -0.5591750229 -0.2158150893
## Estado_CivilSoltero
## 1.0156154769
#predicción del modelo
pred = predict(modelo1)
head(pred)
## 1 2 3 4 5 6
## -2.939354 -2.637264 -1.968985 -3.301197 -2.560477 -4.163415
pred1 = predict(modelo1, type ="response")
#Intervalo de confianza de los paramétros
confint(modelo1, level=0.95)
## 2.5 % 97.5 %
## (Intercept) -2.455609737 -1.248203e+00
## Ingreso_Mensual -0.000182758 -7.663216e-05
## Distancia_Casa 0.009825511 5.327463e-02
## Trabajos_Anteriores 0.038015447 1.758873e-01
## Horas_ExtraSi 0.826528697 1.561268e+00
## `Viaje de Negocios`No_Viaja -2.347871519 -6.739419e-01
## `Viaje de Negocios`Raramente -0.973580033 -1.357662e-01
## Estado_CivilDivorciado -0.773880424 3.149856e-01
## Estado_CivilSoltero 0.620550214 1.419367e+00
# Curva ROC
library(ROCR)
library(pROC)
roc.prueba = roc(training.data$Rotación,pred1, auc= TRUE, ci=TRUE)
print(roc.prueba)
##
## Call:
## roc.default(response = training.data$Rotación, predictor = pred1, auc = TRUE, ci = TRUE)
##
## Data: pred1 in 864 controls (training.data$Rotación 0) < 165 cases (training.data$Rotación 1).
## Area under the curve: 0.762
## 95% CI: 0.7208-0.8033 (DeLong)
plot.roc(roc.prueba,legacy.axes = T, print.thres = "best", print.auc = TRUE,
auc.polygon = FALSE, max.auc.polygon = FALSE, auc.polygon.col = "gainsboro", col = 2, grid = TRUE,xlab="1-Especificidad",ylab="Sensibilidad" )
legend("bottomright", legend=c("Observados VS predichos"), col=c("2"),lwd=1,pch = c(1),cex=0.7)
De acuerdo con los resultados, podemos apreciar que para la prueba diagnóstico perímetro de cintura obtenemos un AUC de 0,775, lo que nos indica que este diagnostico tiene una probabilidad del 77,5% de clasificar a los empleados que sí rotan como tal y a los que no rotan como “no rotadores”.
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).
Con base en el modelo planteado se podría plantear las siguientes iniciativas para reducir la rotación en la empresa:
Revisar los ingresos de los empleados. De acuerdo con el modelo, mejores ingresos de los empleados están asociados con una menor probabilidad de rotar de cargo.
Crear incentivos para que los empleados puedan vivir más cerca al trabajo o poder trabajar desde sus casas, dado que a mayor distancia entre la vivienda y el sitio de trabajo mayor es la probabilidad de rotar de cargo.
Revisar el historial laboral de los colaboradores. Con base en el modelo, mientras más cargos a desempeñado el empleado mayor es la probabilidad de que este quiera rotar de cargo.
Validar las cargas laborales. Según el modelo, entre más horas extras trabaje un colaborador esto afecta la probabilidad de que este quiera cambiar de trabajo. Así las cosas, se deberían revisar las cargas laborales para que estas no afecten la estabilidad laboral de las personas.
Revisar el volumen de viajes de trabajo. De acuerdo con el modelo, a menor cantidad de viajes de trabajo, los empleados tienen más incentivos de seguir en su trabajo actual y no rotar.
Crear estrategias para cautivar a los solteros, este estado civil tiene alta probabilidad de rotar de cargo, por lo cual la empresa debería crear estrategias especiales para retener a este segmento de colaboradores.