Rotación

PUNTO 1

Elección de las variables categóricas y cuantitativas

A continuación se escogera tres variables categóricas y tres variables cuantitativas para el desarrollo del ejercicio:

Variables Categóricas

Cargo

Estado_Civil

Equilibrio_Trabajo_Vida

Variables Cuantitativas

Ingreso_Mensual

Trabajos_Anteriores

Antigüedad_Cargo

library(readxl)
Datos_R <- read_excel("C:/Users/pocho/Downloads/Datos_R.xlsx")
est_var = Datos_R [c(10, 12, 13, 14, 20, 22, 1)]
names(est_var)
## [1] "Cargo"                   "Estado_Civil"           
## [3] "Ingreso_Mensual"         "Trabajos_Anteriores"    
## [5] "Equilibrio_Trabajo_Vida" "Antigüedad_Cargo"       
## [7] "Rotación"
head(est_var)
Cargo Estado_Civil Ingreso_Mensual Trabajos_Anteriores Equilibrio_Trabajo_Vida Antigüedad_Cargo Rotación
Ejecutivo_Ventas Soltero 5993 8 1 4 Si
Investigador_Cientifico Casado 5130 1 3 7 No
Tecnico_Laboratorio Soltero 2090 6 3 0 Si
Investigador_Cientifico Casado 2909 1 3 7 No
Tecnico_Laboratorio Casado 3468 9 3 2 No
Tecnico_Laboratorio Soltero 3068 0 2 7 No

Justificación de Variables Categóricas que influyen en la rotación y su hipótesis:

Cargo: El cargo puede estar relacionado con la rotación ya que, el nivel de cargo que tengan los trabajadores influtyan en querer encontrar otros empleos con otros perfiles y responsabilidades y el puesto actual no influya mucho en su deseo de quedarse en l puesto actual. La hipótesis propuesta:las personas con determinados cargo tienen a rotar más en la organización.

Estado_Civil: La situación familiar o sentimental puede incidir en la decisión de estar en una empresa o de estar en otra que ofrezca arandelas que benefician a los integrantes de la familia o a la interacción que pueda tener en colaborador con su trabajo y familia. La hipótesis propuesta:hay estados civiles propensos a presentar rotación.

Equilibrio_Trabajo_Vida: En la motivación laboral y la decision de permanecer en una organiación tiene gran injerencia el equilibrio que pueda tener un colaborador con respecto a su vida personal y su trabajo, que no lo absorba completamente pero pueda desarrolar sus competencias y habilidades técnicas. La hipótesis propuesta: entre menor sea el equilibrio mayor la rotación de personal.

Variables cuantitativas que influyen en la rotación y su hipótesis:

Ingreso_Mensual: Dependiendo el nivel delc argo y responsabilidad del colaborador es probable que busque organizaciones que puedan ofrecerle un mayor salario. La hipótesis propuesta:los ingresos mensuales menores pueden tener indicencia a la rotación.

Trabajos_Anteriores: Puede darse una tendencia de cambiar de empleo si en el historial laboral de la persona presenta una alta cantidad de empleos anteriores, puede interpretarse que la persona no cuenta con mayor estabilidad laboral. La hipótesis propuesta: entre mayor sea la cantidad de trabajos anteriores puede tener tendendencia a rotar en el puesto actual.

Antigüedad_Cargo: Las personas a medida que pasa el tiempo llegan a un estancamiento laboral y dominio de sus funciones lo que puede promover en ellos una búsqueda de nuevas experiencias en el mercado laboral. La hipótesis propuesta: entre mayor sea el tiempo en el puesto actual mas probabilidad hay que el colaborador rote.

Punto 2

Analisis Univariado de cada una de las variables

Cargo

  1. Los cargos Ejecutivo_Ventas, Investigador_Cientifico y Tecnico_Laboratorio conforman casi el 60% de las personas presentes en la base de datos de rotación
