Downloading GitHub repo dgonxalex80/paqueteMODELOS@HEAD

── R CMD build ─────────────────────────────────────────────────────────────────
     checking for file ‘/tmp/Rtmp99nIsf/remotes30d69a620bc/dgonxalex80-paqueteMODELOS-796f588/DESCRIPTION’ ...  ✔  checking for file ‘/tmp/Rtmp99nIsf/remotes30d69a620bc/dgonxalex80-paqueteMODELOS-796f588/DESCRIPTION’
  ─  preparing ‘paqueteMODELOS’:
   checking DESCRIPTION meta-information ...  ✔  checking DESCRIPTION meta-information
  ─  checking for LF line-endings in source and make files and shell scripts
  ─  checking for empty or unneeded directories
  ─  building ‘paqueteMODELOS_0.1.0.tar.gz’
     Warning: invalid uid value replaced by that for user 'nobody'
     
Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
(as 'lib' is unspecified)
Loading required package: boot
Loading required package: broom
Loading required package: GGally
Loading required package: ggplot2
Registered S3 method overwritten by 'GGally':
  method from   
  +.gg   ggplot2
Loading required package: gridExtra
Loading required package: knitr
Loading required package: summarytools
Warning in fun(libname, pkgname): couldn't connect to display ":0"
system might not have X11 capabilities; in case of errors when using dfSummary(), set st_options(use.x11 = FALSE)

Problema: Rotación de cargo

En una organización, se busca comprender y prever los factores que influyen en la rotación de empleados entre distintos cargos. La empresa ha recopilado datos históricos sobre el empleo de sus trabajadores, incluyendo variables como la antigüedad en el cargo actual, el nivel de satisfacción laboral, el salario actual, edad y otros factores relevantes. La gerencia planea desarrollar un modelo de regresión logística que permita estimar la probabilidad de que un empleado cambie de cargo en el próximo período y determinar cuales factores indicen en mayor proporción a estos cambios.

Con esta información, la empresa podrá tomar medidas proactivas para retener a su talento clave, identificar áreas de mejora en la gestión de recursos humanos y fomentar un ambiente laboral más estable y tranquilo. La predicción de la probabilidad de rotación de empleados ayudará a la empresa a tomar decisiones estratégicas informadas y a mantener un equipo de trabajo comprometido y satisfecho en sus roles actuales.

A continuación se describen los pasos que la gerencia ha propuesto para el análisis:

Los datos son:

Rows: 1,470
Columns: 24
$ Rotación                    <chr> "Si", "No", "Si", "No", "No", "No", "No", …
$ Edad                        <dbl> 41, 49, 37, 33, 27, 32, 59, 30, 38, 36, 35…
$ `Viaje de Negocios`         <chr> "Raramente", "Frecuentemente", "Raramente"…
$ Departamento                <chr> "Ventas", "IyD", "IyD", "IyD", "IyD", "IyD…
$ Distancia_Casa              <dbl> 1, 8, 2, 3, 2, 2, 3, 24, 23, 27, 16, 15, 2…
$ Educación                   <dbl> 2, 1, 2, 4, 1, 2, 3, 1, 3, 3, 3, 2, 1, 2, …
$ Campo_Educación             <chr> "Ciencias", "Ciencias", "Otra", "Ciencias"…
$ Satisfacción_Ambiental      <dbl> 2, 3, 4, 4, 1, 4, 3, 4, 4, 3, 1, 4, 1, 2, …
$ Genero                      <chr> "F", "M", "M", "F", "M", "M", "F", "M", "M…
$ Cargo                       <chr> "Ejecutivo_Ventas", "Investigador_Cientifi…
$ Satisfación_Laboral         <dbl> 4, 2, 3, 3, 2, 4, 1, 3, 3, 3, 2, 3, 3, 4, …
$ Estado_Civil                <chr> "Soltero", "Casado", "Soltero", "Casado", …
$ Ingreso_Mensual             <dbl> 5993, 5130, 2090, 2909, 3468, 3068, 2670, …
$ Trabajos_Anteriores         <dbl> 8, 1, 6, 1, 9, 0, 4, 1, 0, 6, 0, 0, 1, 0, …
$ Horas_Extra                 <chr> "Si", "No", "Si", "Si", "No", "No", "Si", …
$ Porcentaje_aumento_salarial <dbl> 11, 23, 15, 11, 12, 13, 20, 22, 21, 13, 13…
$ Rendimiento_Laboral         <dbl> 3, 4, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, …
$ Años_Experiencia            <dbl> 8, 10, 7, 8, 6, 8, 12, 1, 10, 17, 6, 10, 5…
$ Capacitaciones              <dbl> 0, 3, 3, 3, 3, 2, 3, 2, 2, 3, 5, 3, 1, 2, …
$ Equilibrio_Trabajo_Vida     <dbl> 1, 3, 3, 3, 3, 2, 2, 3, 3, 2, 3, 3, 2, 3, …
$ Antigüedad                  <dbl> 6, 10, 0, 8, 2, 7, 1, 1, 9, 7, 5, 9, 5, 2,…
$ Antigüedad_Cargo            <dbl> 4, 7, 0, 7, 2, 7, 0, 0, 7, 7, 4, 5, 2, 2, …
$ Años_ultima_promoción       <dbl> 0, 1, 0, 3, 2, 3, 0, 0, 1, 7, 0, 0, 4, 1, …
$ Años_acargo_con_mismo_jefe  <dbl> 5, 7, 0, 0, 2, 6, 0, 0, 8, 7, 3, 8, 3, 2, …

  1. Selección de variables

Seleccione 3 variables categóricas (distintas de rotación) y 3 variables cuantitativas, que se consideren estén relacionadas con la rotación.

Respuesta

Variables Categóricas:


Viajes de Negocios:

Es probable que las personas que deban viajar con mayor frecuencia, esten menos tiempo con su familia y podria generar una mayor agotamiento fisico, esto lleve a considerar la posibilidad de cambiar de trabajo.

Estado civil:

Las personas que son solteras, pueden cambiar de trabajo más facil de trabajo ya que tienen menos obligaciones que aquellos que tienen una pareja y/o hijos.

Horas extras:

Las personas que realizan horas extras pueden tener una mayor desgaste fisico y estar menos tiempo con la familia o a realizar actividades ludicas, por lo tanto se puede estimar que a mayor cantidad de horas extras mayor posibilidad que el personal busque otras alternativas de trabajo.

Variables Cuantitativas:


Edad:

En la medida que las personas tienen mayor edad, se asume que desean mayor tranquilidad e igualmente si estan cercanos a la edad de jubilación, no habria motivación para cambiar de trabajo.

Satisfacción Ambiental:

En la medida que la persona no este satisfecha del manejo ambiental es probable que busque otras alternartivas de trabajo, Un buen manejo ambiental genera un ambiente más propicio para la labor.

Antigüedad:

Se estima que una persona en la medida que tiene mayor antigüedad en una empresa, se estima que hay una mayor satisfacción por lo tanto una menor probabilidad de cambiar de trabajo.

  1. Análisis univariado


Realiza un análisis univariado (caracterización) de la información contenida en la base de datos rotacion.

Se realiza grafico de cada una de las variables con el fin de conocer como es su distribución.

datos <- (rotacion)
#str(datos)
library(ggplot2)
ggplot(datos,aes(Rotación))+geom_bar(aes(fill=factor(Rotación)))

ggplot(datos,aes(Edad))+geom_bar()

ggplot(datos,aes(`Viaje de Negocios`))+geom_bar(aes(fill=factor(`Viaje de Negocios`)))

ggplot(datos,aes(Departamento))+geom_bar(aes(fill=factor(Departamento)))

ggplot(datos,aes(Distancia_Casa))+geom_bar(aes(fill=factor(Distancia_Casa)))

ggplot(datos,aes(Educación))+geom_bar(aes(fill=factor(Educación)))

ggplot(datos,aes(Campo_Educación))+geom_bar(aes(fill=factor(Campo_Educación)))

ggplot(datos,aes(Satisfacción_Ambiental))+geom_bar(aes(fill=factor(Satisfacción_Ambiental)))

ggplot(datos,aes(Genero))+geom_bar(aes(fill=factor(Genero)))

ggplot(datos,aes(Cargo))+geom_bar(aes(fill=factor(Cargo)))

ggplot(datos,aes(Satisfación_Laboral))+geom_bar(aes(fill=factor(Satisfación_Laboral)))

ggplot(datos,aes(Estado_Civil))+geom_bar(aes(fill=factor(Estado_Civil)))

#ggplot(datos,aes(Ingreso_Mensual))+geom_bar(aes(fill=factor(Ingreso_Mensual)))

ggplot(datos, aes(x = Ingreso_Mensual)) +
  geom_histogram(bins = 10, fill = "skyblue", color = "black") +  # Especificar el número de bins
  labs(x = "Ingreso Mensual", y = "Frecuencia", title = "Histograma")

ggplot(datos,aes(Trabajos_Anteriores))+geom_bar(aes(fill=factor(Trabajos_Anteriores)))

ggplot(datos,aes(Horas_Extra))+geom_bar(aes(fill=factor(Horas_Extra)))

ggplot(datos,aes(Porcentaje_aumento_salarial))+geom_bar(aes(fill=factor(Porcentaje_aumento_salarial)))

ggplot(datos,aes(Rendimiento_Laboral))+geom_bar(aes(fill=factor(Rendimiento_Laboral)))

ggplot(datos,aes(Años_Experiencia))+geom_bar(aes(fill=factor(Años_Experiencia)))

ggplot(datos,aes(Capacitaciones))+geom_bar(aes(fill=factor(Capacitaciones)))

ggplot(datos,aes(Equilibrio_Trabajo_Vida))+geom_bar(aes(fill=factor(Equilibrio_Trabajo_Vida)))

#ggplot(datos,aes(Antigüedad))+geom_bar(aes(fill=factor(Antigüedad)))

ggplot(datos, aes(x = Antigüedad)) +
  geom_histogram(bins = 5, fill = "skyblue", color = "black") +  # Especificar el número de bins
  labs(x = "Antigüedad", y = "Frecuencia", title = "Histograma")

ggplot(datos,aes(Antigüedad_Cargo))+geom_bar(aes(fill=factor(Antigüedad_Cargo)))

ggplot(datos,aes(Años_ultima_promoción))+geom_bar(aes(fill=factor(Años_ultima_promoción)))

ggplot(datos,aes(Años_acargo_con_mismo_jefe))+geom_bar(aes(fill=factor(Años_acargo_con_mismo_jefe)))

#head(rotacion)
#install.packages("table1")
library(table1)
## 
## Attaching package: 'table1'
## The following objects are masked from 'package:summarytools':
## 
##     label, label<-
## The following objects are masked from 'package:base':
## 
##     units, units<-
require(table1)
table1(~.,data=rotacion)
Overall
(N=1470)
Rotación
No 1233 (83.9%)
Si 237 (16.1%)
Edad
Mean (SD) 36.9 (9.14)
Median [Min, Max] 36.0 [18.0, 60.0]
Viaje de Negocios
Frecuentemente 277 (18.8%)
No_Viaja 150 (10.2%)
Raramente 1043 (71.0%)
Departamento
IyD 961 (65.4%)
RH 63 (4.3%)
Ventas 446 (30.3%)
Distancia_Casa
Mean (SD) 9.19 (8.11)
Median [Min, Max] 7.00 [1.00, 29.0]
Educación
Mean (SD) 2.91 (1.02)
Median [Min, Max] 3.00 [1.00, 5.00]
Campo_Educación
Ciencias 606 (41.2%)
Humanidades 27 (1.8%)
Mercadeo 159 (10.8%)
Otra 82 (5.6%)
Salud 464 (31.6%)
Tecnicos 132 (9.0%)
Satisfacción_Ambiental
Mean (SD) 2.72 (1.09)
Median [Min, Max] 3.00 [1.00, 4.00]
Genero
F 588 (40.0%)
M 882 (60.0%)
Cargo
Director_Investigación 80 (5.4%)
Director_Manofactura 145 (9.9%)
Ejecutivo_Ventas 326 (22.2%)
Gerente 102 (6.9%)
Investigador_Cientifico 292 (19.9%)
Recursos_Humanos 52 (3.5%)
Representante_Salud 131 (8.9%)
Representante_Ventas 83 (5.6%)
Tecnico_Laboratorio 259 (17.6%)
Satisfación_Laboral
Mean (SD) 2.73 (1.10)
Median [Min, Max] 3.00 [1.00, 4.00]
Estado_Civil
Casado 673 (45.8%)
Divorciado 327 (22.2%)
Soltero 470 (32.0%)
Ingreso_Mensual
Mean (SD) 6500 (4710)
Median [Min, Max] 4920 [1010, 20000]
Trabajos_Anteriores
Mean (SD) 2.69 (2.50)
Median [Min, Max] 2.00 [0, 9.00]
Horas_Extra
No 1054 (71.7%)
Si 416 (28.3%)
Porcentaje_aumento_salarial
Mean (SD) 15.2 (3.66)
Median [Min, Max] 14.0 [11.0, 25.0]
Rendimiento_Laboral
Mean (SD) 3.15 (0.361)
Median [Min, Max] 3.00 [3.00, 4.00]
Años_Experiencia
Mean (SD) 11.3 (7.78)
Median [Min, Max] 10.0 [0, 40.0]
Capacitaciones
Mean (SD) 2.80 (1.29)
Median [Min, Max] 3.00 [0, 6.00]
Equilibrio_Trabajo_Vida
Mean (SD) 2.76 (0.706)
Median [Min, Max] 3.00 [1.00, 4.00]
Antigüedad
Mean (SD) 7.01 (6.13)
Median [Min, Max] 5.00 [0, 40.0]
Antigüedad_Cargo
Mean (SD) 4.23 (3.62)
Median [Min, Max] 3.00 [0, 18.0]
Años_ultima_promoción
Mean (SD) 2.19 (3.22)
Median [Min, Max] 1.00 [0, 15.0]
Años_acargo_con_mismo_jefe
Mean (SD) 4.12 (3.57)
Median [Min, Max] 3.00 [0, 17.0]

Se hace verificación de los datos y se puede confirmar que no hay registros nulos.

# Para encontrar valores vacíos en todo el conjunto de datos
#install.packages("mice")
library(mice)
## 
## Attaching package: 'mice'
## The following object is masked from 'package:stats':
## 
##     filter
## The following objects are masked from 'package:base':
## 
##     cbind, rbind
head(datos)
## # A tibble: 6 × 24
##   Rotación  Edad `Viaje de Negocios` Departamento Distancia_Casa Educación
##   <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
## # ℹ 18 more variables: Campo_Educación <chr>, Satisfacción_Ambiental <dbl>,
## #   Genero <chr>, Cargo <chr>, Satisfación_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>, Antigüedad_Cargo <dbl>,
## #   Años_ultima_promoción <dbl>, Años_acargo_con_mismo_jefe <dbl>
md.pattern(datos,rotate.names = TRUE)
##  /\     /\
## {  `---'  }
## {  O   O  }
## ==>  V <==  No need for mice. This data set is completely observed.
##  \  \|/  /
##   `-----'

##      Rotación Edad Viaje de Negocios Departamento Distancia_Casa Educación
## 1470        1    1                 1            1              1         1
##             0    0                 0            0              0         0
##      Campo_Educación Satisfacción_Ambiental Genero Cargo Satisfación_Laboral
## 1470               1                      1      1     1                   1
##                    0                      0      0     0                   0
##      Estado_Civil Ingreso_Mensual Trabajos_Anteriores Horas_Extra
## 1470            1               1                   1           1
##                 0               0                   0           0
##      Porcentaje_aumento_salarial Rendimiento_Laboral Años_Experiencia
## 1470                           1                   1                1
##                                0                   0                0
##      Capacitaciones Equilibrio_Trabajo_Vida Antigüedad Antigüedad_Cargo
## 1470              1                       1          1                1
##                   0                       0          0                0
##      Años_ultima_promoción Años_acargo_con_mismo_jefe  
## 1470                     1                          1 0
##                          0                          0 0
#install.packages("pROC")
library(pROC)
## Type 'citation("pROC")' for a citation.
## 
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
## 
##     cov, smooth, var

  1. Análisis bivariado

Realiza un análisis de bivariado en donde la variable respuesta sea rotacion codificada de la siguiente manera (y=1 es si rotación, y=0 es no rotación). Con base en estos resultados identifique cuales son las variables determinantes de la rotación e interpretar el signo del coeficiente estimado. Compare estos resultados con la hipotesis planteada en el punto 2.



Se hace evaluacion del valor p de la prueba Chi-cuadrado entre las variables vs la rotación para identificar las que mayor posibilidad tienen de incidencia en la rotación.

De las variables escogedas se hace analisis de cada una de ellas: