ACTIVIDAD 2

#Cargue Librerias
library(readxl)
library(ggplot2)
library(CGPfunctions)
## Warning: package 'CGPfunctions' was built under R version 4.1.2
library(sqldf)
## Loading required package: gsubfn
## Loading required package: proto
## Loading required package: RSQLite
datos = read_excel("G:/ACADEMIA/JAVERIANA CALI/1. SEMESTRE 2022-I/2. METODOS Y SIMULACION/2 rotacion/Datos_Rotacion.xlsx")
head(datos)
Rotacion Edad Viaje de Negocios Departamento Distancia_Casa Educacion Campo_Educacion Satisfaccion_Ambiental Genero Cargo Satisfacion_Laboral Estado_Civil Ingreso_Mensual Trabajos_Anteriores Horas_Extra Porcentaje_aumento_salarial Rendimiento_Laboral Anos_Experiencia Capacitaciones Equilibrio_Trabajo_Vida Antiguedad Antiguedad_Cargo Anos_ultima_promocion Anos_acargo_con_mismo_jefe
Si 41 Raramente Ventas 1 2 Ciencias 2 F Ejecutivo_Ventas 4 Soltero 5993 8 Si 11 3 8 0 1 6 4 0 5
No 49 Frecuentemente IyD 8 1 Ciencias 3 M Investigador_Cientifico 2 Casado 5130 1 No 23 4 10 3 3 10 7 1 7
Si 37 Raramente IyD 2 2 Otra 4 M Tecnico_Laboratorio 3 Soltero 2090 6 Si 15 3 7 3 3 0 0 0 0
No 33 Frecuentemente IyD 3 4 Ciencias 4 F Investigador_Cientifico 3 Casado 2909 1 Si 11 3 8 3 3 8 7 3 0
No 27 Raramente IyD 2 1 Salud 1 M Tecnico_Laboratorio 2 Casado 3468 9 No 12 3 6 3 3 2 2 2 2
No 32 Frecuentemente IyD 2 2 Ciencias 4 M Tecnico_Laboratorio 4 Soltero 3068 0 No 13 3 8 2 2 7 7 3 6

Determinar la cantidad de individuos que roto

table(datos$Rotacion)
## 
##   No   Si 
## 1233  237
prop.table(table(datos$Rotacion))*100
## 
##       No       Si 
## 83.87755 16.12245
#El 16.12% de los individuos observados, presenta rotacion.
#Hipotesis Planteadas
#___________________________________________________________________________________________________________________________________
#Hipotesis 1: Se espera que a mayor edad se presente menor Rotacion ya que las personas maduras tienden a rotar en menor proporcion
#___________________________________________________________________________________________________________________________________
#Hipotesis 2: Se espera que la gente con menor Antiguedad rote en mayor proporcion ya que puede tratarse de personas con menor tiempo de adaptacion a la cultura de la empresa
#___________________________________________________________________________________________________________________________________
#Hipotesis 3: Se espera que la gente con menor Ingreso Mensual rote en mayor proporcion ya que puede tratarse de personas en busqueda de un incremento salarial.
#___________________________________________________________________________________________________________________________________
#Hipotesis 4: Se espera que exista una mayor incidencia de Rotacion en los Hombres, dado que son la mayor participacion en la base y son normalmente mas inestables en sus labores.
#___________________________________________________________________________________________________________________________________
#Hipotesis 5: Se espera que exista una mayor incidencia de Rotacion en empleados que tengan horas extras, ya que esto puede representar una sobrecarga laboral
#___________________________________________________________________________________________________________________________________
#Hipotesis 6: Se espera que exista una diferenciacion de Rotacion en empleados segun su estado civil, donde personas solteras deberian presentar una mayor incidencia.
#___________________________________________________________________________________________________________________________________

Analisis Univariado

