Datos iniciales

# Cargar los datos
data("rotacion")

# Visión general de los datos
head(rotacion)

Análisis exploratorio de los datos

Iniciaremos el analisis con una revision de los datos y limpieza de los mismos.

  1. Primero consultaremos la dimension de la matriz de datos
dim(rotacion)
## [1] 1470   24

Contamos con 1470 filas y 24 variables o columnas.

  1. Validación de nulos en cada variable
colSums(is.na(rotacion)) %>% as.data.frame()

No existen valores nulos

Para iniciar el analisis de las variables, primero conocemos sus tipos.

str(rotacion)
## tibble [1,470 × 24] (S3: tbl_df/tbl/data.frame)
##  $ Rotación                   : chr [1:1470] "Si" "No" "Si" "No" ...
##  $ Edad                       : num [1:1470] 41 49 37 33 27 32 59 30 38 36 ...
##  $ Viaje de Negocios          : chr [1:1470] "Raramente" "Frecuentemente" "Raramente" "Frecuentemente" ...
##  $ Departamento               : chr [1:1470] "Ventas" "IyD" "IyD" "IyD" ...
##  $ Distancia_Casa             : num [1:1470] 1 8 2 3 2 2 3 24 23 27 ...
##  $ Educación                  : num [1:1470] 2 1 2 4 1 2 3 1 3 3 ...
##  $ Campo_Educación            : chr [1:1470] "Ciencias" "Ciencias" "Otra" "Ciencias" ...
##  $ Satisfacción_Ambiental     : num [1:1470] 2 3 4 4 1 4 3 4 4 3 ...
##  $ Genero                     : chr [1:1470] "F" "M" "M" "F" ...
##  $ Cargo                      : chr [1:1470] "Ejecutivo_Ventas" "Investigador_Cientifico" "Tecnico_Laboratorio" "Investigador_Cientifico" ...
##  $ Satisfación_Laboral        : num [1:1470] 4 2 3 3 2 4 1 3 3 3 ...
##  $ Estado_Civil               : chr [1:1470] "Soltero" "Casado" "Soltero" "Casado" ...
##  $ Ingreso_Mensual            : num [1:1470] 5993 5130 2090 2909 3468 ...
##  $ Trabajos_Anteriores        : num [1:1470] 8 1 6 1 9 0 4 1 0 6 ...
##  $ Horas_Extra                : chr [1:1470] "Si" "No" "Si" "Si" ...
##  $ Porcentaje_aumento_salarial: num [1:1470] 11 23 15 11 12 13 20 22 21 13 ...
##  $ Rendimiento_Laboral        : num [1:1470] 3 4 3 3 3 3 4 4 4 3 ...
##  $ Años_Experiencia           : num [1:1470] 8 10 7 8 6 8 12 1 10 17 ...
##  $ Capacitaciones             : num [1:1470] 0 3 3 3 3 2 3 2 2 3 ...
##  $ Equilibrio_Trabajo_Vida    : num [1:1470] 1 3 3 3 3 2 2 3 3 2 ...
##  $ Antigüedad                 : num [1:1470] 6 10 0 8 2 7 1 1 9 7 ...
##  $ Antigüedad_Cargo           : num [1:1470] 4 7 0 7 2 7 0 0 7 7 ...
##  $ Años_ultima_promoción      : num [1:1470] 0 1 0 3 2 3 0 0 1 7 ...
##  $ Años_acargo_con_mismo_jefe : num [1:1470] 5 7 0 0 2 6 0 0 8 7 ...

Punto 1: Selección de variables

Seleccione 3 variables categóricas (distintas de rotación) y 3 variables cuantitativas, que se consideren estén relacionadas con la rotación.

Análisis de variables categóricas

1. Genero

Segun información de la OIT, existe una brecha entre los salarios de hombre y mujeres, de igual forma los hombres tienden a ganar más dinero desarrollando los mismos trabajos que las mujeres, es importante analizar si esta tendencia pueda verse reflejada en una mayor rotacion de los hombres por la facilidad de conseguir nuevos empleos.

2. Estado civil

Se espera que las personas en estado civil casado, pueden tener tendencia a la conservación y busqueda de una mayor estabilidad laboral, por las responsabilidades adquiridas y porque es más probable que tengan hijos. Las persona solteras pueden tener un grado de responsabilidad menor y facilidad para asumir riesgos en los cambios de empleos.

3. Horas extras

Las personas que realizan horas extras pueden presentar un agotamiento mayor, sin embargo, se debe analizar la remuneracion de las mismas, ya que en ocasiones esto le puede representar a las personas incluso un incentivo economico muy atractivo, siempre y cuando no sea muy continuo.

