{r setup, include=FALSE} eval = FALSE knitr::opts_chunk$set(echo = TRUE)

Contexto

En todas las industrias la rotación de personal se evidencia más en unas áreas que en otras, dicho eso con este análisis vamos a realizar diferentes hipótesis y validar cuales son las características que afectan más dicha rotación.

Seleccionar 3 variables categóricas (distintas de rotación) y 3 variables cuantitativas, que consideren estén relacionadas con la rotación. Nota: Justificar por qué estas variables están relacionadas y que tipo de relación se espera (Hipótesis). Ejemplo: Se espera que las horas extra se relacionen con la rotación ya que las personas podrían desgastarse más al trabajar horas extra y descuidan aspectos personales. La hipótesis es que las personas que trabajan horas extra tienen mayor posibilidad de rotar que las que no trabajan extra. (serian 6, una por variable)

Una vez sabiendo el contexto y el alcance que se piensa alcanzar se escogieron las siguientes variables:

Variables Categóricas:

Hipótesis 1: Departamento, posiblemente el departamento IyD tiene una mayor deserción en el trabajo por la alta tasa de demanda en el mercado por falta de personal capacitado en el área.

Hipótesis 2: Campo_Educación, actualmente no todas las áreas se ven afectadas con la rotación de personal, por ende, se espera poder responder o evidenciar que las personas que están relacionadas con temas de tecnología tienen a tener una mayor rotación.

Hipótesis 3: Cargo, se pretende demostrar que las personas que se encuentran en determinado cargo tengan mayor probabilidad de rotar por una sobre carga laboral

Variables numéricas:

Hipótesis 1: Satisfación_Laboral, se cree que tenga una relación con la deserción, ya que cuando las personas les gusta su trabajo probablemente duren más en la organización y no busque otras ofertas por fuera de la organización.

Hipótesis 2: Ingreso_mensual, Se espera que el ingreso mensual esté relacionado con la rotación de personal, ya que si el colaborador cuenta con una baja remuneración buscara una mejor oferta salarial por fuera de la empresa

Hipótesis 3: Equilibrio_Trabajo_Vida, creo que es una variable importante ya que como dicen no todo es trabajo y esto nos podría ayudar a identificar la posible rotación.

Cargando Datos

Iniciamos realizando el cargue de los datos y la validacion

library(readxl)
datos=read_excel("C:/Users/icm2363a/Documents/R/Datos_Rotacion.xlsx")
head(datos)
## # A tibble: 6 x 24
##   Rotación  Edad `Viaje de Negocios` Departamento Distancia_Casa Educación
##   <chr>    <dbl> <chr>               <chr>                 <dbl>     <dbl>
## 1 Si          41 Raramente           Ventas                    1         2
## 2 No          49 Frecuentemente      IyD                       8         1
## 3 Si          37 Raramente           IyD                       2         2
## 4 No          33 Frecuentemente      IyD                       3         4
## 5 No          27 Raramente           IyD                       2         1
## 6 No          32 Frecuentemente      IyD                       2         2
## # ... with 18 more variables: Campo_Educación <chr>,
## #   Satisfacción_Ambiental <dbl>, Genero <chr>, Cargo <chr>,
## #   Satisfación_Laboral <dbl>, Estado_Civil <chr>, Ingreso_Mensual <dbl>,
## #   Trabajos_Anteriores <dbl>, Horas_Extra <chr>,
## #   Porcentaje_aumento_salarial <dbl>, Rendimiento_Laboral <dbl>,
## #   Años_Experiencia <dbl>, Capacitaciones <dbl>,
## #   Equilibrio_Trabajo_Vida <dbl>, Antigüedad <dbl>, ...

Conociendo los datos

length(datos) 
## [1] 24
typeof(datos)
## [1] "list"
nrow(datos)
## [1] 1470
ncol(datos)
## [1] 24
dim(datos)
## [1] 1470   24
colnames(datos)
##  [1] "Rotación"                    "Edad"                       
##  [3] "Viaje de Negocios"           "Departamento"               
##  [5] "Distancia_Casa"              "Educación"                  
##  [7] "Campo_Educación"             "Satisfacción_Ambiental"     
##  [9] "Genero"                      "Cargo"                      
## [11] "Satisfación_Laboral"         "Estado_Civil"               
## [13] "Ingreso_Mensual"             "Trabajos_Anteriores"        
## [15] "Horas_Extra"                 "Porcentaje_aumento_salarial"
## [17] "Rendimiento_Laboral"         "Años_Experiencia"           
## [19] "Capacitaciones"              "Equilibrio_Trabajo_Vida"    
## [21] "Antigüedad"                  "Antigüedad_Cargo"           
## [23] "Años_ultima_promoción"       "Años_acargo_con_mismo_jefe"
summary(datos)
##    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

