1. Importar datos

library(readxl)
Datos <- read_excel("Datos_Rotación.xlsx")

head(Datos[,1:5])
Rotación Rotación_bin Edad Viaje de Negocios Departamento
Si 1 41 Raramente Ventas
No 0 49 Frecuentemente IyD
Si 1 37 Raramente IyD
No 0 33 Frecuentemente IyD
No 0 27 Raramente IyD
No 0 32 Frecuentemente IyD
dim(Datos)
## [1] 1470   25

La base de datos tiene 1470 filas y 25 columnas

summary(Datos)
##    Rotación          Rotación_bin         Edad       Viaje de Negocios 
##  Length:1470        Min.   :0.0000   Min.   :18.00   Length:1470       
##  Class :character   1st Qu.:0.0000   1st Qu.:30.00   Class :character  
##  Mode  :character   Median :0.0000   Median :36.00   Mode  :character  
##                     Mean   :0.1612   Mean   :36.92                     
##                     3rd Qu.:0.0000   3rd Qu.:43.00                     
##                     Max.   :1.0000   Max.   :60.00                     
##  Departamento       Distancia_Casa     Educación     Campo_Educación   
##  Length:1470        Min.   : 1.000   Min.   :1.000   Length:1470       
##  Class :character   1st Qu.: 2.000   1st Qu.:2.000   Class :character  
##  Mode  :character   Median : 7.000   Median :3.000   Mode  :character  
##                     Mean   : 9.193   Mean   :2.913                     
##                     3rd Qu.:14.000   3rd Qu.:4.000                     
##                     Max.   :29.000   Max.   :5.000                     
##  Satisfacción_Ambiental    Genero             Cargo          
##  Min.   :1.000          Length:1470        Length:1470       
##  1st Qu.:2.000          Class :character   Class :character  
##  Median :3.000          Mode  :character   Mode  :character  
##  Mean   :2.722                                               
##  3rd Qu.:4.000                                               
##  Max.   :4.000                                               
##  Satisfación_Laboral Estado_Civil       Ingreso_Mensual Trabajos_Anteriores
##  Min.   :1.000       Length:1470        Min.   : 1009   Min.   :0.000      
##  1st Qu.:2.000       Class :character   1st Qu.: 2911   1st Qu.:1.000      
##  Median :3.000       Mode  :character   Median : 4919   Median :2.000      
##  Mean   :2.729                          Mean   : 6503   Mean   :2.693      
##  3rd Qu.:4.000                          3rd Qu.: 8379   3rd Qu.:4.000      
##  Max.   :4.000                          Max.   :19999   Max.   :9.000      
##  Horas_Extra        Porcentaje_aumento_salarial Rendimiento_Laboral
##  Length:1470        Min.   :11.00               Min.   :3.000      
##  Class :character   1st Qu.:12.00               1st Qu.:3.000      
##  Mode  :character   Median :14.00               Median :3.000      
##                     Mean   :15.21               Mean   :3.154      
##                     3rd Qu.:18.00               3rd Qu.:3.000      
##                     Max.   :25.00               Max.   :4.000      
##  Años_Experiencia Capacitaciones  Equilibrio_Trabajo_Vida   Antigüedad    
##  Min.   : 0.00    Min.   :0.000   Min.   :1.000           Min.   : 0.000  
##  1st Qu.: 6.00    1st Qu.:2.000   1st Qu.:2.000           1st Qu.: 3.000  
##  Median :10.00    Median :3.000   Median :3.000           Median : 5.000  
##  Mean   :11.28    Mean   :2.799   Mean   :2.761           Mean   : 7.008  
##  3rd Qu.:15.00    3rd Qu.:3.000   3rd Qu.:3.000           3rd Qu.: 9.000  
##  Max.   :40.00    Max.   :6.000   Max.   :4.000           Max.   :40.000  
##  Antigüedad_Cargo Años_ultima_promoción Años_acargo_con_mismo_jefe
##  Min.   : 0.000   Min.   : 0.000        Min.   : 0.000            
##  1st Qu.: 2.000   1st Qu.: 0.000        1st Qu.: 2.000            
##  Median : 3.000   Median : 1.000        Median : 3.000            
##  Mean   : 4.229   Mean   : 2.188        Mean   : 4.123            
##  3rd Qu.: 7.000   3rd Qu.: 3.000        3rd Qu.: 7.000            
##  Max.   :18.000   Max.   :15.000        Max.   :17.000

Se realiza una pequeña descripcion y exploracion parcial de la base de datos para conocer mejor las variables a trabajar.

De ese modo, se tiene para las variables cuantitativas los valores mínimo y máximos, asi como algunos cuartiles. En cambio para las variables categoricas, indica que son caracteres y la cantidad de veces que aparece.

Tiene 17 columnas con variables cuantitativas tales como: Edad, Satisfación_Laboral, Años_Experiencia, entreo otras.

En cambio tiene 8 columnas con varialbes cualitativas como por ejemplo: Rotación, Estado_Civil, Horas_Extra, entre otras.

2. Planteamiento de las hipotesis

Se priorizaron las siguentes variables cuantitativas para el analisis:

  1. Horas extra: más horas extra mayor posibilidad de rotar.

  2. Estado Civil: los solteros tienen más posibilidad de rotar.

  3. Edad: los jovenes tienen más posibilidad de rotar.

  4. Satisfación Laboral: valores más bajos en satisfacción tienden a rotar más.

  5. Años Experiencia: valores más altos en experiencia tienden a rotar más.

  6. Rendimiento Laboral: valores más bajos en rendimiento tienden a rotar más.

3. Iniciar exploracion univariada

library(table1)

table1(~ Horas_Extra + Edad+ Estado_Civil, data=Datos)
Overall
(N=1470)
Horas_Extra
No 1054 (71.7%)
Si 416 (28.3%)
Edad
Mean (SD) 36.9 (9.14)
Median [Min, Max] 36.0 [18.0, 60.0]
Estado_Civil
Casado 673 (45.8%)
Divorciado 327 (22.2%)
Soltero 470 (32.0%)

La tabla indica que de los 1470 trabajadores de la empresa el 28.3% trabajan horas extra, mientras que 71.7%. no trabajan horas extra. Las edades de los trabajadores oscila entre 18 y 60 años, con un promedio de 39 años. Con respecto al estado civil de los trabajadores, el 45.8% es casado, solteros tenemos 32% y divorciados 22.2%.

table1(~ Horas_Extra + Genero | Estado_Civil, data=Datos)
Casado
(N=673)
Divorciado
(N=327)
Soltero
(N=470)
Overall
(N=1470)
Horas_Extra
No 487 (72.4%) 228 (69.7%) 339 (72.1%) 1054 (71.7%)
Si 186 (27.6%) 99 (30.3%) 131 (27.9%) 416 (28.3%)
Genero
F 272 (40.4%) 117 (35.8%) 199 (42.3%) 588 (40.0%)
M 401 (59.6%) 210 (64.2%) 271 (57.7%) 882 (60.0%)

La tabla indica que de los 1470 trabajadores el 28.3% trabaja horas extra. Ademas los porcentajes del estado civil de cada genero en los trabajadores.

table1(~ Satisfación_Laboral + Años_Experiencia| Rendimiento_Laboral, data=Datos)
## Warning in table1.formula(~Satisfación_Laboral + Años_Experiencia |
## Rendimiento_Laboral, : Terms to the right of '|' in formula 'x' define table
## columns and are expected to be factors with meaningful labels.
3
(N=1244)
4
(N=226)
Overall
(N=1470)
Satisfación_Laboral
Mean (SD) 2.73 (1.09) 2.73 (1.15) 2.73 (1.10)
Median [Min, Max] 3.00 [1.00, 4.00] 3.00 [1.00, 4.00] 3.00 [1.00, 4.00]
Años_Experiencia
Mean (SD) 11.3 (7.78) 11.4 (7.80) 11.3 (7.78)
Median [Min, Max] 10.0 [0, 40.0] 10.0 [1.00, 37.0] 10.0 [0, 40.0]
library(CGPfunctions)