require(ggplot2)
require(ggpubr)
require(scales)
require(plotly)
est_var <- data.frame(est_var)
tf1 =data.frame(sort(table(est_var$Cargo),decreasing = TRUE))
d1=data.frame(percent(tf1$Freq/length(est_var$Cargo)/1))
d2=data.frame(tf1,d1)
colnames(d2)= c("Cargo", "Frecuencia", "Porcentaje")
head(d2,9)
Cargo Frecuencia Porcentaje
Ejecutivo_Ventas 326 22.18%
Investigador_Cientifico 292 19.86%
Tecnico_Laboratorio 259 17.62%
Director_Manofactura 145 9.86%
Representante_Salud 131 8.91%
Gerente 102 6.94%
Representante_Ventas 83 5.65%
Director_Investigación 80 5.44%
Recursos_Humanos 52 3.54%
g1=ggplot(d2,aes(y=Cargo,x=Frecuencia))+geom_bar(stat="identity", fill="Gray") +geom_text(aes(label=Frecuencia),hjust=0.1) + theme_bw()+ggtitle("Cargos en la compañia")
ggplotly(g1)

Estado_civil

  1. Casi la mitad de los colaboradores son casados (45,8%) en la base de datos de rotación
require(ggplot2)
require(ggpubr)
require(scales)
tf2 =data.frame(sort(table(est_var$Estado_Civil),decreasing = TRUE))
d3=data.frame(percent(tf2$Freq/length(est_var$Estado_Civil)/1))
d4=data.frame(tf2,d3)
colnames(d4)= c("Estado_Civil", "Frecuencia", "Porcentaje")
head(d4,9)
Estado_Civil Frecuencia Porcentaje
Casado 673 45.8%
Soltero 470 32.0%
Divorciado 327 22.2%
ggplot(d4,aes(x="",y=Frecuencia,fill=Estado_Civil))+geom_bar(stat="identity", color="white")+geom_text(aes(label=Porcentaje),position=position_stack(vjust=0.5),color="white",size=6)+coord_polar(theta="y")+ggtitle("Estado civil")

Equilibrio_Trabajo_Vida

Ya que este valor es un valor nominal, se creó la siguiente escala likert para poder interpretar los datos

u1=matrix(1:4,nrow = 4, ncol=1)
u2=matrix(c("Muy Bajo","Bajo","Medio","Alto"),nrow = 4, ncol=1)
likert=data.frame(u1,u2)
names(likert)[1:2]=c("Escala", "Descripción")
likert
Escala Descripción
1 Muy Bajo
2 Bajo
3 Medio
4 Alto
  1. La mayor parte de los colaboradores (60%) piensan que hay medianamente equilibrio entre la vida laboral y la vida personal.
require(ggplot2)
require(ggpubr)
require(scales)
require(plotly)
tf3 =data.frame(sort(table(est_var$Equilibrio_Trabajo_Vida),decreasing = TRUE))
pos=match(tf3$Var1,likert$Escala)
tf3$Var1=likert$Descripción[pos]
d5=data.frame(percent(tf3$Freq/length(est_var$Equilibrio_Trabajo_Vida)/1))
d6=data.frame(tf3,d5)
colnames(d6)= c("Equilibrio_Trabajo_Vida", "Frecuencia", "Porcentaje")
head(d6,9)
Equilibrio_Trabajo_Vida Frecuencia Porcentaje
Medio 893 60.7%
Bajo 344 23.4%
Alto 153 10.4%
Muy Bajo 80 5.4%
g3=ggplot(d6,aes(x="",y=Frecuencia,fill=Equilibrio_Trabajo_Vida))+geom_bar(stat="identity", color="white")+geom_text(aes(label=Porcentaje),position=position_stack(vjust=0.5),color="white",size=3)+ggtitle("Equilibrio_Trabajo_Vida")
ggplotly(g3)

