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.

A continuación se describen los pasos que la gerencia ha propuesto para el análisis:

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.

En primer lugar, se hace la carga de los datos, junto con la descripción de los mismos:

require(paqueteMODELOS)
data("rotacion")
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 ...

Se observan un total de 1470 observaciones con 24 variables diferentes, tanto cuantitativas como categóricas. Las variables seleccionadas son las siguientes:

Variable Seleccionada Tipo Relación con la rotación Hipótesis
Ingreso_Mensual Cuantitativa A mayor nivel de ingresos, los trabajadores pueden sentirse más comprometidos y con mayor nivel de engagement A mayores niveles salariales, es menos probable que se registre rotación respecto a quienes tienen menores ingresos
Antigüedad Cuantitativa Cuanto más tiempo lleva un empleado en una compañía, mayor nivel de pertenencia y engagement habrá desarrollado, además que habrá organizado su vida personal en torno a los retos laborales de la compañía donde se encuentra A mayor antigüedad, es menos probable que se registre rotación
Años de experiencia Cuantitativa Se espera que una mayor experiencia implique que un empleado tiene mayor nivel de destreza en el cargo A mayor experiencia, se reduce la probabilidad de rotación de un empleado determinado
Horas_Extra Categórica Se espera que si el trabajador factura horas extras está teniendo una sobrecarga laboral, lo que lo motivaría a abandonar el cargo Si se registran horas extras, es más probable que se genere rotación
Satisfacción_Laboral Categórica Se espera que los trabajadores con menor nivel de satisfacción en su trabajo, sean más propensos a buscar otro trabajo o a mermar su rendimiento, lo que podría terminar acabando su relación laboral A menor nivel de satisfacción en su trabajo aumenta la probabilidad a rotar
Cargo Categórica Se espera que algunas categorías como “Ejecutivos de Venta” o “Representante de Ventas” tengan mayores probabilidades de rotar respecto a cargos directivos como “Director de Investigación” o “Gerente” Se espera que los cargos directivos tengan menor probabilidad de rotar que algunos cargos de base como ventas, laboratorio, recuros humanos entre otros.

2. Análisis univariado

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

A continuación se realizará un análisis univariado de los datos contenidos en en DF “rotacion”, de las variables objeto del presente estudio y que fueron previamente seleccionadas para el ejercicio en cuestión:

2.1 Variable numérica “Ingreso_Mensual”

Se hace un análisis descriptivo de la variable:

summary(rotacion$Ingreso_Mensual)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1009    2911    4919    6503    8379   19999

De acuerdo con los datos suministrados, los ingresos promedio están alrededor de los 6503 unidades monetarias, con una mediana de 4919. Esto implica una distribución con asimetría a la izuquierda, con un valor mínimo de 1009 y máximo de 19999. Esto se corrobora con el siguiente gráfico:

require(plotly)
plot_ly(x = rotacion$Ingreso_Mensual,
        type = "histogram",
        marker = list(color = "#27F1F4",
                      line = list(color = "#D10030",
                                  width = 1))) %>% 
  layout(title = "Empleados por ingreso mensual",
         xaxis = list(title = "Ingreso Mensual", zeroline = TRUE),
         yaxis = list(title = "Número de empleados",zeroline = TRUE))

Se nota que el grupo modal se encuentra entre los empleados que ganan entre 2000 y 2999 unidades monetarias, con 362 observaciones: En el rango inferior de ingresos se encuentran 33 empleados con un ingreso de entre 1000 y 1999 unidades montetarias, mientras que un grupo de 50 empleados se encuentran en el rango máximo del ingreso con más de 19.000 unidades monetarias.

2.2 Variable numérica “Antigüedad”

Se hace un análisis descriptivo de la variable:

summary(rotacion$Antigüedad)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   3.000   5.000   7.008   9.000  40.000

El rango de antiguedad, que se asumirá en años, está entre los 0 y los 40 años, con un promedio de 7 años. No obstante registra una mediana de 5 años, con asimetría a la izquierda, lo que se considera lógico teniendo en cuenta que debería haber más rotación entre el grupo de empleados de menor tiempo que hace que entren más nuevos o por la dinámica de crecimiento en cargos de la compañía:

plot_ly(x = rotacion$Antigüedad,
        type = "histogram",
        marker = list(color = "#8C88FE",
                      line = list(color = "#97F6CB",
                                  width = 1))) %>% 
  layout(title = "Empleados por Antiguedad",
         xaxis = list(title = "Antigüedad (Años)", zeroline = TRUE),
         yaxis = list(title = "Número de empleados",zeroline = TRUE))

En efecto se observa que la mayoría de empleados se agrupa en el rango de antiguedad de entre 0 y 10 años.

2.3 Variable numérica “Años_Experiencia”

Se hace un análisis descriptivo de la variable:

summary(rotacion$Años_Experiencia)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00    6.00   10.00   11.28   15.00   40.00

La experiencia promedio es de 11.28 años. El dato máximo es de 40, que puede coincidir con la observación en antiguedad de 40 años en la compañía (Empleado que nunca trabajó en otra empresa)

plot_ly(x = rotacion$Años_Experiencia,
        type = "histogram",
        marker = list(color = "#FFBD00",
                      line = list(color = "#00F7FF",
                                  width = 1))) %>% 
  layout(title = "Empleados por años de experiencia",
         xaxis = list(title = "Experiencia (Años)", zeroline = TRUE),
         yaxis = list(title = "Número de empleados",zeroline = TRUE))

Finalizando, se complementará con un gráfico que muestra una conducta de la compañía:

plot_ly(alpha = 0.7) %>% 
  add_histogram(x = ~rotacion$Antigüedad,
                name = "Antigüedad") %>% 
  add_histogram(x = ~rotacion$Años_Experiencia,
                name = "Años Experiencia") %>% 
  layout(barmode = "overlay",
         title = "Antigüedad Vs Años de Experiencia",
         xaxis = list(title = "Años",
                      zeroline = FALSE),
         yaxis = list(title = "Empleados",
                      zeroline = FALSE))

