Se cargara la informacion para realizar esta actividad
library(readxl)
## Warning: package 'readxl' was built under R version 4.3.3
rotacion<- read_excel("C:/Users/Mindlabs/Desktop/MAESTRIA_CIENCIA DE DATOS/Semestre_2/Modelos Estadísticos para la toma de decisiones/ACTIVIDAD_3/mi_archivo.xlsx")
A continuacion se selecionaran 3 varables cualiativa y 3 cuantitativas donde se cree que seran ideales para explicar la variable rotacion
Variables cualitativas
Viaje de Negocios: Podría influir en la rotación si los viajes son percibidos como un inconveniente o como una oportunidad.
Departamento: Diferentes departamentos pueden tener culturas y dinámicas que afecten la rotación.
Estado Civil: Podría influir en la estabilidad laboral y en la decisión de cambiar de trabajo.
Variables Cuantitativas Sugeridas
Edad: La edad puede influir en la probabilidad de rotación; por ejemplo, los trabajadores más jóvenes pueden ser más propensos a cambiar de trabajo.
Distancia desde la Casa: La distancia al trabajo puede ser un factor de estrés que contribuye a la rotación.
Ingreso Mensual: La satisfacción salarial es un predictor clave de la rotación de empleados.
# Asegúrate de que las librerías necesarias están instaladas y luego cárgalas
if (!requireNamespace("knitr", quietly = TRUE)) install.packages("knitr")
library(knitr)
## Warning: package 'knitr' was built under R version 4.3.3
# Crear una tabla de distribución de la rotación
tabla_1 <- table(rotacion$Rotacion)
# Usar kable para crear una tabla formateada
tabla_formateada <- kable(tabla_1, caption = "Distribución rotación por Empleado")
# Imprimir la tabla formateada
print(tabla_formateada)
##
##
## Table: Distribución rotación por Empleado
##
## |Var1 | Freq|
## |:----|----:|
## |No | 1233|
## |Si | 237|
datos_1 <- c(0.84, 0.16)
categorías <- c("NO", "SI")
colores <- c("red", "blue")
pie(datos_1, labels = categorías, col = colores, main = "Rotación Empleados")
# Si 'Rotación' es un factor o texto y las comillas son incorrectas
#rotacion <- rotacion %>%
# mutate(Rotación = recode(Rotación, `Si` = 1, `No` = 0))
#rotacion$Rotación
La mayoría de los empleados no han cambiado de cargo, lo que podría interpretarse como una señal de estabilidad laboral dentro de la organización.
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
library(ggpubr)
## Warning: package 'ggpubr' was built under R version 4.3.3
g1 = ggplot(rotacion, aes(x = Edad)) + geom_histogram() + theme_gray()
g2 = ggplot(rotacion, aes(x = Ingreso_Mensual)) + geom_histogram() + theme_gray()
g3 = ggplot(rotacion, aes(x = Distancia_Casa)) + geom_histogram() + theme_gray()
g4 = ggplot(rotacion, aes(x = `Viaje de Negocios`)) + geom_bar() + theme_gray()
g5 = ggplot(rotacion, aes(x = Departamento)) + geom_bar() + theme_gray()
g6 = ggplot(rotacion, aes(x = Estado_Civil)) + geom_bar() + theme_gray()
ggarrange(g1, g2, g3, g4, g5, g6, labels = c("A", "B", "C", "D", "E", "F"), ncol = 3, nrow = 2)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
La imagen muestra seis histogramas que representan la distribución de seis variables diferentes dentro de una organización. Cada panel (de la A a la F) muestra la frecuencia de los empleados según distintas categorías o valores de cada variable.
Panel A - Edad: La mayoría de los empleados se concentran alrededor de los 30 años, con menos frecuencia a medida que la edad aumenta. Esto podría indicar una fuerza laboral relativamente joven.
Panel B - Ingreso Mensual: Hay una concentración significativa de empleados con ingresos mensuales en el extremo inferior del espectro, disminuyendo a medida que el ingreso aumenta. Esto sugiere que la mayoría de los empleados pueden estar en puestos de nivel de entrada o medio con salarios más bajos.
Panel C - Distancia desde Casa: La mayoría de los empleados vive cerca de su lugar de trabajo, con una distribución que disminuye rápidamente a medida que la distancia aumenta. Esto sugiere que la proximidad al lugar de trabajo es común entre los empleados.
Panel D - Viaje de Negocios: La mayoría de los empleados viajan raramente por negocios, con un número significativamente menor que viaja frecuentemente. Esto puede reflejar la naturaleza del trabajo que no requiere mucho viaje, o una política empresarial de viajes limitados.
Panel E - Departamento: El departamento con más empleados es ‘Ventas’, seguido de ‘RH’ (Recursos Humanos), y menos en ‘IyD’ (Investigación y Desarrollo). Esto podría reflejar una organización con un fuerte enfoque en las ventas o simplemente una estructura organizativa donde hay más personal necesario en estas áreas.
Panel F - Estado Civil: La distribución del estado civil muestra que hay más empleados solteros que casados o divorciados. Esto puede tener implicaciones en las políticas de recursos humanos y beneficios relacionados con la familia.
Implicaciones para la Rotación: Estas distribuciones pueden proporcionar insights sobre la rotación si se cruzan con la variable de rotación (no mostrada en los histogramas). Por ejemplo, si la mayoría de los empleados jóvenes o los solteros están rotando, podría indicar una tendencia donde los empleados más jóvenes o solteros buscan más oportunidades o tienen menos ataduras que los hacen quedarse en un solo lugar. La relación entre estas variables y la rotación podría ser explorada más a fondo con análisis adicionales como pruebas de chi-cuadrado o modelos de regresión logística.
`Viaje de Negocios`
ggplot(rotacion, aes(x = Estado_Civil, fill = Rotacion, group = Rotacion)) +
geom_bar() +
labs(title = "Rotación por Estado civil",
x = "Estado cilvil",
y = "Conteo") +
scale_fill_manual(values = c("No" = "#262B37", "Si" = "#2094AA"))
`Viaje de Negocio`
ggplot(rotacion, aes(x =`Viaje de Negocios`, fill = Rotacion, group = Rotacion)) +
geom_bar() +
labs(title = "Rotacion por Viaje de Negocios",
x = "Viaje de Negocios",
y = "Conteo") +
scale_fill_manual(values = c("No" = "#262B37", "Si" = "#2094AA"))
Departamento
ggplot(rotacion, aes(x =Departamento, fill = Rotacion, group = Rotacion)) +
geom_bar() +
labs(title = "Rotacion por Departamento",
x = "Departamento",
y = "Conteo") +
scale_fill_manual(values = c("No" = "#262B37", "Si" = "#2094AA"))
Edad
ggplot(rotacion, aes(x = Edad, fill = Rotacion, group = Rotacion)) +
geom_bar() +
labs(title = "Rotación por Edad",
x = "Edad",
y = "Conteo") +
scale_fill_manual(values = c("No" = "#262B37", "Si" = "#2094AA"))+
scale_x_continuous(breaks = unique(as.numeric(rotacion$Edad)), labels = unique(rotacion$Edad)) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
Ingreso Mensual
ggplot(rotacion, aes(x = Ingreso_Mensual, fill = Rotacion, group = Rotacion)) +
labs(title = "Grafico de Densidad Ingreso Mensual - Rotacion")+
geom_density(alpha = 0.4) +
scale_fill_manual(values = c("No" = "#2071E8", "Si" = "#F63E66"))
Distancia de la casa
ggplot(rotacion, aes(x = Distancia_Casa, fill = Rotacion, group = Rotacion)) +
labs(title = "Grafico de Densidad Distancia a casa - Rotacion")+
geom_density(alpha = 0.4) +
scale_fill_manual(values = c("No" = "#2071E8", "Si" = "#F63E66"))
# Asumiendo que 'datos_rotacion' es tu dataframe y que tienes variables como 'EstadoCivil', 'ViajeNegocios', etc.
rotacion$Rotacion <- factor(rotacion$Rotacion)
rotacion$Estado_Civil <- factor(rotacion$Estado_Civil)
rotacion$`Viaje de Negocios` <- factor(rotacion$`Viaje de Negocios`)
rotacion$Departamento <- factor(rotacion$Departamento)
# Continúa para cada variable cualitativa
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
rotacion$Estado_Civil <- recode(rotacion$Estado_Civil,
"Casado" = 1,
"Divorciado" = 2,
"Soltero" = 3)
rotacion$`Viaje de Negocios` <- recode(rotacion$`Viaje de Negocios`,
"Frecuentemente" = 1,
"Raramente" = 2,
"No_Viaja" = 3)
rotacion$Departamento <- recode(rotacion$Departamento,
"Ventas" = 1,
"IyD" = 2,
"RH" = 3)
# Continúa para cada categoría y variable cualitativa
rotacion$Rotacion<-recode(rotacion$Rotacion,"Si"=1,"No"=0)
modelo1 <- glm(Rotacion ~ Estado_Civil + `Viaje de Negocios`+Departamento
+Edad+Ingreso_Mensual+Distancia_Casa,data=rotacion, family = binomial())
summary(modelo1)
##
## Call:
## glm(formula = Rotacion ~ Estado_Civil + `Viaje de Negocios` +
## Departamento + Edad + Ingreso_Mensual + Distancia_Casa, family = binomial(),
## data = rotacion)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 7.477e-01 5.224e-01 1.431 0.152410
## Estado_Civil 4.008e-01 8.478e-02 4.728 2.27e-06 ***
## `Viaje de Negocios` -6.682e-01 1.381e-01 -4.837 1.32e-06 ***
## Departamento -3.993e-01 1.439e-01 -2.775 0.005518 **
## Edad -2.734e-02 9.765e-03 -2.799 0.005119 **
## Ingreso_Mensual -1.051e-04 2.525e-05 -4.161 3.16e-05 ***
## Distancia_Casa 2.997e-02 8.798e-03 3.407 0.000657 ***
## ---
## 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: 1176.2 on 1463 degrees of freedom
## AIC: 1190.2
##
## Number of Fisher Scoring iterations: 5
(Intercept): El intercepto representa el
log-odds de Rotacion cuando todas las
variables predictoras son cero. En este contexto, es el log-odds de que
la rotación ocurra para el nivel de referencia de las variables
categóricas y el valor cero de las variables continuas.
Variables Predictoras:
Estado_Civil: El coeficiente es positivo y
significativo, lo que sugiere que hay una mayor probabilidad de rotación
asociada con ciertas categorías dentro de
Estado_Civil en comparación con la
categoría de referencia (que no se muestra en la salida).
Viaje de Negocios: El coeficiente es negativo y significativo, lo que indica que los que viajan por negocios tienen una probabilidad más baja de rotación en comparación con la categoría de referencia.
Departamento: El coeficiente para esta variable también es negativo y significativo, sugiriendo que pertenecer a ciertos departamentos está asociado con una menor probabilidad de rotación.
Edad: El coeficiente negativo y significativo indica que a medida que la edad aumenta, la probabilidad de rotación disminuye.
Ingreso_Mensual: Tiene un coeficiente negativo significativo, lo que implica que mayores ingresos mensuales están asociados con una menor probabilidad de rotación.
Distancia_Casa: El coeficiente positivo y significativo indica que a mayor distancia desde la casa al lugar de trabajo, mayor es la probabilidad de rotación.
library(vcd)
## Warning: package 'vcd' was built under R version 4.3.3
## Loading required package: grid
pp1= predict.glm(modelo1, newdata = rotacion, type = "response")
resp = table(rotacion$Rotacion, ifelse(pp1 >0.2, 1, 0), dnn = c("observaciones", "predicciones"))
resp
## predicciones
## observaciones 0 1
## 0 936 297
## 1 99 138
sum(diag(resp)/sum(resp))
## [1] 0.7306122
library(ROCR)
## Warning: package 'ROCR' was built under R version 4.3.3
prediccion_rotacion= ROCR::prediction(pp1,rotacion$Rotacion)
perf= performance(prediction.obj = prediccion_rotacion, "tpr", "fpr")
plot(perf,xlab = "Specificity", ylab = "Sensitivity", col="red")
abline(a=0, b=1, col="gold")
grid()
El resumen del modelo de regresión logística y la curva ROC que has proporcionado ofrece varias conclusiones clave sobre la relación entre las variables predictoras y la probabilidad de rotación (si un empleado cambiará de trabajo), así como la capacidad del modelo para predecir correctamente la rotación. Aquí hay algunas conclusiones basadas en la información proporcionada:
Relación de las Variables con la Rotación:
Las variables Estado_Civil,
Viaje de Negocios,
Departamento,
Edad,
Ingreso_Mensual y
Distancia_Casa son estadísticamente
significativas en el modelo, lo que implica que tienen un efecto
significativo sobre la probabilidad de que un empleado experimente
rotación.
Los signos de los coeficientes indican la dirección de la
relación: por ejemplo, la Edad tiene un
coeficiente negativo, lo que sugiere que a mayor edad, es menos probable
que los empleados cambien de trabajo, mientras que una mayor
Distancia_Casa aumenta la probabilidad de
rotación.
Efectividad del Modelo: