Por medio de la exploración de una base de datos de una compañía que presenta alta rotación se identifican posibles factores que se relacionan con esta.

1.) Realice una descripción de la base: Esta base de datos cuenta con 24 variables (incluyendo la rotación), y 1470 observaciones

library(knitr)
library(kableExtra)
library(readxl)
Base <- read_excel("C:/Users/Sara/Desktop/Maestria/Metodos de simulacion estadistica/Unidad 1/Actividad 1/Datos_Rotación.xlsx")
names(Base)[1] <- 'Rotacion'  
names(Base)[3] <- 'Viaje_de_Negocios'  
names(Base)[24]<- 'Tiempo_Jefe' 
A = matrix(
     c(names(Base)),
     ncol = 4,            
     byrow = TRUE         
 )
  A %>%
   kbl(booktabs = T,caption = "<center><b>Variables</b></center>") %>%
   kable_classic_2(full_width = T)
Variables
Rotacion Edad Viaje_de_Negocios Departamento
Distancia_Casa Educación Campo_Educación Satisfacción_Ambiental
Genero Cargo Satisfación_Laboral Estado_Civil
Ingreso_Mensual Trabajos_Anteriores Horas_Extra Porcentaje_aumento_salarial
Rendimiento_Laboral Años_Experiencia Capacitaciones Equilibrio_Trabajo_Vida
Antigüedad Antigüedad_Cargo Años_ultima_promoción Tiempo_Jefe

2.) Seleccionar 3 variables categóricas y 3 variables cuantitativas, que consideren estén relacionadas con la rotación, y realiza un análisis univariado (caracterización)

Inicialmente se toman las siguientes variables categóricas:

  1. Estado Civil.
  2. Horas Extra.
  3. Viaje de Negocios
require(ggplot2)
library(ggrepel)
library(dplyr)
require(ggpubr)

l <- list(prop.table(table(Base$Estado_Civil))*100, prop.table(table(Base$Viaje_de_Negocios))*100,prop.table(table(Base$Horas_Extra))*100)
l <- lapply(l, as.data.frame)

  colnames(l[[1]]) = c("Estado_Civil", "Porcentaje")
  l[[1]]=mutate(l[[1]],csum = rev(cumsum(rev(Porcentaje))), 
         pos = Porcentaje/2 + lead(rev(cumsum(rev(Porcentaje))), 1),
         pos = if_else(is.na(pos),  Porcentaje/2, pos))
g1=ggplot(l[[1]], aes(x = "", y = Porcentaje, fill = Estado_Civil)) +
  geom_col(width = 1, color = 1) +
  coord_polar(theta = "y")+
  scale_fill_manual(values = c("#FFF7FB", "#D0D1E6",
                               "#74A9CF", "#0570B0"))+
geom_label_repel(data = l[[1]],
                   aes(y = pos, label = paste0(round(Porcentaje,2), "%")),
                   size = 4.5, nudge_x = 1, show.legend = FALSE)+ guides(fill = guide_legend(title = "Estado Civil")) +
  theme_void()


colnames(l[[2]]) = c("Viaje_Negocios", "Porcentaje")
hsize <- 3
df <- l[[2]] %>% 
  mutate(x = hsize)
g2=ggplot(l[[2]], aes(x = hsize, y = Porcentaje, fill = Viaje_Negocios)) +
  geom_col(color = "black") +
   geom_label(aes(label = paste0(round(Porcentaje,2),"%")),
            position = position_stack(vjust = 0.5),show.legend = FALSE) +
  coord_polar(theta = "y") +
  scale_fill_manual(values = c("#FFF7FB", "#D0D1E6",
                               "#74A9CF", "#0570B0"))+
  xlim(c(0.2, hsize + 0.5))+
guides(fill = guide_legend(title = "Viajes de Negocios"))+
    theme(panel.background = element_rect(fill = "white"),
        panel.grid = element_blank(),
        axis.title = element_blank(),
        axis.ticks = element_blank(),
        axis.text = element_blank())



g3=ggplot(Base,aes(x=Horas_Extra))+geom_bar(color = "black", fill= c("#FFF7FB", "#D0D1E6"))+  geom_text(
     aes(label= paste0(after_stat(count)," (",round(after_stat(count/sum(count)),2)*100,"%)"), group=1),
     stat='count',
     nudge_y=39.5,
     size=5
 )+theme_classic()

  
