Caso: 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.

Problema.

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. El objetivo es que, con esta información, la empresa pueda tomar decisiones estratégicas para mejorar la retención y gestión del talento.

Base de datos

La siguiente es la base de datos suministrada por la inmobiliaria:

library(paqueteMODELOS)
library(dplyr)
data("rotacion")
glimpse(rotacion)
## Rows: 1,470
## Columns: 24
## $ Rotación                    <chr> "Si", "No", "Si", "No", "No", "No", "No", …
## $ Edad                        <dbl> 41, 49, 37, 33, 27, 32, 59, 30, 38, 36, 35…
## $ `Viaje de Negocios`         <chr> "Raramente", "Frecuentemente", "Raramente"…
## $ Departamento                <chr> "Ventas", "IyD", "IyD", "IyD", "IyD", "IyD…
## $ Distancia_Casa              <dbl> 1, 8, 2, 3, 2, 2, 3, 24, 23, 27, 16, 15, 2…
## $ Educación                   <dbl> 2, 1, 2, 4, 1, 2, 3, 1, 3, 3, 3, 2, 1, 2, …
## $ Campo_Educación             <chr> "Ciencias", "Ciencias", "Otra", "Ciencias"…
## $ Satisfacción_Ambiental      <dbl> 2, 3, 4, 4, 1, 4, 3, 4, 4, 3, 1, 4, 1, 2, …
## $ Genero                      <chr> "F", "M", "M", "F", "M", "M", "F", "M", "M…
## $ Cargo                       <chr> "Ejecutivo_Ventas", "Investigador_Cientifi…
## $ Satisfación_Laboral         <dbl> 4, 2, 3, 3, 2, 4, 1, 3, 3, 3, 2, 3, 3, 4, …
## $ Estado_Civil                <chr> "Soltero", "Casado", "Soltero", "Casado", …
## $ Ingreso_Mensual             <dbl> 5993, 5130, 2090, 2909, 3468, 3068, 2670, …
## $ Trabajos_Anteriores         <dbl> 8, 1, 6, 1, 9, 0, 4, 1, 0, 6, 0, 0, 1, 0, …
## $ Horas_Extra                 <chr> "Si", "No", "Si", "Si", "No", "No", "Si", …
## $ Porcentaje_aumento_salarial <dbl> 11, 23, 15, 11, 12, 13, 20, 22, 21, 13, 13…
## $ Rendimiento_Laboral         <dbl> 3, 4, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, …
## $ Años_Experiencia            <dbl> 8, 10, 7, 8, 6, 8, 12, 1, 10, 17, 6, 10, 5…
## $ Capacitaciones              <dbl> 0, 3, 3, 3, 3, 2, 3, 2, 2, 3, 5, 3, 1, 2, …
## $ Equilibrio_Trabajo_Vida     <dbl> 1, 3, 3, 3, 3, 2, 2, 3, 3, 2, 3, 3, 2, 3, …
## $ Antigüedad                  <dbl> 6, 10, 0, 8, 2, 7, 1, 1, 9, 7, 5, 9, 5, 2,…
## $ Antigüedad_Cargo            <dbl> 4, 7, 0, 7, 2, 7, 0, 0, 7, 7, 4, 5, 2, 2, …
## $ Años_ultima_promoción       <dbl> 0, 1, 0, 3, 2, 3, 0, 0, 1, 7, 0, 0, 4, 1, …
## $ Años_acargo_con_mismo_jefe  <dbl> 5, 7, 0, 0, 2, 6, 0, 0, 8, 7, 3, 8, 3, 2, …
rotacion <- as.data.frame(rotacion)
rotacion

Diccionario de datos.

• Rendimiento laboral: 1= bajo, 2=medio, 3=alto, 4=Muy alto.

• Distancia de la casa: kilómetros de distancia desde la casa.

• Educación: 1=primaria, 2=secundaria, 3=técnico/tecnólogo 4=pregrado y 5=posgrado.

• Satisfacción ambiental: 1=Muy insatisfecho, 2=insatisfecho, 3=satisfecho y 4=Muy insatisfecho.

• Satisfacción laboral: 1=Muy insatisfecho, 2=insatisfecho, 3=satisfecho y 4=Muy insatisfecho.

• Trabajos anteriores: cantidad de trabajos antes de ingresar a la empresa.

• Equilibrio_trabajo_vida: 1=Muy bajo, 2=bajo, 3=Medio, 4=alto.

Pasos propuestos por la genrencia.

Los siguientes son los pasos propuestos por la gerencia para el análisis:

1. Selección de variables

Variables categóricas

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

  • Cargo .El cargo de un empleado puede influir en su satisfacción laboral y en su decisión de permanecer en la empresa. Diferentes niveles jerárquicos pueden experimentar distintas condiciones de trabajo, oportunidades de crecimiento y niveles de estrés, lo que podría afectar su lealtad a la organización. Hipótesis: Los empleados en cargos de menor jerarquía tienen una mayor tasa de rotación que aquellos en cargos de mayor jerarquía.

  • Estado Civil .El estado civil puede afectar la estabilidad emocional y económica de un empleado. Los empleados casados o con responsabilidades familiares pueden tener una menor rotación, ya que buscan mayor seguridad en su empleo. Por el contrario, empleados solteros pueden estar más dispuestos a cambiar de trabajo por la búsqueda de mejores oportunidades. Hipótesis: Los empleados casados tienen una menor tasa de rotación que los empleados solteros.

  • Horas Extra .La cantidad de horas extra que un empleado trabaja puede reflejar su carga de trabajo, nivel de agotamiento y equilibrio entre la vida laboral y personal. Un alto número de horas extra puede llevar a la insatisfacción laboral y, en consecuencia, a una mayor rotación de empleados. Hipótesis: Los empleados que trabajan horas extra tienen una mayor tasa de rotación.

Variables cuantitativas

Seleccione 3 variables cuantitativas, que se consideren estén relacionadas con la rotación.

  • Edad. La edad de los empleados puede influir en su estabilidad laboral y en sus expectativas respecto al trabajo. Empleados más jóvenes pueden ser más propensos a buscar nuevas oportunidades laborales, mientras que empleados mayores podrían buscar estabilidad y beneficios a largo plazo. Hipótesis: Los empleados más jóvenes tienen una mayor tasa de rotación que los empleados mayores.

  • Ingreso Mensual.El ingreso mensual está relacionado con la satisfacción laboral y la calidad de vida. Empleados que perciben un ingreso mensual bajo pueden sentirse insatisfechos y buscar oportunidades mejor remuneradas, lo que puede aumentar la rotación. Por otro lado, un ingreso alto puede contribuir a una mayor satisfacción y lealtad hacia la empresa.Hipótesis: Los empleados con un ingreso mensual inferior al promedio de la industria tienen una mayor tasa de rotación que aquellos con ingresos que se alinean o superan el promedio.

  • Antigüedad. La antigüedad en la empresa puede ser un indicador de la satisfacción laboral y el compromiso organizacional. Empleados con mayor antigüedad suelen estar más comprometidos y menos inclinados a abandonar la empresa, mientras que aquellos con poca antigüedad pueden estar evaluando otras opciones.Hipótesis: Los empleados con menos años de antigüedad tienen una mayor tasa de rotación.

2. Análisis univariado

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

names(rotacion)
##  [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(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
skim(rotacion)
Data summary
Name rotacion
Number of rows 1470
Number of columns 24
_______________________
Column type frequency:
character 8
numeric 16
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
Rotación 0 1 2 2 0 2 0
Viaje de Negocios 0 1 8 14 0 3 0
Departamento 0 1 2 6 0 3 0
Campo_Educación 0 1 4 11 0 6 0
Genero 0 1 1 1 0 2 0
Cargo 0 1 7 23 0 9 0
Estado_Civil 0 1 6 10 0 3 0
Horas_Extra 0 1 2 2 0 2 0

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
Edad 0 1 36.92 9.14 18 30 36 43 60 ▂▇▇▃▂
Distancia_Casa 0 1 9.19 8.11 1 2 7 14 29 ▇▅▂▂▂
Educación 0 1 2.91 1.02 1 2 3 4 5 ▂▃▇▆▁
Satisfacción_Ambiental 0 1 2.72 1.09 1 2 3 4 4 ▅▅▁▇▇
Satisfación_Laboral 0 1 2.73 1.10 1 2 3 4 4 ▅▅▁▇▇
Ingreso_Mensual 0 1 6502.93 4707.96 1009 2911 4919 8379 19999 ▇▅▂▁▂
Trabajos_Anteriores 0 1 2.69 2.50 0 1 2 4 9 ▇▃▂▂▁
Porcentaje_aumento_salarial 0 1 15.21 3.66 11 12 14 18 25 ▇▅▃▂▁
Rendimiento_Laboral 0 1 3.15 0.36 3 3 3 3 4 ▇▁▁▁▂
Años_Experiencia 0 1 11.28 7.78 0 6 10 15 40 ▇▇▂▁▁
Capacitaciones 0 1 2.80 1.29 0 2 3 3 6 ▂▇▇▂▃
Equilibrio_Trabajo_Vida 0 1 2.76 0.71 1 2 3 3 4 ▁▃▁▇▂
Antigüedad 0 1 7.01 6.13 0 3 5 9 40 ▇▂▁▁▁
Antigüedad_Cargo 0 1 4.23 3.62 0 2 3 7 18 ▇▃▂▁▁
Años_ultima_promoción 0 1 2.19 3.22 0 0 1 3 15 ▇▁▁▁▁
Años_acargo_con_mismo_jefe 0 1 4.12 3.57 0 2 3 7 17 ▇▂▅▁▁
variables_categoricas <- c( "Departamento", "Estado_Civil", "Campo_Educación","Cargo", "Horas_Extra", "Genero")
variables_cuantitativas <- c("Edad","Distancia_Casa", "Educación","Satisfacción_Ambiental", "Satisfación_Laboral", "Trabajos_Anteriores", "Porcentaje_aumento_salarial","Rendimiento_Laboral","Años_Experiencia", "Capacitaciones", "Equilibrio_Trabajo_Vida", "Antigüedad_Cargo", "Años_ultima_promoción", "Años_acargo_con_mismo_jefe", "Ingreso_Mensual", "Antigüedad")

Variables categóricas

print(variables_categoricas)
## [1] "Departamento"    "Estado_Civil"    "Campo_Educación" "Cargo"          
## [5] "Horas_Extra"     "Genero"

Viaje de negocios

tabla_frecuenciav <- table(rotacion$`Viaje de Negocios`)
print(tabla_frecuenciav)
## 
## Frecuentemente       No_Viaja      Raramente 
##            277            150           1043
porcentajesv <- prop.table(tabla_frecuenciav) * 100
print(porcentajesv)
## 
## Frecuentemente       No_Viaja      Raramente 
##       18.84354       10.20408       70.95238
plot_ly(data = rotacion, x = ~`Viaje de Negocios`, type = "histogram", 
        marker = list(color = "skyblue")) %>%
  layout(title = "Viaje de Negocios",
         xaxis = list(title = "Viaje de Negocios"),
         yaxis = list(title = "Frecuencia"))
pie(tabla_frecuenciav, main = "Distribución de Viaje_de_Negocios", 
    col = rainbow(length(tabla_frecuenciav)))

Departamento

tabla_frecuenciad <- table(rotacion$Departamento)
print(tabla_frecuenciad)
## 
##    IyD     RH Ventas 
##    961     63    446
porcentajesd <- prop.table(tabla_frecuenciad) * 100
print(porcentajesd)
## 
##       IyD        RH    Ventas 
## 65.374150  4.285714 30.340136
plot_ly(data = rotacion, x = ~Departamento, type = "histogram", 
        marker = list(color = "skyblue")) %>%
  layout(title = "Departamento",
         xaxis = list(title = "Departamento"),
         yaxis = list(title = "Frecuencia"))
pie(tabla_frecuenciad, main = "Departamento", 
    col = rainbow(length(tabla_frecuenciad)))

for (variable in variables_categoricas) {
  
  # Eliminar los valores NA de la variable
  variable_data <- na.omit(rotacion[[variable]])
  
  # Tabla de frecuencia sin NA
  frecuencia <- table(variable_data)
  
  if (length(frecuencia) > 0) {
    # Imprimir la tabla de frecuencia
    print(paste("Tabla de frecuencia para", variable))
    print(frecuencia)
    
    # Calcular la moda
    moda <- names(which.max(frecuencia))
    print(paste("Moda de", variable, ":", moda))
    
    # Crear el diagrama de barras
    barplot(frecuencia, main=paste("Diagrama de Barras de", variable), col="lightblue", xlab="Categorías", ylab="Frecuencia")
    
    # Crear el diagrama de torta
    pie(frecuencia, main=paste("Diagrama de Torta de", variable), col=rainbow(length(frecuencia)))
  } else {
    print(paste("La variable", variable, "no tiene valores válidos para graficar."))
  }
}
## [1] "Tabla de frecuencia para Departamento"
## variable_data
##    IyD     RH Ventas 
##    961     63    446 
## [1] "Moda de Departamento : IyD"

## [1] "Tabla de frecuencia para Estado_Civil"
## variable_data
##     Casado Divorciado    Soltero 
##        673        327        470 
## [1] "Moda de Estado_Civil : Casado"

## [1] "Tabla de frecuencia para Campo_Educación"
## variable_data
##    Ciencias Humanidades    Mercadeo        Otra       Salud    Tecnicos 
##         606          27         159          82         464         132 
## [1] "Moda de Campo_Educación : Ciencias"

## [1] "Tabla de frecuencia para Cargo"
## variable_data
##  Director_Investigación    Director_Manofactura        Ejecutivo_Ventas 
##                      80                     145                     326 
##                 Gerente Investigador_Cientifico        Recursos_Humanos 
##                     102                     292                      52 
##     Representante_Salud    Representante_Ventas     Tecnico_Laboratorio 
##                     131                      83                     259 
## [1] "Moda de Cargo : Ejecutivo_Ventas"

## [1] "Tabla de frecuencia para Horas_Extra"
## variable_data
##   No   Si 
## 1054  416 
## [1] "Moda de Horas_Extra : No"

## [1] "Tabla de frecuencia para Genero"
## variable_data
##   F   M 
## 588 882 
## [1] "Moda de Genero : M"

Cargo

tabla_frecuencia <- table(rotacion$Cargo)
print(tabla_frecuencia)
## 
##  Director_Investigación    Director_Manofactura        Ejecutivo_Ventas 
##                      80                     145                     326 
##                 Gerente Investigador_Cientifico        Recursos_Humanos 
##                     102                     292                      52 
##     Representante_Salud    Representante_Ventas     Tecnico_Laboratorio 
##                     131                      83                     259
porcentajes <- prop.table(tabla_frecuencia) * 100
print(porcentajes)
## 
##  Director_Investigación    Director_Manofactura        Ejecutivo_Ventas 
##                5.442177                9.863946               22.176871 
##                 Gerente Investigador_Cientifico        Recursos_Humanos 
##                6.938776               19.863946                3.537415 
##     Representante_Salud    Representante_Ventas     Tecnico_Laboratorio 
##                8.911565                5.646259               17.619048
# Crear un histograma interactivo para la variable "Cargo"
plot_ly(data = rotacion, x = ~Cargo, type = "histogram", 
        marker = list(color = "skyblue")) %>%
  layout(title = "Variable Cargo",
         xaxis = list(title = "Cargo"),
         yaxis = list(title = "Frecuencia"))
pie(tabla_frecuencia, main = "Distribución de Cargo", 
    col = rainbow(length(tabla_frecuencia)))

Los Ejecutivos de Ventas constituyen el 22.18% de los empleados, siendo el grupo más numeroso. Los Investigadores Científicos representan el 19.86%, mientras que los Técnicos de Laboratorio ocupan el 17.62%, lo que también es una fracción considerable. En contraste, el área de Recursos Humanos tiene la menor representación con solo el 3.54% de los empleados. Esto sugiere que los roles más operativos o comerciales tienen una mayor participación, mientras que los cargos directivos o administrativos, como Director de Investigación (5.44%) y Recursos Humanos (3.54%), tienen menos empleados.

Estado civil

tabla_frecuencia1 <- table(rotacion$Estado_Civil)
print(tabla_frecuencia1)
## 
##     Casado Divorciado    Soltero 
##        673        327        470
porcentajes1 <- prop.table(tabla_frecuencia1) * 100
print(porcentajes1)
## 
##     Casado Divorciado    Soltero 
##   45.78231   22.24490   31.97279
# Crear un histograma interactivo para la variable "Estado civil"
plot_ly(data = rotacion, x = ~Estado_Civil, type = "histogram", 
        marker = list(color = "skyblue")) %>%
  layout(title = "Estado civil",
         xaxis = list(title = "Estado Civil"),
         yaxis = list(title = "Frecuencia"))
pie(tabla_frecuencia1, main = "Distribución de Estado_Civil", 
    col = rainbow(length(tabla_frecuencia1)))

La mayoría de los empleados están Casados (45.78%), lo que representa casi la mitad de la población. El siguiente grupo más grande es el de empleados Solteros (31.97%), seguido por los Divorciados (22.24%).

Horas extras

tabla_frecuencia2 <- table(rotacion$Horas_Extra)
print(tabla_frecuencia2)
## 
##   No   Si 
## 1054  416
porcentajes2 <- prop.table(tabla_frecuencia2) * 100
print(porcentajes2)
## 
##       No       Si 
## 71.70068 28.29932
# Crear un histograma interactivo para la variable "Horas extras"
plot_ly(data = rotacion, x = ~Horas_Extra, type = "histogram", 
        marker = list(color = "skyblue")) %>%
  layout(title = "Horas extras",
         xaxis = list(title = "Horas extras"),
         yaxis = list(title = "Frecuencia"))
pie(tabla_frecuencia2, main = "Distribución de Horas_Extra", 
    col = rainbow(length(tabla_frecuencia2)))

Un 71.70% de los empleados no realiza Horas Extra, mientras que el 28.30% sí lo hace.

Variables cuantitativas

sapply(rotacion, function(x) list(media=mean(as.numeric(x), na.rm=TRUE), 
                                  desviacion_std=sd(as.numeric(x), na.rm=TRUE)))
## Warning in do.call(fn, list(x, na.rm = na.rm, ...)): NAs introducidos por
## coerción
## Warning in sd(as.numeric(x), na.rm = TRUE): NAs introducidos por coerción
## Warning in do.call(fn, list(x, na.rm = na.rm, ...)): NAs introducidos por
## coerción
## Warning in sd(as.numeric(x), na.rm = TRUE): NAs introducidos por coerción
## Warning in do.call(fn, list(x, na.rm = na.rm, ...)): NAs introducidos por
## coerción
## Warning in sd(as.numeric(x), na.rm = TRUE): NAs introducidos por coerción
## Warning in do.call(fn, list(x, na.rm = na.rm, ...)): NAs introducidos por
## coerción
## Warning in sd(as.numeric(x), na.rm = TRUE): NAs introducidos por coerción
## Warning in do.call(fn, list(x, na.rm = na.rm, ...)): NAs introducidos por
## coerción
## Warning in sd(as.numeric(x), na.rm = TRUE): NAs introducidos por coerción
## Warning in do.call(fn, list(x, na.rm = na.rm, ...)): NAs introducidos por
## coerción
## Warning in sd(as.numeric(x), na.rm = TRUE): NAs introducidos por coerción
## Warning in do.call(fn, list(x, na.rm = na.rm, ...)): NAs introducidos por
## coerción
## Warning in sd(as.numeric(x), na.rm = TRUE): NAs introducidos por coerción
## Warning in do.call(fn, list(x, na.rm = na.rm, ...)): NAs introducidos por
## coerción
## Warning in sd(as.numeric(x), na.rm = TRUE): NAs introducidos por coerción
##                Rotación Edad     Viaje de Negocios Departamento Distancia_Casa
## media          NaN      36.92449 NaN               NaN          9.192517      
## desviacion_std NA       9.135938 NA                NA           8.106864      
##                Educación Campo_Educación Satisfacción_Ambiental Genero Cargo
## media          2.912925  NaN             2.721769               NaN    NaN  
## desviacion_std 1.024165  NA              1.093082               NA     NA   
##                Satisfación_Laboral Estado_Civil Ingreso_Mensual
## media          2.728571            NaN          6502.931       
## desviacion_std 1.102846            NA           4707.957       
##                Trabajos_Anteriores Horas_Extra Porcentaje_aumento_salarial
## media          2.693197            NaN         15.20952                   
## desviacion_std 2.498009            NA          3.659938                   
##                Rendimiento_Laboral Años_Experiencia Capacitaciones
## media          3.153741            11.27959         2.79932       
## desviacion_std 0.3608235           7.780782         1.289271      
##                Equilibrio_Trabajo_Vida Antigüedad Antigüedad_Cargo
## media          2.761224                7.008163   4.229252        
## desviacion_std 0.7064758               6.126525   3.623137        
##                Años_ultima_promoción Años_acargo_con_mismo_jefe
## media          2.187755              4.123129                  
## desviacion_std 3.22243               3.568136
columnas_numericas <- rotacion[sapply(rotacion, is.numeric)]

par(cex.axis = 0.7)

boxplot(
  columnas_numericas, 
  main = "Boxplot Atributos Numéricos", 
  las = 2
)

# Análisis univariado de variables cuantitativas
summary_variables_cuantitativas <- data.frame()  # Crear un data frame vacío para almacenar el resumen

for (variable in variables_cuantitativas) {
  # Calcular medidas de tendencia central y dispersión
  media <- mean(rotacion[[variable]])
  mediana <- median(rotacion[[variable]])
  desviacion_estandar <- sd(rotacion[[variable]])
  rango <- max(rotacion[[variable]]) - min(rotacion[[variable]])
  varianza <- var(rotacion[[variable]])
  
  # Crear una fila de resumen
  fila_resumen <- data.frame(
    Variable = variable,
    Media = media,
    Mediana = mediana,
    Desviacion_Estandar = desviacion_estandar,
    Varianza = varianza
  )
  
  # Agregar la fila a la tabla de resumen
  summary_variables_cuantitativas <- rbind(summary_variables_cuantitativas, fila_resumen)
}

print(summary_variables_cuantitativas)
##                       Variable       Media Mediana Desviacion_Estandar
## 1                         Edad   36.924490      36           9.1359380
## 2               Distancia_Casa    9.192517       7           8.1068644
## 3                    Educación    2.912925       3           1.0241649
## 4       Satisfacción_Ambiental    2.721769       3           1.0930822
## 5          Satisfación_Laboral    2.728571       3           1.1028461
## 6          Trabajos_Anteriores    2.693197       2           2.4980090
## 7  Porcentaje_aumento_salarial   15.209524      14           3.6599377
## 8          Rendimiento_Laboral    3.153741       3           0.3608235
## 9             Años_Experiencia   11.279592      10           7.7807817
## 10              Capacitaciones    2.799320       3           1.2892706
## 11     Equilibrio_Trabajo_Vida    2.761224       3           0.7064758
## 12            Antigüedad_Cargo    4.229252       3           3.6231370
## 13       Años_ultima_promoción    2.187755       1           3.2224303
## 14  Años_acargo_con_mismo_jefe    4.123129       3           3.5681361
## 15             Ingreso_Mensual 6502.931293    4919        4707.9567831
## 16                  Antigüedad    7.008163       5           6.1265252
##        Varianza
## 1  8.346536e+01
## 2  6.572125e+01
## 3  1.048914e+00
## 4  1.194829e+00
## 5  1.216270e+00
## 6  6.240049e+00
## 7  1.339514e+01
## 8  1.301936e-01
## 9  6.054056e+01
## 10 1.662219e+00
## 11 4.991081e-01
## 12 1.312712e+01
## 13 1.038406e+01
## 14 1.273160e+01
## 15 2.216486e+07
## 16 3.753431e+01

Edad

La edad promedio de los empleados es de 36.92 años. La mediana, que es de 36 años, está muy cercana a la media, lo que sugiere una distribución de edades bastante equilibrada y simétrica. La desviación estándar de 9.14 años muestra que existe una variabilidad moderada en las edades, con diferencias de aproximadamente ±9 años alrededor de la media.

Ingreso Mensual

El ingreso mensual promedio de los empleados es de 6502.93 unidades monetarias, pero la mediana, significativamente menor con 4919, indica que la distribución está sesgada hacia la derecha. Esto sugiere que algunos empleados tienen ingresos muy altos, lo que eleva la media. La desviación estándar de 4707.96 unidades monetarias confirma una gran dispersión en los ingresos, lo que indica que los salarios entre los empleados varían considerablemente.

Antigüedad

La antigüedad promedio de los empleados es de 7.01 años. La mediana de 5 años sugiere que la mitad de los empleados ha trabajado menos de 5 años en la empresa, mientras que la otra mitad ha trabajado más. La desviación estándar de 6.13 años refleja una dispersión moderada en la antigüedad, lo que indica que existen empleados con diferentes niveles de experiencia en la empresa.

Distancia_Casa:

La distancia promedio que los empleados recorren desde sus hogares hasta el trabajo es de aproximadamente 9 millas, con una mediana de 7 millas. Esto muestra una ligera inclinación hacia distancias más cortas, pero una desviación estándar de 8.11.

Educación:

El nivel promedio de educación de los empleados es de 2.91, con una mediana de 3 y una desviación estándar de 1.02. La baja variabilidad indica que los empleados suelen estar bien cualificados. ** Satisfacción Ambiental:** La satisfacción con el entorno de trabajo tiene una media de 2.72 y una mediana de 3 en una escala donde probablemente el valor máximo es 5. La desviación estándar de 1.09.

Satisfacción Laboral:

La satisfacción laboral tiene un comportamiento similar a la satisfacción ambiental, con una media de 2.73 y una mediana de 3. La desviación estándar de 1.10 indica que algunos empleados están menos satisfechos con su trabajo, lo que podría reflejarse en una mayor rotación de personal. La satisfacción laboral suele ser un indicador crítico para predecir la permanencia de los empleados en una empresa.

Trabajos Anteriores:

Los empleados han tenido un promedio de 2.69 trabajos anteriores, con una mediana de 2. La desviación estándar de 2.50 indica una variabilidad considerable, lo que implica que algunos empleados han tenido muchos más trabajos anteriores que otros.

Porcentaje de Aumento Salarial:

El porcentaje promedio de aumento salarial es del 15.21%, con una mediana de 14%. La desviación estándar de 3.66 sugiere una relativa uniformidad en los aumentos salariales.

Rendimiento Laboral:

El rendimiento laboral promedio es de 3.15, con una mediana de 3 y una desviación estándar baja de 0.36, lo que indica que el rendimiento de los empleados es bastante uniforme.

Años de Experiencia:

Los empleados tienen un promedio de 11.28 años de experiencia laboral, con una mediana de 10 años. La alta desviación estándar de 7.78 sugiere que algunos empleados tienen mucha más experiencia que otros.

Capacitaciones:

El número promedio de capacitaciones realizadas por los empleados es de 2.80, con una mediana de 3. La desviación estándar de 1.29 indica que hay una ligera variabilidad en las oportunidades de capacitación.

Equilibrio Trabajo-Vida:

El equilibrio entre el trabajo y la vida personal tiene una media de 2.76 y una mediana de 3. La desviación estándar de 0.71 es relativamente baja, lo que sugiere que no hay grandes diferencias en esta percepción.

Antigüedad en el Cargo:

La antigüedad promedio en el cargo es de 4.23 años, con una mediana de 3 años. La desviación estándar de 3.62 indica una considerable variabilidad.

Años desde la Última Promoción:

Los empleados llevan en promedio 2.19 años desde su última promoción, con una mediana de solo 1 año. Sin embargo, la desviación estándar de 3.22 sugiere que algunos empleados esperan mucho más para ser promovidos.

Años con el Mismo Jefe:

Los empleados han tenido al mismo jefe durante un promedio de 4.12 años, con una mediana de 3 años. La desviación estándar de 3.57 indica que algunos empleados han estado bajo la supervisión del mismo jefe durante mucho más tiempo.

3. Análisis bivariado

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 hipótesis planteada en el punto 1.

rotacion$Rotación <- ifelse(rotacion$Rotación == "Si", 1, 0)
head(rotacion)

Variables categóricas