#Edad
Prom_Edad=mean(datos$Edad)
Desv_Edad=sd(datos$Edad)
P25_Edad=quantile(datos$Edad, prob=c(0.25))
P50_Edad=quantile(datos$Edad, prob=c(0.50))
P75_Edad=quantile(datos$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.135374 30 36 43
ggplot(datos,aes(x=Edad))+geom_histogram()+theme_bw()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

#Ingreso Mensual
Prom_Ingreso=mean(datos$Ingreso_Mensual)
Desv_Ingreso=sd(datos$Ingreso_Mensual)
P25_Ingreso=quantile(datos$Ingreso_Mensual, prob=c(0.25))
P50_Ingreso=quantile(datos$Ingreso_Mensual, prob=c(0.50))
P75_Ingreso=quantile(datos$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
ggplot(datos,aes(x=Ingreso_Mensual))+geom_histogram()+theme_bw()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

#Antiguedad
Prom_Antiguedad=mean(datos$Antiguedad)
Desv_Antiguedad=sd(datos$Antiguedad)
P25_Antiguedad=quantile(datos$Antiguedad, prob=c(0.25))
P50_Antiguedad=quantile(datos$Antiguedad, prob=c(0.50))
P75_Antiguedad=quantile(datos$Antiguedad, prob=c(0.75))

data.frame(Prom_Antiguedad,Desv_Antiguedad,P25_Antiguedad,P50_Antiguedad,P75_Antiguedad)
Prom_Antiguedad Desv_Antiguedad P25_Antiguedad P50_Antiguedad P75_Antiguedad
25% 7.008163 6.126525 3 5 9
ggplot(datos,aes(x=Antiguedad))+geom_histogram()+theme_bw()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

#Proporcion de Mujeres y Hombres
prop.table(table(datos$Genero))*100
## 
##  F  M 
## 40 60
ggplot(datos,aes(x=Genero))+geom_bar()+theme_bw()

#Proporcion de Empleados con Horas Extras
prop.table(table(datos$Horas_Extra))*100
## 
##       No       Si 
## 71.70068 28.29932
ggplot(datos,aes(x=Horas_Extra))+geom_bar()+theme_bw()

#Proporcion de Empleados por Estado Civil
prop.table(table(datos$Estado_Civil))*100
## 
##     Casado Divorciado    Soltero 
##   45.78231   22.24490   31.97279
ggplot(datos,aes(x=Estado_Civil))+geom_bar()+theme_bw()

Analisis Bivariado

boxplot(datos$Edad~datos$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 datos
       group by Rotacion
       ')
Rotacion Edad_Prom Edad_desv
No 37.56123 8.88836
Si 33.60759 9.68935
#Se evidencia una edad promedio menor en aquellos empleados que presentan rotacion
boxplot(datos$Antiguedad~datos$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 datos
       group by Rotacion
       ')
Rotacion Antiguedad_Prom Antiguedad_desv
No 7.369019 6.096298
Si 5.130802 5.949984
#Se evidencia una menor antiguedad en los empleados que presentan rotacion
boxplot(datos$Ingreso_Mensual~datos$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 datos
       group by Rotacion
       ')
Rotacion Ingreso_Mensual_Prom Ingreso_Mensual_desv
No 6832.740 4818.208
Si 4787.093 3640.210
#Se evidencia que los empleados con rotacion tienen un Ingreso Mensual promedio menor.
PlotXTabs(datos, Rotacion, Genero, "percent")
## Plotted dataset datos variables Rotacion by Genero

#NO se evidencia una diferencia significativa en la Rotacion x Genero
PlotXTabs(datos, Rotacion, Horas_Extra, "percent")
## Plotted dataset datos variables Rotacion by Horas_Extra

#SI se evidencia una diferencia significativa en la Rotacion x Horas_extra
PlotXTabs(datos, Rotacion, Estado_Civil, "percent")
## Plotted dataset datos variables Rotacion by Estado_Civil

#SI se evidencia una diferencia significativa en la Rotacion x Estado Civil, en particular en quienes son Solteros

Estrategias Planteadas 1. Realizar planes de retencion preventivas en personas solteras. 2. Reducir el numero de personas que realizan horas extras, para mitigar su posible efecto en la rotacion 3. Establecer planes de carrera, que permita incrementar los salarios y hacerlos mas competitivos 4. Bonos por antiguedad para incentivar la permanencia en los empleados.