Análisis de variables cuantitativas

1. Edad.

Es valido pensar que las personas más jovenes tienden a tener una mayor rotación, principalmente porque sus salarios pueden ser más bajos y tambien tienen mayores posibilidades de conseguir nuevas oportunidades laborales.

2. Ingreso mensual.

Consideramos la hipotesis de que las personas con mejores remuneraciones tienden a rotar menos, una persona que reciba una compensacion justa por el trabajo que realiza, probablemente no busque cambiar de empleo constantemente.

3. Años de experiencia

Finalmente es valido pensar que las personas con una mayor experiencia roten menos, puede ser que logren una mejor a adaptación a la cultura organizacional y encontraron un balance en sus vidas.

Punto 2: Análisis univariado

Realiza un análisis univariado (caracterización) de la información contenida en la base de datos rotacion.

Variables categóricas

Genero

Nuestra base de datos cuenta con una mayoria de hombres (882) y mujeres (588).

library(plotly)

summarytools::freq(rotacion$Genero)
## Frequencies  
## 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
# Calcular las frecuencias y los porcentajes
frecuencia_genero <- table(rotacion$Genero)
porcentajes <- prop.table(frecuencia_genero) * 100

# Crear el gráfico de torta con plotly
fig <- plot_ly(
  labels = names(porcentajes),       # Etiquetas de cada sección
  values = porcentajes,              # Valores porcentuales
  type = "pie",                      # Tipo de gráfico
  textinfo = 'label+percent',        # Información mostrada en el gráfico
  hoverinfo = 'text',                # Información mostrada al pasar el mouse
  text = paste(names(porcentajes), ": ", format(porcentajes, digits = 2), "%") # Texto personalizado al pasar el mouse
)

# Personalizar el título del gráfico
fig <- fig %>% layout(title = "Distribución por Género")

# Mostrar el gráfico
fig

Estado Civil

La base de datos cuenta con una mayoria de personas casadas (673) que representan el 45.78%, seguido de personas solteras (470) representando el 31.97% y finalmente los divorciados son (327) representando el 22.24%.

library(plotly)

summarytools::freq(rotacion$Estado_Civil)
## Frequencies  
## 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
# Calcular las frecuencias y los porcentajes
frecuencia_ecivil <- table(rotacion$Estado_Civil)
porcentajes2 <- prop.table(frecuencia_ecivil) * 100

# Crear el gráfico de torta con plotly
fig <- plot_ly(
  labels = names(porcentajes2),       # Etiquetas de cada sección
  values = porcentajes2,              # Valores porcentuales
  type = "pie",                      # Tipo de gráfico
  textinfo = 'label+percent',        # Información mostrada en el gráfico
  hoverinfo = 'text',                # Información mostrada al pasar el mouse
  text = paste(names(porcentajes2), ": ", format(porcentajes2, digits = 2), "%") # Texto personalizado al pasar el mouse
)

# Personalizar el título del gráfico
fig <- fig %>% layout(title = "Distribución por Estado Civil")

# Mostrar el gráfico
fig

Horas Extra

En la base de datos encontramos que 1054 personas, es decir, el 71.7% no realizan horas extras, mientras que 416 o el 28.3% si las realizan.

library(plotly)

summarytools::freq(rotacion$Horas_Extra)
## Frequencies  
## 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
# Calcular las frecuencias y los porcentajes
frecuencia_hextra <- table(rotacion$Horas_Extra)
porcentajes3 <- prop.table(frecuencia_hextra) * 100

# Crear el gráfico de torta con plotly
fig <- plot_ly(
  labels = names(porcentajes3),       # Etiquetas de cada sección
  values = porcentajes3,              # Valores porcentuales
  type = "pie",                      # Tipo de gráfico
  textinfo = 'label+percent',        # Información mostrada en el gráfico
  hoverinfo = 'text',                # Información mostrada al pasar el mouse
  text = paste(names(porcentajes3), ": ", format(porcentajes3, digits = 2), "%") # Texto personalizado al pasar el mouse
)

# Personalizar el título del gráfico
fig <- fig %>% layout(title = "Distribución por Horas Extra")

# Mostrar el gráfico
fig

Variables cuantitativas

Edad

Explorando la base de datos completa, encontramos que la edad media es de 36.9 años, un minimo de 18 años y la persona de mayor edad tiene 60 años.