ggarrange(g1,g3,labels = c("A", "B"),ncol = 2, nrow = 1)

  1. En términos del estado civil de un empleado, se tiene que el 45.78% de ellos están casados, el 22.24% divorciados, y los empleados restantes estarían solteros, como se muestra en el panel A, de la primera imagen. Dado que las dos primeras categorías mencionadas, pueden contraer obligaciones familiares (esposas e hijos) que requieren una estabilidad financiera superior, uno esperaría que este tipo de personas tenga una rotación menor que aquellos empleados solteros, que no tiene este tipo de obligaciones de manera explicita.

  2. Por parte de las horas extra que realizan los empleados, tenemos que el 72% no realiza horas extra y 28% si lo hace, como se muestra en el panel B de esta primera imagen; se esperaría que aquellas personas que realizan horas extra en el trabajo, tengan una mayor probabilidad a rotar, debido a los horarios laborales extensivos y la limitaciones el tiempo disponible para realizar diversas actividades y tener tiempo de esparcimiento y diversión.

ggarrange(g2, labels = c( "C"),ncol = 1, nrow = 1)

  1. Por parte de los viaje de negocios, los empleados responden lo siguiente: El 18.84% de ellos dice que lo hace frecuentemente, el 70.95% dice que lo hace raramente, y el 10.2% comenta que su trabajo nunca involucra viajes de negocios, se espera que aquellos que realizan frecuentes viajes de negocios tengan una mayor rotación que aquellos que no lo hacen, dado el tiempo de desplazamiento, la poca estabilidad y las incomodidades adicionales, que trae consigo moverse frecuentemente de cuidad a ciudad por negocios.

Por el lado de las variables cuantitativas se toman las siguientes:

  1. Ingreso Mensual
  2. Distancia, casa-trabajo.
  3. Cuantos años ha estado con el mismo jefe.
breaks <- pretty(range(Base$Ingreso_Mensual/1000),
                 n = nclass.Sturges(Base$Ingreso_Mensual/1000),
                 min.n = 1)

 g1= ggplot(Base,aes(x=Ingreso_Mensual/1000))+
    geom_histogram(aes(y = ..density..),
                   color = 1, fill = "#D0D1E6",
                   breaks = breaks) +
    geom_density(color = "#74A9CF",lwd  = 0.8)+
    theme_classic()


breaks <- pretty(range(Base$Tiempo_Jefe),
                 n = nclass.Sturges(Base$Tiempo_Jefe),
                 min.n = 1)
 g2= ggplot(Base,aes(x=Tiempo_Jefe))+
    geom_histogram(aes(y = ..density..),
                   color = 1, fill = "#D0D1E6",
                   breaks = breaks) +
    geom_density(color = "#74A9CF",lwd  = 0.8)+
    theme_classic()


breaks <- pretty(range(Base$Distancia_Casa),
                 n = nclass.Sturges(Base$Distancia_Casa),
                 min.n = 1)
 g3= ggplot(Base,aes(x=Distancia_Casa))+
    geom_histogram(aes(y = ..density..),
                   color = 1, fill = "#D0D1E6",
                   breaks = breaks) +
    geom_density(color = "#74A9CF",lwd  = 0.8)+
    theme_classic()


ggarrange(g1, g2, g3, labels = c("D", "E", "F"),ncol = 2, nrow = 2)

En la segunda figura tenemos los histogramas y las densidades de las tres variables ya mencionadas.

  1. Por parte del ingreso mensual en millones, (panel D) tenemos que la gran masa de densidad de los empleados de esta empresa gana una suma entre 2 y 5 millones de manera mensual, y existen personas que ganan hasta 20 millones. Se espera que aquellas personas con mayores salarios tengan incentivos a quedarse en la empresa, mientras que los que cuentan con bajas remuneraciones tengan una mayor probabilidad de rotar.

  2. En el panel E se muestra el tiempo que un empleado ha estado bajo el mando el mismo jefe, en este caso contamos con una distribución de densidad bimodal, donde la mayor masa de empleados dice que ha estado con el mismo jefe, entre 0 a 2 años, y la segunda masa dice que ha estado con el mismo jefe de 6 a 8 años. Uno esperaría que aquellos que lleven más años bajo el mismo jefe, tiendan a no rotar, mientras que los que llevan poco, roten más, dada la experiencia que tienen en su trabajo y la familiaridad con el entorno.

  3. Finalmente estamos considerando la distancia de la casa al trabajo, la cual se muestra en el panel F, en esta gráfica, podemos ver que la mayor masa de densidad se encuentra en aquellos empleados que su casa se ubica de 0 a 2 unidades de distancia del trabajo, y la siguiente masa de densidad importante es de aquellos empleados que sus hogares se ubican de 8 a 10 unidades de distancia. Se esperará que aquellos que estén ubicados en una menor distancia, tengan una rotación inferior, dado que no incurren en molestias adicionales por el desplazamiento, a diferencia de los que se ubican lejos.

Realizar un análisis de bivariado en donde la variable respuesta sea la rotación, con base en estos resultados identifique cuales son las variables determinantes de la rotación e interpretar. Compare estos resultados con la hipótesis planteada

Para esto haremos uso de gráficas y tablas bivariadas, y test estadísticos para las variables cuantitativas:

require(table1)
library("table1", warn.conflicts = FALSE)

y <- table1::table1(~Horas_Extra +Viaje_de_Negocios +   Estado_Civil+ Ingreso_Mensual+Distancia_Casa +  Tiempo_Jefe | Rotacion, data = Base)
y
No
(N=1233)
Si
(N=237)
Overall
(N=1470)
Horas_Extra
No 944 (76.6%) 110 (46.4%) 1054 (71.7%)
Si 289 (23.4%) 127 (53.6%) 416 (28.3%)
Viaje_de_Negocios
Frecuentemente 208 (16.9%) 69 (29.1%) 277 (18.8%)
No_Viaja 138 (11.2%) 12 (5.1%) 150 (10.2%)
Raramente 887 (71.9%) 156 (65.8%) 1043 (71.0%)
Estado_Civil
Casado 589 (47.8%) 84 (35.4%) 673 (45.8%)
Divorciado 294 (23.8%) 33 (13.9%) 327 (22.2%)
Soltero 350 (28.4%) 120 (50.6%) 470 (32.0%)
Ingreso_Mensual
Mean (SD) 6830 (4820) 4790 (3640) 6500 (4710)
Median [Min, Max] 5200 [1050, 20000] 3200 [1010, 19900] 4920 [1010, 20000]
Distancia_Casa
Mean (SD) 8.92 (8.01) 10.6 (8.45) 9.19 (8.11)
Median [Min, Max] 7.00 [1.00, 29.0] 9.00 [1.00, 29.0] 7.00 [1.00, 29.0]
Tiempo_Jefe
Mean (SD) 4.37 (3.59) 2.85 (3.14) 4.12 (3.57)
Median [Min, Max] 3.00 [0, 17.0] 2.00 [0, 14.0] 3.00 [0, 17.0]
library(purrr)
require(CGPfunctions)

myvariables<- c("Estado_Civil", "Viaje_de_Negocios",'Horas_Extra')

mytitles <- stringr::str_c("Rotacion por ", 
                           stringr::str_to_title(myvariables))

purrr::map2(.x = myvariables,
            .y = mytitles,
            .f =  ~ PlotXTabs2(x = all_of(.x),
                               title = .y,
                               data = Base,
                               y = Rotacion,
                               legend.title = "Rotacion",
                               xlab = stringr::str_to_title(.x),
                               ylab = NULL,
                               perc.k = 1,
                               palette = "Pastel1"
            )
)
## [[1]]

## 
## [[2]]

## 
## [[3]]

En términos de las variables cuantitativas tenemos los siguientes resultados:

  1. Por parte del estado civil de una persona, podemos decir que se cumple la hipótesis planeada al inicio. En la tabla podemos observar que solo el 28.4% de las personas que no rotan son solteros, y que de aquellas que si rotan el 50.06% lo es. De manera similar, si comparamos el total de solteros con el total de casados y divorciados, podemos ver un incremento de 13 y 15.4 por ciento en la rotación, respectivamente. mostrando que existe una incidencia del estado civil en el cambio de trabajo, hippotesis que se ve corroborada por los test estadosticos, se tiene un Chi cuadrado de 46.16 y un valor p menor a 0.001, por lo que se puede afirmar con mas de 95% de confianza que se rechaza la hipotesis nula de independecia entre las variables, encontrando evidencia a favor de que el nivel de rotacion si varia entre las categorias de del estado civil.

