#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")