for (variable in variables_categoricas) {
  tabla_contingencia <- table(rotacion$Rotación, rotacion[[variable]])
  
  # Realizar prueba de Chi-cuadrado
  chi_test <- chisq.test(tabla_contingencia)
  
  # Imprimir resultados
  cat("\n---", variable, "vs. Rotación ---\n")
  cat("Tabla de Contingencia:\n")
  print(tabla_contingencia)
  cat("Chi-cuadrado:", chi_test$statistic, "\n")
  cat("Grados de Libertad:", chi_test$parameter, "\n")
  cat("Valor p:", chi_test$p.value, "\n")
}
## 
## --- Departamento vs. Rotación ---
## Tabla de Contingencia:
##    
##     IyD  RH Ventas
##   0 828  51    354
##   1 133  12     92
## Chi-cuadrado: 10.79601 
## Grados de Libertad: 2 
## Valor p: 0.004525607 
## 
## --- Estado_Civil vs. Rotación ---
## Tabla de Contingencia:
##    
##     Casado Divorciado Soltero
##   0    589        294     350
##   1     84         33     120
## Chi-cuadrado: 46.16368 
## Grados de Libertad: 2 
## Valor p: 9.455511e-11
## Warning in chisq.test(tabla_contingencia): Chi-squared approximation may be
## incorrect
## 
## --- Campo_Educación vs. Rotación ---
## Tabla de Contingencia:
##    
##     Ciencias Humanidades Mercadeo Otra Salud Tecnicos
##   0      517          20      124   71   401      100
##   1       89           7       35   11    63       32
## Chi-cuadrado: 16.02467 
## Grados de Libertad: 5 
## Valor p: 0.00677398 
## 
## --- Cargo vs. Rotación ---
## Tabla de Contingencia:
##    
##     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
## Chi-cuadrado: 86.19025 
## Grados de Libertad: 8 
## Valor p: 2.752482e-15 
## 
## --- Horas_Extra vs. Rotación ---
## Tabla de Contingencia:
##    
##      No  Si
##   0 944 289
##   1 110 127
## Chi-cuadrado: 87.56429 
## Grados de Libertad: 1 
## Valor p: 8.158424e-21 
## 
## --- Genero vs. Rotación ---
## Tabla de Contingencia:
##    
##       F   M
##   0 501 732
##   1  87 150
## Chi-cuadrado: 1.116967 
## Grados de Libertad: 1 
## Valor p: 0.2905724

Departamento vs. Rotación El análisis muestra una relación significativa entre el departamento en el que trabaja el empleado y la rotación (p = 0.0045). Esto sugiere que los empleados del departamento de Investigación y Desarrollo (IyD) y de Ventas tienen diferentes probabilidades de rotación. La mayor proporción de empleados que abandonan la empresa proviene de IyD y Ventas, en comparación con Recursos Humanos (RH), donde la rotación es mucho menor.

Estado Civil vs. Rotación El estado civil también tiene una relación significativa con la rotación (p < 0.001). Los empleados solteros tienen una mayor probabilidad de rotación en comparación con los casados o divorciados. Esto sugiere que el estado civil podría ser un factor importante para entender la retención de empleados, especialmente entre los empleados solteros.

Campo de Educación vs. Rotación Existe una relación significativa entre el campo educativo del empleado y la rotación (p = 0.0068). Los empleados con formación en ciencias y técnicos parecen tener tasas de rotación más bajas, mientras que aquellos con formación en áreas como mercadeo o salud presentan tasas de rotación más altas. Esto puede estar relacionado con las oportunidades de empleo o el ajuste entre las competencias educativas y los roles laborales.

Cargo vs. Rotación El cargo también tiene una relación muy significativa con la rotación (p < 0.001). Los empleados en cargos de Ejecutivo de Ventas y Representante de Ventas presentan una mayor rotación que aquellos en cargos de investigación o gerencia. Esto puede indicar que ciertos roles, como los relacionados con ventas, pueden tener mayor inestabilidad laboral o menos satisfacción, lo que impulsa una mayor rotación.

Horas Extra vs. Rotación Las horas extra muestran una relación significativa con la rotación (p < 0.001). Los empleados que trabajan más horas extra tienen una mayor probabilidad de abandonar la empresa. Este hallazgo puede estar relacionado con la insatisfacción laboral, estrés o falta de equilibrio entre trabajo y vida personal.

Género vs. Rotación En cuanto al género, no se encontró una relación significativa con la rotación (p = 0.2906), lo que sugiere que hombres y mujeres tienen tasas de rotación similares. Esto implica que, en esta empresa, el género no parece ser un factor clave para predecir la rotación de empleados.

Variables cuantitativas

for (variable in variables_cuantitativas) {
    correlacion <- cor(rotacion$Rotación, rotacion[[variable]])
  
  # prueba t o ANOVA 
  t_test <- t.test(rotacion[[variable]] ~ rotacion$Rotación)
  

  cat("\n---", variable, "vs. Rotación ---\n")
  cat("Correlación:", correlacion, "\n")
  cat("Estadística T:", t_test$statistic, "\n")
  cat("Grados de Libertad:", t_test$parameter, "\n")
  cat("Valor p:", t_test$p.value, "\n")
}
## 
## --- Edad vs. Rotación ---
## Correlación: -0.1592278 
## Estadística T: 5.82915 
## Grados de Libertad: 316.9432 
## Valor p: 1.371249e-08 
## 
## --- Distancia_Casa vs. Rotación ---
## Correlación: 0.07792358 
## Estadística T: -2.888183 
## Grados de Libertad: 322.7243 
## Valor p: 0.004136512 
## 
## --- Educación vs. Rotación ---
## Correlación: -0.03137282 
## Estadística T: 1.217749 
## Grados de Libertad: 336.9516 
## Valor p: 0.2241713 
## 
## --- Satisfacción_Ambiental vs. Rotación ---
## Correlación: -0.103369 
## Estadística T: 3.751257 
## Grados de Libertad: 316.6213 
## Valor p: 0.0002092053 
## 
## --- Satisfación_Laboral vs. Rotación ---
## Correlación: -0.1034811 
## Estadística T: 3.926113 
## Grados de Libertad: 328.5934 
## Valor p: 0.0001052049 
## 
## --- Trabajos_Anteriores vs. Rotación ---
## Correlación: 0.04349374 
## Estadística T: -1.574651 
## Grados de Libertad: 317.1388 
## Valor p: 0.116334 
## 
## --- Porcentaje_aumento_salarial vs. Rotación ---
## Correlación: -0.0134782 
## Estadística T: 0.5042445 
## Grados de Libertad: 326.1071 
## Valor p: 0.6144301 
## 
## --- Rendimiento_Laboral vs. Rotación ---
## Correlación: 0.002888752 
## Estadística T: -0.109994 
## Grados de Libertad: 331.2177 
## Valor p: 0.9124808 
## 
## --- Años_Experiencia vs. Rotación ---
## Correlación: -0.1710632 
## Estadística T: 7.019179 
## Grados de Libertad: 350.8769 
## Valor p: 1.159817e-11 
## 
## --- Capacitaciones vs. Rotación ---
## Correlación: -0.0594778 
## Estadística T: 2.330522 
## Grados de Libertad: 339.5571 
## Valor p: 0.02036379 
## 
## --- Equilibrio_Trabajo_Vida vs. Rotación ---
## Correlación: -0.06393905 
## Estadística T: 2.174193 
## Grados de Libertad: 302.4882 
## Valor p: 0.03046567 
## 
## --- Antigüedad_Cargo vs. Rotación ---
## Correlación: -0.160545 
## Estadística T: 6.847079 
## Grados de Libertad: 366.5688 
## Valor p: 3.18739e-11 
## 
## --- Años_ultima_promoción vs. Rotación ---
## Correlación: -0.03301878 
## Estadística T: 1.287927 
## Grados de Libertad: 338.4916 
## Valor p: 0.1986513 
## 
## --- Años_acargo_con_mismo_jefe vs. Rotación ---
## Correlación: -0.1561993 
## Estadística T: 6.633399 
## Grados de Libertad: 365.0981 
## Valor p: 1.185022e-10 
## 
## --- Ingreso_Mensual vs. Rotación ---
## Correlación: -0.1598396 
## Estadística T: 7.482622 
## Grados de Libertad: 412.7407 
## Valor p: 4.433589e-13 
## 
## --- Antigüedad vs. Rotación ---
## Correlación: -0.1343922 
## Estadística T: 5.282596 
## Grados de Libertad: 338.2131 
## Valor p: 2.285905e-07

Edad vs. Rotación La correlación entre la edad y la rotación es de -0.159, lo que sugiere una relación negativa débil. A medida que la edad aumenta, es menos probable que los empleados abandonen la empresa. El valor p es muy bajo (1.37e-08), lo que indica que esta relación es estadísticamente significativa.

Distancia al trabajo vs. Rotación La correlación es positiva (0.078), lo que implica que a medida que aumenta la distancia entre el hogar y el trabajo, es más probable que un empleado abandone la empresa, aunque esta relación es débil. El valor p (0.0041) muestra que la relación es significativa.

Educación vs. Rotación La correlación es muy baja (-0.031), lo que sugiere que no hay una relación significativa entre el nivel educativo y la rotación. El valor p (0.224) indica que esta relación no es significativa.

Satisfacción Ambiental vs. Rotación La correlación es de -0.103, lo que indica que a mayor satisfacción con el ambiente laboral, menor es la rotación. Aunque la relación es débil, el valor p (0.0002) es muy bajo, lo que la hace significativa.

Satisfacción Laboral vs. Rotación Existe una correlación negativa de -0.103, lo que sugiere que una mayor satisfacción laboral está asociada con una menor rotación. El valor p (0.0001) es muy bajo, por lo que esta relación es estadísticamente significativa.

Trabajos Anteriores vs. Rotación La correlación es baja (0.043), lo que indica una relación muy débil entre el número de trabajos anteriores y la rotación. Además, el valor p (0.116) no es significativo, por lo que no hay evidencia suficiente de que esta variable influya en la rotación.

Porcentaje de Aumento Salarial vs. Rotación La correlación es prácticamente inexistente (-0.013), y el valor p (0.614) es alto, lo que indica que el aumento salarial no tiene una relación significativa con la rotación.

Rendimiento Laboral vs. Rotación La correlación es casi nula (0.003), y el valor p (0.912) sugiere que no hay una relación significativa entre el rendimiento y la rotación.

Años de Experiencia vs. Rotación Existe una correlación negativa de -0.171, lo que indica que a mayor experiencia, menor es la rotación. Esta relación es significativa (p = 1.16e-11).

Capacitaciones vs. Rotación La correlación de -0.059 sugiere una débil relación negativa entre la participación en capacitaciones y la rotación. El valor p (0.0204) indica que la relación es significativa.

Equilibrio Trabajo-Vida vs. Rotación La correlación negativa de -0.064 indica que los empleados con mejor equilibrio entre el trabajo y la vida personal tienden a rotar menos. Esta relación es débil pero significativa (p = 0.0305).

Antigüedad en el Cargo vs. Rotación La correlación de -0.161 indica que los empleados con más antigüedad en su puesto tienden a quedarse más tiempo en la empresa. Esta relación es significativa (p = 3.19e-11).

Años desde la última promoción vs. Rotación La correlación es baja (-0.033), lo que sugiere que el tiempo desde la última promoción no tiene un efecto considerable sobre la rotación. El valor p (0.198) no es significativo.

Años con el mismo jefe vs. Rotación La correlación negativa de -0.156 indica que cuanto más tiempo ha trabajado un empleado con el mismo jefe, menor es la probabilidad de que deje la empresa. Esta relación es significativa (p = 1.18e-10).

Ingreso Mensual vs. Rotación La correlación es de -0.160, lo que sugiere que los empleados con mayores ingresos tienen menos probabilidades de rotar. El valor p (4.43e-13) es muy bajo, lo que hace esta relación altamente significativa.

Antigüedad vs. Rotación La correlación de -0.134 indica que los empleados con más antigüedad en la empresa tienen una menor probabilidad de rotación. El valor p (2.29e-07) es muy bajo, lo que sugiere que esta relación es significativa.

CONCLUCIÓN

De la comparación entre los resultados observados en los análisis categóricos y cuantitativos con las hipótesis planteadas se concluye:

Comparación de Resultados para Variables Categóricas:

Departamento vs. Cargo:

Resultados: Se encontró que el departamento tiene una relación significativa con la rotación (p = 0.0045), particularmente en los departamentos de Investigación y Desarrollo (IyD) y Ventas, que muestran tasas de rotación más altas en comparación con Recursos Humanos.

Hipótesis: En cuanto al cargo, se planteó que los empleados en cargos de menor jerarquía tendrían una mayor rotación que aquellos en cargos de mayor jerarquía. Los resultados coinciden parcialmente, ya que los cargos de Ejecutivo de Ventas y Representante de Ventas tienen una mayor rotación (p < 0.001), lo que apoya la hipótesis de que ciertos roles con menor jerarquía o mayor presión presentan una mayor rotación.

Estado Civil vs. Estado Civil:

Resultados: El estado civil tiene una relación significativa con la rotación (p < 0.001). Los empleados solteros muestran una mayor probabilidad de rotación en comparación con los casados o divorciados, lo que confirma la importancia del estado civil en la retención.

Hipótesis: La hipótesis plantea que los empleados casados tendrían una menor tasa de rotación que los solteros. Los resultados refuerzan esta hipótesis, ya que los empleados casados muestran una menor propensión a abandonar la empresa.

Horas Extra vs. Horas Extra:

Resultados: Las horas extra también tienen una relación significativa con la rotación (p < 0.001), y aquellos empleados que trabajan más horas extra tienen una mayor probabilidad de dejar la empresa.

Hipótesis: Se predijo que los empleados que trabajan horas extra tendrían una mayor tasa de rotación, lo cual es confirmado por los resultados. Las horas extra pueden asociarse a una mayor carga laboral, insatisfacción o agotamiento, lo que impulsa a los empleados a buscar nuevas oportunidades.

Comparación de Resultados para Variables Cuantitativas:

Edad vs. Edad:

Resultados: Existe una correlación negativa y significativa entre la edad y la rotación (-0.159, p = 1.37e-08), lo que sugiere que los empleados mayores tienen menos probabilidad de rotación.

Hipótesis: La hipótesis plantea que los empleados más jóvenes tienen una mayor tasa de rotación, lo cual se confirma por los resultados, ya que los empleados más jóvenes suelen estar más dispuestos a cambiar de trabajo en busca de nuevas oportunidades.

Ingreso Mensual vs. Ingreso Mensual:

Resultados: La correlación negativa entre el ingreso mensual y la rotación (-0.160, p < 0.001) indica que los empleados con mayores ingresos tienen menos probabilidades de abandonar la empresa.

Hipótesis: Se planteó que los empleados con ingresos bajos tendrían una mayor tasa de rotación. Los resultados confirman esta hipótesis, ya que los empleados con ingresos más altos parecen estar más satisfechos y, por lo tanto, permanecen más tiempo en la empresa.

Antigüedad vs. Antigüedad:

Resultados: La antigüedad muestra una correlación negativa con la rotación (-0.134, p < 0.001), indicando que los empleados con más años en la empresa tienden a quedarse más tiempo.

Hipótesis: Se esperaba que los empleados con menos antigüedad tuvieran una mayor rotación, lo cual es respaldado por los resultados. La falta de compromiso o adaptación en los primeros años de empleo puede aumentar la rotación.

4. Estimación del modelo

Partición de los datos

Realice una partición en los datos de forma aleatoria donde 70% sea un set para entrenar el modelo y 30% para prueba.

set.seed(123)  # Para garantizar la reproducibilidad

# Dividir los datos (0.7 significa que el 70% se usa para el entrenamiento)
split <- sample.split(rotacion$Rotación, SplitRatio = 0.7)

# Conjunto de entrenamiento
train_data <- subset(rotacion, split == TRUE)

# Conjunto de prueba
test_data <- subset(rotacion, split == FALSE)

Modelo Logístico

Estime un modelo logístico con la muestra del 70%. Muestre los resultados.

modelo1<- glm(Rotación ~ Edad + Ingreso_Mensual + Antigüedad + Horas_Extra + Cargo + Estado_Civil  , 
                        data = train_data, family = binomial)
summary(modelo1)
## 
## Call:
## glm(formula = Rotación ~ Edad + Ingreso_Mensual + Antigüedad + 
##     Horas_Extra + Cargo + Estado_Civil, family = binomial, data = train_data)
## 
## Coefficients:
##                                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                  -3.938e+00  1.326e+00  -2.970 0.002983 ** 
## Edad                         -1.647e-02  1.182e-02  -1.393 0.163719    
## Ingreso_Mensual               2.326e-05  5.820e-05   0.400 0.689368    
## Antigüedad                   -3.903e-02  2.226e-02  -1.753 0.079567 .  
## Horas_ExtraSi                 1.512e+00  1.971e-01   7.675 1.66e-14 ***
## CargoDirector_Manofactura     1.134e+00  1.178e+00   0.962 0.335851    
## CargoEjecutivo_Ventas         2.372e+00  1.131e+00   2.096 0.036061 *  
## CargoGerente                  1.072e+00  1.149e+00   0.933 0.350853    
## CargoInvestigador_Cientifico  1.786e+00  1.229e+00   1.453 0.146269    
## CargoRecursos_Humanos         2.635e+00  1.281e+00   2.057 0.039729 *  
## CargoRepresentante_Salud      7.084e-01  1.225e+00   0.578 0.563190    
## CargoRepresentante_Ventas     3.417e+00  1.254e+00   2.724 0.006440 ** 
## CargoTecnico_Laboratorio      2.907e+00  1.227e+00   2.370 0.017790 *  
## Estado_CivilDivorciado       -2.670e-01  2.780e-01  -0.960 0.336815    
## Estado_CivilSoltero           7.942e-01  2.069e-01   3.839 0.000123 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 909.34  on 1028  degrees of freedom
## Residual deviance: 741.50  on 1014  degrees of freedom
## AIC: 771.5
## 
## Number of Fisher Scoring iterations: 6

Conclusiones frente a los resultados del modelo logístico:

Intercepto

El intercepto (-3.938) es significativo con un valor p de 0.002983. Esto indica que, cuando todas las demás variables son cero, la probabilidad logarítmica de la rotación es negativa, sugiriendo una baja probabilidad de rotación en ese caso extremo.

Edad:

El coeficiente de la variable Edad (-0.016) no es estadísticamente significativo (p = 0.1637). Esto sugiere que, en este modelo, no hay suficiente evidencia para afirmar que la edad influye en la probabilidad de rotación de los empleados.

Ingreso Mensual:

El coeficiente del Ingreso Mensual (2.326e-05) no es significativo (p = 0.6894), lo que indica que el salario mensual no tiene un impacto estadísticamente significativo en la rotación de empleados según este modelo.

Antigüedad:

La Antigüedad tiene un coeficiente de -0.039 y un valor p de 0.0796. Aunque se acerca a ser significativo, el valor p está justo por encima del umbral de 0.05. Esto sugiere que puede haber una relación negativa débil entre la antigüedad y la rotación, es decir, los empleados con más antigüedad tienden a quedarse, pero esta relación no es concluyente.

Horas Extra:

La variable Horas_Extra tiene un coeficiente de 1.512 y es altamente significativa (p = 1.66e-14). Esto sugiere que los empleados que trabajan horas extra tienen una probabilidad mucho mayor de rotación en comparación con los que no lo hacen, lo que podría estar relacionado con el agotamiento o el desequilibrio entre la vida personal y laboral.

Cargo:

Los cargos tienen un impacto significativo en la rotación: Ejecutivo de Ventas (coeficiente = 2.372, p = 0.036) muestra un aumento considerable en la probabilidad de rotación, lo que sugiere que estos empleados son más propensos a abandonar la empresa.

Recursos Humanos (coeficiente = 2.635, p = 0.0397) también tiene una probabilidad significativamente mayor de rotación.

Representante de Ventas (coeficiente = 3.417, p = 0.0064) y Técnico de Laboratorio (coeficiente = 2.907, p = 0.0178) tienen una alta probabilidad de rotación.

Otros cargos, como Director de Manufactura, Gerente, y Representante de Salud, no tienen un impacto estadísticamente significativo.

Estado Civil:

Soltero (coeficiente = 0.794, p = 0.000123) es significativo, lo que sugiere que los empleados solteros tienen una mayor probabilidad de rotación en comparación con los empleados casados. Divorciado no es significativo, lo que indica que no hay evidencia suficiente para sugerir que el estado civil de divorciado afecte la rotación.

Evaluación general del modelo:

El modelo tiene una devianza residual de 741.50 y un AIC de 771.5, lo que indica un ajuste razonable del modelo, aunque siempre hay espacio para mejora. Variables como Horas Extra, Estado Civil Soltero, y ciertos cargos como Ejecutivo de Ventas y Representante de Ventas tienen un impacto fuerte y significativo en la rotación, mientras que la Edad, Ingreso Mensual y algunas posiciones no parecen influir considerablemente en la rotación.

5. Evaluación

Evaluar el poder predictivo del modelo con base en la curva ROC y el AUC.

pp1= predict.glm(modelo1, newdata = test_data, type = "response")
resp = table(test_data$Rotación, ifelse(pp1 >0.2, 1, 0), dnn = c("observaciones", "predicciones"))
resp
##              predicciones
## observaciones   0   1
##             0 288  82
##             1  25  46
predicciones <- predict(modelo1, newdata = test_data, type = "response")
# Calculamos la curva ROC y el AUC
roc_resultados <- roc(test_data$Rotación, predicciones)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
plot(roc_resultados,print.auc=T,print.thres = "best",col="green"
         ,xlab = "Specificity", ylab = "Sensitivity")