Sin embargo, esta no es una cualidad que la empresa pueda controlar de manera directa, es por eso que para dar soluciones propicias para disminuir este problema de rotación se evalúan otras variables.

  1. En términos de aquellos empleados que realizan viajes de negocios, no se tiene una relación tan clara como en la pregunta anterior, por un lado, aquellos que viajan raramente, constituyen mayoría, en términos de porcentajes, tanto de los empleados que rotan como los que no rotan, sin embargo, este efecto puede estar contaminado por una simple cuestión de escala, dada la gran proporción de empleados que viajan raramente. Pero si dividimos a los empleados por categorías en la respuesta: Viaje frecuentemente, raramente o no viaja, vemos que los individuos que tienen viajes frecuentes tiene un incremento del 9.9 y 16.9 por ciento en la rotación, con respecto a los que no viajes o lo hacen raramente, mostrando que es un factor a tener en cuenta a la hora de realizar políticas para disminuir este problema, hippotesis que se ve corroborada por los test estadosticos, se tiene un Chi cuadrado de 24.18.16 y un valor p menor a 0.001, por lo que se puede afirmar con mas de 95% de confianza que se rechaza la hipotesis nula de independecia entre las variables, encontrando evidencia a favor de que el nivel de rotacion si varia entre las categorias de del estado civil.

  2. Por parte de las horas extra, podemos ver que se cumple la hipótesis planteada inicialmente. De aquellos individuos que no rotan, el 76.6% no realiza horas extra, mientras que aquellos que, si rotan, el 53.6% realiza horas extra. De manera similar cuando dividimos a los empleados por categoría de respuesta podemos ver que de aquellos que si hacen horas extra el 30.5% ha rotado, mientras que los que no hacen horas extra, solo el 10.4% lo ha hecho.hippotesis que se ve corroborada por los test estadosticos, se tiene un Chi cuadrado de 87.56 y un valor p menor a 0.001, por lo que se puede afirmar con mas de 95% de confianza que se rechaza la hipotesis nula de independecia entre las variables, encontrando evidencia a favor de que el nivel de rotacion si varia entre las categorias de del estado civil.

Para el análisis bivariado con variables cuantitativas, haremos uno de las tablas, gráficas y adicionalmente el ## Welch Two Sample t-test para saber si la diferencia en las medias, es estadísticamente significativa

g1=ggplot(data = Base, aes(x = Ingreso_Mensual/1000, fill = Rotacion)) +
  geom_density(alpha = 0.35, color = "black")+
  scale_fill_manual(values = c( "#0570B0","#D0D1E6",
                               "#74A9CF"))


g2=ggplot(data = Base, aes(x = Rotacion, y = Distancia_Casa)) +
  geom_boxplot(fill = "#D0D1E6", colour = "black")+geom_jitter(width = 0.3,size = 0.5)

g3=ggplot(data = Base, aes(x = Rotacion, y = Tiempo_Jefe)) +
  geom_boxplot(fill = "#D0D1E6", colour = "black")

ggarrange(g2, g3, labels = c("A", "B"),ncol = 2, nrow = 1)

  1. En términos de la distancia de la casa al trabajo tenemos que se cumple la hipótesis nula que se planteó inicialmente, en la tabla se puede notar que la distancia promedio y mediana de aquellos empleados que no rotaron es de 8.92 y 7.00 respectivamente, mientras que aquellos de si rotaron, tiene una distancia de promedio y mediana mayor, de 10.6 y 9.0 respectivamente. Si bien ambos grupos tiene una alta desviación estándar, siendo mayor la del grupo que si rota, como se ve en el panel A de la figura, la masa de densidad de aquellos que no rotan está concentrada en valores de baja distancia, mientras que aquellos que, si rotaron, si bien están dispersos, tiene una concentración en valores mayores. Para corroborar esta conclusión gráfica, podemos ver el valor p asociado con el test de Welch Two Sample, es de 0.004, menor al a un nivel de significancia de 0.05, de manera que se rechaza la hipótesis nula de que no existe una diferencia de los promedios de ambos grupos, existiendo evidencia a favor de que si hay una diferencia verdadera entre las medias de los dos grupos considerados: los que rotaron y los que no.

  2. Por el lado de los años bajo el mando del mismo jefe, tanto en la tabla como en el boxplot, del panel B, se puede notar las medianas de ambos grupos difieren entre ellas, por un lado, del grupo que no ha rotado, se tiene un valor de 3.00 y un promedio de 4.37, mientras que para el grupo que, si roto, tiene una mediana de 2.00 y un promedio de 2.85, ambos grupos tienen respuestas atípicas en altos valores de la pregunta. principalmente en el grupo que no ha rotado, pero, las medidas de tendencia central, si muestran una diferencia, la cual se corrobora con el test de Welch Two Sample con el cual tiene un valor o cercano a 0, que con el cual existe evidencia para rechazar la hipótesis nula, por lo tanto, existe evidencia a favor de que hay una verdadera diferencia entre las medias de ambos grupos.

