Problema: 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.
Se proceden a seleccionar 3 variables categóricas (distintas de rotación) y 3 variables cuantitativas, con la finalidad de entender y comprender los atributos que tienen mayor influencia en la rotación de un empleo.
## [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"
Campo Educación: Comúnmente en las organizaciones la rotación de los empleos depende de su nivel profesional, es decir, sí es un técnico o tecnólogo puede estar sujeto a una rotación frecuente que un profesional que se encargue de un área específica con una mayor responsabilidad.
Cargo: En una empresa influye de manera directa las labores desarrollados con la rotación de cargo, entre más específico sea un cargo de acuerdo a nivel profesional y su responsabilidad será menos probable que tenga se genere una rotación.
Estado civil: Es probable que una empresa genere más rotación de cargo en profesionales o técnicos que no tengan obligaciones familiares directas, en cambio los empleados solteros tienden a estar más disponibles para rotaciones.
Años experiencia: Los años de experiencia en un mismo cargo determinan que muy pocos empleados podrían desarrollar las labores de personas que llevan una trayectoría más larga, lo que dificulta llevar a cabo rotaciones.
Antigüedad_cargo: La variable de años de experiencia y antigüedad en el cargo se relacionan directamente y entre más años de experiencia y antigüedad se tenga en el cargo, la rotación de estos cargos será más dificil de ejcutarse.
Ingreso Mensual: El ingreso mensual es una variable que puede llegar a determinar si un cargo presenta rotación o no y depende también de la labor a desempeñar.
A continuación se presenta el nuevo dataframe con las variables cualitativas y cuantitativas que se eligieron para determinar la probabilidad de que un empleado haga un rotación en la empresa.
rotacion_selec <- rotacion[,c("Rotación", "Campo_Educación", "Estado_Civil","Cargo", "Años_Experiencia", "Ingreso_Mensual", "Antigüedad_Cargo" )]
rotacion_selec<-as.data.frame(rotacion_selec)Cantidad de datos faltantes
Se procede a la verificación de datos faltantes en el nuevo dataframe de las variables cuantitativas y cualitativas.
Como se puede observar en la tabla anterior, no existen datos faltantes es el nuevo dataframe con las variables cualitativas y cuantitativas seleccionadas para la propuesta.
Ahora se ejecuta un análisis univariado (caracterización) de la información contenida en la base de datos rotacion seleccionada. En primer lugar se realiza con las variables categóricas y finalmente con las cuantitativas.
Campo Educación
Para la variable campo de educación, se verifica sus atributos
##
## Ciencias Humanidades Mercadeo Otra Salud Tecnicos
## 606 27 159 82 464 132
Se tienen 606 personas profesionales en ciencias, 27 en humanidades, 159 en Mercadeo, 464 en Salud, 132 técnicos y 82 en otras profesiones.
library(ggplot2)
C_Edu <- ggplot(rotacion, aes(x = Campo_Educación)) +
geom_bar(fill = "#76D7C4", color = "black", aes(y = ..count..)) +
geom_text(aes(y = ..count.., label = scales::percent(..count../sum(..count..))), stat="count", position = position_dodge(0.9), vjust = -0.5) +
labs(title = "Gráfico de distribución de Campos de Educación", x = "Carreras", y = "Frecuencia") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(hjust = 0.5))
print(C_Edu)En el gráfico de distribución de campos de educación, los profesionales en ciencias representan un 41.2% de la empresa, humanidades el 1.8%, Mercadeo 10.8%, salud el 31.6%, técnicos 9% y otras profesiones el 5.6%. Cerca del 42% de los empleados de la empresa tienen profesiones a fines al campo de Ciencias.
Cargo
Para la variable de cargo, se verifican sus atributos
##
## 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
Se encuentran 80 personas en el cargo de director de investigación, director de manofactura 145 empleados, ejecutivo de ventas 326, gerentes 102, investigadores científicos 292, recursos humanos 52, técnicos de laboratorio 259, representantes de salud 131 y de ventas 83
library(ggplot2)
Cargo <- ggplot(rotacion, aes(x = Cargo)) +
geom_bar(fill = "#F16292", color = "black", aes(y = ..count..)) +
geom_text(aes(y = ..count.., label = scales::percent(..count../sum(..count..))), stat="count", position = position_dodge(0.9), vjust = -0.5) +
labs(title = "Gráfico de distribución de Cargos", x = "Cargos", y = "Frecuencia") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(hjust = 0.5))
print(Cargo)En el gráfico de distribución de cargos, los profesionales que desarrollan el cargo de ejecutivos de ventas es representado con un 22.18%, y este es el cargo más recurrente en la organización con un total de 326 personas. Caso contrario ocurre con los profesionales de recursos humano que representan un 3.54% es decir 52 personas.
Estado Civil
Para la variable de Estado Civil, se verifican sus atributos
##
## Casado Divorciado Soltero
## 673 327 470
Como se puede observar, la mayoría de los empleados se encuentran en un estado civil de Casado con 673 personas.
library(ggplot2)
Est_civil <- ggplot(rotacion, aes(x = Estado_Civil)) +
geom_bar(fill = "#ED5220", color = "black", aes(y = ..count..)) +
geom_text(aes(y = ..count.., label = scales::percent(..count../sum(..count..))), stat="count", position = position_dodge(0.9), vjust = -0.5) +
labs(title = "Gráfico de distribución de Estado Civil", x = "Estado Civil", y = "Frecuencia") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(hjust = 0.5))
print(Est_civil)En el gráfico de distribución de estado civil, los profesionales que estan casada representan un 45.8%, y este es el estado civil más recurrente en la organización con un total de 673 personas. Caso contrario ocurre con los profesionales que estan divorciados que representan un 22.2% es decir 327 personas.
Años_Experiencia
Para la variable de Años de Experiencia, se verifican sus atributos
Obtenemos la información básica de la variable
library(dplyr)
resumen <- rotacion %>%
summarise(
Media = mean(Años_Experiencia),
Mediana = median(Años_Experiencia),
Desv_Estandar = sd(Años_Experiencia),
Minimo = min(Años_Experiencia),
Maximo = max(Años_Experiencia)
)
print(resumen)## # A tibble: 1 × 5
## Media Mediana Desv_Estandar Minimo Maximo
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 11.3 10 7.78 0 40
median_val_hist <- median(rotacion$Años_Experiencia)
mean_val_hist <- mean(rotacion$Años_Experiencia)
library(ggplot2)
p_años <- ggplot(rotacion, aes(x = Años_Experiencia)) +
geom_histogram(aes(y = ..density..), fill = "#FFB6C1", color = "black", alpha = 0.7) +
geom_density(alpha = 0.2, fill = "#006400") +
geom_vline(aes(xintercept = median_val_hist), color = "blue", linetype = "dashed", size = 0.5) +
geom_vline(aes(xintercept = mean_val_hist), color = "red", linetype = "dashed", size = 0.5) +
labs(title = "Histograma para Años de Experiencia", x = "Años de Experiencia", y = "Densidad") +
annotate("text", x = mean_val_hist + 2, y = 0.02, label = "Media", color = "red") +
annotate("text", x = median_val_hist - 2, y = 0.02, label = "Mediana", color = "blue") +
theme_minimal()
print(p_años)Está gráfica muestra el comportamiento de la variable de años de experiencia, en donde la media es de 11.27 años y con una mediana 10 años. En este rango es donde se encuentran la mayoría de los registros y los años de experiencia se encuentran entre 0 a 40 años.
Antigüedad_Cargo
Obtenemos la información básica de la variable
library(dplyr)
resumen <- rotacion %>%
summarise(
Media = mean(Antigüedad_Cargo),
Mediana = median(Antigüedad_Cargo),
Desv_Estandar = sd(Antigüedad_Cargo),
Minimo = min(Antigüedad_Cargo),
Maximo = max(Antigüedad_Cargo)
)
print(resumen)## # A tibble: 1 × 5
## Media Mediana Desv_Estandar Minimo Maximo
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 4.23 3 3.62 0 18
median_val_hist <- median(rotacion_selec$Antigüedad_Cargo)
mean_val_hist <- mean(rotacion_selec$Antigüedad_Cargo)
library(ggplot2)
p_años2 <- ggplot(rotacion, aes(x = Antigüedad_Cargo)) +
geom_histogram(aes(y = ..density..), fill = "#FFB6C1", color = "black", alpha = 0.7) +
geom_density(alpha = 0.2, fill = "#006400") +
geom_vline(aes(xintercept = median_val_hist), color = "blue", linetype = "dashed", size = 0.5) +
geom_vline(aes(xintercept = mean_val_hist), color = "red", linetype = "dashed", size = 0.5) +
labs(title = "Histograma para Antigüedad en el Cargo", x = "Antigüedad", y = "Densidad") +
annotate("text", x = mean_val_hist + 2, y = 0.02, label = "Media", color = "red") +
annotate("text", x = median_val_hist - 2, y = 0.02, label = "Mediana", color = "blue") +
theme_minimal()
print(p_años2)Está gráfica muestra el comportamiento de la variable de , en donde la media es de Antigüedad de Cargo es de 4.23 años y con una mediana 3 años. En esta gráfico los datos se encuentran más dispersos porque hay más variabilidad entre ellos desde 0 años de antigüedad hasta 18 años.
Ingreso Mensual
Obtenemos la información básica de la variable
library(dplyr)
resumen <- rotacion %>%
summarise(
Media = mean(Ingreso_Mensual),
Mediana = median(Ingreso_Mensual),
Desv_Estandar = sd(Ingreso_Mensual),
Minimo = min(Ingreso_Mensual),
Maximo = max(Ingreso_Mensual)
)
print(resumen)## # A tibble: 1 × 5
## Media Mediana Desv_Estandar Minimo Maximo
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 6503. 4919 4708. 1009 19999
tabla_frecuencia <- as.data.frame(table(rotacion_selec$Ingreso_Mensual))
names(tabla_frecuencia) <- c("Ingreso_Mensual", "Cantidad")
head(tabla_frecuencia, 5)En el análisis de esta variable, la mayoría de los datos ingresados de los salarios para cada cargo son únicos, es decir la mayoría de los empleados tienen ingresos mensuales diferentes que depende de horas extras o de ventas adicionales que sean incentivos económicos para los empleados y puedan cambiar mensualmente sus ingresos.
Realiza un análisis 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 hipotesis planteada en el punto 2.
Codificamos la variables asignando los 1 y 0.
Seguidamente, se ejecuta el modelo logístico para determinar la probabilidad de que un empleado rote o no de su cargo.
Ahora procedemos a realizar el modelo para cada una de las variables seleccionadas.
Campo Educación
modelo_CEduc <- glm(y ~ Campo_Educación, data = rotacion_selec, family = binomial)
round(summary(modelo_CEduc)$coefficients,2)## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.76 0.11 -15.33 0.00
## Campo_EducaciónHumanidades 0.71 0.45 1.56 0.12
## Campo_EducaciónMercadeo 0.49 0.22 2.22 0.03
## Campo_EducaciónOtra -0.11 0.34 -0.31 0.76
## Campo_EducaciónSalud -0.09 0.18 -0.51 0.61
## Campo_EducaciónTecnicos 0.62 0.23 2.66 0.01
El campo educación según los resultados obtenidos si influyen en la rotación del personal y la variable que mas influye es para los profesionales en Humanidades, Mercadeo y en los técnicos.
Estado Civil
modelo_EstCivil <- glm(y ~ Estado_Civil, data = rotacion_selec, family = binomial)
round(summary(modelo_EstCivil)$coefficients,2)## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.95 0.12 -16.70 0.00
## Estado_CivilDivorciado -0.24 0.22 -1.10 0.27
## Estado_CivilSoltero 0.88 0.16 5.57 0.00
El estado civil según los resultados obtenidos si influyen en la rotación del personal y la variable que mas influye es estar Soltero la cual esta 0,88 por encima de la variable de referencia que en este caso es Casado.
Cargo
modelo_Cargo <- glm(y ~ Cargo, data = rotacion_selec, family = binomial)
round(summary(modelo_Cargo)$coefficients,2)## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.66 0.72 -5.12 0.00
## CargoDirector_Manofactura 1.06 0.79 1.35 0.18
## CargoEjecutivo_Ventas 2.11 0.73 2.89 0.00
## CargoGerente 0.70 0.85 0.82 0.41
## CargoInvestigador_Cientifico 2.01 0.73 2.74 0.01
## CargoRecursos_Humanos 2.46 0.79 3.12 0.00
## CargoRepresentante_Salud 1.06 0.80 1.33 0.18
## CargoRepresentante_Ventas 3.25 0.75 4.33 0.00
## CargoTecnico_Laboratorio 2.51 0.73 3.43 0.00
La variable cargo si influye significativamente en la rotación y cargos como (como Ejecutivo de Ventas, Investigador Científico, Recursos Humanos, Representante de Ventas y Técnico de Laboratorio) tienen unos valores significativos
Años_Experiencia
modelo_AñosExp <- glm(y ~ Años_Experiencia, data = rotacion_selec, family = binomial)
round(summary(modelo_AñosExp)$coefficients,2)## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.88 0.13 -6.93 0
## Años_Experiencia -0.08 0.01 -6.39 0
Para la variable años de experiencia, el valor de -0.08 indica que entre más años de experiencia se adquieran menor es la posibilidad de rotar.
Ingreso_Mensual
modelo_Ingr <- glm(y ~ Ingreso_Mensual, data = rotacion_selec, family = binomial)
round(summary(modelo_Ingr)$coefficients,2)## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.93 0.13 -7.19 0
## Ingreso_Mensual 0.00 0.00 -5.88 0
Se puede decir que entre mayor sea el aumento del ingreso mensual hay una posibilidad de hacer rotación, esto puede suceder más en los cargos que tienen horas extras o incentivos por ventas.
Antiguedad_Cargo
modelo_AntCargo<- glm(y ~ Antigüedad_Cargo, data = rotacion_selec, family = binomial)
round(summary(modelo_AntCargo)$coefficients,2)## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.12 0.10 -10.77 0
## Antigüedad_Cargo -0.15 0.02 -6.03 0
Para la variable años de experiencia, el valor de -0.15 indica que entre más años de Antigüedad se tengan en la empresa menor es la posibilidad de hacer rotación.
Realiza 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.
modelo_logistico <- glm(y ~ Campo_Educación + Estado_Civil + Cargo + Años_Experiencia + Ingreso_Mensual + Antigüedad_Cargo , data = rotacion_selec, family = binomial)
summary(modelo_logistico)##
## Call:
## glm(formula = y ~ Campo_Educación + Estado_Civil + Cargo + Años_Experiencia +
## Ingreso_Mensual + Antigüedad_Cargo, family = binomial, data = rotacion_selec)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.847e+00 1.004e+00 -3.833 0.000127 ***
## Campo_EducaciónHumanidades 9.677e-01 6.253e-01 1.548 0.121694
## Campo_EducaciónMercadeo 3.604e-01 2.703e-01 1.333 0.182412
## Campo_EducaciónOtra -1.347e-01 3.590e-01 -0.375 0.707483
## Campo_EducaciónSalud -5.686e-02 1.868e-01 -0.304 0.760872
## Campo_EducaciónTecnicos 6.118e-01 2.516e-01 2.432 0.015035 *
## Estado_CivilDivorciado -2.053e-01 2.246e-01 -0.914 0.360538
## Estado_CivilSoltero 8.120e-01 1.661e-01 4.890 1.01e-06 ***
## CargoDirector_Manofactura 1.202e+00 8.808e-01 1.364 0.172495
## CargoEjecutivo_Ventas 2.107e+00 8.459e-01 2.491 0.012742 *
## CargoGerente 5.613e-01 8.633e-01 0.650 0.515581
## CargoInvestigador_Cientifico 2.055e+00 9.275e-01 2.216 0.026705 *
## CargoRecursos_Humanos 2.246e+00 9.951e-01 2.257 0.023986 *
## CargoRepresentante_Salud 1.209e+00 8.865e-01 1.363 0.172803
## CargoRepresentante_Ventas 3.007e+00 9.568e-01 3.143 0.001673 **
## CargoTecnico_Laboratorio 2.642e+00 9.243e-01 2.858 0.004262 **
## Años_Experiencia -2.037e-02 1.817e-02 -1.121 0.262210
## Ingreso_Mensual 5.688e-05 5.017e-05 1.134 0.256903
## Antigüedad_Cargo -9.624e-02 2.863e-02 -3.361 0.000775 ***
## ---
## 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: 1145.6 on 1451 degrees of freedom
## AIC: 1183.6
##
## Number of Fisher Scoring iterations: 6
Estar soltero, en comparación con estar casado, aumenta el log-odds de la respuesta en 0.8166, este efecto es estadísticamente significativo, lo que sugiere que los empleados solteros tienen una mayor probabilidad de rotación en comparación con los empleados casados.
Igualmente sucede con los empleados que tienen una menos años de permanencia en la empresa, estos tienen más probabilidades de hacer rotación. Adicionalmente, ser representante de ventas o técnico de laboratorio tiene más posibilidades de rotar ya sea porque son cargos nuevos y no hay mucha antigüedad en el cargo.
Evaluar el poder predictivo del modelo con base en la curva ROC y el AUC.
Ahora, se hacen las predicciones probabilísticas para el modelo
Obtenemos las predicciones probabilísticas del modelo modelo_logistico para la variable de rotación.
Se realiza el calculo de la Curva ROC, usando la función roc del paquete pROC para calcular esta curva
Curva de ROC
## Area under the curve: 0.7363
Sí el resultado de la Curva ROC fuera un AUC = 0.5: El modelo no tiene capacidad de discriminación para distinguir entre la clase positiva y la clase negativa. Es decir, el modelo no es mejor que una elección aleatoria.
Sí esta entre 0.5 < AUC < 1: El modelo tiene capacidad de discriminación. Cuanto más cerca esté el valor de AUC de 1, mejor será el modelo.
Y sí el AUC = 1: El modelo tiene una capacidad de discriminación perfecta. Es capaz de distinguir perfectamente entre la clase positiva y la clase negativa sin errores
El resultado de la Curva ROC para el modelo de regresión es de 0.7363, se puede concluir que el modelo desarrollado tiene una capacidad aceptable para predecir resultados.
La evaluación del modelo se hará usando la librería Caret, es una herramienta versátil que facilita el entrenamiento, la evaluación y la comparación de modelos de aprendizaje automático ya sean modelos de clasificación o de regresión.
require(caret)
modelo_ev=train(Rotación~Campo_Educación + Estado_Civil + Cargo + Años_Experiencia +
Ingreso_Mensual + Antigüedad_Cargo,data=rotacion_selec,method="glm",family="binomial",metric="Accuracy",trControl = trainControl(method = "cv",number = 20))
modelo_ev## Generalized Linear Model
##
## 1470 samples
## 6 predictor
## 2 classes: 'No', 'Si'
##
## No pre-processing
## Resampling: Cross-Validated (20 fold)
## Summary of sample sizes: 1396, 1396, 1397, 1397, 1396, 1396, ...
## Resampling results:
##
## Accuracy Kappa
## 0.8448877 0.1047503
La librería Caret permite hacer una evaluación del rendimiento del modelo utilizando validación cruzada.
El Número de muestras que se utilizo para el rendimiento fue en este caso de 1470), a su vez se usaron 6 variables predictoras, tres cuantitativas (Campo_Educación + Estado_Civil + Cargo) y tres categóricas (Años_Experiencia + Ingreso_Mensual + Antigüedad_Cargo) y con su variable de respuesta rotación ‘Si’ y ‘No’
En el muestreo o Resampling, se usó el método de validación cruzada con 20 pliegues (20 fold), que es una técnica común para evaluar el rendimiento de un modelo al dividir los datos en subconjuntos de entrenamiento.
En cuánto, a la Precisión (Accuracy) es la proporción de predicciones correctas sobre el total de predicciones realizadas por el modelo. En este caso, la precisión es aproximadamente 0.8428, lo que significa que el modelo clasificó correctamente alrededor del 84.28% de las observaciones.
El Índice Kappa, ajusta la precisión por la posibilidad de que la clasificación correcta se deba al azar. Un kappa de 1 indica una concordancia perfecta entre las predicciones y los resultados reales, mientras que un kappa de 0 indica que la concordancia es similar a la que podría esperarse al azar.
En este caso, el índice kappa es de 0.0945, lo que sugiere que hay un baja coincidencia entre las predicciones del modelo y los resultados reales, ajustado por la concordancia al azar.
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).
Para esto, se definen los valores de cada variable para una realizar la hipótesis de la probabilidad de que un empleado haga rotación o no la haga, como se muestra en los siguientes ejemplos:
Ejemplo 1
empleado_1 <- data.frame(
`Campo_Educación` = "Ciencias",
`Cargo` = "Investigador_Cientifico", # Trabaja como ejecutivo de ventas
`Estado_Civil` = "Soltero", # Es un hombre soltero
`Ingreso_Mensual` = 1009, # tiene ingresos de 7500
`Años_Experiencia` = 8, # Vive a 5 kilometros del lugar de trabajo
`Antigüedad_Cargo` = 4 # Tiene 26 años
)Se procede a realizar la predicción del modelo
prediccion1 <- predict(modelo_logistico, newdata = empleado_1, type = "response")
print(prediccion1)## 1
## 0.186896
El resultado de la predicción de acuerdo al modelo logístico, indica que el empleado siendo un investigador cientifico con 8 años de experiencia y 4 años de antigüedad en el cargo, tiene una probabilidad de 18.68% de rotar, es decir las probabilidades son bajas de que en su cargo exista una rotación.
Ejemplo 2
empleado_2 <- data.frame(
`Campo_Educación` = "Humanidades",
`Cargo` = "Recursos_Humanos", # Trabaja como ejecutivo de ventas
`Estado_Civil` = "Soltero", # Es un hombre soltero
`Ingreso_Mensual` = 3000, # tiene ingresos de 7500
`Años_Experiencia` = 1, # Vive a 5 kilometros del lugar de trabajo
`Antigüedad_Cargo` = 0 # Tiene 26 años
)Se procede a realizar la predicción del modelo
prediccion2 <- predict(modelo_logistico, newdata = empleado_2, type = "response")
print(prediccion2)## 1
## 0.5815768
El resultado de la predicción de acuerdo al modelo logístico, indica que el empleado de recursos humanos con 1 año de experiencia y 0 años de antigüedad en el cargo, tiene una probabilidad de 58.16% de rotar, es decir las probabilidades son altas de que en su cargo exista una rotación. En relación con el empleado anterior, se puede deducir que entre más años de experiencia y antigüedad en el cargo tengan los empleados es menos probable que hagan rotación.
Ejemplo 3
empleado_3 <- data.frame(
`Campo_Educación` = "Mercadeo",
`Cargo` = "Representante_Ventas", # Trabaja como ejecutivo de ventas
`Estado_Civil` = "Soltero", # Es un hombre soltero
`Ingreso_Mensual` = 2500, # tiene ingresos de 7500
`Años_Experiencia` = 1, # Vive a 5 kilometros del lugar de trabajo
`Antigüedad_Cargo` = 0 # Tiene 26 años
)Se procede a realizar la predicción del modelo
prediccion3 <- predict(modelo_logistico, newdata = empleado_3, type = "response")
print(prediccion3)## 1
## 0.6116368
El resultado de la predicción de acuerdo al modelo logístico, indica que el empleado de mercadeo y representante en ventas con 1 año de experiencia y 0 años de antigüedad en el cargo, tiene una probabilidad de 61.16% de rotar, es decir las probabilidades son altas de que en su cargo exista una rotación.
El resultado de la Curva ROC para el modelo de regresión logístico implementado para dar la probailidad de que exista una rotación entre los empleados de la compañia eses de 0.7363, se puede concluir que el modelo desarrollado tiene una capacidad aceptable para predecir resultados, con un accuracy de 0.8428% lo que significa que el modelo clasificó correctamente alrededor del 84.28% de las observaciones.
En resumen, el modelo parece tener una precisión relativamente alta, pero el bajo valor de kappa sugiere que la precisión podría ser debida en parte al azar. Es importante considerar otras métricas de evaluación del modelo para obtener una comprensión completa de su rendimiento.
Finalmente, se concluye que entre más años de experiencia y antigüedad en el cargo tengan los empleados es menos probable que hagan rotación, pero si es el caso contrario y el cargo es de representante de ventas o técnicos de laboratorio y tienen un estado civil soltero es muy probable que hagan rotación.