El AUC de 0.76 indica que el modelo tiene una buena capacidad de clasificación, aunque no es perfecto. Se puede entender que al seleccionar al azar una persona que pertenece a la clase “rotación” y una persona que pertenece a la clase “no rotación”, el modelo tiene una probabilidad del 76% de asignar un puntaje de predicción más alto a la persona que pertenece a “rotación” que a la que no pertenece.

El AUC de 0.76 es positivo y refleja un modelo que está funcionando razonablemente bien, pero que puede mejorar en su capacidad de predicción.

# Realizamos las predicciones en el conjunto de prueba
predicciones1 <- predict(modelo1, newdata = test_data, type = "response")

# Conversión de probabilidades a clases (usualmente 0.5 es el umbral)
clases_predichas <- ifelse(predicciones1 > 0.5, 1, 0)

# Tabla de confusión
tabla_confusion1 <- table(Predicción1 = clases_predichas, Real = test_data$Rotación)

# Calculamos los indicadores
TP <- tabla_confusion1[2, 2]  # Verdaderos positivos
TN <- tabla_confusion1[1, 1]  # Verdaderos negativos
FP <- tabla_confusion1[1, 2]  # Falsos positivos
FN <- tabla_confusion1[2, 1]  # Falsos negativos

# Accuracy
accuracy <- (TP + TN) / sum(tabla_confusion1)

# Precision
precision <- TP / (TP + FP)

# Recall (Sensibilidad)
recall <- TP / (TP + FN)

# F1 Score
f1_score <- 2 * ((precision * recall) / (precision + recall))

# Resultados
cat("Accuracy:", accuracy, "\n")
## Accuracy: 0.8548753
cat("Precision:", precision, "\n")
## Precision: 0.1971831
cat("Recall:", recall, "\n")
## Recall: 0.6666667
cat("F1 Score:", f1_score, "\n")
## F1 Score: 0.3043478

*La exactitud es alta (85.48%), pero puede ser engañosa si las clases están desbalanceadas.

*La precisión es baja (19.72%), lo que indica muchos falsos positivos.

*El recall es moderadamente alto (66.67%), lo que significa que el modelo es bastante bueno para identificar los casos de rotación.

*El F1 Score es bajo (30.43%), lo que indica un desequilibrio entre precisión y recall, afectado principalmente por la baja precisión.

Conclución

El modelo presenta una exactitud alta (85.48%), pero tiene una precisión baja (19.72%) con muchos falsos positivos. El recall es moderado (66.67%), lo que implica que el modelo es mejor para detectar casos de rotación, pero no es lo suficientemente preciso. El AUC de 0.76 indica una capacidad razonable para distinguir entre clases, pero aún hay margen para mejorar el balance entre precisión y recall.

6. Predicciones

Realiza una predicción la probabilidad de que un individuo (hipotético) rote y defina un corte para decidir si se debe intervenir a este empleado o no (posible estrategia para motivar al empleado).

prob_rot <- (predict(modelo1,list(Cargo="Ejecutivo_Ventas", Estado_Civil= "Soltero", Horas_Extra= "Si", Edad = 39, Ingreso_Mensual= 3468, Antigüedad= 5 ),type = "response"))*100
prob_rot
##        1 
## 49.59809

De acuerfdo con el modelo, un individuo con las anteriores características tiene una probabilidad de 49.59% de rotar.

7. Conclusiones

El modelo de regresión logística desarrollado para estimar la probabilidad de que un empleado cambie de cargo en el próximo período arrojó los siguientes resultados clave:

Exactitud (Accuracy): 85.48%

El modelo clasifica correctamente el 85.48% de los casos, aunque es necesario tener cuidado con esta métrica, especialmente en casos de desbalance de clases.

Precisión: 19.72%

Solo el 19.72% de las predicciones positivas fueron correctas, lo que indica una alta proporción de falsos positivos.

Recall: 66.67%

El modelo identifica correctamente el 66.67% de los casos de rotación, pero falla en el 33.33% de ellos.

F1 Score: 30.43%

Este puntaje es bajo, lo que refleja un desequilibrio entre la precisión y el recall. Esto significa que, aunque el modelo detecta varios casos de rotación, tiene dificultades para hacerlo con precisión.

Área Bajo la Curva (AUC): 0.76

El AUC indica que el modelo tiene un buen rendimiento al diferenciar entre empleados que rotan y los que no. Con un AUC de 0.76, el modelo tiene una probabilidad razonable de distinguir correctamente entre ambas clases.

Variables con Mayor Influencia en la Rotación Horas Extra (coeficiente: 1.512, p = 1.66e-14):

Los empleados que realizan horas extra tienen una probabilidad significativamente mayor de rotación, lo cual puede estar relacionado con el agotamiento o la falta de equilibrio entre la vida laboral y personal.

Cargo:

Empleados en ciertos cargos, como Ejecutivo de Ventas (coeficiente: 2.372, p = 0.036), Representante de Ventas (coeficiente: 3.417, p = 0.0064) y Técnico de Laboratorio (coeficiente: 2.907, p = 0.0178), tienen una probabilidad significativamente mayor de rotación.

Estado Civil (coeficiente: 0.794, p = 0.000123 para Solteros):

Los empleados solteros tienen una mayor probabilidad de rotación en comparación con los empleados casados.

Antigüedad (coeficiente: -0.039, p = 0.0796):

Existe una relación negativa débil entre la antigüedad y la rotación. Empleados con más años en la empresa tienden a quedarse más tiempo, aunque no es estadísticamente concluyente.

Edad e Ingreso Mensual:

La edad y el ingreso mensual no resultaron ser factores significativamente relacionados con la rotación según el modelo.

Estrategias para Reducir la Rotación

Dado que las horas extra y ciertos cargos tienen un impacto significativo en la rotación, la empresa puede considerar las siguientes estrategias:

Revisión de las políticas de horas extra:

Rediseñar las cargas de trabajo y promover un mejor equilibrio entre la vida laboral y personal. Podrían implementarse programas de bienestar y apoyo para prevenir el agotamiento.

Mejorar las condiciones laborales de los cargos con alta rotación:

Cargos como Ejecutivo de Ventas y Representante de Ventas tienen una mayor tasa de rotación. La empresa podría analizar las condiciones laborales, oportunidades de crecimiento y compensaciones para estos puestos, con el fin de mejorar la satisfacción laboral y reducir la rotación.

Desarrollar programas de retención personalizados:

Implementar programas de retención que se enfoquen en los empleados más jóvenes y solteros, que presentan mayores probabilidades de rotación. Programas de mentoría, oportunidades de desarrollo profesional y promociones internas podrían ser eficaces.

Aumentar incentivos para empleados con menos antigüedad:

Desarrollar estrategias que fomenten el compromiso y la lealtad de los empleados con menor antigüedad, tales como planes de carrera a largo plazo y bonificaciones por lealtad.

En general el modelo de regresión logística muestra que factores como las horas extra, ciertos cargos, y el estado civil tienen un impacto significativo en la rotación de empleados. Aunque el modelo tiene una capacidad razonable de predicción (AUC de 0.76), la baja precisión indica que se necesitan ajustes adicionales para mejorar el rendimiento general. Las estrategias sugeridas, como la revisión de las políticas de horas extra y el fortalecimiento de las condiciones laborales, pueden ayudar a la empresa a tomar decisiones informadas y reducir la rotación del personal.