Al comparar los años de experiencia de los empleados con la antigüedad, siempre se nota que en general, los empleados poseen mucha más experiencia que el tiempo que llevan trabajando en la compañía, por lo que se presume que la empresa tiende a no contratar personas sin experiencia. (No se promueve como compañía de primer empleo)

2.4 Variable Categórica “Horas Extras”

Se espera que los empleados que tengan horas extras se vean enfrentados a jornadas extenuantes de trabajo y que por tal motivo, tengan mayor probabilidad de rotar. Sin embargo se podría configurar una “contra” hipótesis y es la siguiente: En la mayoría de los esquemas laborales del mundo, las horas extras se liquidan como un sobrecargo y un valor más alto, por lo que para empleados con salarios bajos, estas horas extras pueden verse como un estímulo económico sobre el cual estarían dispuestos a sacrificar parte de su tiempo libre.Veamos ahora la distribución de los mismos:

horasext <- table(rotacion$Horas_Extra)
horasext_r <- prop.table(horasext)
horasext
## 
##   No   Si 
## 1054  416
horasext_r
## 
##        No        Si 
## 0.7170068 0.2829932
require(ggplot2)
ggplot(rotacion,aes(x = Horas_Extra, fill= Horas_Extra)) + 
  geom_bar() +  
  geom_text(aes(label = ..count..), stat = "count", vjust = 2) +
  theme (panel.background = element_blank(),
         panel.grid.major = element_blank(),
         panel.grid.minor = element_blank())

El 28% de los empleados tienen “horas extras” y el restante 72% no las tiene.

2.5 Variable Categórica “Satisfacción_Laboral”

Es una variable categórica ordinal que mide el nivel de satisfacción del empleado. Es posible medirla en encuestas de cultura organizacional y en los instrumentos de captura de datos generalmente se podría plantear como “Califique su nivel de satisfacción con su posición actual en la compañía, donde 1 es muy insatisfecho, 2, insatisfecho, 3, indiferente, 4 satisfecho y 5 muy satisfecho. Veamos la distribución de esta variable:

satisf <- table(rotacion$Satisfación_Laboral)
satisf_r <- prop.table(satisf)
satisf
## 
##   1   2   3   4 
## 289 280 442 459
satisf_r
## 
##         1         2         3         4 
## 0.1965986 0.1904762 0.3006803 0.3122449
ggplot(rotacion,aes(x = Satisfación_Laboral, fill= Satisfación_Laboral)) + 
  geom_bar() + 
  geom_text(aes(label = ..count..), stat = "count", vjust = 2, colour = "yellow")+
  theme (panel.background = element_blank(),
         panel.grid.major = element_blank(),
         panel.grid.minor = element_blank())

Por lo que se puede observar, se nota que el criterio adoptado podría estar desviado, dado que no hay calificaciones en 5. Por lo tanto se asumirá que el nivel 1 es el de menor satisfacción, 4 el de mayor y las calificaciones intermerias pueden ser 2, insatisfecho y 3 satisfecho, mientras que los extremos son “muy” en el mismo sentido.

Bajo este criterio, la satisfacción de los empleados es “alta”, con una proporcion del 61%, es decir calificaciones 3 y 4, mientras que 1 y 2 suman el restante 39% como “baja”. Esto en términos generales no habla bien de la compañía, dado que la proporción de empleados insatisfechos es considerablemente alta.

2.6 Variable Categórica “Cargo”

Es una variable categórica que registra el cargo de cada observación. No se dispone de información adicional, pero para el presente informe se asumirá que algunos cargos como “gerente” o “director” son de tipo “directivos”, ubicados gerárquicamente en la parte superior del organigrama empresarial. La hipótesis es que este tipo de cargos, por el nivel de responsabilidad, por su mayor nivel de remuneración y por el hecho de que su rotación puede tener mayor nivel de impacto sobre los procesos de la compañía, tienen una menor probabilidad de rotación al interior de la compañía:

cargo <- table(rotacion$Cargo)
cargo_r <- prop.table(cargo)
cargo
## 
##  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
cargo_r
## 
##  Director_Investigación    Director_Manofactura        Ejecutivo_Ventas 
##              0.05442177              0.09863946              0.22176871 
##                 Gerente Investigador_Cientifico        Recursos_Humanos 
##              0.06938776              0.19863946              0.03537415 
##     Representante_Salud    Representante_Ventas     Tecnico_Laboratorio 
##              0.08911565              0.05646259              0.17619048
ggplot(rotacion,aes(x = Cargo, fill= Cargo)) + 
  geom_bar() +
  geom_text(aes(label = ..count..), stat = "count", hjust = 2) +
  coord_flip() +
  theme (panel.background = element_blank(),
         panel.grid.major = element_blank(),
         panel.grid.minor = element_blank())

En la distribución se nota que hay 102 gerentes, 145 Director de “Manufactura” y 80 Director de investigación, para un total de 327 cargos directivos. La proporciónes más altas son de Ejecutivo de ventas, con 326 observaciones, e Investigador cienttpifico con 292 observaciones. Sobre estos dos cargos, la hipótesis sería de que los ejecutivos de ventas, al ser un cargo menos especializado que el investigador científico, debería tener un mauor nivel de rotación. Por otro lado se registran 52 posiciones en la categoría “recursos humanos” que es la de menor proporción en el grupo

3. Análisis Bivariado

Realizar 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 debe identificarse cuales son las variables determinantes de la rotación e interpretar el signo del coeficiente estimado. Compare estos resultados con la hipotesis planteada en el punto 2.

3.1 “Rotación” con valores “Si” y “No”, en 1 y 0

Para mayor simplicidad en el código, se utilizará el comando dummy_cols de la libreria “fastDummies” para obtener la variable transformada. Este comando crea dos variables “Rotación_Si” (Donde sólo pone 1 en Si y 0 en No) y “Rotación_No” (Lo contrario de la anterior=. Podemos eliminar la variable “Rotación_No” ya que es redundante.

require(fastDummies)
require(dplyr)
rotacion <- dummy_cols(rotacion, select_columns = "Rotación")
rotacion <- select(rotacion, -Rotación_No)

Finalmente, verificamos de forma simple en una tabla, si la variable “Rotación_Si”, es coherente con los datos de la variable “Rotación”. Con esto no alteramos en DataFrame original, aunque podríamos complejizar el ejericio en parte:

table(rotacion$Rotación_Si,rotacion$Rotación)
##    
##       No   Si
##   0 1233    0
##   1    0  237

Los resultados fueron satisfactorios, podemos proceder.

3.2 Ingresos mensuales Vs Rotación

Se analiza la relación entre la rotación y los ingresos mensuales mediante la elaboración de un boxplot:

ing_mes <- ggplot(rotacion,aes(x=Rotación,y=Ingreso_Mensual, fill=Rotación))+
            geom_boxplot(outlier.shape = NA)+
            geom_jitter(width = 0.05)+
            theme_bw()+
            labs(x="Rotación",y="Ingreso Mensual") + 
              theme (panel.background = element_blank(),
              panel.grid.major = element_blank(),
              panel.grid.minor = element_blank())
plotly::ggplotly(ing_mes)

Tal y como se distribuyen los datos, donde no hay rotación los valores se encuentran mucho más altos, por lo que visualmente ya se podría identificar una relación inversa entre la rotación y el nivel de ingresos de un empleado

3.3 Antigüedad Vs Rotación

Se analiza la antigüedad vs la rotación con un boxplot:

antig <- ggplot(rotacion,aes(x=Rotación,y=Antigüedad, fill=Rotación))+
            geom_boxplot(outlier.shape = NA)+
            geom_jitter(width = 0.05)+
            theme_bw()+
            labs(x="Rotación",y="Años de Antigüedad") + 
            theme (panel.background = element_blank(),
              panel.grid.major = element_blank(),
              panel.grid.minor = element_blank())
plotly::ggplotly(antig)

Tal y como se distribuyen los datos, donde no hay rotación los valores se encuentran mucho más altos, por lo que visualmente ya se podría identificar una relación inversa entre la rotación y La antigüedad de un empleado dentro de la compañía

3.4 Experiencia Vs Rotación

exper <- ggplot(rotacion,aes(x=Rotación,y=rotacion$Años_Experiencia, fill=Rotación))+
            geom_boxplot(outlier.shape = NA)+
            geom_jitter(width = 0.05)+
            theme_bw()+
            labs(x="Rotación",y="Años de experiencia") + 
            theme (panel.background = element_blank(),
              panel.grid.major = element_blank(),
              panel.grid.minor = element_blank())
plotly::ggplotly(exper)

Tal y como se distribuyen los datos, donde no hay rotación los valores se encuentran mucho más altos, por lo que visualmente ya se podría identificar una relación inversa entre la rotación y La experiencia total de un empleado.

3.4 Correlaciones entre variables numéricas y Rotación

Para los efectos de determinar los signos de correlación, procedemos a calcularlos con el comando ggpairs de la libreria GGally. Para efectos de separar por grupos entre los datos de rotación, se nos solicita una variable categórica, que usamos como Rotación, variable de respuesta antes de ser transformada:

require(GGally) 
ggpairs(rotacion, columns = c(25,13,21,18),aes(color = Rotación, alpha = 0.5))

Este gráfico presenta bastante información, pero nos interesan puntalmente los coeficientes de correlación ubicados en la primera fila de datos que arroja este informe. En efecto se pueden constratar la validez teórica de las hipótesis planteadas inicialmente.

  • Caso Ingreso Mensual: Se esperaba que a mayor nivel de ingresos, menor probabilidad de rotación. El signo negativo en la correlación es correcto
  • Caso Antigüedad: Se esperaba que los empleados con mayor antiguedad en la empresa tenían menor probabilidad de rotar. El signo negativo de la correlación es correcto.
  • Caso Años de Experiencia: Se esperaba que los empleados que tienen mas tiempo de experiencia roten menos, sea por mayor expertise en el desarrollo de sus actividades o porque su conducta es a mantenerse más tiempo en una posición. El signo negativo de la correlación es correcto.

3.5 Horas Extras Vs Rotación

Para los efectos se hará un análisis visual utilizando PlotXtabs2 de la librería CGPfunctions.

require(CGPfunctions)
PlotXTabs2(
  data = rotacion,
  y = Rotación_Si,
  x = Horas_Extra,
  xlab = "Horas Extra",
  ylab = NULL,
  data.label = "both",
  labels.legend = c("No","Si"),
  label.fill.alpha = 0.5,
  legend.title = "Rotación",
  legend.position = "right",
  title = "Rotación por Horas Extra",
  palette = "Set1"
)

En el caso de la ejecución de horas extras, se visualiza que hay mayor presencia de rotación en el grupo que sí registraron horas extras. De los 416 casos que registraron horas extras, el 31% de estos rotaron, frente a la proporción de 10% que lo hizo en el grupo de los que no tenían horas extras. Ya en este aspecto se puede hablar de una correlación positiva entre la presencia de horas extras y la rotación.

3.6 Satisfacción Laboral Vs Rotación

El gráfico se parametriza de la siguiente forma:

require(CGPfunctions)
PlotXTabs2(
  data = rotacion,
  y = Rotación_Si,
  x = Satisfación_Laboral,
  xlab = "Nivel de satisfacción laboral",
  ylab = NULL,
  data.label = "both",
  labels.legend = c("No","Si"),
  label.fill.alpha = 0.25,
  legend.title = "Rotación",
  legend.position = "right",
  title = "Rotación de acuerdo con la satisfacción laboral",
  palette = "Pastel1"
)

Acá, el nivel de satisfacción tiene tres componentes:

  • Quienes calificaron con 1 al nivel de satisfacción, es decir un total de 289 casos, tuvieron rotación en el 23% de los casos
  • Quienes calificaron con 2 o 3 al nivel de satisfacción registraron entre una rotación entre 16% y el 17% de los casos
  • Quienes calificaron con 4 al nivel de satisfacción, (459 casos) registraron rotación en un 11% de los casos.

3.7 Cargo Vs Rotación

El gráfico se parametriza de la siguiente forma:

require(CGPfunctions)
PlotXTabs2(
  data = rotacion,
  y = Rotación_Si,
  x = Cargo,
  xlab = "Cargo",
  ylab = NULL,
  data.label = "both",
  labels.legend = c("No","Si"),
  label.fill.alpha = 0.25,
  legend.title = "Rotación",
  legend.position = "right",
  title = "Rotación por cargo",
  palette = "Set3") + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1))

El análisis de hace de forma individual, y obtenemos lo siguiente:

Cargo Descripción
Director_investigación se asume que es un cargo directivo, de los 80 casos, rotaron sólo 2
Director_Manofactura Se asume que es un cargo directivo. 145 casos y rotaron 10, el 7%. Posiblemente la mayor rotación respecto a su homólogo de investigación se deba a que este cargo puede ser menos especializado
Ejecutivo de ventas No se considera directivo. 326 casos, donde el 17% del total tuvo rotación
Gerente Se considera Cargo directivo, 102 casos y 5% del total tuvo rotación
Investigador Científico No es un cargo directivo. de 292 casos, rotaron el 16% de estos
Recursos humanos No es un cargo directivo. 52 casos de los cuales el 23% rotaron. Esto puede ser porque es un área de apoyo y posiblemente los cargos tengan bajo nivel de especialización (Ejemplo, liquidar nóminas, controlar accesos)
Representante Salud No se considera directivo. 131 casos de los cuales rotó el 7%. Posiblemente se deba a un nivel de especialización alto
Representante Ventas No se considera directivo. 83 casos de los cuales rotó el 40%. Es la proporción más alta, puede ser por bajo nivel de especialización del cargo
Técnico laboratorio No se considera directivo. 259 casos de los cuales rotó el 24%. Posiblemente se deba a bajos salarios en estas posiciones (otro determinante) o a bajo nivel de especialización del cargo

3.8 Correlaciones entre variables categóricas y Rotación

En este caso, se desea explorar cómo impacta cada variable categórica a la rotación. No obstante, el análisis numérico debería ser entre variables dicótomas, por lo que generamos una variable dummy por cada categoría, de la siguiente forma:

rotacion <- dummy_cols(rotacion, select_columns = c("Horas_Extra", "Satisfación_Laboral", "Cargo"))

Finalmente queda un dataset de 40 variables. Es decir, a las 25 ya existentes, se le suman 15 dummies, 2 por horas extras, 4 por satisfacción laboral y las restantes 9 por los cargos (9 cargos en total).

Correlación entre Horas Extras y Rotación

ggpairs(rotacion, columns = c(25:27),aes(color = Rotación, alpha = 0.5))

Efectivamente, se valida la correlación con signo positivo entre la presencia de horas extras y la rotación.

Correlación entre Satisfacción laboral y Rotación

ggpairs(rotacion, columns = c(25,28:31),aes(color = Rotación, alpha = 0.5))

Para el caso de la satifacción laboral, sólo en el caso del nivel calificado 4, se detectó que la correlación tinene signo negativo, es decir que quienes calificaron en 4, tienen menor probabilidad para rotar. En el caso de la categoría 1 la correlación es de signo positivo. LAs categorías 2 y 3 tienen valores positivos, pero el coeficiente de correlación estimado no es estadísticamente significativo.

Correlación entre Cargos y Rotación

ggpairs(rotacion, columns = c(25,32:36),aes(color = Rotación, alpha = 0.5))

En este primer gráfico se analizan tres cargos directivos: Director de investigación, Director de manufactura y gerente. En los tres casos se registra correlación negativa, lo que teóricamente es correcto. En el caso para ejecutivo de ventas la correlación es positiva, que se consideraba teóricamente correcto pero no es estadísticamente significativo. En el caso de investigador científico, el signo es negativo, que se consideraba correcto dado el alto grado de especialización, pero tampoco es estadísticamente significativo.

ggpairs(rotacion, columns = c(25,37:40),aes(color = Rotación, alpha = 0.5))

Finalmente se analizan los 4 cargos restantes, donde encontramos que el cargo recusos humanos tiene correlacióin positiva con la rotación, pero no significativo estadísticamente. Para los casos de representante de ventas y técnico de laboratorio los valores son con correlación positiva, que era lo esperado considerando que no son cargos directivos y son de poco nivel de especialización (Es más fácil reemplazarlos). Finalmente en el caso de representante en salud, la correlación es negativa y significativa, lo cual puede interpretarse como un cargo especializado, aunque no sea directivo.

4. Modelo Logit

Realizar la estimación de un modelo de regresión logístico en el cual la variable respuesta es rotacion (y=1 es si rotación, y=0 es no rotación) y las covariables las 6 seleccionadas en el punto 1. Interprete los coeficientes del modelo y la significancia de los parámetros

4.1 Estimación del modelo logístico con las variables objeto de estudio

Si bien, el modelo logístico hace las estimaciones de forma automática con las variables categóricas y posteriormente puede ser más fácil correr el comando predict, en este caso se decide hacer la estimación manualmente con las dummies creadas para tal efecto. Esto nos permitirá a posteriori hacer simulaciones con predict de forma más rápida (Cambiando 1 y 0). Por otro lado, la variable satisfacción laboral, que es categórica pero ordinal, requeriría una transformacion a texto o factor. Por otro lado, la estimación con la variable categórica omite por defecto a la primera categoría en orden alfabético, por lo que se descarta dicho método.

En el caso de los cargos, se omitió la última categoría, dado que aumentaba el número de variables con significancia estadística, y puede tener un efecto positivo en la capacidad predictiva del modelo:

mod_rotacion =glm(Rotación_Si~
                    Ingreso_Mensual+
                    Antigüedad+
                    Años_Experiencia+
                    #Horas_Extra_No+
                    Horas_Extra_Si+
                    #Satisfación_Laboral_1+
                    Satisfación_Laboral_2+
                    Satisfación_Laboral_3+
                    Satisfación_Laboral_4+
                    Cargo_Director_Investigación+
                    Cargo_Director_Manofactura+
                    Cargo_Ejecutivo_Ventas+
                    Cargo_Gerente+
                    Cargo_Investigador_Cientifico+
                    Cargo_Recursos_Humanos+
                    Cargo_Representante_Salud+
                    Cargo_Representante_Ventas
                    #Cargo_Tecnico_Laboratorio
                    ,
                    data = rotacion,
                    family = binomial())
summary(mod_rotacion)
## 
## Call:
## glm(formula = Rotación_Si ~ Ingreso_Mensual + Antigüedad + 
##     Años_Experiencia + Horas_Extra_Si + Satisfación_Laboral_2 + 
##     Satisfación_Laboral_3 + Satisfación_Laboral_4 + Cargo_Director_Investigación + 
##     Cargo_Director_Manofactura + Cargo_Ejecutivo_Ventas + Cargo_Gerente + 
##     Cargo_Investigador_Cientifico + Cargo_Recursos_Humanos + 
##     Cargo_Representante_Salud + Cargo_Representante_Ventas, family = binomial(), 
##     data = rotacion)
## 
## Coefficients:
##                                 Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                   -8.419e-01  2.559e-01  -3.290 0.001004 ** 
## Ingreso_Mensual                5.719e-05  5.153e-05   1.110 0.267019    
## Antigüedad                    -2.195e-02  2.111e-02  -1.040 0.298468    
## Años_Experiencia              -4.628e-02  2.043e-02  -2.266 0.023465 *  
## Horas_Extra_Si                 1.525e+00  1.599e-01   9.538  < 2e-16 ***
## Satisfación_Laboral_2         -4.794e-01  2.352e-01  -2.038 0.041559 *  
## Satisfación_Laboral_3         -4.639e-01  2.077e-01  -2.234 0.025482 *  
## Satisfación_Laboral_4         -1.050e+00  2.218e-01  -4.732 2.22e-06 ***
## Cargo_Director_Investigación  -2.756e+00  9.250e-01  -2.979 0.002888 ** 
## Cargo_Director_Manofactura    -1.577e+00  4.099e-01  -3.847 0.000120 ***
## Cargo_Ejecutivo_Ventas        -5.067e-01  2.732e-01  -1.855 0.063638 .  
## Cargo_Gerente                 -1.816e+00  7.692e-01  -2.360 0.018252 *  
## Cargo_Investigador_Cientifico -7.082e-01  2.318e-01  -3.055 0.002249 ** 
## Cargo_Recursos_Humanos        -1.036e-01  3.867e-01  -0.268 0.788861    
## Cargo_Representante_Salud     -1.544e+00  4.289e-01  -3.601 0.000317 ***
## Cargo_Representante_Ventas     6.300e-01  2.899e-01   2.173 0.029755 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1298.6  on 1469  degrees of freedom
## Residual deviance: 1086.1  on 1454  degrees of freedom
## AIC: 1118.1
## 
## Number of Fisher Scoring iterations: 6

4.2 Intepretaciónde los coeficientes del modelo y la significacia de los parámetros

round(coef(mod_rotacion),4)
##                   (Intercept)               Ingreso_Mensual 
##                       -0.8419                        0.0001 
##                    Antigüedad              Años_Experiencia 
##                       -0.0220                       -0.0463 
##                Horas_Extra_Si         Satisfación_Laboral_2 
##                        1.5250                       -0.4794 
##         Satisfación_Laboral_3         Satisfación_Laboral_4 
##                       -0.4639                       -1.0498 
##  Cargo_Director_Investigación    Cargo_Director_Manofactura 
##                       -2.7560                       -1.5770 
##        Cargo_Ejecutivo_Ventas                 Cargo_Gerente 
##                       -0.5067                       -1.8156 
## Cargo_Investigador_Cientifico        Cargo_Recursos_Humanos 
##                       -0.7082                       -0.1036 
##     Cargo_Representante_Salud    Cargo_Representante_Ventas 
##                       -1.5444                        0.6300
exp(coef(mod_rotacion))
##                   (Intercept)               Ingreso_Mensual 
##                     0.4308969                     1.0000572 
##                    Antigüedad              Años_Experiencia 
##                     0.9782881                     0.9547718 
##                Horas_Extra_Si         Satisfación_Laboral_2 
##                     4.5951008                     0.6191841 
##         Satisfación_Laboral_3         Satisfación_Laboral_4 
##                     0.6287991                     0.3500014 
##  Cargo_Director_Investigación    Cargo_Director_Manofactura 
##                     0.0635458                     0.2065888 
##        Cargo_Ejecutivo_Ventas                 Cargo_Gerente 
##                     0.6025083                     0.1627335 
## Cargo_Investigador_Cientifico        Cargo_Recursos_Humanos 
##                     0.4925185                     0.9016262 
##     Cargo_Representante_Salud    Cargo_Representante_Ventas 
##                     0.2134488                     1.8776530
Variable Significativo Coeficiente Exp() Interpretación
Ingreso Mensual No 0.0001 1.0000572 El signo es teóricamente incorrecto y no es significativo. Este tiende a cero
Antigüedad No -0.0220 0.9782881 Signo teóricamente correcto pero no es significativo
Años Experiencia Si * -0.0463 0.9547718 Signo teóricamente correcto. Cada año adicional de experiencia hace que un empleado tenga 0.978 veces más probabilidad de no rotar
Horas Extra (si) Si *** 1.5250 4.5951008 Signo teóricamente correcto. El empleado que tiene horas extras, tiene 4.5 veces más probabilidad de rotar respecto al empleado que no tiene horas extras
Satisfacción Laboral_2 Si * -0.4794 0.6191841 Signo no esperado. Los empleados que calificaron su satisfacción laboral en 2 tienen 0.61 veces la probabilidad de no rotar respecto a quienes calificaron diferente
Satisfacción Laboral_3 Si * -0.4639 0.6287991 Signo no esperado. Los empleados que calificaron su satisfacción laboral en 3 tienen 0.63 veces la probabilidad de no rotar respecto a quienes calificaron diferente
Satisfacción Laboral_4 Si * -1.0498 0.3500014 Signo esperadoLos empleados que calificaron su satisfacción laboral en 4 tienen 0.35 veces la probabilidad de no rotar respecto a quienes calificaron diferente
Cargo_ Director Investigación Si ** -2.7560 0.0635458 Si el empleado es director de investigación, su probabilidad de no rotar es 0.06 veces las de empleados de otros cargos
Cargo_Director Manufactura Si *** -1.5770 0.2065888 Signo esperado. Si el empleado es director de manufacturas, su probabilidad de no rotar es 0.21 veces las de empleados de otros cargos
Cargo_Ejecutivo Ventas Si . -0.5067 0.6025083 Signo no esperado. Si el empleado es ejecutivo de ventas, su probabilidad de no rotar es 0.6 veces las de empleados de otros cargos
Cargo_Gerente Si * -1.8156 0.1627335 Signo esperado. Si el empleado es gerente, su probabilidad de no rotar es 0.16 veces las de empleados de otros cargos
Cargo_Investigador Científico Si ** -0.7082 0.4925185 Signo esperado. Si el empleado es Investigador científico, su probabilidad de no rotar es 0.49 veces las de empleados de otros cargos
Cargo_Recursos Humanos No -0.1036 0.9016262 Signo no esperado. No es significativo.
Cargo_Representante Salud Si *** -1.5444 0.2134488 Signo esperado. Si el empleado es representante en Salud, su probabilidad de no rotar es 0.21 veces las de empleados de otros cargos
Cargo_Representante Ventas Si * 0.6300 1.8776530 Signo esperado. Si el empleado es Representante de ventas, su probabilidad de rotar es 1.88 veces las de empleados de otros cargos

