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.
En este caso se cuentan con 24 variables, como se muestra a continuación, de las cuales se escogerán 3 variables cualitativas y otras 3 variables cuantitativas que se tenga la hipotesís de una relación con la variable rotación.
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, …
De las 23 variables explicativas de la rotación, se escogen como variables cuantitativas: Edad, Trabajos anteriores y Ingreso mensual. En este sentido se espera que, empleados de menor edad sean más propensos a rotar, en busca de otras oportunidades, ya sea por experimentar o por otras circunstancias ligadas a otras de las variables. En el caso de trabajos anteriores, puede tener una relación con la rotación, ya que puede ser más afín a cambiar rapidamente, en ese caso, se esperaría que a medida que tenga más trabajos anteriores, es más probable que rote. Finalmente, en el caso del ingreso mensual, tiene una relación con la rotación por la satisfacción económica del trabajo hecho por lo que, entre mayor sea el ingreso mensual es posible que menor sea la probabilidad de rotar.
Por otro lado, respecto a las variables cualitativas, se escogen: Estado civil, Equilibrio trabajo vida y Horas extra. En el caso de estado civil, puede suponer una relación en la medida que al tener vinculos solidos con otra persona o proyectos de vida, las personas no se arriesguen a rotar, en ese sentido, se esperaría que aquellas personas solteras sean más probable que roten mientras que otros vinculos no. En el equilibrio trabajo vida, entendido como una variable categorica ordinal, a partir de una escala Likert, en la que se entendería que a menor número es menor equilibrio, o menos satisfecho con ese equilibrio. En ese sentido, una persona con un descontento con su equilibrio trabajo vida, va a querer rotar para mejorar ese equilibrio. Finalmente, en el caso de las horas extras, tienen una relación con la rotación entendiendo el desgaste que puede suponer un trabajo adicional, así, una persona que tenga horas extra es posible que piense rotar, antes que una persona que no tenga horas extra.
Ahora bien, para corrobar estas hipotesis, se presenta el análisis a continuación.
Inicialmente se hará la discriminación entre variables cualitativas y variables cuantitativas.
# Crear un marco de datos para almacenar la información
info_variables <- data.frame(Nombre = names(rotacion), Cualitativa = "-", Cuantitativa = "-")
cualitativas_txt <- c("Rotación", "Viaje de Negocios", "Departamento", "Educación",
"Campo_Educación", "Satisfacción_Ambiental", "Genero", "Cargo",
"Satisfación_Laboral", "Estado_Civil", "Horas_Extra",
"Rendimiento_Laboral", "Equilibrio_Trabajo_Vida")
# Identificar variables cualitativas y marcarlas con 1
info_variables$Cualitativa[info_variables$Nombre %in% cualitativas_txt] <- "Sí"
# Identificar variables cuantitativas y marcarlas con 1
info_variables$Cuantitativa[info_variables$Cualitativa != "Sí"] <- "Sí"
# Mostrar el cuadro de 3 columnas
print(info_variables)
## Nombre Cualitativa Cuantitativa
## 1 Rotación Sí -
## 2 Edad - Sí
## 3 Viaje de Negocios Sí -
## 4 Departamento Sí -
## 5 Distancia_Casa - Sí
## 6 Educación Sí -
## 7 Campo_Educación Sí -
## 8 Satisfacción_Ambiental Sí -
## 9 Genero Sí -
## 10 Cargo Sí -
## 11 Satisfación_Laboral Sí -
## 12 Estado_Civil Sí -
## 13 Ingreso_Mensual - Sí
## 14 Trabajos_Anteriores - Sí
## 15 Horas_Extra Sí -
## 16 Porcentaje_aumento_salarial - Sí
## 17 Rendimiento_Laboral Sí -
## 18 Años_Experiencia - Sí
## 19 Capacitaciones - Sí
## 20 Equilibrio_Trabajo_Vida Sí -
## 21 Antigüedad - Sí
## 22 Antigüedad_Cargo - Sí
## 23 Años_ultima_promoción - Sí
## 24 Años_acargo_con_mismo_jefe - Sí
# Seleccionar variables cuantitativas
cuantitativas <- select(rotacion, -one_of(cualitativas_txt))
cuantitativas_txt <- names(cuantitativas)
plots <- list()
# Iterar sobre los elementos de la lista cuantitativas
for(i in seq_along(cuantitativas)) {
# Crear el boxplot y agregarlo a la lista de plots
plots[[i]] <- plot_ly(y = cuantitativas[[i]], type = "box",
name = names(cuantitativas)[i])
}
# Crea subplots usando subplot de plotly
subplot(plots, nrows = 3, margin = 0.05) %>%
layout(title = list(text = "Análisis univariado de variables cuantitativas"),
showlegend = FALSE)
# Seleccionar variables cuantitativas
cualitativas <- select(rotacion, one_of(cualitativas_txt))
plots <- list()
# Iterar sobre los elementos de la lista cuantitativas
for(i in seq_along(cualitativas)) {
relative_freq_table <- table(cualitativas[[i]]) / length(cualitativas[[i]]) * 100
relative_freq_table <- as.data.frame(relative_freq_table)
plots[[i]] <- plot_ly(y = relative_freq_table$Freq,
x = relative_freq_table$Var1,
type = "bar",
name = names(cualitativas)[i])
}
# Crea subplots usando subplot de plotly
subplot(plots, nrows = 5, margin = 0.05) %>%
layout(title = list(text = "Análisis univariado de variables cualitativas"),
showlegend = FALSE)
plots <- list()
# Iterar sobre los elementos de la lista cuantitativas
for(i in seq_along(cuantitativas)) {
# Crear el boxplot y agregarlo a la lista de plots
plots[[i]] <- plot_ly(y = cuantitativas[[i]], x = rotacion$Rotación, type = "box",
name = names(cuantitativas)[i])
}
# Crea subplots agrupados por la variable "Rotación" usando subplot de plotly
subplot(plots, nrows = 3, margin = 0.05) %>%
layout(title = list(text = "Análisis univariado de variables cuantitativas agrupadas por Rotación"),
showlegend = FALSE)
plots <- list()
# Iterar sobre los elementos de la lista cualitativas
for(i in seq_along(cualitativas)) {
# Calcular la tabla de frecuencia relativa para cada variable cualitativa
relative_freq_table <- table(cualitativas[[i]], cualitativas$Rotación)/ nrow(cualitativas) * 100
relative_freq_table <- as.data.frame(relative_freq_table)
# Crear el gráfico de barras de frecuencia relativa y agregarlo a la lista de plots
plots[[i]] <- plot_ly(data = relative_freq_table, x = ~Var1, y = ~Freq,
type = "bar", color = ~Var2,
legendgroup = ~Var2,
colors = c("#1bcc3b", "#eb8e2a"),
name = names(cualitativas)[i])
}
plots[[1]] <- NULL
# Crear subplots agrupados por la variable "Rotación" usando subplot de plotly
subplot(plots, nrows = 4, margin = 0.05) %>%
layout(title = list(text = "Análisis univariado de variables cualitativas agrupadas por Rotación"),
showlegend = FALSE)
A continuación se realizarán los test de chi cuadrado para identificar si existe asociación entre las variables cualitativas en relación con la rotación y posteriormente, con aquellas que tenga relación se hará el test de V de Cramer para analizar la fuerza de esa asociación.
# Prueba chi cuadrado sólo para cualitativas
estadisticos <- vector()
pvalor <- vector()
# Iterar sobre los elementos de la lista cualitativas
for(i in seq_along(cualitativas)) {
estadisticos[i] <- chisq.test(table(cualitativas[[i]], cualitativas$Rotación))$statistic[[1]]
pvalor[i] <- chisq.test(table(cualitativas[[i]], cualitativas$Rotación))$p.value
}
chisq <- data.frame(nombre = names(cualitativas),
x_squared = as.numeric(estadisticos),
p_value = as.numeric(pvalor))
chisq <- chisq[-1,]
# Función para la interpretación
interpretar_resultado <- function(valor) {
if (valor < 0.05) "Están asociadas" else "No están asociadas"
}
# Añadimos la columna de interpretación usando mapply
chisq$interpretacion <- mapply(interpretar_resultado, chisq$p_value)
print(chisq)
## nombre x_squared p_value interpretacion
## 2 Viaje de Negocios 2.418241e+01 5.608614e-06 Están asociadas
## 3 Departamento 1.079601e+01 4.525607e-03 Están asociadas
## 4 Educación 3.073961e+00 5.455253e-01 No están asociadas
## 5 Campo_Educación 1.602467e+01 6.773980e-03 Están asociadas
## 6 Satisfacción_Ambiental 2.250388e+01 5.123469e-05 Están asociadas
## 7 Genero 1.116967e+00 2.905724e-01 No están asociadas
## 8 Cargo 8.619025e+01 2.752482e-15 Están asociadas
## 9 Satisfación_Laboral 1.750508e+01 5.563005e-04 Están asociadas
## 10 Estado_Civil 4.616368e+01 9.455511e-11 Están asociadas
## 11 Horas_Extra 8.756429e+01 8.158424e-21 Están asociadas
## 12 Rendimiento_Laboral 1.547544e-04 9.900745e-01 No están asociadas
## 13 Equilibrio_Trabajo_Vida 1.632510e+01 9.725699e-04 Están asociadas
A partir de este análisis de Chi-cuadrado se identifica que muchas de las variables sí están asociadas con la rotación, a excepción de la educación, el género y el rendimiento laboral.
# Prueba chi cuadrado sólo para cualitativas
cramer_value <- vector()
cramer_var <- c("Rotación", chisq[chisq$interpretacion == "Están asociadas",]$nombre)
cramer <- select(cualitativas, one_of(cramer_var))
# Iterar sobre los elementos de la lista cualitativas
for(i in seq_along(cramer)) {
cramer_value[i] <- cramerV(
cramer[[i]], cramer$Rotación
)
}
df_cramer <- data.frame(nombre = names(cramer),
Test_cramer = as.numeric(cramer_value))
df_cramer <- df_cramer[-1,]
print(df_cramer)
## nombre Test_cramer
## 2 Viaje de Negocios 0.1283
## 3 Departamento 0.0857
## 4 Campo_Educación 0.1044
## 5 Satisfacción_Ambiental 0.1237
## 6 Cargo 0.2421
## 7 Satisfación_Laboral 0.1091
## 8 Estado_Civil 0.1772
## 9 Horas_Extra 0.2461
## 10 Equilibrio_Trabajo_Vida 0.1054
Ahora, a partir de la información de V de Cramer, es posible inferir que existe una asociación muy debil entre las variables cualitativas y la rotación del empleado, siendo más alta, las horas extras.
normalidad <- vector()
homocedasticidad <- vector()
# Iterar sobre los elementos de la lista cuantitativas
for(i in seq_along(cuantitativas)) {
normalidad[i] <- if (ad.test(cuantitativas[[i]])$p.value > 0.05) "Cumple" else "No cumple" #Test Anderson-Darling para muestras grandes
homocedasticidad <- if(leveneTest(cuantitativas[[1]] ~ rotacion$Rotación)$'Pr(>F)'[1] > 0.05) "Cumple" else "No cumple"
}
supuestos <- data.frame(nombre = names(cuantitativas),
normalidad = normalidad,
homocedasticidad = homocedasticidad)
print(supuestos)
## nombre normalidad homocedasticidad
## 1 Edad No cumple Cumple
## 2 Distancia_Casa No cumple Cumple
## 3 Ingreso_Mensual No cumple Cumple
## 4 Trabajos_Anteriores No cumple Cumple
## 5 Porcentaje_aumento_salarial No cumple Cumple
## 6 Años_Experiencia No cumple Cumple
## 7 Capacitaciones No cumple Cumple
## 8 Antigüedad No cumple Cumple
## 9 Antigüedad_Cargo No cumple Cumple
## 10 Años_ultima_promoción No cumple Cumple
## 11 Años_acargo_con_mismo_jefe No cumple Cumple
A partir de esta información, al no cumplir con el supuesto de normalidad de distribución de los datos, pero sí cumplen con la homocedasticidad, es posible usar una prueba no parametrica como lo es la prueba de Mann-Whitney U, la cual permitirá indicar si existe una relación entre cada una de estas variables explicativas y la rotación.
wilcox <- vector()
grupo1_b <- rotacion %>% filter(Rotación == "Si")
grupo2_b <- rotacion %>% filter(Rotación == "No")
# Iterar sobre los elementos de la lista cuantitativas
for(i in seq_along(cuantitativas)) {
grupo1 <- grupo1_b[,cuantitativas_txt[i]][[1]]
grupo2 <- grupo2_b[,cuantitativas_txt[i]][[1]]
wilcox[i] <- if (wilcox.test(grupo1, grupo2)$p.value < 0.05) "Relacionados" else "No relacionados"
}
test_wilcox <- data.frame(nombre = names(cuantitativas),
relacion = wilcox)
print(test_wilcox)
## nombre relacion
## 1 Edad Relacionados
## 2 Distancia_Casa Relacionados
## 3 Ingreso_Mensual Relacionados
## 4 Trabajos_Anteriores No relacionados
## 5 Porcentaje_aumento_salarial No relacionados
## 6 Años_Experiencia Relacionados
## 7 Capacitaciones Relacionados
## 8 Antigüedad Relacionados
## 9 Antigüedad_Cargo Relacionados
## 10 Años_ultima_promoción Relacionados
## 11 Años_acargo_con_mismo_jefe Relacionados
Ahora bien, según la prueba U de Mann-Whitney se identifica que en alguna medida casi todas las variables cuantitativas están relacionadas con la rotación, ya que las medias de los grupos que sí rotaron frente a los grupos que no rotaron son significativamente diferentes. Sólamente el número de trabajos anteriores y el porcentaje de aumento salarial no presentan ninguna diferencia entre rotar o no, en otras palabras, estas dos variables no son relevantes.
Esto señala que las hipotesis planteadas inicialmente coinciden parcialmente con lo que muestran estos estadisticos de correlación con la rotación. Al respecto, es necesario señalar que, como se presentó previamente, la Educación no presenta una relación con la rotación, por lo que sería la hipotesis que no se cumplió.
Para la estimación del modelo, se dividieron los datos originales en una proporción 7:3, donde el 70% de los datos se destinaron a realizar el entrenamiento del modelo, y el restante se destinó a las pruebas del modelo entrenado.
training_indices <- createDataPartition(rotacion$Rotación, p = 0.7, list = FALSE)
datos_entrenamiento <- rotacion[training_indices, ]
datos_prueba <- rotacion[-training_indices, ]
modelo <- glm(as.numeric(as.factor(Rotación)) - 1 ~ Edad + Trabajos_Anteriores +
Ingreso_Mensual + Estado_Civil + Equilibrio_Trabajo_Vida + Horas_Extra +
Educación,
data = datos_entrenamiento, family = binomial(link = "logit"))
summary(modelo)
##
## Call:
## glm(formula = as.numeric(as.factor(Rotación)) - 1 ~ Edad + Trabajos_Anteriores +
## Ingreso_Mensual + Estado_Civil + Equilibrio_Trabajo_Vida +
## Horas_Extra + Educación, family = binomial(link = "logit"),
## data = datos_entrenamiento)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 4.008e-01 5.719e-01 0.701 0.483476
## Edad -4.955e-02 1.333e-02 -3.716 0.000202 ***
## Trabajos_Anteriores 1.879e-01 3.830e-02 4.905 9.33e-07 ***
## Ingreso_Mensual -1.194e-04 3.199e-05 -3.733 0.000189 ***
## Estado_CivilDivorciado -3.624e-01 2.749e-01 -1.318 0.187413
## Estado_CivilSoltero 8.959e-01 2.094e-01 4.279 1.88e-05 ***
## Equilibrio_Trabajo_Vida -3.223e-01 1.266e-01 -2.546 0.010882 *
## Horas_ExtraSi 1.611e+00 1.949e-01 8.268 < 2e-16 ***
## Educación -5.285e-02 9.441e-02 -0.560 0.575641
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 909.69 on 1029 degrees of freedom
## Residual deviance: 739.78 on 1021 degrees of freedom
## AIC: 757.78
##
## Number of Fisher Scoring iterations: 6
En el modelo implementado se encuentra que la Educación no es significativa para el modelo de regresión logistica. Por otro lado, se encuentra que respecto al estado civil, el cual se encontró una relación con la rotación, a pesar de no ser fuerte, es significativamente fuerte para aquellas personas que están solteras, en otras palabras, las personas solteras, en comparación con las personas casadas, son más propensas a rotar. Además, en relación a los divorciados, las diferencias no son significativas con los casados, es decir, siguen su mismo comportamiento.
Finalmente, el equilibrio trabajo vida a pesar de ser significativo, tiene una significancia baja, en comparación con las otras variables explicativas. Ahora bien, a modo de resumen, las variables que contribuyen a la decisión de rotar positivamente son: el número de trabajos pasados, el hecho de ser soltero y si debe hacer horas extra, tal como se previó en las hipotesis. Mientras que, una mayor edad, un mayor ingreso, estar en unión con otra persona, y un buen equilibrio trabajo vida, contribuyen negativamente a tomar la decisión de rotar, tal como se previó en las hipotesis.
# Obtener las probabilidades predichas por el modelo
predicciones <- predict(modelo, newdata = datos_prueba, type = "response")
clases_predichas <- ifelse(predicciones > 0.5, 1, 0)
# Calcular la curva ROC y el AUC
roc_datos <- roc(as.numeric(
factor(datos_prueba$Rotación,
levels = levels(as.factor(rotacion$Rotación)))) - 1, predicciones)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
auc_valor <- auc(roc_datos)
# Graficar la curva ROC
plot(roc_datos, main = "Curva ROC", xlim = c(1, 0))
abline(a = 0, b = 1, lty = 2) # Línea diagonal de referencia
legend("bottomright", legend = paste("AUC =", round(auc_valor, 3)), bty = "n")
A partir de la gráfica se asume que el modelo tiene una alta capacidad predictiva, por lo cercano a una gráfica ideal, alejandose de linea estándar, así como un valor de área bajo la curva superior a 0.5.
A partir de los datos originales, se presentará un caso hipotetico de un nuevo empleado, con ciertas condiciones, al cual se estimará su probabilidad de rotar o no, en caso de una probabilidad de más del 50%, se creará una acción para disminuir esa probabilidad.
Se tiene un usuario con las siguientes caracteristicas.
# Características del individuo hipotético
nuevo_individuo <- data.frame(
Edad = 30,
Trabajos_Anteriores = 2,
Ingreso_Mensual = 3000,
Estado_Civil = factor("Soltero",
levels = levels(as.factor(rotacion$Estado_Civil))), # Convertir el Estado_Civil a factor y reordenarlo según el modelo
Equilibrio_Trabajo_Vida = 3,
Horas_Extra = factor("Si",
levels = levels(as.factor(rotacion$Horas_Extra))),
Educación = 3
)
print(nuevo_individuo)
## Edad Trabajos_Anteriores Ingreso_Mensual Estado_Civil Equilibrio_Trabajo_Vida
## 1 30 2 3000 Soltero 3
## Horas_Extra Educación
## 1 Si 3
A partir de esto se estimará su probabilidad de rotar:
# Realizar la predicción de la probabilidad de rotación
prob_rotacion <- round(predict(modelo, newdata = nuevo_individuo, type = "response"),4)*100
# Imprimir la probabilidad predicha
print(paste("La probabilidad predicha de rotación es:", prob_rotacion))
## [1] "La probabilidad predicha de rotación es: 57.77"
# Definir un punto de corte (por ejemplo, 0.5)
punto_corte <- 50
# Decisión basada en el punto de corte
if (prob_rotacion >= punto_corte) {
print("Se debe intervenir con el empleado para motivarlo.")
} else {
print("No se requiere intervención con el empleado en este momento.")
}
## [1] "Se debe intervenir con el empleado para motivarlo."
Ya que es probable que el empleado decida rotar, y que es díficil influir en algunas de las variables predictoras, como la edad, la situación civil y demás. La acción más inmediata con un efecto inmediato en la decisión del empleado, es la eliminación de las horas extra, pues al no tener horas extra tendrá el efecto siguiente:
Se renuevan las caracteristicas del nuevo usuario, sólo modificando las horas extra
individuo_corregido <- nuevo_individuo
individuo_corregido$Horas_Extra <- factor("No",
levels = levels(as.factor(rotacion$Horas_Extra)))
print(individuo_corregido)
## Edad Trabajos_Anteriores Ingreso_Mensual Estado_Civil Equilibrio_Trabajo_Vida
## 1 30 2 3000 Soltero 3
## Horas_Extra Educación
## 1 No 3
Y a continuación se evalua nuevamente la probabilidad de rotar:
# Realizar la predicción de la probabilidad de rotación
prob_rotacion_2 <- round(predict(modelo, newdata = individuo_corregido, type = "response"),4)*100
# Imprimir la probabilidad predicha
print(paste("La probabilidad predicha de rotación, sin horas extra, es:", prob_rotacion_2))
## [1] "La probabilidad predicha de rotación, sin horas extra, es: 21.45"
Por lo que la probabilidad de rotar se disminuye en más de 30 puntos porcentuales. De aquí lo siguiente que se podría hacer es aumentar el salario.