En este documento se desarrollaran las diferetentes competenencias en la Asignatura Metodos y Simulacion Estadistica
Cargar Base de datos desde Excel
library(readxl)
datos <- read_excel("G:/Mi unidad/Maestría/Semestre 1/Metodos y Simulación Estadistica/Datos_Rotacion.xlsx")
Se realiza exploración de base de datos para conocer la composición del dataset
names(datos) # Para observar el nombre de las variables de la base de datos.
## [1] "Rotacion" "Edad"
## [3] "Viaje de 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" "Años_Experiencia"
## [19] "Capacitaciones" "Equilibrio_Trabajo_Vida"
## [21] "Antigüedad" "Antigüedad_Cargo"
## [23] "Años_ultima_promocion" "Años_acargo_con_mismo_jefe"
str(datos) # Para observar los tipos de la variables (numericas o categoricas)
## tibble [1,470 x 24] (S3: tbl_df/tbl/data.frame)
## $ Rotacion : chr [1:1470] "Si" "No" "Si" "No" ...
## $ Edad : num [1:1470] 41 49 37 33 27 32 59 30 38 36 ...
## $ Viaje de Negocios : chr [1:1470] "Raramente" "Frecuentemente" "Raramente" "Frecuentemente" ...
## $ Departamento : chr [1:1470] "Ventas" "IyD" "IyD" "IyD" ...
## $ Distancia_Casa : num [1:1470] 1 8 2 3 2 2 3 24 23 27 ...
## $ Educacion : num [1:1470] 2 1 2 4 1 2 3 1 3 3 ...
## $ Campo_Educacion : chr [1:1470] "Ciencias" "Ciencias" "Otra" "Ciencias" ...
## $ Satisfaccion_Ambiental : num [1:1470] 2 3 4 4 1 4 3 4 4 3 ...
## $ Genero : chr [1:1470] "F" "M" "M" "F" ...
## $ Cargo : chr [1:1470] "Ejecutivo_Ventas" "Investigador_Cientifico" "Tecnico_Laboratorio" "Investigador_Cientifico" ...
## $ Satisfacion_Laboral : num [1:1470] 4 2 3 3 2 4 1 3 3 3 ...
## $ Estado_Civil : chr [1:1470] "Soltero" "Casado" "Soltero" "Casado" ...
## $ Ingreso_Mensual : num [1:1470] 5993 5130 2090 2909 3468 ...
## $ Trabajos_Anteriores : num [1:1470] 8 1 6 1 9 0 4 1 0 6 ...
## $ Horas_Extra : chr [1:1470] "Si" "No" "Si" "Si" ...
## $ Porcentaje_aumento_salarial: num [1:1470] 11 23 15 11 12 13 20 22 21 13 ...
## $ Rendimiento_Laboral : num [1:1470] 3 4 3 3 3 3 4 4 4 3 ...
## $ Años_Experiencia : num [1:1470] 8 10 7 8 6 8 12 1 10 17 ...
## $ Capacitaciones : num [1:1470] 0 3 3 3 3 2 3 2 2 3 ...
## $ Equilibrio_Trabajo_Vida : num [1:1470] 1 3 3 3 3 2 2 3 3 2 ...
## $ Antigüedad : num [1:1470] 6 10 0 8 2 7 1 1 9 7 ...
## $ Antigüedad_Cargo : num [1:1470] 4 7 0 7 2 7 0 0 7 7 ...
## $ Años_ultima_promocion : num [1:1470] 0 1 0 3 2 3 0 0 1 7 ...
## $ Años_acargo_con_mismo_jefe : num [1:1470] 5 7 0 0 2 6 0 0 8 7 ...
head(datos) # Para observar las primeras 6 filas de la base de datos.
## # A tibble: 6 x 24
## Rotacion Edad `Viaje de Negocios` Departamento Distancia_Casa Educacion
## <chr> <dbl> <chr> <chr> <dbl> <dbl>
## 1 Si 41 Raramente Ventas 1 2
## 2 No 49 Frecuentemente IyD 8 1
## 3 Si 37 Raramente IyD 2 2
## 4 No 33 Frecuentemente IyD 3 4
## 5 No 27 Raramente IyD 2 1
## 6 No 32 Frecuentemente IyD 2 2
## # ... with 18 more variables: Campo_Educacion <chr>,
## # Satisfaccion_Ambiental <dbl>, Genero <chr>, Cargo <chr>,
## # Satisfacion_Laboral <dbl>, Estado_Civil <chr>, Ingreso_Mensual <dbl>,
## # Trabajos_Anteriores <dbl>, Horas_Extra <chr>,
## # Porcentaje_aumento_salarial <dbl>, Rendimiento_Laboral <dbl>,
## # Años_Experiencia <dbl>, Capacitaciones <dbl>,
## # Equilibrio_Trabajo_Vida <dbl>, Antigüedad <dbl>, ...
dim(datos) # Para observar la dimensión de la base de datos (total de observaciones y total de variables)
## [1] 1470 24
Se realiza la selección de las variables de interes en una nueva base de datos, de las cuales se escogen 3 variables categorica y 3 cuantitativas, para ello se discriminan las siguientes variables:
| Variable Categorica | Descripción |
|---|---|
| Cargo | Se plantea que está variable influye en la rotación de los empleados de una entidad, identificando que hay algunos cargos que generan mayor rotación que otros. |
| Estado Civil | Se plantea que está variable influye en la rotación de los empleados de una entidad, identificando si las personas solteras tienen mayor rotación que aquellas que están casadas. |
| Satisfación Laboral | Se plantea que está variable influye en la rotación de los empleados de una entidad debido a que las personas que tengan menos satisfacción que otros tienden a rotar. |
| Variable Cuantitativa | Descripción |
|---|---|
| Edad | Se quiere saber el comportamiento de las personas que laboran en la entidad e identifiar si la edad incide en la rotación |
| Porcentaje de Aumento Salarial | Se plantea que las personas con menor aumento tienden a rotar más. |
| Ingreso Menssual | Est variable como aquella que tiene gran impacto en la rotación de una persona. aquellos que menos ganan tienden a rotar más |
library(dplyr) #para seleccionar variables
df <- select(datos,Rotacion,Edad,Estado_Civil,Cargo,Satisfacion_Laboral,Porcentaje_aumento_salarial,Ingreso_Mensual)
#antes de realizar estos analisis se debe convertir variables de interes a factor (categoricas) y numericas (numericas)
df$Rotacion = as.factor(df$Rotacion)
df$Edad = as.numeric(df$Edad)
df$Estado_Civil = as.factor(df$Estado_Civil)
df$Cargo = as.factor(df$Cargo)
df$Satisfacion_Laboral = as.factor(df$Satisfacion_Laboral)
df$Porcentaje_aumento_salarial = as.numeric(df$Porcentaje_aumento_salarial)
df$Ingreso_Mensual = as.numeric(df$Ingreso_Mensual)
library(table1) #Genera una tabla de descripciones de variables, teniendo en cuenta la Rotación como variable dependiente
#Se generan primero etiquetas para la descripción de cada variable
table1::label(df$Edad) <- "Edad"
table1::label(df$Estado_Civil) <- "Estado Civil"
table1::label(df$Cargo) <- "Cargo"
table1::label(df$Satisfacion_Laboral) <- "Satisfacción Laboral"
table1::label(df$Porcentaje_aumento_salarial) <- "Porcentaje Salario"
table1::label(df$Ingreso_Mensual) <- "Ingreso Mensual"
Descrip = table1::table1( ~ Edad + Estado_Civil + Cargo + Satisfacion_Laboral +
Porcentaje_aumento_salarial + Ingreso_Mensual | Rotacion, data = df )
Descrip
| No (N=1233) |
Si (N=237) |
Overall (N=1470) |
|
|---|---|---|---|
| Edad | |||
| Mean (SD) | 37.6 (8.89) | 33.6 (9.69) | 36.9 (9.14) |
| Median [Min, Max] | 36.0 [18.0, 60.0] | 32.0 [18.0, 58.0] | 36.0 [18.0, 60.0] |
| Estado Civil | |||
| Casado | 589 (47.8%) | 84 (35.4%) | 673 (45.8%) |
| Divorciado | 294 (23.8%) | 33 (13.9%) | 327 (22.2%) |
| Soltero | 350 (28.4%) | 120 (50.6%) | 470 (32.0%) |
| Cargo | |||
| Director_Investigacion | 78 (6.3%) | 2 (0.8%) | 80 (5.4%) |
| Director_Manofactura | 135 (10.9%) | 10 (4.2%) | 145 (9.9%) |
| Ejecutivo_Ventas | 269 (21.8%) | 57 (24.1%) | 326 (22.2%) |
| Gerente | 97 (7.9%) | 5 (2.1%) | 102 (6.9%) |
| Investigador_Cientifico | 245 (19.9%) | 47 (19.8%) | 292 (19.9%) |
| Recursos_Humanos | 40 (3.2%) | 12 (5.1%) | 52 (3.5%) |
| Representante_Salud | 122 (9.9%) | 9 (3.8%) | 131 (8.9%) |
| Representante_Ventas | 50 (4.1%) | 33 (13.9%) | 83 (5.6%) |
| Tecnico_Laboratorio | 197 (16.0%) | 62 (26.2%) | 259 (17.6%) |
| Satisfacción Laboral | |||
| 1 | 223 (18.1%) | 66 (27.8%) | 289 (19.7%) |
| 2 | 234 (19.0%) | 46 (19.4%) | 280 (19.0%) |
| 3 | 369 (29.9%) | 73 (30.8%) | 442 (30.1%) |
| 4 | 407 (33.0%) | 52 (21.9%) | 459 (31.2%) |
| Porcentaje Salario | |||
| Mean (SD) | 15.2 (3.64) | 15.1 (3.77) | 15.2 (3.66) |
| Median [Min, Max] | 14.0 [11.0, 25.0] | 14.0 [11.0, 25.0] | 14.0 [11.0, 25.0] |
| Ingreso Mensual | |||
| Mean (SD) | 6830 (4820) | 4790 (3640) | 6500 (4710) |
| Median [Min, Max] | 5200 [1050, 20000] | 3200 [1010, 19900] | 4920 [1010, 20000] |
library(ggplot2)
library(plotly)
ggplot(df, aes(Estado_Civil, Edad))+
stat_summary()
# Se genera diagrama de cajas para identificar el estado civily y la edad
table1
## function (x, ...)
## {
## UseMethod("table1")
## }
## <bytecode: 0x0000000020991c08>
## <environment: namespace:table1>
Se realizan graficas para conocer el la tendencia de los datos y la relación de las variables categoricas con el impacto de aquellos que rotan en la entidad de igual manera el analisis de la diferencias entre el desenlace de Rotación y salario mensual
# Se genera diagrama de cajas para identificar los cargos que más ganan
plot_ly(df, x=df$Cargo, y=df$Ingreso_Mensual, name = "Cargo",type = 'box')
# Se genera diagrama de puntos para identificar las edades con relación a los salarios
plot_ly(df, x=df$Edad, y=df$Ingreso_Mensual, name = "Cargo",type = 'scatter')
# Se genera grafico de barras para identificar de acuerdo al estado civil quienes son los que más rotan
ggplot(data = df, mapping = aes(x = Estado_Civil, y = Ingreso_Mensual, fill= Rotacion)) +
geom_bar(stat = "identity",position = "stack")
t.test(df$Ingreso_Mensual~df$Rotacion) # t.test para identificar si hay diferencias salariales entre aquellos que rotan y los que no rotan
##
## Welch Two Sample t-test
##
## data: df$Ingreso_Mensual by df$Rotacion
## t = 7.4826, df = 412.74, p-value = 4.434e-13
## alternative hypothesis: true difference in means between group No and group Si is not equal to 0
## 95 percent confidence interval:
## 1508.244 2583.050
## sample estimates:
## mean in group No mean in group Si
## 6832.740 4787.093
| Ho | α | t-tes | Df | p-value | CI:95% | Mean |
| No hay diferencias salariales entre las personas que rotan y las que no | 0.05 | 7.4826 | 412.74 | 4.434e-13 | 1508.2: 2583 | No: 6832.7 Yes: 4787 Dif: 2045.7 |
Se obtuvo un resultado un estadistico t de 7.4826 con un p-value < 0.05, por lo que se rechaza la Ho, estimando que hay diferencias significativas entre los salarios de quienes realizan rotaciones y quienes no. Dicha diferencia es de 2045.7
Se realizar analisis de la relación entre el desenlace de Rotación y Estado Civil
chisq.test(df$Estado_Civil, df$Rotacion) # se implementa prueba Chi2 para identificar si existe relación entre la rotación con el estado civil de las personas.
##
## Pearson's Chi-squared test
##
## data: df$Estado_Civil and df$Rotacion
## X-squared = 46.164, df = 2, p-value = 9.456e-11
#install.packages("CGPfunctions") #se instala paquete CGPfunctions, para realizar test Chi2 y gráfica de proporciones
library(CGPfunctions)
PlotXTabs2(data = df,x = Estado_Civil,y = Rotacion)
PlotXTabs2(data = df,x = Cargo,y = Rotacion)
Se identifica relaciones estadisticamente significativas entre la variable de rotación y estado civil al obtener un estadistico Chi2 = 46.16 y un p-value < 0.001. Se observa una mayor proporción para personas solteras que rotan del 26%, Divorciados del 10% y Casados del 12%
Como conclusión se identifica que la eda de rotación está en 33 años,los que m{as rotan son los solteros con un 50% y que el cargo con mayor rotación dentro de la comparía son los ejecutivos de ventas y los tecnicos de laboratorio esto con relación a sus ingresos salariales.
Se identifica que el aréa con mayor tendencia a rotar en la compañía es el area de ventas debido a que presenta gran tendencia de empleados que rotan.
Este ejercicio permite conocer el comportamiento de los datos de una empresa a partir de análsis de autocorrelación de datos y análisis bibariados identificar su comportamiento para predecir y reconocer falencias en la compañia y lograr a partir de cifras realizar un plan de mejora para tomar las decisiones más adecuadas para la empresa.