5. Poder predictivo del Modelo

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

5.1 Predicción con el modelo completo

Se elaboran los cálculos respectivos:

PRED=predict(mod_rotacion,list(Ingreso_Mensual = rotacion$Ingreso_Mensual,
                               Antigüedad=rotacion$Antigüedad, 
                               Años_Experiencia=rotacion$Años_Experiencia,
                               Horas_Extra_Si=rotacion$Horas_Extra_Si, 
                               Satisfación_Laboral_2= rotacion$Satisfación_Laboral_2,
                               Satisfación_Laboral_3= rotacion$Satisfación_Laboral_3,
                               Satisfación_Laboral_4= rotacion$Satisfación_Laboral_4,
                               Cargo_Director_Investigación= rotacion$Cargo_Director_Investigación,
                               Cargo_Director_Manofactura= rotacion$Cargo_Director_Manofactura,
                               Cargo_Ejecutivo_Ventas= rotacion$Cargo_Ejecutivo_Ventas,
                               Cargo_Gerente= rotacion$Cargo_Gerente,
                               Cargo_Investigador_Cientifico= rotacion$Cargo_Investigador_Cientifico,
                               Cargo_Recursos_Humanos = rotacion$Cargo_Recursos_Humanos,
                               Cargo_Representante_Salud = rotacion$Cargo_Representante_Salud,
                               Cargo_Representante_Ventas = rotacion$Cargo_Representante_Ventas),
             type = "response")
require(pROC)
ROC_mod_rotacion = roc(rotacion$Rotación_Si~PRED, percent = T, ci=T)
ROC_mod_rotacion
## 
## Call:
## roc.formula(formula = rotacion$Rotación_Si ~ PRED, percent = T,     ci = T)
## 
## Data: PRED in 1233 controls (rotacion$Rotación_Si 0) < 237 cases (rotacion$Rotación_Si 1).
## Area under the curve: 78.16%
## 95% CI: 74.81%-81.51% (DeLong)
plot(ROC_mod_rotacion,
     print.auc=T,
     print.thres = "best",
     col="#0058A6",
     xlab = "Tasa de Falsos Positivos (1 - Especificidad)", 
     ylab = "Tasa de verdadesdos positivos (Sensibilidad)")

Este modelo indica que el área bajo la curva ROC es de 0.782 (AUC), por lo que se considera que el modelo tiene un buen ajuste de predicción.

No obstante los resultados obtenidos, el modelo se simplificará con el objetivo de eliminiar las variables que no son significativas

5.2 Predicción con el modelo eliminando variables no significativas

Se ejecutan los mismos cálculos del proceso anterior:

mod_rotacion_2 =glm(Rotación_Si~
                    #Ingreso_Mensual+
                    #Antigüedad+
                    Años_Experiencia+
                    #Horas_Extra_No+
                    Horas_Extra_Si+
                    #Satisfación_Laboral_1+
                    Satisfación_Laboral_2+
                    Satisfación_Laboral_3+
                    Satisfación_Laboral_4+
                    Cargo_Director_Investigación+
                    Cargo_Director_Manofactura+
                    #Cargo_Ejecutivo_Ventas+
                    Cargo_Gerente+
                    Cargo_Investigador_Cientifico+
                    #Cargo_Recursos_Humanos+
                    Cargo_Representante_Salud+
                    Cargo_Representante_Ventas
                    #Cargo_Tecnico_Laboratorio
                    ,
                    data = rotacion,
                    family = binomial())
