#Cargue Librerias
library(readxl)
library(ggplot2)
library(CGPfunctions)
library(sqldf)
## Loading required package: gsubfn
## Loading required package: proto
## Loading required package: RSQLite
library(fastDummies)
library(car)
## Loading required package: carData
#cargue de datos desde directorio personal
datos1 = read_excel("G:/TRABAJO/DOCENCIA/KONRAND LORENZ/Rotacion_Entrenar.xlsx")
head(datos1)
## # A tibble: 6 × 24
## Rotacion Edad Viaje_Ne…¹ Depar…² Dista…³ Educa…⁴ Campo…⁵ Satis…⁶ Genero Cargo
## <chr> <dbl> <chr> <chr> <dbl> <dbl> <chr> <dbl> <chr> <chr>
## 1 Si 41 Raramente Ventas 1 2 Cienci… 2 F Ejec…
## 2 No 49 Frecuente… IyD 8 1 Cienci… 3 M Inve…
## 3 Si 37 Raramente IyD 2 2 Otra 4 M Tecn…
## 4 No 33 Frecuente… IyD 3 4 Cienci… 4 F Inve…
## 5 No 27 Raramente IyD 2 1 Salud 1 M Tecn…
## 6 No 32 Frecuente… IyD 2 2 Cienci… 4 M Tecn…
## # … with 14 more variables: Satisfacion_Laboral <dbl>, Estado_Civil <chr>,
## # Ingreso_Mensual <dbl>, Trabajos_Anteriores <dbl>, Horas_Extra <chr>,
## # Porcentaje_aumento_salarial <dbl>, Rendimiento_Laboral <dbl>,
## # Anos_Experiencia <dbl>, Capacitaciones <dbl>,
## # Equilibrio_Trabajo_Vida <dbl>, Antiguedad <dbl>, Antiguedad_Cargo <dbl>,
## # Anos_ultima_promocion <dbl>, Anos_acargo_con_mismo_jefe <dbl>, and
## # abbreviated variable names ¹Viaje_Negocios, ²Departamento, …
#Tasa del evento de interes
prop.table(table(datos1$Rotacion))*100
##
## No Si
## 83.87755 16.12245
#Analisis Univariado variables Continuas
#Edad
Prom_Edad=mean(datos1$Edad)
Desv_Edad=sd(datos1$Edad)
P25_Edad=quantile(datos1$Edad, prob=c(0.25))
P50_Edad=quantile(datos1$Edad, prob=c(0.50))
P75_Edad=quantile(datos1$Edad, prob=c(0.75))
data.frame(Prom_Edad,Desv_Edad,P25_Edad,P50_Edad,P75_Edad)
## Prom_Edad Desv_Edad P25_Edad P50_Edad P75_Edad
## 25% 36.92381 9.135373 30 36 43
#Ingreso Mensual
Prom_Ingreso=mean(datos1$Ingreso_Mensual)
Desv_Ingreso=sd(datos1$Ingreso_Mensual)
P25_Ingreso=quantile(datos1$Ingreso_Mensual, prob=c(0.25))
P50_Ingreso=quantile(datos1$Ingreso_Mensual, prob=c(0.50))
P75_Ingreso=quantile(datos1$Ingreso_Mensual, prob=c(0.75))
data.frame(Prom_Ingreso,Desv_Ingreso,P25_Ingreso,P50_Ingreso,P75_Ingreso)
## Prom_Ingreso Desv_Ingreso P25_Ingreso P50_Ingreso P75_Ingreso
## 25% 6502.931 4707.957 2911 4919 8379
#Analisis Univariado Categoricas
#Genero
PlotXTabs(datos1, Rotacion, Genero, "percent")
## Plotted dataset datos1 variables Rotacion by Genero
#Horas Extras
PlotXTabs(datos1, Rotacion, Horas_Extra, "percent")
## Plotted dataset datos1 variables Rotacion by Horas_Extra
#Estado Civil
PlotXTabs(datos1, Rotacion, Estado_Civil, "percent")
## Plotted dataset datos1 variables Rotacion by Estado_Civil
#Grafico Edad
ggplot(datos1,aes(x=Edad))+geom_histogram()+theme_bw()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
#Grafico Ingreso Mensual
ggplot(datos1,aes(x=Ingreso_Mensual))+geom_histogram()+theme_bw()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
#Grafico Antiguedad
ggplot(datos1,aes(x=Antiguedad))+geom_histogram()+theme_bw()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
#Analisis Bivariado
#edad vs rotacion
boxplot(datos1$Edad~datos1$Rotacion,
xlab = 'Rotacion',
ylab = 'Edad',
main= 'Rotacion vs Edad',
col= 'ivory')
sqldf('select Rotacion,
avg(Edad) as Edad_Prom,
stdev(Edad) as Edad_desv
from datos1
group by Rotacion
')
## Rotacion Edad_Prom Edad_desv
## 1 No 37.56123 8.88836
## 2 Si 33.60759 9.68935
#Antiguedad vs Rotacion
boxplot(datos1$Antiguedad~datos1$Rotacion,
xlab = 'Rotacion',
ylab = 'Antiguedad',
main= 'Rotacion vs Antiguedad',
col= 'khaki')
sqldf('select Rotacion,
avg(Antiguedad) as Antiguedad_Prom,
stdev(Antiguedad) as Antiguedad_desv
from datos1
group by Rotacion
')
## Rotacion Antiguedad_Prom Antiguedad_desv
## 1 No 7.369019 6.096298
## 2 Si 5.130802 5.949984
#Ingreso vs ROtacion
boxplot(datos1$Ingreso_Mensual~datos1$Rotacion,
xlab = 'Rotacion',
ylab = 'Ingreso Mensual',
main= 'Rotacion vs Ingreso Mensual',
col= 'lightcyan')
sqldf('select Rotacion,
avg(Ingreso_Mensual) as Ingreso_Mensual_Prom,
stdev(Ingreso_Mensual) as Ingreso_Mensual_desv
from datos1
group by Rotacion
')
## Rotacion Ingreso_Mensual_Prom Ingreso_Mensual_desv
## 1 No 6832.740 4818.208
## 2 Si 4787.093 3640.210
#Departamento
PlotXTabs(datos1, Rotacion, Departamento, "percent")
## Plotted dataset datos1 variables Rotacion by Departamento
#Campo Educacion
PlotXTabs(datos1, Rotacion, Campo_Educacion, "percent")
## Plotted dataset datos1 variables Rotacion by Campo_Educacion
#Cargo
prop.table(table(datos1$Cargo))*100
##
## Director_Investigación Director_Manofactura Ejecutivo_Ventas
## 5.442177 9.863946 22.176871
## Gerente Investigador_Cientifico Recursos_Humanos
## 6.938776 19.863946 3.537415
## Representante_Salud Representante_Ventas Tecnico_Laboratorio
## 8.911565 5.646259 17.619048
#Cargo
prop.table(table(datos1$Estado_Civil))*100
##
## Casado Divorciado Soltero
## 45.78231 22.24490 31.97279
PREPARACION DE LOS DATOS
#cambio de la variable objetivo
datos1$Rotacion[datos1$Rotacion=="Si"] = 1
datos1$Rotacion[datos1$Rotacion=="No"] = 0
datos1$Rotacion=as.factor(datos1$Rotacion)
head(datos1,5)
## # A tibble: 5 × 24
## Rotacion Edad Viaje_Ne…¹ Depar…² Dista…³ Educa…⁴ Campo…⁵ Satis…⁶ Genero Cargo
## <fct> <dbl> <chr> <chr> <dbl> <dbl> <chr> <dbl> <chr> <chr>
## 1 1 41 Raramente Ventas 1 2 Cienci… 2 F Ejec…
## 2 0 49 Frecuente… IyD 8 1 Cienci… 3 M Inve…
## 3 1 37 Raramente IyD 2 2 Otra 4 M Tecn…
## 4 0 33 Frecuente… IyD 3 4 Cienci… 4 F Inve…
## 5 0 27 Raramente IyD 2 1 Salud 1 M Tecn…
## # … with 14 more variables: Satisfacion_Laboral <dbl>, Estado_Civil <chr>,
## # Ingreso_Mensual <dbl>, Trabajos_Anteriores <dbl>, Horas_Extra <chr>,
## # Porcentaje_aumento_salarial <dbl>, Rendimiento_Laboral <dbl>,
## # Anos_Experiencia <dbl>, Capacitaciones <dbl>,
## # Equilibrio_Trabajo_Vida <dbl>, Antiguedad <dbl>, Antiguedad_Cargo <dbl>,
## # Anos_ultima_promocion <dbl>, Anos_acargo_con_mismo_jefe <dbl>, and
## # abbreviated variable names ¹Viaje_Negocios, ²Departamento, …
#Dicotomizar variables categoricas
datos1 = dummy_cols(datos1, select_columns = c("Viaje_Negocios","Departamento",
"Campo_Educacion","Genero",
"Cargo","Estado_Civil","Horas_Extra"))
colnames(datos1)
## [1] "Rotacion" "Edad"
## [3] "Viaje_Negocios" "Departamento"
## [5] "Distancia_Casa" "Educacion"
## [7] "Campo_Educacion" "Satisfaccion_Ambiental"
## [9] "Genero" "Cargo"
## [11] "Satisfacion_Laboral" "Estado_Civil"
## [13] "Ingreso_Mensual" "Trabajos_Anteriores"
## [15] "Horas_Extra" "Porcentaje_aumento_salarial"
## [17] "Rendimiento_Laboral" "Anos_Experiencia"
## [19] "Capacitaciones" "Equilibrio_Trabajo_Vida"
## [21] "Antiguedad" "Antiguedad_Cargo"
## [23] "Anos_ultima_promocion" "Anos_acargo_con_mismo_jefe"
## [25] "Viaje_Negocios_Frecuentemente" "Viaje_Negocios_No_Viaja"
## [27] "Viaje_Negocios_Raramente" "Departamento_IyD"
## [29] "Departamento_RH" "Departamento_Ventas"
## [31] "Campo_Educacion_Ciencias" "Campo_Educacion_Humanidades"
## [33] "Campo_Educacion_Mercadeo" "Campo_Educacion_Otra"
## [35] "Campo_Educacion_Salud" "Campo_Educacion_Tecnicos"
## [37] "Genero_F" "Genero_M"
## [39] "Cargo_Director_Investigación" "Cargo_Director_Manofactura"
## [41] "Cargo_Ejecutivo_Ventas" "Cargo_Gerente"
## [43] "Cargo_Investigador_Cientifico" "Cargo_Recursos_Humanos"
## [45] "Cargo_Representante_Salud" "Cargo_Representante_Ventas"
## [47] "Cargo_Tecnico_Laboratorio" "Estado_Civil_Casado"
## [49] "Estado_Civil_Divorciado" "Estado_Civil_Soltero"
## [51] "Horas_Extra_No" "Horas_Extra_Si"
#Creacion del dataset train y test
ntrain <- nrow(datos1)*0.8
ntest <- nrow(datos1)*0.2
c(ntrain,ntest)
## [1] 1176 294
set.seed(349)
index_train<-sample(1:nrow(datos1),size = ntrain)
train<-datos1[index_train,]
test<-datos1[-index_train,]
MODELO
#estimacion del modelo
mod_glm_train <- glm(Rotacion ~ Edad+Viaje_Negocios_Frecuentemente+
Departamento_RH+Departamento_Ventas+Distancia_Casa+Educacion+Viaje_Negocios_Raramente+ Campo_Educacion_Humanidades+Campo_Educacion_Mercadeo+Satisfaccion_Ambiental+
Campo_Educacion_Tecnicos+Genero_F+Satisfacion_Laboral+
Estado_Civil_Soltero+Estado_Civil_Casado+Ingreso_Mensual+Trabajos_Anteriores+
Horas_Extra_Si+Porcentaje_aumento_salarial+Rendimiento_Laboral+Anos_Experiencia+
Capacitaciones+Equilibrio_Trabajo_Vida+Antiguedad+Antiguedad_Cargo+
Anos_ultima_promocion+Anos_acargo_con_mismo_jefe,
data = train,
family = "binomial")
summary(mod_glm_train)
##
## Call:
## glm(formula = Rotacion ~ Edad + Viaje_Negocios_Frecuentemente +
## Departamento_RH + Departamento_Ventas + Distancia_Casa +
## Educacion + Viaje_Negocios_Raramente + Campo_Educacion_Humanidades +
## Campo_Educacion_Mercadeo + Satisfaccion_Ambiental + Campo_Educacion_Tecnicos +
## Genero_F + Satisfacion_Laboral + Estado_Civil_Soltero + Estado_Civil_Casado +
## Ingreso_Mensual + Trabajos_Anteriores + Horas_Extra_Si +
## Porcentaje_aumento_salarial + Rendimiento_Laboral + Anos_Experiencia +
## Capacitaciones + Equilibrio_Trabajo_Vida + Antiguedad + Antiguedad_Cargo +
## Anos_ultima_promocion + Anos_acargo_con_mismo_jefe, family = "binomial",
## data = train)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.8487 -0.5152 -0.2804 -0.1020 3.3974
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 2.539e-01 1.279e+00 0.198 0.842696
## Edad -3.886e-02 1.509e-02 -2.576 0.009990 **
## Viaje_Negocios_Frecuentemente 1.709e+00 4.326e-01 3.950 7.82e-05 ***
## Departamento_RH -8.484e-02 6.878e-01 -0.123 0.901833
## Departamento_Ventas 6.783e-01 2.364e-01 2.869 0.004117 **
## Distancia_Casa 4.517e-02 1.170e-02 3.862 0.000112 ***
## Educacion 6.505e-02 9.550e-02 0.681 0.495803
## Viaje_Negocios_Raramente 8.994e-01 3.958e-01 2.272 0.023073 *
## Campo_Educacion_Humanidades 1.407e+00 8.812e-01 1.596 0.110413
## Campo_Educacion_Mercadeo 5.941e-02 3.544e-01 0.168 0.866860
## Satisfaccion_Ambiental -3.656e-01 9.102e-02 -4.017 5.89e-05 ***
## Campo_Educacion_Tecnicos 1.009e+00 3.075e-01 3.282 0.001031 **
## Genero_F -4.560e-01 2.001e-01 -2.279 0.022647 *
## Satisfacion_Laboral -3.935e-01 8.756e-02 -4.494 6.99e-06 ***
## Estado_Civil_Soltero 1.643e+00 3.023e-01 5.436 5.45e-08 ***
## Estado_Civil_Casado 6.625e-01 2.973e-01 2.229 0.025834 *
## Ingreso_Mensual -1.398e-04 4.303e-05 -3.249 0.001159 **
## Trabajos_Anteriores 1.771e-01 4.121e-02 4.297 1.73e-05 ***
## Horas_Extra_Si 1.852e+00 2.069e-01 8.954 < 2e-16 ***
## Porcentaje_aumento_salarial -3.562e-02 4.185e-02 -0.851 0.394740
## Rendimiento_Laboral 2.917e-01 4.304e-01 0.678 0.497843
## Anos_Experiencia -5.981e-02 3.177e-02 -1.882 0.059784 .
## Capacitaciones -1.575e-01 7.842e-02 -2.009 0.044552 *
## Equilibrio_Trabajo_Vida -4.001e-01 1.337e-01 -2.992 0.002770 **
## Antiguedad 1.040e-01 4.431e-02 2.347 0.018917 *
## Antiguedad_Cargo -1.262e-01 4.963e-02 -2.543 0.010980 *
## Anos_ultima_promocion 2.032e-01 4.744e-02 4.282 1.85e-05 ***
## Anos_acargo_con_mismo_jefe -1.771e-01 5.302e-02 -3.340 0.000837 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1030.25 on 1175 degrees of freedom
## Residual deviance: 721.34 on 1148 degrees of freedom
## AIC: 777.34
##
## Number of Fisher Scoring iterations: 6
library(MASS)
library(car)
library(glmnet)
## Loading required package: Matrix
## Loaded glmnet 4.1-4
#depuracion de variables
step_train<- stepAIC(mod_glm_train, direction="both")
## Start: AIC=777.34
## Rotacion ~ Edad + Viaje_Negocios_Frecuentemente + Departamento_RH +
## Departamento_Ventas + Distancia_Casa + Educacion + Viaje_Negocios_Raramente +
## Campo_Educacion_Humanidades + Campo_Educacion_Mercadeo +
## Satisfaccion_Ambiental + Campo_Educacion_Tecnicos + Genero_F +
## Satisfacion_Laboral + Estado_Civil_Soltero + Estado_Civil_Casado +
## Ingreso_Mensual + Trabajos_Anteriores + Horas_Extra_Si +
## Porcentaje_aumento_salarial + Rendimiento_Laboral + Anos_Experiencia +
## Capacitaciones + Equilibrio_Trabajo_Vida + Antiguedad + Antiguedad_Cargo +
## Anos_ultima_promocion + Anos_acargo_con_mismo_jefe
##
## Df Deviance AIC
## - Departamento_RH 1 721.36 775.36
## - Campo_Educacion_Mercadeo 1 721.37 775.37
## - Rendimiento_Laboral 1 721.80 775.80
## - Educacion 1 721.81 775.81
## - Porcentaje_aumento_salarial 1 722.07 776.07
## <none> 721.34 777.34
## - Campo_Educacion_Humanidades 1 724.02 778.02
## - Anos_Experiencia 1 725.03 779.03
## - Capacitaciones 1 725.46 779.46
## - Antiguedad 1 726.53 780.53
## - Estado_Civil_Casado 1 726.64 780.64
## - Genero_F 1 726.66 780.66
## - Viaje_Negocios_Raramente 1 727.19 781.19
## - Antiguedad_Cargo 1 727.76 781.76
## - Edad 1 728.32 782.32
## - Departamento_Ventas 1 729.39 783.39
## - Equilibrio_Trabajo_Vida 1 730.29 784.29
## - Campo_Educacion_Tecnicos 1 731.47 785.47
## - Anos_acargo_con_mismo_jefe 1 731.93 785.93
## - Ingreso_Mensual 1 732.85 786.85
## - Distancia_Casa 1 736.10 790.10
## - Satisfaccion_Ambiental 1 737.87 791.87
## - Trabajos_Anteriores 1 739.53 793.53
## - Viaje_Negocios_Frecuentemente 1 739.63 793.63
## - Anos_ultima_promocion 1 740.19 794.19
## - Satisfacion_Laboral 1 742.12 796.12
## - Estado_Civil_Soltero 1 756.33 810.33
## - Horas_Extra_Si 1 807.63 861.63
##
## Step: AIC=775.36
## Rotacion ~ Edad + Viaje_Negocios_Frecuentemente + Departamento_Ventas +
## Distancia_Casa + Educacion + Viaje_Negocios_Raramente + Campo_Educacion_Humanidades +
## Campo_Educacion_Mercadeo + Satisfaccion_Ambiental + Campo_Educacion_Tecnicos +
## Genero_F + Satisfacion_Laboral + Estado_Civil_Soltero + Estado_Civil_Casado +
## Ingreso_Mensual + Trabajos_Anteriores + Horas_Extra_Si +
## Porcentaje_aumento_salarial + Rendimiento_Laboral + Anos_Experiencia +
## Capacitaciones + Equilibrio_Trabajo_Vida + Antiguedad + Antiguedad_Cargo +
## Anos_ultima_promocion + Anos_acargo_con_mismo_jefe
##
## Df Deviance AIC
## - Campo_Educacion_Mercadeo 1 721.39 773.39
## - Rendimiento_Laboral 1 721.81 773.81
## - Educacion 1 721.82 773.82
## - Porcentaje_aumento_salarial 1 722.08 774.08
## <none> 721.36 775.36
## - Anos_Experiencia 1 725.04 777.04
## + Departamento_RH 1 721.34 777.34
## - Capacitaciones 1 725.46 777.46
## - Campo_Educacion_Humanidades 1 726.00 778.00
## - Antiguedad 1 726.53 778.53
## - Estado_Civil_Casado 1 726.67 778.67
## - Genero_F 1 726.68 778.68
## - Viaje_Negocios_Raramente 1 727.19 779.19
## - Antiguedad_Cargo 1 727.77 779.77
## - Edad 1 728.37 780.37
## - Departamento_Ventas 1 729.53 781.53
## - Equilibrio_Trabajo_Vida 1 730.42 782.42
## - Campo_Educacion_Tecnicos 1 731.50 783.50
## - Anos_acargo_con_mismo_jefe 1 731.93 783.93
## - Ingreso_Mensual 1 732.85 784.85
## - Distancia_Casa 1 736.12 788.12
## - Satisfaccion_Ambiental 1 737.87 789.87
## - Trabajos_Anteriores 1 739.61 791.61
## - Viaje_Negocios_Frecuentemente 1 739.63 791.63
## - Anos_ultima_promocion 1 740.27 792.27
## - Satisfacion_Laboral 1 742.14 794.14
## - Estado_Civil_Soltero 1 756.41 808.41
## - Horas_Extra_Si 1 807.70 859.70
##
## Step: AIC=773.39
## Rotacion ~ Edad + Viaje_Negocios_Frecuentemente + Departamento_Ventas +
## Distancia_Casa + Educacion + Viaje_Negocios_Raramente + Campo_Educacion_Humanidades +
## Satisfaccion_Ambiental + Campo_Educacion_Tecnicos + Genero_F +
## Satisfacion_Laboral + Estado_Civil_Soltero + Estado_Civil_Casado +
## Ingreso_Mensual + Trabajos_Anteriores + Horas_Extra_Si +
## Porcentaje_aumento_salarial + Rendimiento_Laboral + Anos_Experiencia +
## Capacitaciones + Equilibrio_Trabajo_Vida + Antiguedad + Antiguedad_Cargo +
## Anos_ultima_promocion + Anos_acargo_con_mismo_jefe
##
## Df Deviance AIC
## - Rendimiento_Laboral 1 721.84 771.84
## - Educacion 1 721.88 771.88
## - Porcentaje_aumento_salarial 1 722.12 772.12
## <none> 721.39 773.39
## - Anos_Experiencia 1 725.08 775.08
## + Campo_Educacion_Mercadeo 1 721.36 775.36
## + Departamento_RH 1 721.37 775.37
## - Capacitaciones 1 725.53 775.53
## - Campo_Educacion_Humanidades 1 726.01 776.01
## - Antiguedad 1 726.55 776.55
## - Estado_Civil_Casado 1 726.68 776.68
## - Genero_F 1 726.71 776.71
## - Viaje_Negocios_Raramente 1 727.22 777.22
## - Antiguedad_Cargo 1 727.79 777.79
## - Edad 1 728.37 778.37
## - Equilibrio_Trabajo_Vida 1 730.47 780.47
## - Campo_Educacion_Tecnicos 1 731.55 781.55
## - Anos_acargo_con_mismo_jefe 1 731.96 781.96
## - Departamento_Ventas 1 732.63 782.63
## - Ingreso_Mensual 1 732.86 782.86
## - Distancia_Casa 1 736.26 786.26
## - Satisfaccion_Ambiental 1 737.87 787.87
## - Trabajos_Anteriores 1 739.62 789.62
## - Viaje_Negocios_Frecuentemente 1 739.64 789.64
## - Anos_ultima_promocion 1 740.29 790.29
## - Satisfacion_Laboral 1 742.30 792.30
## - Estado_Civil_Soltero 1 756.41 806.41
## - Horas_Extra_Si 1 807.71 857.71
##
## Step: AIC=771.84
## Rotacion ~ Edad + Viaje_Negocios_Frecuentemente + Departamento_Ventas +
## Distancia_Casa + Educacion + Viaje_Negocios_Raramente + Campo_Educacion_Humanidades +
## Satisfaccion_Ambiental + Campo_Educacion_Tecnicos + Genero_F +
## Satisfacion_Laboral + Estado_Civil_Soltero + Estado_Civil_Casado +
## Ingreso_Mensual + Trabajos_Anteriores + Horas_Extra_Si +
## Porcentaje_aumento_salarial + Anos_Experiencia + Capacitaciones +
## Equilibrio_Trabajo_Vida + Antiguedad + Antiguedad_Cargo +
## Anos_ultima_promocion + Anos_acargo_con_mismo_jefe
##
## Df Deviance AIC
## - Porcentaje_aumento_salarial 1 722.12 770.12
## - Educacion 1 722.32 770.32
## <none> 721.84 771.84
## + Rendimiento_Laboral 1 721.39 773.39
## - Anos_Experiencia 1 725.54 773.54
## + Campo_Educacion_Mercadeo 1 721.81 773.81
## + Departamento_RH 1 721.83 773.83
## - Capacitaciones 1 726.01 774.01
## - Campo_Educacion_Humanidades 1 726.60 774.60
## - Estado_Civil_Casado 1 726.98 774.98
## - Antiguedad 1 727.05 775.05
## - Genero_F 1 727.23 775.23
## - Viaje_Negocios_Raramente 1 727.77 775.77
## - Antiguedad_Cargo 1 728.16 776.16
## - Edad 1 728.74 776.74
## - Equilibrio_Trabajo_Vida 1 731.00 779.00
## - Campo_Educacion_Tecnicos 1 732.19 780.19
## - Anos_acargo_con_mismo_jefe 1 732.37 780.37
## - Departamento_Ventas 1 733.09 781.09
## - Ingreso_Mensual 1 733.41 781.41
## - Distancia_Casa 1 736.57 784.57
## - Satisfaccion_Ambiental 1 738.65 786.65
## - Trabajos_Anteriores 1 739.88 787.88
## - Viaje_Negocios_Frecuentemente 1 740.44 788.44
## - Anos_ultima_promocion 1 740.90 788.90
## - Satisfacion_Laboral 1 742.69 790.69
## - Estado_Civil_Soltero 1 756.83 804.83
## - Horas_Extra_Si 1 808.68 856.68
##
## Step: AIC=770.12
## Rotacion ~ Edad + Viaje_Negocios_Frecuentemente + Departamento_Ventas +
## Distancia_Casa + Educacion + Viaje_Negocios_Raramente + Campo_Educacion_Humanidades +
## Satisfaccion_Ambiental + Campo_Educacion_Tecnicos + Genero_F +
## Satisfacion_Laboral + Estado_Civil_Soltero + Estado_Civil_Casado +
## Ingreso_Mensual + Trabajos_Anteriores + Horas_Extra_Si +
## Anos_Experiencia + Capacitaciones + Equilibrio_Trabajo_Vida +
## Antiguedad + Antiguedad_Cargo + Anos_ultima_promocion + Anos_acargo_con_mismo_jefe
##
## Df Deviance AIC
## - Educacion 1 722.62 768.62
## <none> 722.12 770.12
## - Anos_Experiencia 1 725.83 771.83
## + Porcentaje_aumento_salarial 1 721.84 771.84
## + Campo_Educacion_Mercadeo 1 722.08 772.08
## + Departamento_RH 1 722.11 772.11
## + Rendimiento_Laboral 1 722.12 772.12
## - Capacitaciones 1 726.27 772.27
## - Campo_Educacion_Humanidades 1 726.94 772.94
## - Estado_Civil_Casado 1 727.28 773.28
## - Antiguedad 1 727.44 773.44
## - Genero_F 1 727.51 773.51
## - Viaje_Negocios_Raramente 1 728.18 774.18
## - Antiguedad_Cargo 1 728.49 774.49
## - Edad 1 729.10 775.10
## - Equilibrio_Trabajo_Vida 1 731.25 777.25
## - Campo_Educacion_Tecnicos 1 732.47 778.47
## - Anos_acargo_con_mismo_jefe 1 732.75 778.75
## - Departamento_Ventas 1 733.46 779.46
## - Ingreso_Mensual 1 733.58 779.58
## - Distancia_Casa 1 736.78 782.78
## - Satisfaccion_Ambiental 1 738.82 784.82
## - Trabajos_Anteriores 1 740.40 786.40
## - Viaje_Negocios_Frecuentemente 1 741.03 787.03
## - Anos_ultima_promocion 1 741.15 787.15
## - Satisfacion_Laboral 1 742.81 788.81
## - Estado_Civil_Soltero 1 757.20 803.20
## - Horas_Extra_Si 1 808.78 854.78
##
## Step: AIC=768.62
## Rotacion ~ Edad + Viaje_Negocios_Frecuentemente + Departamento_Ventas +
## Distancia_Casa + Viaje_Negocios_Raramente + Campo_Educacion_Humanidades +
## Satisfaccion_Ambiental + Campo_Educacion_Tecnicos + Genero_F +
## Satisfacion_Laboral + Estado_Civil_Soltero + Estado_Civil_Casado +
## Ingreso_Mensual + Trabajos_Anteriores + Horas_Extra_Si +
## Anos_Experiencia + Capacitaciones + Equilibrio_Trabajo_Vida +
## Antiguedad + Antiguedad_Cargo + Anos_ultima_promocion + Anos_acargo_con_mismo_jefe
##
## Df Deviance AIC
## <none> 722.62 768.62
## + Educacion 1 722.12 770.12
## + Porcentaje_aumento_salarial 1 722.32 770.32
## - Anos_Experiencia 1 726.38 770.38
## + Campo_Educacion_Mercadeo 1 722.54 770.54
## + Departamento_RH 1 722.61 770.61
## + Rendimiento_Laboral 1 722.62 770.62
## - Capacitaciones 1 726.74 770.74
## - Campo_Educacion_Humanidades 1 727.56 771.56
## - Estado_Civil_Casado 1 727.83 771.83
## - Antiguedad 1 727.91 771.91
## - Genero_F 1 727.96 771.96
## - Viaje_Negocios_Raramente 1 728.88 772.88
## - Antiguedad_Cargo 1 728.93 772.93
## - Edad 1 729.22 773.22
## - Equilibrio_Trabajo_Vida 1 731.61 775.61
## - Campo_Educacion_Tecnicos 1 732.73 776.73
## - Anos_acargo_con_mismo_jefe 1 733.18 777.18
## - Departamento_Ventas 1 733.98 777.98
## - Ingreso_Mensual 1 734.07 778.07
## - Distancia_Casa 1 737.52 781.52
## - Satisfaccion_Ambiental 1 739.74 783.74
## - Trabajos_Anteriores 1 741.52 785.52
## - Anos_ultima_promocion 1 741.74 785.74
## - Viaje_Negocios_Frecuentemente 1 741.98 785.98
## - Satisfacion_Laboral 1 743.45 787.45
## - Estado_Civil_Soltero 1 757.68 801.68
## - Horas_Extra_Si 1 809.13 853.13
#estimacion del modelo luego de step
mod_glm_train_2 <- glm(Rotacion ~ Edad + Viaje_Negocios_Frecuentemente + Departamento_Ventas +
Distancia_Casa + Viaje_Negocios_Raramente + Campo_Educacion_Humanidades +
Satisfaccion_Ambiental + Campo_Educacion_Tecnicos + Genero_F +
Satisfacion_Laboral + Estado_Civil_Soltero + Estado_Civil_Casado +
Ingreso_Mensual + Trabajos_Anteriores + Horas_Extra_Si +
Anos_Experiencia + Capacitaciones + Equilibrio_Trabajo_Vida +
Antiguedad + Antiguedad_Cargo + Anos_ultima_promocion + Anos_acargo_con_mismo_jefe,
data = train,
family = "binomial")
summary(mod_glm_train_2)
##
## Call:
## glm(formula = Rotacion ~ Edad + Viaje_Negocios_Frecuentemente +
## Departamento_Ventas + Distancia_Casa + Viaje_Negocios_Raramente +
## Campo_Educacion_Humanidades + Satisfaccion_Ambiental + Campo_Educacion_Tecnicos +
## Genero_F + Satisfacion_Laboral + Estado_Civil_Soltero + Estado_Civil_Casado +
## Ingreso_Mensual + Trabajos_Anteriores + Horas_Extra_Si +
## Anos_Experiencia + Capacitaciones + Equilibrio_Trabajo_Vida +
## Antiguedad + Antiguedad_Cargo + Anos_ultima_promocion + Anos_acargo_con_mismo_jefe,
## family = "binomial", data = train)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.8570 -0.5226 -0.2790 -0.1064 3.4107
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 7.210e-01 8.141e-01 0.886 0.375841
## Edad -3.723e-02 1.484e-02 -2.510 0.012087 *
## Viaje_Negocios_Frecuentemente 1.749e+00 4.312e-01 4.056 4.98e-05 ***
## Departamento_Ventas 7.027e-01 2.078e-01 3.382 0.000721 ***
## Distancia_Casa 4.532e-02 1.168e-02 3.881 0.000104 ***
## Viaje_Negocios_Raramente 9.278e-01 3.952e-01 2.348 0.018887 *
## Campo_Educacion_Humanidades 1.365e+00 5.834e-01 2.339 0.019329 *
## Satisfaccion_Ambiental -3.703e-01 9.055e-02 -4.090 4.32e-05 ***
## Campo_Educacion_Tecnicos 1.000e+00 3.048e-01 3.282 0.001030 **
## Genero_F -4.565e-01 1.998e-01 -2.285 0.022341 *
## Satisfacion_Laboral -3.924e-01 8.714e-02 -4.502 6.72e-06 ***
## Estado_Civil_Soltero 1.644e+00 3.021e-01 5.442 5.27e-08 ***
## Estado_Civil_Casado 6.567e-01 2.970e-01 2.211 0.027046 *
## Ingreso_Mensual -1.393e-04 4.294e-05 -3.243 0.001182 **
## Trabajos_Anteriores 1.794e-01 4.091e-02 4.385 1.16e-05 ***
## Horas_Extra_Si 1.853e+00 2.067e-01 8.964 < 2e-16 ***
## Anos_Experiencia -6.044e-02 3.177e-02 -1.903 0.057063 .
## Capacitaciones -1.574e-01 7.833e-02 -2.009 0.044529 *
## Equilibrio_Trabajo_Vida -3.991e-01 1.330e-01 -3.002 0.002682 **
## Antiguedad 1.045e-01 4.406e-02 2.371 0.017743 *
## Antiguedad_Cargo -1.249e-01 4.950e-02 -2.523 0.011642 *
## Anos_ultima_promocion 2.039e-01 4.724e-02 4.315 1.59e-05 ***
## Anos_acargo_con_mismo_jefe -1.755e-01 5.254e-02 -3.340 0.000839 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1030.25 on 1175 degrees of freedom
## Residual deviance: 722.62 on 1153 degrees of freedom
## AIC: 768.62
##
## Number of Fisher Scoring iterations: 6
#CALCULO ROC Y AUC
# estimamos la probabilidad
rotacion_prob <- predict(mod_glm_train_2, newdata=test, type = "response")
# Pintamos ROC del modelo seleccionado
library(pROC)
## Type 'citation("pROC")' for a citation.
##
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
##
## cov, smooth, var
ROC <- roc(test$Rotacion, rotacion_prob)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
plot(ROC, col = "red")
#area bajo la curva sobre test
auc(ROC)
## Area under the curve: 0.824
#construccion matriz de confusion
library(vcd)
## Loading required package: grid
predicciones <- ifelse(test = mod_glm_train_2$fitted.values > 0.45, yes = 1, no = 0)
matriz_confusion <- table(mod_glm_train_2$model$Rotacion, predicciones,
dnn = c("observaciones", "predicciones"))
matriz_confusion
## predicciones
## observaciones 0 1
## 0 954 35
## 1 104 83
hist(mod_glm_train_2$fitted.values, main = "Distribucion de las probabilidades calculadas",
xlab = "Probabilidad")
METRICAS DE DESEMPEÑO
n = sum(matriz_confusion) # number of instances
nc = nrow(matriz_confusion) # number of classes
diag = diag(matriz_confusion) # number of correctly classified instances per class
rowsums = apply(matriz_confusion, 1, sum) # number of instances per class
colsums = apply(matriz_confusion, 2, sum) # number of predictions per class
p = rowsums / n # distribution of instances over the actual classes
q = colsums / n # d
accuracy = sum(diag) / n
accuracy
## [1] 0.8818027
precision = diag / colsums
recall = diag / rowsums
f1 = 2 * precision * recall / (precision + recall)
data.frame(precision, recall, f1)
## precision recall f1
## 0 0.9017013 0.9646107 0.9320957
## 1 0.7033898 0.4438503 0.5442623
macroPrecision = mean(precision)
macroRecall = mean(recall)
macroF1 = mean(f1)
data.frame(macroPrecision, macroRecall, macroF1)
## macroPrecision macroRecall macroF1
## 1 0.8025456 0.7042305 0.738179
CALIFICACION FINAL
#cargue de datos desde directorio personal
datos_actuales = read_excel("G:/TRABAJO/DOCENCIA/KONRAND LORENZ/Rotacion_Calificar.xlsx")
#Dicotomizar variables categoricas
datos_actuales = dummy_cols(datos_actuales, select_columns = c("Viaje_Negocios","Departamento",
"Campo_Educacion","Genero",
"Cargo","Estado_Civil","Horas_Extra"))
# estimamos la probabilidad sobre la nueva data
predecir_rotacion <- predict(mod_glm_train_2, newdata=datos_actuales, type = "response")
#agregar probailidad estimada a set inicial
data_final= cbind(datos_actuales, prob_rotacion = predecir_rotacion)
#Exportamos
write.csv(data_final,"G:/TRABAJO/DOCENCIA/KONRAND LORENZ/data_final.csv")