Ahora, daremos paso a las variables cuantitativas y para ello utilizaremos una función de nos calcule el mínimo, máximo, promedio, desviación estandar y mediana, adicional a ello tambien presentaremos un summary con los datos de cuartiles y finalizará con un grafico.

Cuantitativo1=function (dc){
  Minimo=min(dc)
  Maximo=max(dc)
  Promedio=mean(dc)
  Desviacion_Estandar=sd(dc)
  Mediana=median(dc)
  dato=data.frame(Minimo,Maximo,Promedio,Desviacion_Estandar,Mediana)
  ##Gráfico
  dotchart(dc,pch = 21, bg = "green", pt.cex = 0.2)
  ##Tabla de datos
  dato
  return(dato)
}
Cuantitativo2=function (dc){
  a=summary(dc)
  return(a)
}

Cuantitativo3=function(dc){
  tfin=hist(dc,plot = FALSE)
  tabla1=table.freq(tfin)
  names(tabla1)[1:7]=c("lím_clase_inf","lím_clase_sup","marca_clase", "Frequencie", "Porc_%", "Frec_acum","Porc_%_acum")
  return(tabla1)
  
} 

Ingreso_Mensual

  1. La mayoria de los salarios de los colaboradores (74,1% de la poblacion total) estan entre los rangos de S 1.009.000 y los $ 8.000.000
  2. La cantidad de colaboradores con los salarios superiores son muy reducidos(26%de la poblacion total)
  3. El promedio de los salarios de los 1470 colaboradores son $ 6.503.000
require(agricolae)

dc=est_var$Ingreso_Mensual
dc=sort(dc,decreasing = TRUE)
Cuantitativo1(dc)
Minimo Maximo Promedio Desviacion_Estandar Mediana
1009 19999 6502.931 4707.957 4919
Cuantitativo2(dc)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1009    2911    4919    6503    8379   19999
Cuantitativo3(dc)
lím_clase_inf lím_clase_sup marca_clase Frequencie Porc_% Frec_acum Porc_%_acum
0 2000 1000 33 2.2 33 2.2
2000 4000 3000 510 34.7 543 36.9
4000 6000 5000 371 25.2 914 62.2
6000 8000 7000 175 11.9 1089 74.1
8000 10000 9000 100 6.8 1189 80.9
10000 12000 11000 86 5.9 1275 86.7
12000 14000 13000 53 3.6 1328 90.3
14000 16000 15000 16 1.1 1344 91.4
16000 18000 17000 57 3.9 1401 95.3
18000 20000 19000 69 4.7 1470 100.0

Trabajos_Anteriores

  1. Para 13,4% de los colaboradores este es su primer empleo
  2. El 34,8% de los colaboradores este es su segundo empleo
  3. Solo el 3,5% de los colaboradores ha tenido nueve empleos
require(agricolae)

dc=est_var$Trabajos_Anteriores
dc=sort(dc,decreasing = TRUE)
Cuantitativo1(dc)
Minimo Maximo Promedio Desviacion_Estandar Mediana
0 9 2.693197 2.498009 2
Cuantitativo2(dc)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   1.000   2.000   2.693   4.000   9.000
Cuantitativo3(dc)
lím_clase_inf lím_clase_sup marca_clase Frequencie Porc_% Frec_acum Porc_%_acum
0 1 0.5 718 48.8 718 48.8
1 2 1.5 146 9.9 864 58.8
2 3 2.5 159 10.8 1023 69.6
3 4 3.5 139 9.5 1162 79.0
4 5 4.5 63 4.3 1225 83.3
5 6 5.5 70 4.8 1295 88.1
6 7 6.5 74 5.0 1369 93.1
7 8 7.5 49 3.3 1418 96.5
8 9 8.5 52 3.5 1470 100.0
valor=table(est_var$Trabajos_Anteriores)
#Resumen de frecuencia independiente
valor
## 
##   0   1   2   3   4   5   6   7   8   9 
## 197 521 146 159 139  63  70  74  49  52