PlotXTabs2(Datos, x=Horas_Extra, y= Rotación)

Como el p value es bajo (>0.05), indica que si existe una relacion entre las personas que trabajan horas extras y hacen rotacion

Se observa que el valor p de la pruebra \(X^2\) fue muy bajo (<0.001) es decir que existe una relacion entre trabajar horas extras y la ratacion. Los porcentaje nos indican que las personas que trabajn horas extras tienen un 31% de rotacion mientras que las que no tan solo 10%, soportando de esta manera la hipotesis inicial planteada


Ahora se crean varaibles compuestas productos de relacionar dos varaibles existentes.

En este primer caso se crea la variable mujer_extra compuesta por la relacion entre Horas_Extra y Genero, cuando este es Femenino.

Datos$mujer_extra=Datos$Horas_Extra=="Si" & Datos$Genero=="F"

PlotXTabs2(data = Datos, x=mujer_extra, y=Rotación)

Como el p value es bajo (>0.05), indica que si existe una relacion entre las mujeres que trabajan horas extras y hacen rotacion.

El valor p de la pruebra \(X^2\) fue muy bajo (<0.001) es decir que existe una relacion entre las variables escogidas. Donde el 26% de las mujeres con horas extras tienen rotacion.


En este segundo caso se crea la variable hombre_extra compuesta por la relacion entre Horas_Extra y Genero, cuando este es Masculino.

Datos$hombre_extra=Datos$Horas_Extra=="Si" & Datos$Genero=="M"

PlotXTabs2(data = Datos, x=hombre_extra, y=Rotación)

Como el p value es bajo (>0.05), indica que si existe una relacion entre las hombres que trabajan horas extras y hacen rotacion.

El valor p de la pruebra \(X^2\) fue muy bajo (<0.001) es decir que existe una relacion entre las variables escogidas. Donde el 34% de los hombres con horas extras tienen rotacion.


Se esocge el genero femenino para profundizar en los analisis:

Ahora creamos la variable mujer_casada_extra compuesta de las mujeres que trabajan horas extras y son casadas.

Datos$mujer_casada_extra=Datos$mujer_extra=="TRUE" & Datos$Estado_Civil=="Casado"

PlotXTabs2(data = Datos, x=mujer_casada_extra, y=Rotación)

El p value es superior a 0.05, indica que no existe relacion entre las variables evaluadas. Indica que el 19% de la mujeres casadas que trabajan horas extras tienen posibilidad de rotacion.

No existe relación entre las variables escogidas.


Se crea la variable mujer_soltera_extra compuesta de las mujeres que trabajan horas extras y son solteras.

Datos$mujer_soltera_extra=Datos$mujer_extra=="TRUE" & Datos$Estado_Civil=="Soltero"

PlotXTabs2(data = Datos, x=mujer_soltera_extra, y=Rotación)

Como el p value es bajo (>0.05), indica que si existe una relacion entre las mujeres que son solteras y trabajan horas extras y además hacen rotación

El valor p de la pruebra \(X^2\) fue muy bajo (<0.001) es decir que existe una relacion entre las variables escogidas. Donde el 41% de las mujeres solteras que trabajan tienen rotacion.


Se crea la variable mujer_divorciado_extra compuesta de las mujeres que trabajan horas extras y son divorciadas

Datos$mujer_divorciado_extra=Datos$mujer_extra=="TRUE" & Datos$Estado_Civil=="Divorciado"

PlotXTabs2(data = Datos, x=mujer_divorciado_extra, y=Rotación)

El p value es superior a 0.05, indica que no existe relacion entre las variables evaluadas. Indica que el 16% de la mujeres divorciadas que trabajan horas extras tienen posibilidad de rotacion.

No existe relación entre las variables escogidas.

library(ggpubr)
## Loading required package: ggplot2

Pruebas para medias promedio.

x <- Datos$Rotación
y <- Datos$Ingreso_Mensual