ggarrange(g1, labels = c("A"),ncol = 1, nrow = 1)

  1. En términos del ingreso promedio tenemos que se cumple la hipótesis nula que se planteó inicialmente, en la tabla se puede notar que el ingreso promedio y mediano de aquellos empleados que no rotaron es de 6830 y 5200 respectivamente, mientras que aquellos de si rotaron, perciben un ingreso promedio y mediano menor, de 4790 y 3200 respectivamente. Si bien ambos grupos tiene una alta desviación estándar. En el panel A, se ve que la distribución del ingreso de los empleados que rotaron está fuertemente concentrada en la mediana, es una distribución que cuenta con la cola derecha, pero sin mucha masa de densidad de ella. Por parte de aquellos que no rotaron, se puede notar que la distribución no se encuentra tan concentrada, y que la masa de densidad de la cola derecha (valores positivos del ingreso) es mayor. Para corroborar esta conclusión gráfica, podemos ver el valor p asociado con el test de Welch Two Sample, es cercano a 0, de manera que se rechaza la hipótesis nula de que no existe una diferencia de los promedios de ambos grupos, existiendo evidencia a favor de que si hay una diferencia verdadera entre las medias de los dos grupos considerados: los que rotaron y los que no.
library(knitr)
library(kableExtra)
tab <- matrix(c(t.test(Base$Ingreso_Mensual~Base$Rotacion)$p.value,t.test(Base$Distancia_Casa~Base$Rotacion)$p.value,t.test(Base$Tiempo_Jefe~Base$Rotacion)$p.value), ncol=3)
colnames(tab) <- c('Ingreso Mensual','Distancia a casa','Viajes de negocios')
   tab %>%
   kbl(booktabs = T,caption = "<center><b>P-Value</b></center>") %>%
   kable_classic(full_width = F)
P-Value
Ingreso Mensual Distancia a casa Viajes de negocios
0 0.0041365 0

Para concluir, con este análisis podemos ver que existen factores, que pueden generar una mayor rotación al interior de la empresa, como los son las horas de trabajo extra, la, el estado civil, los viajes de negocios que se realizan, el ingreso laboral mensual, distancia del trabajo a la casa y los años que lleva bajo el mismo jefe.

Algunos de ellos son difícil de controlar, como el estado civil, pero con los otros factores la empresa puede generar políticas y otorgan incentivos para disminuir estos efectos de rotación , por un lado, puede dar subsidios para aquellos trabajadores que deben realizar viajes de negocios para que el costo de oportunidad que enfrenten sean mayores, en cuanto a las horas extra, pueden evaluar su necesidad, si son completamente indispensables, remunerar en mayor medida a los trabajadores que las hacen puede ser una medida efectiva.

Por el lado de la distancia del trabajo a casa, poner políticas de trabajo mixto, es decir que puedan realizar teletrabajo ciertos días a la semana, de manera que no siempre deben movilizarse. En términos de años de trabajo bajo el mismo jefe, se pueden realizan políticas de fidelización a la empresa, de manera que puedan otorgar primas crecimientos dependiendo de los años que ha realizado el mismo trabajo, u otro tipo de incentivos, como mayores vacaciones, o tiempo extra para realizar proyectos. En cuanto al nivel de ingreso, se puede considerar incrementos moderados en los ingresos de los trabajadores que ganan alrededor de dos millones quinientos