Antigüedad_Cargo

  1. El 45,8% de los colaboradores llevan entre 0 y 2 años con la compañia
  2. El 21,2% de los colaboradores llevan entre 6 y 8 años con la compañia
  3. Solo el 11,8% los colaboradores tienen entre 8 y 18 años con la compañia
require(agricolae)

dc=est_var$Antigüedad_Cargo
dc=sort(dc,decreasing = TRUE)
Cuantitativo1(dc)
Minimo Maximo Promedio Desviacion_Estandar Mediana
0 18 4.229252 3.623137 3
Cuantitativo2(dc)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   2.000   3.000   4.229   7.000  18.000
Cuantitativo3(dc)
lím_clase_inf lím_clase_sup marca_clase Frequencie Porc_% Frec_acum Porc_%_acum
0 2 1 673 45.8 673 45.8
2 4 3 239 16.3 912 62.0
4 6 5 73 5.0 985 67.0
6 8 7 311 21.2 1296 88.2
8 10 9 96 6.5 1392 94.7
10 12 11 32 2.2 1424 96.9
12 14 13 25 1.7 1449 98.6
14 16 15 15 1.0 1464 99.6
16 18 17 6 0.4 1470 100.0
valor=table(est_var$Antigüedad_Cargo)
#Resumen de frecuencia independiente
valor
## 
##   0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18 
## 244  57 372 135 104  36  37 222  89  67  29  22  10  14  11   8   7   4   2

Punto 3

Analisis Bivariado de cada una de las variables Validación de las hipótesis con los resultados bivariados

data_hipo=function(variable){
  dfh=data.frame(variable,est_var$Rotación)
  dfh=table(dfh)
  return(dfh)
}

Hipotesis: Variables Categóricas y la Rotación:

Cargo:

La hipótesis propuesta:las personas con determinados cargo tienen a rotar más en la organización.

Conclusión: Efectivamenete hay cargo con mayor rotación con respecto a otros; el cargo Representante_Ventas cuenta con mayor rotacion dentro de la organización con un 40% y el cargo con menor rotación con cargo de representante es Representante_Salud con un 7%

Hay que tener en cuenta que en la base de datos los colaboradores con cargo de Representante_Ventas en total son 83 personas y no se puede comparar con Representante_Salud con una población de 131 personas o un Ejecutivo_Ventas quien tiene una poblacion mayor 326 y un % de rotación del 17%

Hay que validar cuales son las causales por las cuales este cargo presenta tan alto porcentaje de rotación a pesar de ser una de las áreas con menor cantidad de personas.

require(CGPfunctions)

variable=est_var$Cargo
data_hipo(variable)
##                          est_var.Rotación
## variable                   No  Si
##   Director_Investigación   78   2
##   Director_Manofactura    135  10
##   Ejecutivo_Ventas        269  57
##   Gerente                  97   5
##   Investigador_Cientifico 245  47
##   Recursos_Humanos         40  12
##   Representante_Salud     122   9
##   Representante_Ventas     50  33
##   Tecnico_Laboratorio     197  62
PlotXTabs2(est_var,Cargo,Rotación,plottype = "percent",x.axis.orientation="vertical")

Estado_Civil

La hipótesis propuesta:hay estados civiles propensos a presentar rotación.

Conclusión: Solo el estado civil Soltero presenta una rotación del 26% a comparacion de los otros dos estados civil que mantiene su indicador en la primera decena.

Se deben de realizar verificaciones si dichas personas solteras presentan algun tipo de responsabilidad económica (hijos, deudas, hipotecas) para poder concluir mas puntualmente si los colaboradores que no cuenten con este tipo de obligaciones financieras sienten mas libertad para realizar un cambio de empleo y no sentirse atados al actual

Adicional a ello validar que condiciones laborales son propicias para estos colaboradores y generar estrategias de retención de personal.

require(CGPfunctions)