table1(~Ingreso_Mensual|Rotación, data = Datos)
No
(N=1233)
Si
(N=237)
Overall
(N=1470)
Ingreso_Mensual
Mean (SD) 6830 (4820) 4790 (3640) 6500 (4710)
Median [Min, Max] 5200 [1050, 20000] 3200 [1010, 19900] 4920 [1010, 20000]
t.test(y~x)
## 
##  Welch Two Sample t-test
## 
## data:  y by x
## t = 7.4826, df = 412.74, p-value = 4.434e-13
## alternative hypothesis: true difference in means between group No and group Si is not equal to 0
## 95 percent confidence interval:
##  1508.244 2583.050
## sample estimates:
## mean in group No mean in group Si 
##         6832.740         4787.093
table1(~Ingreso_Mensual | Rotación,data=Datos,
       overall=F, extra.col=list(`P-value`=pvalue))
No
(N=1233)
Si
(N=237)
P-value
Ingreso_Mensual
Mean (SD) 6830 (4820) 4790 (3640) <0.001
Median [Min, Max] 5200 [1050, 20000] 3200 [1010, 19900]
 # Existe diferencia en el ingreso mensual de los trabajadores que hacen rotacion.

table1(~Ingreso_Mensual +Edad +Porcentaje_aumento_salarial+Genero| Rotación,data=Datos,
       overall=FALSE, extra.col=list(`P-value`=pvalue))
No
(N=1233)
Si
(N=237)
P-value
Ingreso_Mensual
Mean (SD) 6830 (4820) 4790 (3640) <0.001
Median [Min, Max] 5200 [1050, 20000] 3200 [1010, 19900]
Edad
Mean (SD) 37.6 (8.89) 33.6 (9.69) <0.001
Median [Min, Max] 36.0 [18.0, 60.0] 32.0 [18.0, 58.0]
Porcentaje_aumento_salarial
Mean (SD) 15.2 (3.64) 15.1 (3.77) 0.614
Median [Min, Max] 14.0 [11.0, 25.0] 14.0 [11.0, 25.0]
Genero
F 501 (40.6%) 87 (36.7%) 0.291
M 732 (59.4%) 150 (63.3%)
Datos$mujer_soltera_Edad=cut(Datos$Edad,breaks = c(18,30,40,50,60))

table1(~mujer_extra + mujer_soltera_extra + mujer_soltera_Edad+ Satisfación_Laboral + Años_Experiencia| Rotación,data=Datos,
       overall=FALSE, extra.col=list(`P-value`=pvalue))
No
(N=1233)
Si
(N=237)
P-value
mujer_extra
Yes 133 (10.8%) 47 (19.8%) <0.001
No 1100 (89.2%) 190 (80.2%)
mujer_soltera_extra
Yes 37 (3.0%) 26 (11.0%) <0.001
No 1196 (97.0%) 211 (89.0%)
mujer_soltera_Edad
(18,30] 282 (22.9%) 96 (40.5%) <0.001
(30,40] 534 (43.3%) 85 (35.9%)
(40,50] 288 (23.4%) 34 (14.3%)
(50,60] 125 (10.1%) 18 (7.6%)
Missing 4 (0.3%) 4 (1.7%)
Satisfación_Laboral
Mean (SD) 2.78 (1.09) 2.47 (1.12) <0.001
Median [Min, Max] 3.00 [1.00, 4.00] 3.00 [1.00, 4.00]
Años_Experiencia
Mean (SD) 11.9 (7.76) 8.24 (7.17) <0.001
Median [Min, Max] 10.0 [0, 38.0] 7.00 [0, 40.0]

Podemos concluir que las mujeres solteras que trabajan horas extras tiende a realizar más rotaciones que las mujeres casadas y divorciadas. Ademas, las mujeres con edad entre 18 y 30 años tienen mayor rotación con respecto a edades superiores de mujeres.

Se recomienda realizar un análisis más profundo de la situacion de las mujeres solteras verificando la realcion con otras variables como salario, Equilibrio_Trabajo_Vida, Satisfación_Laboral y Años_acargo_con_mismo_jefe, entre otras, para identificar mejor el fenomeno de rotación encontrado en este analisis.