# Descripción estadística de Edad
descr_edad <- descr(rotacion$Edad)
print(descr_edad)
## Descriptive Statistics  
## rotacion$Edad  
## N: 1470  
## 
##                        Edad
## ----------------- ---------
##              Mean     36.92
##           Std.Dev      9.14
##               Min     18.00
##                Q1     30.00
##            Median     36.00
##                Q3     43.00
##               Max     60.00
##               MAD      8.90
##               IQR     13.00
##                CV      0.25
##          Skewness      0.41
##       SE.Skewness      0.06
##          Kurtosis     -0.41
##           N.Valid   1470.00
##         Pct.Valid    100.00
# Histograma de Edad
hist_edad <- plot_ly(data = rotacion, x = ~Edad, type = 'histogram', name = 'Edad') %>%
  layout(title = "Histograma de Edad", xaxis = list(title = "Edad"), yaxis = list(title = "Frecuencia"))

# Boxplot de Edad
box_edad <- plot_ly(data = rotacion, y = ~Edad, type = 'box', name = 'Edad') %>%
  layout(title = "Boxplot de Edad", yaxis = list(title = "Edad"))

# Mostrar gráficos
subplot(hist_edad, box_edad, nrows = 1, titleX = TRUE, titleY = TRUE) %>%
  layout(title = "Análisis de la Variable Edad")

Ingreso Mensual

En la base de datos general encontramos con respecto a los ingresos mensuales que la media es de $6.502, el minimo se ubica en $1.009 y el ingreso más alto es de $19.999.

# Descripción estadística de Ingreso_Mensual
descr_ingreso <- descr(rotacion$Ingreso_Mensual)
print(descr_ingreso)
## Descriptive Statistics  
## rotacion$Ingreso_Mensual  
## N: 1470  
## 
##                     Ingreso_Mensual
## ----------------- -----------------
##              Mean           6502.93
##           Std.Dev           4707.96
##               Min           1009.00
##                Q1           2911.00
##            Median           4919.00
##                Q3           8380.00
##               Max          19999.00
##               MAD           3260.24
##               IQR           5468.00
##                CV              0.72
##          Skewness              1.37
##       SE.Skewness              0.06
##          Kurtosis              0.99
##           N.Valid           1470.00
##         Pct.Valid            100.00
# Histograma de Ingreso_Mensual
hist_ingreso <- plot_ly(data = rotacion, x = ~Ingreso_Mensual, type = 'histogram', name = 'Ingreso Mensual') %>%
  layout(title = "Histograma de Ingreso Mensual", xaxis = list(title = "Ingreso Mensual"), yaxis = list(title = "Frecuencia"))

# Boxplot de Ingreso_Mensual
box_ingreso <- plot_ly(data = rotacion, y = ~Ingreso_Mensual, type = 'box', name = 'Ingreso Mensual') %>%
  layout(title = "Boxplot de Ingreso Mensual", yaxis = list(title = "Ingreso Mensual"))

# Mostrar gráficos
subplot(hist_ingreso, box_ingreso, nrows = 1, titleX = TRUE, titleY = TRUE) %>%
  layout(title = "Análisis de la Variable Ingreso Mensual")

Años Experiencia

En la compañia se encuentra una media de años de experiencia de 11.2 años y un maximo de 40 años de experiencia.

# Descripción estadística de Años_Experiencia
descr_experiencia <- descr(rotacion$Años_Experiencia)
print(descr_experiencia)
## Descriptive Statistics  
## rotacion$Años_Experiencia  
## N: 1470  
## 
##                     Años_Experiencia
## ----------------- ------------------
##              Mean              11.28
##           Std.Dev               7.78
##               Min               0.00
##                Q1               6.00
##            Median              10.00
##                Q3              15.00
##               Max              40.00
##               MAD               5.93
##               IQR               9.00
##                CV               0.69
##          Skewness               1.11
##       SE.Skewness               0.06
##          Kurtosis               0.91
##           N.Valid            1470.00
##         Pct.Valid             100.00
# Histograma de Años_Experiencia
hist_experiencia <- plot_ly(data = rotacion, x = ~Años_Experiencia, type = 'histogram', name = 'Años de Experiencia') %>%
  layout(title = "Histograma de Años de Experiencia", xaxis = list(title = "Años de Experiencia"), yaxis = list(title = "Frecuencia"))

# Boxplot de Años_Experiencia
box_experiencia <- plot_ly(data = rotacion, y = ~Años_Experiencia, type = 'box', name = 'Años de Experiencia') %>%
  layout(title = "Boxplot de Años de Experiencia", yaxis = list(title = "Años de Experiencia"))

# Mostrar gráficos
subplot(hist_experiencia, box_experiencia, nrows = 1, titleX = TRUE, titleY = TRUE) %>%
  layout(title = "Análisis de la Variable Años de Experiencia")

Conclusiones

Ajuste del Modelo: residuos.