Cargar Librerias

library(forecast)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(reshape2)
library(stats)
library(ggplot2)
library(ggthemes)
library(ggrepel)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(reticulate)
library(plotly)
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library(ggpubr)
## 
## Attaching package: 'ggpubr'
## The following object is masked from 'package:forecast':
## 
##     gghistogram
library(readxl)

Seleccion de variables analizar

dataset_final=datos[, c("Rotación", "Departamento","Campo_Educación","Cargo","Satisfación_Laboral","Ingreso_Mensual","Equilibrio_Trabajo_Vida")]
dataset_final
## # A tibble: 1,470 x 7
##    Rotación Departamento Campo_Educación Cargo  Satisfación_Lab~ Ingreso_Mensual
##    <chr>    <chr>        <chr>           <chr>             <dbl>           <dbl>
##  1 Si       Ventas       Ciencias        Ejecu~                4            5993
##  2 No       IyD          Ciencias        Inves~                2            5130
##  3 Si       IyD          Otra            Tecni~                3            2090
##  4 No       IyD          Ciencias        Inves~                3            2909
##  5 No       IyD          Salud           Tecni~                2            3468
##  6 No       IyD          Ciencias        Tecni~                4            3068
##  7 No       IyD          Salud           Tecni~                1            2670
##  8 No       IyD          Ciencias        Tecni~                3            2693
##  9 No       IyD          Ciencias        Direc~                3            9526
## 10 No       IyD          Salud           Repre~                3            5237
## # ... with 1,460 more rows, and 1 more variable: Equilibrio_Trabajo_Vida <dbl>

Analisis Univariado Variables Categoricas

g1= ggplot (dataset_final, aes (x=Departamento)) +geom_bar () +theme_bw ()
g2= ggplot (dataset_final, aes (x=Campo_Educación)) +geom_bar () +theme_bw ()
g3= ggplot (dataset_final, aes (y=Cargo)) +geom_bar () +theme_bw ()
  theme(axis.text.x = element_text(angle = 90))
## List of 1
##  $ axis.text.x:List of 11
##   ..$ family       : NULL
##   ..$ face         : NULL
##   ..$ colour       : NULL
##   ..$ size         : NULL
##   ..$ hjust        : NULL
##   ..$ vjust        : NULL
##   ..$ angle        : num 90
##   ..$ lineheight   : NULL
##   ..$ margin       : NULL
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi FALSE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  - attr(*, "class")= chr [1:2] "theme" "gg"
##  - attr(*, "complete")= logi FALSE
##  - attr(*, "validate")= logi TRUE
ggarrange(g1, g2, g3,labels = c ("A", "B", "C"),ncol = 1, nrow = 3)

Analisis graficas variables categoricas

Se observa que el 65% del departamento pertenece a IyD y en los campos de educacion donde se observa la mayor cantidad es en Ciencia y Salud y a nivel de Cargo estan el director de manofactura, investigador cientifico y tecnico laboratorio

Analisis Univariado Variables cuantitavivas

g4=ggplot(dataset_final,aes(x=Satisfación_Laboral))+geom_bar()+theme_bw()
ggplotly(g4)
g5= ggplot (dataset_final, aes(y=Ingreso_Mensual)) +geom_histogram () +theme_bw ()
g6= ggplot (dataset_final, aes(x=Equilibrio_Trabajo_Vida)) +geom_bar () +theme_bw ()

ggarrange(g4, g5, g6,labels = c ("A", "B", "C"),ncol = 2, nrow = 1)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## $`1`

## 
## $`2`

## 
## attr(,"class")
## [1] "list"      "ggarrange"

Analisis Resultado Imagenes anteriores

Se evidencia que la gran mayoria tiene valores entre 3 y 4 en la satisfaccion laboral y cuentan con un buen equilibrio en el tema trabajo vida

Analisis Bivariado

g4=ggplot(dataset_final,aes(x=Rotación,y=Satisfación_Laboral,fill=Rotación))+geom_boxplot()+theme_bw()
g5=ggplot(dataset_final,aes(x=Rotación,y=Ingreso_Mensual,fill=Rotación))+geom_boxplot()+theme_bw()
g6=ggplot(dataset_final,aes(x=Rotación,y=Equilibrio_Trabajo_Vida,fill=Rotación))+geom_boxplot()+theme_bw()



ggarrange(g4, g5, g6,labels = c ("A", "B", "C"),ncol = 2, nrow = 1)
## $`1`

## 
## $`2`

## 
## attr(,"class")
## [1] "list"      "ggarrange"

Visualizacion Final

## Loading required package: CGPfunctions
## Warning in geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomLabel() has yet to be implemented in plotly.
##   If you'd like to see this geom implemented,
##   Please open an issue with your example code at
##   https://github.com/ropensci/plotly/issues
## Warning in geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomLabel() has yet to be implemented in plotly.
##   If you'd like to see this geom implemented,
##   Please open an issue with your example code at
##   https://github.com/ropensci/plotly/issues
## Warning in geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomLabel() has yet to be implemented in plotly.
##   If you'd like to see this geom implemented,
##   Please open an issue with your example code at
##   https://github.com/ropensci/plotly/issues
## Warning in geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomLabel() has yet to be implemented in plotly.
##   If you'd like to see this geom implemented,
##   Please open an issue with your example code at
##   https://github.com/ropensci/plotly/issues
## Warning in geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomLabel() has yet to be implemented in plotly.
##   If you'd like to see this geom implemented,
##   Please open an issue with your example code at
##   https://github.com/ropensci/plotly/issues

Conclusiones Bivariado:

Validando las gráficas se evidencia que las personas que más rotan son aquellas que no marcaron la satisfacción laboral en 4, lo cual nos advierte en este caso como un difractar para tomar decisiones a futuro sobre las personas que están colocando por debajo de 4, aunque es la gran mayoría se podrían empezar a perfilar mejor a las personas.

Por otro lado, se pudo identificar que las personas que más rotan son aquellas que tienen menos ingresos que está relacionado con la insatisfacción laboral y con respecto al trabajo vida no se evidencia alguna diferencia que me pueda ayudar a identificar a estas personas

Algo bien interesante que se puede evidenciar es que inicialmente se pensaba q los colaboradores que más rotaban eran los de IyD, pero realmente es el departamento de ventas.

se podría realizar un análisis más profundo donde se puede solo seleccionar a los usuarios del departamento de ventas y ver cuáles son las variables que más los impactan

A continuacion un analisis mas profundo sobre el departamento de ventas

Dataset_Ventas = filter(dataset_final, Departamento == "Ventas")

## Warning in geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomLabel() has yet to be implemented in plotly.
##   If you'd like to see this geom implemented,
##   Please open an issue with your example code at
##   https://github.com/ropensci/plotly/issues
## Warning in geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomLabel() has yet to be implemented in plotly.
##   If you'd like to see this geom implemented,
##   Please open an issue with your example code at
##   https://github.com/ropensci/plotly/issues
## Warning in geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomLabel() has yet to be implemented in plotly.
##   If you'd like to see this geom implemented,
##   Please open an issue with your example code at
##   https://github.com/ropensci/plotly/issues
## Warning in geom2trace.default(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]]): geom_GeomLabel() has yet to be implemented in plotly.
##   If you'd like to see this geom implemented,
##   Please open an issue with your example code at
##   https://github.com/ropensci/plotly/issues

Conclusiones Departamento de Ventas

Se evidencia que, dentro del departamento de ventas, tienen a no tener una buena satisfacción laboral, adicional, pasa lo mismo con el equilibrio trabajo vida que nos puede indicar que estas personas estas en sobre esfuerzo.

En la parte de Campo de educación se observa que Técnicos y Otros repuntan en la deserción, sería bueno empezar a mirar que está pasando en este tipo de campo para poder tomar decisiones que ayuden a los colaboradores.

Por último, se conserva que, de todas estas conclusiones, la más fuerte es que 40% del cargo de representante de ventas tienden a la deserción lo cual es muy preocupante porque 4 de cada 10 personas se va a terminar yendo y esto impacta la operación en la parte de contrataciones y curva de aprendizaje que retrasa la operación.