summary(mod_rotacion_2)
## 
## Call:
## glm(formula = Rotación_Si ~ Años_Experiencia + Horas_Extra_Si + 
##     Satisfación_Laboral_2 + Satisfación_Laboral_3 + Satisfación_Laboral_4 + 
##     Cargo_Director_Investigación + Cargo_Director_Manofactura + 
##     Cargo_Gerente + Cargo_Investigador_Cientifico + Cargo_Representante_Salud + 
##     Cargo_Representante_Ventas, family = binomial(), data = rotacion)
## 
## Coefficients:
##                               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                   -0.88114    0.22196  -3.970 7.19e-05 ***
## Años_Experiencia              -0.05082    0.01485  -3.421 0.000623 ***
## Horas_Extra_Si                 1.52086    0.15884   9.575  < 2e-16 ***
## Satisfación_Laboral_2         -0.48714    0.23403  -2.081 0.037389 *  
## Satisfación_Laboral_3         -0.47753    0.20677  -2.309 0.020918 *  
## Satisfación_Laboral_4         -1.06547    0.22068  -4.828 1.38e-06 ***
## Cargo_Director_Investigación  -1.92634    0.74845  -2.574 0.010059 *  
## Cargo_Director_Manofactura    -1.21907    0.35549  -3.429 0.000605 ***
## Cargo_Gerente                 -0.99959    0.52174  -1.916 0.055382 .  
## Cargo_Investigador_Cientifico -0.54530    0.20118  -2.711 0.006718 ** 
## Cargo_Representante_Salud     -1.17810    0.37537  -3.139 0.001698 ** 
## Cargo_Representante_Ventas     0.78878    0.27057   2.915 0.003554 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1298.6  on 1469  degrees of freedom
## Residual deviance: 1090.9  on 1458  degrees of freedom
## AIC: 1114.9
## 
## Number of Fisher Scoring iterations: 6
round(coef(mod_rotacion_2),4)
##                   (Intercept)              Años_Experiencia 
##                       -0.8811                       -0.0508 
##                Horas_Extra_Si         Satisfación_Laboral_2 
##                        1.5209                       -0.4871 
##         Satisfación_Laboral_3         Satisfación_Laboral_4 
##                       -0.4775                       -1.0655 
##  Cargo_Director_Investigación    Cargo_Director_Manofactura 
##                       -1.9263                       -1.2191 
##                 Cargo_Gerente Cargo_Investigador_Cientifico 
##                       -0.9996                       -0.5453 
##     Cargo_Representante_Salud    Cargo_Representante_Ventas 
##                       -1.1781                        0.7888
exp(coef(mod_rotacion_2))
##                   (Intercept)              Años_Experiencia 
##                     0.4143095                     0.9504456 
##                Horas_Extra_Si         Satisfación_Laboral_2 
##                     4.5761510                     0.6143806 
##         Satisfación_Laboral_3         Satisfación_Laboral_4 
##                     0.6203139                     0.3445658 
##  Cargo_Director_Investigación    Cargo_Director_Manofactura 
##                     0.1456807                     0.2955043 
##                 Cargo_Gerente Cargo_Investigador_Cientifico 
##                     0.3680310                     0.5796655 
##     Cargo_Representante_Salud    Cargo_Representante_Ventas 
##                     0.3078634                     2.2007171

Se procede a realizar el mismo ejercicio de poder de predicción, a ver si se encuentran diferencias significativas:

PRED2=predict(mod_rotacion_2,list(Años_Experiencia=rotacion$Años_Experiencia,
                               Horas_Extra_Si=rotacion$Horas_Extra_Si, 
                               Satisfación_Laboral_2= rotacion$Satisfación_Laboral_2,
                               Satisfación_Laboral_3= rotacion$Satisfación_Laboral_3,
                               Satisfación_Laboral_4= rotacion$Satisfación_Laboral_4,
                               Cargo_Director_Investigación= rotacion$Cargo_Director_Investigación,
                               Cargo_Director_Manofactura= rotacion$Cargo_Director_Manofactura,
                               Cargo_Gerente= rotacion$Cargo_Gerente,
                               Cargo_Investigador_Cientifico= rotacion$Cargo_Investigador_Cientifico,
                               Cargo_Representante_Salud = rotacion$Cargo_Representante_Salud,
                               Cargo_Representante_Ventas = rotacion$Cargo_Representante_Ventas),
             type = "response")
ROC_mod_rotacion_2 = roc(rotacion$Rotación_Si~PRED2, percent = T, ci=T)
ROC_mod_rotacion_2
## 
## Call:
## roc.formula(formula = rotacion$Rotación_Si ~ PRED2, percent = T,     ci = T)
## 
## Data: PRED2 in 1233 controls (rotacion$Rotación_Si 0) < 237 cases (rotacion$Rotación_Si 1).
## Area under the curve: 77.9%
## 95% CI: 74.54%-81.26% (DeLong)
plot(ROC_mod_rotacion_2,
     print.auc=T,
     print.thres = "best",
     col="#0058A6",
     xlab = "Tasa de Falsos Positivos (1 - Especificidad)", 
     ylab = "Tasa de verdadesdos positivos (Sensibilidad)")

Este modelo ajustado indica que el área bajo la curva ROC es de 0.779 (AUC), por lo que se considera que el modelo tiene un buen ajuste de predicción, aunque ligeramente inferior que el modelo completo.

No se encuentran diferencias significativas entre el modelo elaborado con todas las variables y el que se ajustó con la totalidad de variables estadísticamente significaticas.

6. Predicción de un individuo hipotético

Realizar 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).

6.1 predicción del individuo, modelo general

Para este caso, se tomará el modelo general, con todas las variables y se perfilará a un individuo que tiene un ingreso mensual de 3000, una antiguedad de 3 años, 6 años de experiencia general, trabaja con horas extras, registró una satisfacción de 2 y es representante de ventas.

predict(mod_rotacion, 
        list(
          Ingreso_Mensual = 3000,
          Antigüedad= 3, 
          Años_Experiencia=6,
          Horas_Extra_Si= 1, 
          Satisfación_Laboral_2= 1,
          Satisfación_Laboral_3= 0,
          Satisfación_Laboral_4= 0,
          Cargo_Director_Investigación= 0,
          Cargo_Director_Manofactura= 0,
          Cargo_Ejecutivo_Ventas= 0,
          Cargo_Gerente= 0,
          Cargo_Investigador_Cientifico= 0,
          Cargo_Recursos_Humanos = 0,
          Cargo_Representante_Salud = 0,
          Cargo_Representante_Ventas = 1),
        type = "response")
##         1 
## 0.6596653

De acuerdo con los resultados obtenidos, la probabilidad de que rote es del 66%. No obstante lo anterior, se opta por simular este mismo individuo en el modelo simplificado, dado que observamos que al aumentar el ingreso, la probabilidad de que este individuo rote es más alta. Ejemplo, si aumentamos de 3000 a 5000, la probabilidad de rotación pasa del 66% al 68% y por lo que hemos visto, es teóricamente incorrecto.

6.2 predicción del individuo, modelo ajustado

Perfilamos a este mismo individuo con el modelo que simplificamos, sin tener en cuenta el ingreso mensual, la antigüedad en la compañía y dos de los cargos (Ejecutivo de ventas y recursos humanos), para analizar el comportamiento:

predict(mod_rotacion_2, 
        list( 
          Años_Experiencia=6,
          Horas_Extra_Si= 1, 
          Satisfación_Laboral_2= 1,
          Satisfación_Laboral_3= 0,
          Satisfación_Laboral_4= 0,
          Cargo_Director_Investigación= 0,
          Cargo_Director_Manofactura= 0,
          Cargo_Gerente= 0,
          Cargo_Investigador_Cientifico= 0,
          Cargo_Representante_Salud = 0,
          Cargo_Representante_Ventas = 1),
        type = "response")
##         1 
## 0.6539421

Los resultados de la predicción fueron similares al resultado anterior, no obstante pudo ser casualidad, dado que el nivel de ingresos mensuales estaba en un nivel que los igualaba, y con el signo errado. la probabilidad de que este individuo salga de la empresa es del 65%. Ahora bien, debemos definir si se debe motivar a este empleado o no.

6.3 Estrategia frente al empleado hipotético.

Las compañías deciden si deben o no intervenir a un empleado siempre y cuando el rendimiento de este sea ejemplar. Esta variable no fue incluida en el estudio. Sin embargo, dentro del estudio, se perfiló una variable que hace parte del control de la compañía, y son las horas extras.

Si la compañía quisiese retener a este individuo, debería reconsiderar las jornadas extenuantes. Observése como en la modelación donde el empleado no tiene horas extras, la probabilidad de que rote se reduce considerablemente:

predict(mod_rotacion_2, 
        list( 
          Años_Experiencia=6,
          Horas_Extra_Si= 0, 
          Satisfación_Laboral_2= 1,
          Satisfación_Laboral_3= 0,
          Satisfación_Laboral_4= 0,
          Cargo_Director_Investigación= 0,
          Cargo_Director_Manofactura= 0,
          Cargo_Gerente= 0,
          Cargo_Investigador_Cientifico= 0,
          Cargo_Representante_Salud = 0,
          Cargo_Representante_Ventas = 1),
        type = "response")
##         1 
## 0.2922574

El solo hecho de cerrar jornadas extenuantes, hace que la probabilidad de que este empleado rote, pase del 65% al 29%, bastante considerable. Ahora bien, si a esto le agregamos que este empleado puede verse favorecido por una jornada laboral menos extenuante, es posible que aumente su nivel de satisfacción laboral, pasando de una calificación de 2 a 4. En este caso, volvemos a hacer la predicción:

predict(mod_rotacion_2, 
        list( 
          Años_Experiencia=6,
          Horas_Extra_Si= 0, 
          Satisfación_Laboral_2= 0,
          Satisfación_Laboral_3= 0,
          Satisfación_Laboral_4= 1,
          Cargo_Director_Investigación= 0,
          Cargo_Director_Manofactura= 0,
          Cargo_Gerente= 0,
          Cargo_Investigador_Cientifico= 0,
          Cargo_Representante_Salud = 0,
          Cargo_Representante_Ventas = 1),
        type = "response")
##         1 
## 0.1880433

Obtenemos que un empleado que deje de laborar horas extras en jornadas extenuantes, y que como consecuencia de ello aumente su calificación de 2 a 4 en la encuesta que le realicen respecto a su satisfacción laboral, reduciría de un 65% a un 19% la probabilidad de que registre rotación.

7 Conclusiones

En las conclusiones adicione una discución sobre cuál sería la estrategia para disminuir la rotación en la empresa (con base en las variables que resultaron significativas en el punto 3).

Actualmente, la rotación de personal es uno de los problemas graves que enfrentan las compañías. La rotación implica costos transaccionales importantes, desde los costos de formación y entrenamiento para el cargo de quienes reemplazan a quienes se fueron, así como aspectos relacionados con las indemnizaciones por despidos y hasta los costos por procesos jurídicos o contingencias que se puedan configurar por este aspecto.

Al respecto, las variables significativas que se obtuvieron en el punto 3, fueron la Experiencia, las horas extras, la satisfacción laboral, y los cargos (algunos, que en el modelo simplificado fueron ajustados). Dentro de estas variables, tal y como se explicó en el punto anterior, la empresa tiene la capacidad de gestionar de forma inmediata sólo una de ellas y son las horas extras. Por otro lado, otra de las variables que pueden ser gestionadas por parte de la compañía son los cargos, y esto en el entendido de que puede “promover” a un empleado de un cargo de alta rotación a otra, previa aplicación de un programa de formación.

La anteriormente descrita puede ser la hoja de ruta que puede llevar a un empleado que tiene una alta probabilidad de rotar y que quiere ser retenido:

1 - Reducir jornadas extenuantes mediante la no programación de horas extras 2 - Programas de formación en habilidades de liderazgo para que pueda ser promovido a un cargo directivo 3 - Que las acciones que esté emprendiendo la empresa, haga que su satisfacción laboral aumente.

En el caso del empleado teórico, simularemos que, arrancando con una probabilidad del 65% de rotar, este se le reduce al 29% luego de cerrar jornadas extenuantes sin horas extras.

Ahora, suponiendo que después de una capacitación, pasa de ser representante de ventas a representante de salud, esa probabilidad de rotar baja al 5.5%.

Ahora suponemos que después de todos estos cambios, la satisfacción laboral pasa de 2 a 4, la probabilidad baja al 3.2%.

Y finalmente, si como consecuencia de todos estas mejoras, este empleado se desempeña mejor, se forma en habilidades de liderazgo y la empresa decide ascenderlo a director de investigación, por ejemplo, esta probabildad de rotar bajaría al 1.5%.

Estos son los resultados de la prediccón definitiva:

predict(mod_rotacion_2, 
        list( 
          Años_Experiencia=6,
          Horas_Extra_Si= 0, 
          Satisfación_Laboral_2= 0,
          Satisfación_Laboral_3= 0,
          Satisfación_Laboral_4= 1,
          Cargo_Director_Investigación= 1,
          Cargo_Director_Manofactura= 0,
          Cargo_Gerente= 0,
          Cargo_Investigador_Cientifico= 0,
          Cargo_Representante_Salud = 0,
          Cargo_Representante_Ventas = 0),
        type = "response")
##          1 
## 0.01509925