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)
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)
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)
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)
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
')
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
')
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
')
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.