variable=est_var$Estado_Civil
data_hipo(variable)
##             est_var.Rotación
## variable      No  Si
##   Casado     589  84
##   Divorciado 294  33
##   Soltero    350 120
PlotXTabs2(est_var,Estado_Civil,Rotación,plottype = "percent",x.axis.orientation="vertical")

Equilibrio_Trabajo_Vida:

La hipótesis propuesta: entre menor sea el equilibrio mayor la rotación de personal.

Conclusión: Efectivamente las personas que mencionaron bajo equilibrio entre la vida personal y laboral, de las 80 personas que mencionaron bajo equilibrio el 31% presento rotación.

Ahora, las personas que mencionaron equilibrio medio son aquellas con indicadores 18% en rotación y estas representan el 60,7% (893 personas sobre 1470 colaboradoes de la base de datos), es decir que, en la organización un pooc mas de la mitad consideran que pueden tener ese equilibrio laboral y personal.

require(CGPfunctions)
variable=est_var$Equilibrio_Trabajo_Vida
pos=match(variable,likert$Escala)
variable=likert$Descripción[pos]
data_hipo(variable)
##           est_var.Rotación
## variable    No  Si
##   Alto     126  27
##   Bajo     286  58
##   Medio    766 127
##   Muy Bajo  55  25
likert
Escala Descripción
1 Muy Bajo
2 Bajo
3 Medio
4 Alto
PlotXTabs2(est_var,Equilibrio_Trabajo_Vida,Rotación,plottype = "percent",x.axis.orientation="vertical")

Hipotesis: Variables Cuantitativas y la Rotación:

Ingreso_Mensual:

La hipótesis propuesta:los ingresos mensuales menores pueden tener indicencia a la rotación.

Conclusión: El promedio de los salarios de aquellos que no rotan es de S6.832.740 pesos y aquellos que si rotaron fue de $4.787.093 pesos y con las gráficas se fundamenta que el salario es un indicador importante en la rotación de personal.

require(ggplot2)
require(plotly)

tapply(est_var$Ingreso_Mensual,est_var$Rotación,mean)
##       No       Si 
## 6832.740 4787.093
gt1=ggplot(est_var,aes(x=Rotación,y=Ingreso_Mensual, fill=Rotación))+geom_boxplot()+theme_light()

ggplotly(gt1)

Trabajos_Anteriores:

La hipótesis propuesta: entre mayor sea la cantidad de trabajos anteriores puede tener tendendencia a rotar en el puesto actual.

Conclusión: Las cifras de personas que han tenido otros empleos anterior que rotan es muy reducido, la cifra mas alta es 98 personas que han tenido un empleo anterior por lo cual la hipotesis no es correcta y el tener empleos anteriores no marca tendencia con respecto a la rotación

trab_rot=table(est_var$Trabajos_Anteriores,est_var$Rotación)
trab_rot
##    
##      No  Si
##   0 174  23
##   1 423  98
##   2 130  16
##   3 143  16
##   4 122  17
##   5  47  16
##   6  54  16
##   7  57  17
##   8  43   6
##   9  40  12
bp=barplot(trab_rot,horiz=1, las=1,col=c('yellow','white','pink','orange','brown','gray','red','black','green','blue'),legend.text = TRUE,beside = TRUE)

Antigüedad_Cargo:

La hipótesis propuesta: entre mayor sea el tiempo en el puesto actual mas probabilidad hay que el colaborador rote.

Conclusión: Verificando las cifras aquellas personas que llevan mas tiempo en su trabajo no rotan, en cambio aquellas que lo hacen son aquellas que estan en sus primeros años de contratación; es por esta razón que la hipotesis no es correcta.

require(ggplot2)
require(plotly)

tapply(est_var$Antigüedad_Cargo,est_var$Rotación,mean)
##       No       Si 
## 4.484185 2.902954
gt3=ggplot(est_var,aes(x=Rotación,y=Antigüedad_Cargo, fill=Rotación))+geom_boxplot()+theme_light()

ggplotly(gt3)
PlotXTabs2(est_var,Antigüedad_Cargo,Rotación,plottype = "percent",x.axis.orientation="vertical")

Punto 4

Modelo de Regresión Logística Validación de los datos importantes para el modelo

Lo primero que vamos a realizar es colocar la variable dependiente de primera (Rotación), cambiar como factor los datos de escala como Equilibrio_Trabajo_Vida y cambiar los \(si\) y \(no\) por 1 y 0 respectivamente:

#Cambiar el si y no
est_var$Rota=0
est_var$Rota[est_var$Rotación=="Si"]=1
head(est_var,5)
Cargo Estado_Civil Ingreso_Mensual Trabajos_Anteriores Equilibrio_Trabajo_Vida Antigüedad_Cargo Rotación Rota
Ejecutivo_Ventas Soltero 5993 8 1 4 Si 1
Investigador_Cientifico Casado 5130 1 3 7 No 0
Tecnico_Laboratorio Soltero 2090 6 3 0 Si 1
Investigador_Cientifico Casado 2909 1 3 7 No 0
Tecnico_Laboratorio Casado 3468 9 3 2 No 0
#Cambio del orden
est_var2= est_var[,c(8,1,2,3,4,5,6,7)]
names (est_var2)
## [1] "Rota"                    "Cargo"                  
## [3] "Estado_Civil"            "Ingreso_Mensual"        
## [5] "Trabajos_Anteriores"     "Equilibrio_Trabajo_Vida"
## [7] "Antigüedad_Cargo"        "Rotación"
#Cambiar como factor los datos de escala como Equilibrio_Trabajo_Vida

est_var2$Equilibrio_Trabajo_Vida=as.factor(est_var2$Equilibrio_Trabajo_Vida)

Con la base de datos completa se puede hacer el modelo

modelo=glm(est_var2$Rota ~ Cargo + Estado_Civil + Equilibrio_Trabajo_Vida + Ingreso_Mensual, data = est_var2, family = "binomial")

Se genera el summary

summary(modelo)
## 
## Call:
## glm(formula = est_var2$Rota ~ Cargo + Estado_Civil + Equilibrio_Trabajo_Vida + 
##     Ingreso_Mensual, family = "binomial", data = est_var2)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.3796  -0.5908  -0.4622  -0.2738   2.8681  
## 
## Coefficients:
##                                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                  -2.839e+00  1.003e+00  -2.832 0.004633 ** 
## CargoDirector_Manofactura     9.789e-01  8.689e-01   1.127 0.259910    
## CargoEjecutivo_Ventas         2.039e+00  8.242e-01   2.473 0.013382 *  
## CargoGerente                  6.909e-01  8.560e-01   0.807 0.419589    
## CargoInvestigador_Cientifico  1.847e+00  9.075e-01   2.035 0.041830 *  
## CargoRecursos_Humanos         2.472e+00  9.290e-01   2.660 0.007803 ** 
## CargoRepresentante_Salud      9.473e-01  8.733e-01   1.085 0.278066    
## CargoRepresentante_Ventas     3.127e+00  9.364e-01   3.339 0.000841 ***
## CargoTecnico_Laboratorio      2.373e+00  9.043e-01   2.624 0.008695 ** 
## Estado_CivilDivorciado       -1.735e-01  2.237e-01  -0.776 0.438038    
## Estado_CivilSoltero           8.476e-01  1.648e-01   5.143 2.70e-07 ***
## Equilibrio_Trabajo_Vida2     -9.015e-01  3.020e-01  -2.985 0.002839 ** 
## Equilibrio_Trabajo_Vida3     -1.183e+00  2.799e-01  -4.227 2.37e-05 ***
## Equilibrio_Trabajo_Vida4     -8.840e-01  3.441e-01  -2.569 0.010204 *  
## Ingreso_Mensual              -3.810e-06  4.168e-05  -0.091 0.927158    
## ---
## 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: 1156.8  on 1455  degrees of freedom
## AIC: 1186.8
## 
## Number of Fisher Scoring iterations: 6

Teniendo en cuenta lo anterior, por su significancia los coeficientes que mas le aportan al modelo es:

CargoRepresentante_Ventas, el cual tiene un z value 3.339 y una P 0.000841 Estado_CivilSoltero, el cual tiene un z value 5.143 y una P 2.70e-07 Equilibrio_Trabajo_Vida3, el cual tiene un z value -4.227 y una P 2.37e-05 ***

Es decir que, si algun colaborador tiene estas caracteristicas es mas probable que se genere una rotación

Con la información anterior se puede hacer el modelo1 solo teniendo en cuenta las variables representativas

modelo1=glm(est_var2$Rota ~ Cargo + Estado_Civil + Equilibrio_Trabajo_Vida, data = est_var2, family = "binomial")

Se genera el summary

summary(modelo1)
## 
## Call:
## glm(formula = est_var2$Rota ~ Cargo + Estado_Civil + Equilibrio_Trabajo_Vida, 
##     family = "binomial", data = est_var2)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.3802  -0.5896  -0.4621  -0.2722   2.8634  
## 
## Coefficients:
##                              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                   -2.8986     0.7631  -3.799 0.000145 ***
## CargoDirector_Manofactura      1.0116     0.7917   1.278 0.201324    
## CargoEjecutivo_Ventas          2.0729     0.7341   2.824 0.004748 ** 
## CargoGerente                   0.6864     0.8546   0.803 0.421843    
## CargoInvestigador_Cientifico   1.8954     0.7374   2.570 0.010158 *  
## CargoRecursos_Humanos          2.5156     0.7950   3.164 0.001554 ** 
## CargoRepresentante_Salud       0.9793     0.7998   1.224 0.220771    
## CargoRepresentante_Ventas      3.1773     0.7556   4.205 2.61e-05 ***
## CargoTecnico_Laboratorio       2.4211     0.7344   3.297 0.000978 ***
## Estado_CivilDivorciado        -0.1731     0.2237  -0.774 0.439012    
## Estado_CivilSoltero            0.8481     0.1647   5.149 2.62e-07 ***
## Equilibrio_Trabajo_Vida2      -0.9034     0.3013  -2.998 0.002717 ** 
## Equilibrio_Trabajo_Vida3      -1.1843     0.2795  -4.237 2.27e-05 ***
## Equilibrio_Trabajo_Vida4      -0.8850     0.3440  -2.573 0.010081 *  
## ---
## 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: 1156.9  on 1456  degrees of freedom
## AIC: 1184.9
## 
## Number of Fisher Scoring iterations: 6

Punto 5

poder predictivo del modelo de Regresión Logística curva ROC y el AUC

pred1 = predict.glm(modelo1,newdata = est_var2, type = "response")
ypred = ifelse(pred1> 0.3,1,0)
yobser=est_var2$Rota
matrizc=table(yobser,ypred)
matrizc
##       ypred
## yobser    0    1
##      0 1127  106
##      1  165   72
sum(diag(matrizc))/sum(matrizc)
## [1] 0.8156463
## El modelo predice correctamente un 81%

Otra predicción

pred2 = predict.glm(modelo1,newdata = est_var2, type = "response")
result1 = table(est_var2$Rota, ifelse(pred2> 0.2,1,0))
result1
##    
##       0   1
##   0 899 334
##   1  92 145
boxplot(pred2)

Ahora iremos con la curva ROC

library(ROCR)
pred= ROCR::prediction(pred1,est_var2$Rota)
perfo = performance(pred,"tpr","fpr")
plot(perfo)
abline(a=0,b=1,col="red")
grid()

como podemos observar la linea tiene mayor arco acercandose a los Verdaderos positivos y muestra una separación de la linea roja, es decir que el modelo si tiende a poder organizar de manera correcta la calsificacion de los verdaderos positivos de la regresión.

ahora el AUC

AUClog1=performance(pred,measure = "auc")@y.values[[1]]
cat("AUC: ", AUClog1, "n")
## AUC:  0.7323036 n

Punto 6

probabilida de que un individuo rote

Teniendo en cuenta los coeficientes del summary del modelo nos queda de la siguiente manera

summary(modelo1)
## 
## Call:
## glm(formula = est_var2$Rota ~ Cargo + Estado_Civil + Equilibrio_Trabajo_Vida, 
##     family = "binomial", data = est_var2)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -1.3802  -0.5896  -0.4621  -0.2722   2.8634  
## 
## Coefficients:
##                              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                   -2.8986     0.7631  -3.799 0.000145 ***
## CargoDirector_Manofactura      1.0116     0.7917   1.278 0.201324    
## CargoEjecutivo_Ventas          2.0729     0.7341   2.824 0.004748 ** 
## CargoGerente                   0.6864     0.8546   0.803 0.421843    
## CargoInvestigador_Cientifico   1.8954     0.7374   2.570 0.010158 *  
## CargoRecursos_Humanos          2.5156     0.7950   3.164 0.001554 ** 
## CargoRepresentante_Salud       0.9793     0.7998   1.224 0.220771    
## CargoRepresentante_Ventas      3.1773     0.7556   4.205 2.61e-05 ***
## CargoTecnico_Laboratorio       2.4211     0.7344   3.297 0.000978 ***
## Estado_CivilDivorciado        -0.1731     0.2237  -0.774 0.439012    
## Estado_CivilSoltero            0.8481     0.1647   5.149 2.62e-07 ***
## Equilibrio_Trabajo_Vida2      -0.9034     0.3013  -2.998 0.002717 ** 
## Equilibrio_Trabajo_Vida3      -1.1843     0.2795  -4.237 2.27e-05 ***
## Equilibrio_Trabajo_Vida4      -0.8850     0.3440  -2.573 0.010081 *  
## ---
## 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: 1156.9  on 1456  degrees of freedom
## AIC: 1184.9
## 
## Number of Fisher Scoring iterations: 6

logit(rotacion) = -2.8986 + (3.1773 ∗ CargoRepresentante_Ventas) + (2.4211 * CargoTecnico_Laboratorio) + (0.8481 * Estado_CivilSoltero) + (-1.1843 * Equilibrio_Trabajo_Vida3)

P(rotacion) = -2.8986 + (3.1773 ∗ CargoRepresentante_Ventas) + (2.4211 * CargoTecnico_Laboratorio) + (0.8481 * Estado_CivilSoltero) + (-1.1843 * Equilibrio_Trabajo_Vida3)

1 + 𝑒-2.8986 + (3.1773 ∗ CargoRepresentante_Ventas) + (2.4211 * CargoTecnico_Laboratorio) + (0.8481 * Estado_CivilSoltero) + (-1.1843 * Equilibrio_Trabajo_Vida3)

Punto 7

Estratégias para disminuir la rotación

Verificar cuales son las condiciones laborales (salariales y no salariales) entre los cargos Representante_Salud y Representante_Ventas para poder reducir la elevada rotación de este cargo (Representante_Ventas), realizar entrevistas y medicion de clima laboral con este cargo para encontrar en la raíz las causas de la rotación.

incluir dentro de los beneficios no salariales actividades en las cuales los colaboradores solteros puedan sentirse especial y entender que en la actualidad existen diferentes tipos de familias e integrantes (como mascotas) que pueda tener un impacto sobre el colaborador soltero y propiciar la retenciónd el talento.

Implementar con los con líderes con personas a cargo estrategias en las cuales se busque propiciar el equilibrio de la vida laboral con la vida personal de los colaboradores (manejo de horas extras, contacto fuera del horario laboral), adicional a ello estudiar dentro de ls beneficios no salariales dias de descando por desempeño, cumpleaños, ect.).

Crédito

PUNTO 1

Elección de las variables categóricas y cuantitativas