library(readxl)
library(dplyr)
library(ggplot2)
library(plotly)
library(knitr)
library(kableExtra)
library(tidyr)
library(RecordLinkage)
library(leaflet)
library(htmltools)

##Introducción Este informe se encargara de mostrar la realizacion y evaluacion de los siguientes modelos que se encargaran de interpretar y pronosticar los ingresos en pesos colombianos (variable dependiente) que puede recibir un empleado de dicha empresa, en este caso hipotetico asumiremos que la informacion pertenece al grupo Nutresa.

library(readxl)
Datos_Nutresa <- read_excel("base3_ingreso.xlsx")
View (Datos_Nutresa)

##Elección de Variables

Empezamos con la eleccion de las variables que hemos de utilizar para todos los modelos que se propongan en este informe y la explicación de porque son relevantes para la modelación.

head(Datos_Nutresa)
Ingreso_Mensual Edad Educación Años_Experiencia Antigüedad Horas_Extra Departamento Distancia_Casa Campo_Educación Satisfacción_Ambiental Genero Cargo Satisfación_Laboral Estado_Civil Trabajos_Anteriores Porcentaje_aumento_salarial Rendimiento_Laboral Capacitaciones Equilibrio_Trabajo_Vida Antigüedad_Cargo Años_ultima_promoción Años_acargo_con_mismo_jefe Rotación Viaje de Negocios
5993000 41 2 8 6 Si Ventas 1 Ciencias 2 F Ejecutivo_Ventas 4 Soltero 8 11 3 0 1 4 0 5 Si Raramente
5130000 49 1 10 10 No IyD 8 Ciencias 3 M Investigador_Cientifico 2 Casado 1 23 4 3 3 7 1 7 No Frecuentemente
2090000 37 2 7 0 Si IyD 2 Otra 4 M Tecnico_Laboratorio 3 Soltero 6 15 3 3 3 0 0 0 Si Raramente
2909000 33 4 8 8 Si IyD 3 Ciencias 4 F Investigador_Cientifico 3 Casado 1 11 3 3 3 7 3 0 No Frecuentemente
3468000 27 1 6 2 No IyD 2 Salud 1 M Tecnico_Laboratorio 2 Casado 9 12 3 3 3 2 2 2 No Raramente
3068000 32 2 8 7 No IyD 2 Ciencias 4 M Tecnico_Laboratorio 4 Soltero 0 13 3 2 2 7 3 6 No Frecuentemente

Ingresos en pesos Colombianos: Esta es nuestra variable dependiente, la intención de pronosticar el ingreso que pueda tener un empleado teniendo en cuenta diferentes variables.

promedio=mean(Datos_Nutresa$Ingreso_Mensual) #promedio / media
desviación=sd(Datos_Nutresa$Ingreso_Mensual) #desviación estandar

data.frame(promedio,desviación)
promedio desviación
6502931 4707957
max_ingreso <- max(Datos_Nutresa$Ingreso_Mensual, na.rm = TRUE)
min_ingreso <- min(Datos_Nutresa$Ingreso_Mensual, na.rm = TRUE)
cat("Ingreso mensual máximo: $", format(max_ingreso, big.mark = ","), "\n")
## Ingreso mensual máximo: $ 19,999,000
cat("Ingreso mensual mínimo: $", format(min_ingreso, big.mark = ","), "\n")
## Ingreso mensual mínimo: $ 1,009,000

Se observa que el promedio del ingreso mensual es de 6,5 millones de pesos, mientras que el maximo de ingresos que recibe un empleado segun los datos obtenidos es de casi 20 millones

Departamento (Cualitativa): Se considera importante tener en cuenta esta variable independiente y entender la relacion que puedan tener el departamento en que trabaje la persona con los ingresos que pueda recibir.

# Convertir a factor si no lo es
Datos_Nutresa$Departamento <- as.factor(Datos_Nutresa$Departamento)

# Crear tabla de frecuencias
frecuencias <- table(Datos_Nutresa$Departamento)

# Graficar histograma de frecuencias categóricas usando barplot
barplot(frecuencias,
        main = "Distribución del Departamento",
        col = "lightcoral",
        xlab = "Departamento",
        ylab = "Frecuencia",
        las = 2)  # Gira las etiquetas del eje x

Se observa que el departamento de IyD tiene mucha mayor presencia de empleados que los demas departamentos, encontrando como el departamento con menos empleados el RH

Años de experiencia (Cuantitativa): Se toma la variable Años de Experiencia, se espera una gran relevancia de esta variable teniendo en cuenta la supuesta relacion directa entre años de experiencia y los ingresos, se espera que a mayor años sea mayor el ingreso.

summary(Datos_Nutresa$Años_Experiencia)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00    6.00   10.00   11.28   15.00   40.00
hist(Datos_Nutresa$Años_Experiencia, main = "Histograma: Años de Experiencia", col = "palevioletred")

Edad (Cuantitativa): Se toma en cuenta la edad y el como esta puede estar afectando los ingresos mensuales, se espera que a mayor edad mejore el ingreso hasta cierto punto.

summary(Datos_Nutresa$Edad)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   18.00   30.00   36.00   36.92   43.00   60.00
hist(Datos_Nutresa$Edad, main = "Histograma: Edad", col = "cadetblue")

Antigüedad (Cuantitativa): La antigüedad como una variable importante dentro del funcionamiento de la empresa, se espera que a mayor antiguedad mayores ingresos

summary(Datos_Nutresa$Antigüedad_Cargo)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   2.000   3.000   4.229   7.000  18.000
hist(Datos_Nutresa$Antigüedad, main = "Histograma: Antigüedad", col = "thistle")

Cargo (Cualitativa): Se toma en cuenta el cargo de la persona como una variable importante, esperando que un cargo mas alto refleje un mejor ingreso

# Convertir a factor si no lo es
Datos_Nutresa$Cargo <- as.factor(Datos_Nutresa$Cargo)

# Crear tabla de frecuencias
frecuencias <- table(Datos_Nutresa$Cargo)

# Graficar histograma de frecuencias categóricas usando barplot
barplot(frecuencias,
        main = "Distribución del Cargo",
        col = "darkseagreen",
        xlab = "Cargo",
        ylab = "Frecuencia",
        las = 2)  # Gira las etiquetas del eje x

##Analisis Bivariado

Años de experiencia e Ingresos Mensuales

g2=ggplot(data=Datos_Nutresa,mapping = aes(x=Años_Experiencia,y=Ingreso_Mensual))+geom_point()+theme_bw()+
  geom_smooth()
ggplotly(g2)
cor(Datos_Nutresa$Ingreso_Mensual,Datos_Nutresa$Años_Experiencia)
## [1] 0.7728932

El grafico de dispersion indica que no hay una relacion lineal entre los años de experiencia y el aumento del ingreso, muestra una relacion lineal hasta los 10 años de experiencia, el proximo punto de inflexion seria pasado los 20 años. En cuanto a la correlacion si se muestra una correlacion alta entre estas dos variables de un 0.77

Departamento e Ingresos Mensuales

Datos_Nutresa$Departamento <- as.factor(Datos_Nutresa$Departamento)

frecuencias <- table(Datos_Nutresa$Departamento)

barplot(frecuencias,
        main = "Distribución del Departamento",
        col = "lightcoral",
        xlab = "Departamento",
        ylab = "Frecuencia",
        las = 2)  

## 
##    IyD     RH Ventas 
##    961     63    446

La mayor cantidad de empleados se trabajan en IyD y en Ventas, un minimo de empleados se encuentra en RH

Edad e Ingresos Mensuales

g_edu <- ggplot(data = Datos_Nutresa, mapping = aes(x = Edad, y = Ingreso_Mensual)) +
  geom_point(alpha = 0.5) +  # puntos con algo de transparencia
  geom_smooth(method = "loess", se = TRUE, color = "blue") +  # curva suavizada
  theme_bw() +
  labs(title = "Relación entre Edad e Ingreso Mensual",
       x = "Edad",
       y = "Ingreso Mensual")

# Convertir a gráfico interactivo
ggplotly(g_edu)
cor(Datos_Nutresa$Ingreso_Mensual,Datos_Nutresa$Edad)
## [1] 0.4978546

Hay un relación positiva entre la edad y el ingreso mensual, aunque esta relación no es lineal. El ingreso suele incrementarse con la edad hasta aproximadamente los 50 años, momento en el que empieza a estabilizarse o a disminuir un poco. Sin embargo, la elevada variabilidad indica que existen otros elementos además de la edad que determinan el nivel de ingreso, tales como la experiencia, el cargo o el campo de trabajo.

Se muestra una correlacion baja entre la educacion y los ingresos mensuales, siendo esta de 0.094

Antigüedad Cargo e Ingresos Mensuales

g2=ggplot(data=Datos_Nutresa,mapping = aes(x= Antigüedad,y=Ingreso_Mensual))+geom_point()+theme_bw()+
  geom_smooth()
ggplotly(g2)
cor(Datos_Nutresa$Ingreso_Mensual,Datos_Nutresa$Antigüedad)
## [1] 0.5142848

Hay una relación positiva entre la antigüedad y el ingreso mensual, aunque esta relación no es completamente lineal. El ingreso tiende a aumentar a medida que la antigüedad crece, especialmente durante los primeros 20 años, pero a partir de ese punto comienza a estabilizarse e incluso a descender ligeramente. Sin embargo, la alta dispersión observada sugiere que existen otros factores además de la antigüedad que influyen en el ingreso, como el cargo ocupado, los años de experiencia o el área funcional en la que se desempeña el trabajador.

Se observa una correlacion mayor al 50%, es una correlacion alta considerando las vistas anteriormente.

Cargo e Ingresos Mensuales

Datos_Nutresa$Cargo <- as.factor(Datos_Nutresa$Cargo)

frecuencias <- table(Datos_Nutresa$Cargo)

barplot(frecuencias,
        main = "Distribución del Cargo",
        col = "lightcoral",
        xlab = "Cargo",
        ylab = "Frecuencia",
        las = 2)  

## 
##  Director_Investigación    Director_Manofactura        Ejecutivo_Ventas 
##                      80                     145                     326 
##                 Gerente Investigador_Cientifico        Recursos_Humanos 
##                     102                     292                      52 
##     Representante_Salud    Representante_Ventas     Tecnico_Laboratorio 
##                     131                      83                     259

Los cargos con mas empleados se encuentran en el Ejecutivo de ventas, Gerente de Investigador Cientifico y el Tecnico Laboratorio, dos son del campo de ciencias.

##Regresión Lineal Simple

Iniciamos con la prueba de 3 modelos de regresion simple, las variables que seleccionamos

###Modelo 1

La primera variable para este modelo de regresion lineal simple seran los años de experiencia. Primero realizamos un analisis bivariado entre estas variables.

mod1=lm(Ingreso_Mensual~Años_Experiencia, data=Datos_Nutresa)
summary (mod1)
## 
## Call:
## lm(formula = Ingreso_Mensual ~ Años_Experiencia, data = Datos_Nutresa)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -11271297  -1750781    -87495   1398604  11539481 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       1227935     137299   8.944   <2e-16 ***
## Años_Experiencia   467658      10021  46.669   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2988000 on 1468 degrees of freedom
## Multiple R-squared:  0.5974, Adjusted R-squared:  0.5971 
## F-statistic:  2178 on 1 and 1468 DF,  p-value: < 2.2e-16

Se observa una alta significancia de las variables, el modelo indica que por cada año de experiencia puede haber un aumento en el ingreso de 467 mil pesos colombianos.

Multiple R-squared: 0.5974, Adjusted R-squared: 0.5971: El modelo explica casi un 60% de la variacion en el ingreso mensual, es un modelo aceptable.

###Modelo 2

La segunda variable para el segundo modelo es la variable “Departamento”

mod2=lm(Ingreso_Mensual~Cargo, data=Datos_Nutresa)
summary (mod2)
## 
## Call:
## lm(formula = Ingreso_Mensual ~ Cargo, data = Datos_Nutresa)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -5937676 -1209252  -350986  1165379  6947721 
## 
## Coefficients:
##                               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                   16033550     226367  70.830  < 2e-16 ***
## CargoDirector_Manofactura     -8738412     281982 -30.989  < 2e-16 ***
## CargoEjecutivo_Ventas         -9109271     252620 -36.059  < 2e-16 ***
## CargoGerente                   1148127     302378   3.797 0.000152 ***
## CargoInvestigador_Cientifico -12793577     255502 -50.072  < 2e-16 ***
## CargoRecursos_Humanos        -11797800     360661 -32.712  < 2e-16 ***
## CargoRepresentante_Salud      -8504787     287289 -29.604  < 2e-16 ***
## CargoRepresentante_Ventas    -13407550     317226 -42.265  < 2e-16 ***
## CargoTecnico_Laboratorio     -12796380     258979 -49.411  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2025000 on 1461 degrees of freedom
## Multiple R-squared:  0.8161, Adjusted R-squared:  0.8151 
## F-statistic: 810.2 on 8 and 1461 DF,  p-value: < 2.2e-16

El modelo 2 estima el ingreso mensual promedio en función del cargo en el que trabaja, comparando cada departamento con un departamento de referencia. En este caso el cargo de referencia es el cargo de Director de Investigación.

El modelo muestra gran significancia en todos los departamentos. Multiple R-squared: 0.8161, Adjusted R-squared: 0.8151, en cuanto al R cuadrado muestra un 0.81, es decir, este modelo explica alrededor del 81% de la variacion en los ingresos mensuales

###Modelo 3

La variable a utilizar para el tercer modelo sera la Variable “Antigüedad”

mod3=lm(Ingreso_Mensual~Antigüedad, data=Datos_Nutresa)
summary (mod3)
## 
## Call:
## lm(formula = Ingreso_Mensual ~ Antigüedad, data = Datos_Nutresa)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -9504365 -2498983 -1188091  1392960 15484522 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3733273     160091   23.32   <2e-16 ***
## Antigüedad    395205      17201   22.98   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4039000 on 1468 degrees of freedom
## Multiple R-squared:  0.2645, Adjusted R-squared:  0.264 
## F-statistic: 527.9 on 1 and 1468 DF,  p-value: < 2.2e-16

Se observa una alta significancia de las variables, el modelo indica que por cada año de antigüedad puede haber un aumento en el ingreso de 395 mil pesos colombianos.

Multiple R-squared: 0.2645, Adjusted R-squared: 0.264: El modelo explica alrededor del 26% de la variacion en el ingreso mensual, no se puede considerar un modelo aceptable

###Elección de Modelo

El modelo simple elegido para el pronostico es el segundo modelo, el cual explica el 81% y por ende se puede considerar un buen modelo.

# Predecir el ingreso para un cargo específico"
nueva_obs <- data.frame(Cargo = factor("Director_Investigación", levels = levels(Datos_Nutresa$Cargo)))

# Hacer la predicción con intervalo de confianza al 95%
predict(mod2, newdata = nueva_obs, interval = "confidence", level = 0.95)
##        fit      lwr      upr
## 1 16033550 15589510 16477590

De acuerdo con el modelo modificado, un individuo con la posición de Director de Investigación estima un ingreso mensual de $16.033.550 COP. Además, con un grado de confianza del 95%, se anticipa que el salario de una persona con ese puesto fluctúe entre $15.589.510 y $16.477.590 COP.

##Validacion Cruzada

A continuación vamos a realizar una validación cruzada para evaluar el poder predictivo del modelo. Usaremos un escenario 80-20 (modelar-validar) como se observa:

## Paso 1 - Segmentar los Datos (80% modelar, 20% validar)
set.seed(123)  # Para reproducibilidad
id_modelar <- sample(1:nrow(Datos_Nutresa), size = 0.8 * nrow(Datos_Nutresa))
nutresa_modelar <- Datos_Nutresa[id_modelar, ]
nutresa_validar <- Datos_Nutresa[-id_modelar, ]

## Paso 2 - Ajustar el Modelo sobre el set de modelado
modelo_edu <- lm(Ingreso_Mensual ~ Cargo,data = nutresa_modelar)

## Paso 3 - Predecir sobre el set de validación
ingreso_pred <- predict(modelo_edu, newdata = nutresa_validar)

## Paso 4 - Comparar valores reales vs. predichos
ingreso_real <- nutresa_validar$Ingreso_Mensual
error <- ingreso_real - ingreso_pred
resumen <- data.frame(ingreso_real, ingreso_pred)

## Paso 5 - Calcular MAE (Mean Absolute Error)
MAE <- mean(abs(error))
MAE
## [1] 1640217

MAE = 1640217 señala que, en términos generales, el modelo se equivoca en alrededor de 1,6 millones de pesos al estimar el ingreso mensual de los individuos en el conjunto validado.

Es un valor considerable al tener en cuenta que el valor maximo que encontramos en el Ingreso Mensual es de 19,9 millones y su minimo de 1 millon.

##Regresión Lineal Multiple

Modelo Multiple 1

El primer modelo elegido tendra 3 variables, 2 cuantitativas (Años de Experiencia, Edad) y una cualitativa (Departamento)

# Asegúrate de que Departamento sea una variable categórica (factor)
Datos_Nutresa$Departamento <- as.factor(Datos_Nutresa$Departamento)

# Crear el modelo de regresión lineal múltiple
mod4<- lm(Ingreso_Mensual ~ Años_Experiencia + Edad + Departamento, data = Datos_Nutresa)

# Ver el resumen del modelo
summary(mod4)
## 
## Call:
## lm(formula = Ingreso_Mensual ~ Años_Experiencia + Edad + Departamento, 
##     data = Datos_Nutresa)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -11075990  -1633045   -104341   1301962  11130102 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         1691116     355685   4.755 2.18e-06 ***
## Años_Experiencia     488876      13566  36.037  < 2e-16 ***
## Edad                 -25778      11559  -2.230   0.0259 *  
## DepartamentoRH       288793     385635   0.749   0.4541    
## DepartamentoVentas   780879     169918   4.596 4.69e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2965000 on 1465 degrees of freedom
## Multiple R-squared:  0.6045, Adjusted R-squared:  0.6034 
## F-statistic: 559.9 on 4 and 1465 DF,  p-value: < 2.2e-16

Modelo con alta significancia en sus variables exceptuando el departamento de Recursos Humanos, un R2 ajustado de 0.6034, es decir, este modelo explica alrededor del 60,34% de la variacion de los ingresos mensuales. Es un modelo aceptable

mod_multiple4 =step(mod4)
## Start:  AIC=43817.72
## Ingreso_Mensual ~ Años_Experiencia + Edad + Departamento
## 
##                    Df  Sum of Sq        RSS   AIC
## <none>                           1.2877e+16 43818
## - Edad              1 4.3713e+13 1.2920e+16 43821
## - Departamento      2 1.8574e+14 1.3062e+16 43835
## - Años_Experiencia  1 1.1415e+16 2.4291e+16 44749

En lo que respecta al AIC, el mejor AIC se encuentra en el modelo original, lo que quiere decir que todas las variables estan aportando a que se mantenga el poder explicativo dentro del modelo.

Modelo Multiple 2

Para este modelo se van a utilizar las siguientes variables: Cualitativas: Cargo, Departamento. Cuantitativas: Años de Experiencia, Antiguedad, Edad.

# Asegúrate de que las variables categóricas sean factores
Datos_Nutresa$Cargo <- as.factor(Datos_Nutresa$Cargo)
Datos_Nutresa$Departamento <- as.factor(Datos_Nutresa$Departamento)

# Crear el modelo de regresión múltiple
mod5 <- lm(Ingreso_Mensual ~ Edad + Años_Experiencia + Antigüedad + Cargo + Departamento,
                      data = Datos_Nutresa)

# Ver el resumen del modelo
summary(mod5)
## 
## Call:
## lm(formula = Ingreso_Mensual ~ Edad + Años_Experiencia + Antigüedad + 
##     Cargo + Departamento, data = Datos_Nutresa)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -5422574 -1094529  -114733   967283  5430782 
## 
## Coefficients:
##                               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                   11953251     300681  39.754   <2e-16 ***
## Edad                             -6968       6618  -1.053   0.2926    
## Años_Experiencia                195549      10682  18.306   <2e-16 ***
## Antigüedad                       18482       9317   1.984   0.0475 *  
## CargoDirector_Manofactura     -7032055     239614 -29.347   <2e-16 ***
## CargoEjecutivo_Ventas         -6461247     420208 -15.376   <2e-16 ***
## CargoGerente                    702806     292432   2.403   0.0164 *  
## CargoInvestigador_Cientifico -10078028     232604 -43.327   <2e-16 ***
## CargoRecursos_Humanos         -9251710     635884 -14.549   <2e-16 ***
## CargoRepresentante_Salud      -7052986     241700 -29.181   <2e-16 ***
## CargoRepresentante_Ventas     -9463646     460607 -20.546   <2e-16 ***
## CargoTecnico_Laboratorio     -10068461     235303 -42.789   <2e-16 ***
## DepartamentoRH                   84882     548735   0.155   0.8771    
## DepartamentoVentas             -620070     353853  -1.752   0.0799 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1656000 on 1456 degrees of freedom
## Multiple R-squared:  0.8774, Adjusted R-squared:  0.8763 
## F-statistic: 801.5 on 13 and 1456 DF,  p-value: < 2.2e-16

El modelo tiene una alta significancia en sus variables, las excepciones se encuentran en: Edad, Departamento de Recursos Humanos y Departamento de Ventas. En cuanto al R2 ajustado tiene un valor de 0.8763, es decir que este modelo explica alrededor del 87,63% de la variabilidad de los ingresos mensuales, por ende es un muy buen modelo.

mod_multiple5 =step(mod5)
## Start:  AIC=42114.23
## Ingreso_Mensual ~ Edad + Años_Experiencia + Antigüedad + Cargo + 
##     Departamento
## 
##                    Df  Sum of Sq        RSS   AIC
## - Edad              1 3.0389e+12 3.9952e+15 42113
## - Departamento      2 9.5464e+12 4.0017e+15 42114
## <none>                           3.9921e+15 42114
## - Antigüedad        1 1.0789e+13 4.0029e+15 42116
## - Años_Experiencia  1 9.1882e+14 4.9110e+15 42417
## - Cargo             8 8.8620e+15 1.2854e+16 43817
## 
## Step:  AIC=42113.35
## Ingreso_Mensual ~ Años_Experiencia + Antigüedad + Cargo + Departamento
## 
##                    Df  Sum of Sq        RSS   AIC
## - Departamento      2 9.4992e+12 4.0047e+15 42113
## <none>                           3.9952e+15 42113
## - Antigüedad        1 1.3883e+13 4.0091e+15 42116
## - Años_Experiencia  1 1.3303e+15 5.3255e+15 42534
## - Cargo             8 8.8894e+15 1.2885e+16 43819
## 
## Step:  AIC=42112.84
## Ingreso_Mensual ~ Años_Experiencia + Antigüedad + Cargo
## 
##                    Df  Sum of Sq        RSS   AIC
## <none>                           4.0047e+15 42113
## - Antigüedad        1 1.3623e+13 4.0183e+15 42116
## - Años_Experiencia  1 1.3293e+15 5.3340e+15 42532
## - Cargo             8 9.0606e+15 1.3065e+16 43835

Lo que se realizo en el proceso AIC fue quitar las variables que reducirian el valor AIC, asi mismo las variables que no aportan informacion valiosa al modelo, en este caso el modelo con menor AIC es el modelo que solo contiene las variables Antiguedad, Años de Experiencia y Cargo, este modelo tiene un valor AIC de 42112.

# Asegúrate de que "Cargo" sea una variable categórica
Datos_Nutresa$Cargo <- as.factor(Datos_Nutresa$Cargo)

# Ajustar el modelo óptimo
modelo_optimo <- lm(Ingreso_Mensual ~ Años_Experiencia + Antigüedad + Cargo, data = Datos_Nutresa)

# Ver el resumen del modelo
summary(modelo_optimo)
## 
## Call:
## lm(formula = Ingreso_Mensual ~ Años_Experiencia + Antigüedad + 
##     Cargo, data = Datos_Nutresa)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -5126134 -1082643   -88059   965060  5370994 
## 
## Coefficients:
##                               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                   11776875     243735  48.318   <2e-16 ***
## Años_Experiencia                188527       8567  22.007   <2e-16 ***
## Antigüedad                       20315       9119   2.228   0.0260 *  
## CargoDirector_Manofactura     -7046677     239467 -29.427   <2e-16 ***
## CargoEjecutivo_Ventas         -7097777     220689 -32.162   <2e-16 ***
## CargoGerente                    483473     249189   1.940   0.0525 .  
## CargoInvestigador_Cientifico -10095401     232353 -43.449   <2e-16 ***
## CargoRecursos_Humanos         -9190187     310965 -29.554   <2e-16 ***
## CargoRepresentante_Salud      -7070561     241396 -29.290   <2e-16 ***
## CargoRepresentante_Ventas    -10091414     287540 -35.096   <2e-16 ***
## CargoTecnico_Laboratorio     -10085105     235091 -42.899   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1657000 on 1459 degrees of freedom
## Multiple R-squared:  0.877,  Adjusted R-squared:  0.8762 
## F-statistic:  1040 on 10 and 1459 DF,  p-value: < 2.2e-16

###Interpretacion del modelo optimo

R² = 0.877 y Ajusted R² = 0.8762

El modelo presenta un R² de 0.877, lo cual indica que aproximadamente el 87.7% de la variabilidad en el ingreso mensual puede ser explicada por los años de experiencia, la antigüedad y el cargo. Este nivel de ajuste es alto y representa un desempeño sólido dentro del contexto de los modelos lineales aplicados a datos socioeconómicos.

Coeficientes

Años de Experiencia y Antigüedad
Ambas variables son positivas y estadísticamente significativas (p < 0.05), lo que indica que, en promedio, a mayor experiencia o antigüedad, mayor es el ingreso mensual.
- Por cada año adicional de experiencia, se estima un incremento de $188.527 COP.
- Por cada año adicional de antigüedad, se estima un incremento de $20.315 COP.

Cargo
La variable Cargo se interpreta en relación con el nivel de referencia, que en este caso es el cargo de “Director de Investigación”.
La mayoría de los cargos presentan coeficientes negativos y altamente significativos, lo cual indica que, en comparación con el cargo de referencia, esos cargos se asocian con un ingreso mensual significativamente inferior.
El único cargo que muestra un coeficiente positivo es el de “Gerente”, lo que sugiere que este podría tener un ingreso estimado superior al de “Director de Investigación”, aunque con una significancia estadística marginal (p ≈ 0.0525).

###Validación de Supuestos

# Establecer un layout de 2x2 para los gráficos
par(mfrow = c(2, 2))

# Gráficos de diagnóstico del modelo óptimo
plot(modelo_optimo)

  • Linealidad: El gráfico de residuos en comparación con valores ajustados no presenta patrones sistemáticos claros, lo que indica que la relació entre los predictores y el ingreso mensual es razonablemente lineal.

  • Normalidad de los residuos: El Q-Q plot indica que los residuos se alinean con la línea diagonal teórica, salvo algunas desviaciones en los extremos. Esto sugiere una distribución aproximadamente normal con colas ligeramente pesadas.

  • Homoscedasticidad: Se nota un pequeño incremento en la dispersión de los desechos conforme se elevan los valores ajustados, lo que señala una ligera heterocedasticidad. Aunque no es esencial, podría respaldar la implementación de una transformación en la variable dependiente.

  • Observaciones influyentes: El gráfico de residuos vs leverage no muestra puntos con distancia de Cook alta, por lo que se puede concluir que no existen observaciones que afecten de forma significativa la estabilidad del modelo.

###Modelo Transformado

En este caso se decidio que la transformación como se menciona antes se realizara en la variable dependiente, es decir, se sacara log a los ingresos mensuales.

# Crear el modelo con transformación logarítmica
modelo_log <- lm(log(Ingreso_Mensual) ~ Años_Experiencia + Antigüedad + Cargo,
                 data = Datos_Nutresa)

# Ver resumen
summary(modelo_log)
## 
## Call:
## lm(formula = log(Ingreso_Mensual) ~ Años_Experiencia + Antigüedad + 
##     Cargo, data = Datos_Nutresa)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.90775 -0.19016  0.00004  0.18968  0.95144 
## 
## Coefficients:
##                               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                  15.953647   0.041328 386.029  < 2e-16 ***
## Años_Experiencia              0.026845   0.001453  18.481  < 2e-16 ***
## Antigüedad                    0.004200   0.001546   2.716  0.00668 ** 
## CargoDirector_Manofactura    -0.588780   0.040604 -14.501  < 2e-16 ***
## CargoEjecutivo_Ventas        -0.585811   0.037420 -15.655  < 2e-16 ***
## CargoGerente                 -0.024070   0.042252  -0.570  0.56899    
## CargoInvestigador_Cientifico -1.252474   0.039398 -31.791  < 2e-16 ***
## CargoRecursos_Humanos        -1.074298   0.052727 -20.375  < 2e-16 ***
## CargoRepresentante_Salud     -0.587190   0.040931 -14.346  < 2e-16 ***
## CargoRepresentante_Ventas    -1.359430   0.048755 -27.883  < 2e-16 ***
## CargoTecnico_Laboratorio     -1.249031   0.039862 -31.334  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2809 on 1459 degrees of freedom
## Multiple R-squared:  0.8225, Adjusted R-squared:  0.8213 
## F-statistic: 675.9 on 10 and 1459 DF,  p-value: < 2.2e-16
# Gráficos de diagnóstico del modelo transformado
par(mfrow = c(2, 2))
plot(modelo_log)

# Predicción en escala original
pred_log <- exp(predict(modelo_log))
pred_original <- predict(modelo_optimo)

# Ingresos reales
ingresos_reales <- Datos_Nutresa$Ingreso_Mensual

# Calcular MAE
MAE_log <- mean(abs(ingresos_reales - pred_log))
MAE_original <- mean(abs(ingresos_reales - pred_original))

# Mostrar los errores absolutos medios
MAE_log
## [1] 1318467
MAE_original
## [1] 1297127

Conclusión

Los hallazgos revelaron un R2 ajustado de 0.8213, que es inferior al del modelo inicial (0.8762), lo que señala una reducción en la capacidad explicativa. Igualmente, el error medio absoluto (MAE) del modelo transformado alcanzó los 1.318.467 COP, un poco más alto que el MAE del modelo inicial (1.297.127 COP).

Sin embargo, los diagramas de diagnóstico revelaron avances visuales en la normalidad de los desechos y una distribución más homogénea en el diagrama de escala-localidad. Esto indica que, a pesar de que la transformación mejora parcialmente ciertas hipótesis estadísticas, lo hace a costo de disminuir la capacidad predictiva del modelo.

Por lo tanto, se concluye que el modelo original (sin transformar) es el más adecuado para este análisis, ya que ofrece una mejor capacidad de predicción con un buen cumplimiento de los supuestos estadísticos básicos.

##Pronóstico

Procedemos con la realizamos del pronostico con el modelo optimo, para esto utilizaremos 3 personas hipoteticas.

# Crear copia sin tilde
Datos_Nutresa$Antiguedad <- Datos_Nutresa$Antigüedad

# Ajustar modelo óptimo sin tildes
modelo_optimo2 <- lm(Ingreso_Mensual ~ Años_Experiencia + Antiguedad + Cargo,
                     data = Datos_Nutresa)

# Crear nuevos casos
nuevos_casos <- data.frame(
  Años_Experiencia = c(5),
  Antiguedad = c(3),
  Cargo = factor("Ejecutivo_Ventas", levels = levels(Datos_Nutresa$Cargo))
)

# Predecir ingreso
predict(modelo_optimo2, newdata = nuevos_casos, interval = "confidence", level = 0.95)
##       fit     lwr     upr
## 1 5682678 5480061 5885294

###Conclusión

Se realizó una predicción del ingreso mensual para una persona con las siguientes características:

  • Años de experiencia: 5
  • Antigüedad en la empresa: 3
  • Cargo: Ejecutivo de Ventas

Utilizando el modelo óptimo de regresión lineal, se estimó un ingreso mensual de $5.682.678 COP, con un intervalo de confianza al 95% entre $5.480.061 y $5.885.294 COP.

Esto significa que, bajo las condiciones actuales del modelo, es razonable esperar que una persona con este perfil tenga un ingreso mensual dentro de ese rango.

##Aplicaciones y utilidad del modelo en la organización

El modelo de regresión lineal construido permite predecir de forma razonablemente precisa el ingreso mensual de los empleados, a partir de su experiencia, antigüedad y cargo. Esto lo convierte en una herramienta útil para la toma de decisiones en las siguientes áreas:

  • Gestión salarial y equidad interna: El modelo puede ayudar a identificar si existen brechas salariales entre empleados con perfiles similares, promoviendo una estructura salarial más justa y basada en datos objetivos.

  • Planeación de presupuestos de nómina: Permite estimar el impacto financiero de futuros ascensos, promociones o contrataciones, al predecir el ingreso que correspondería a distintos perfiles laborales.

  • Simulaciones y escenarios hipotéticos: La empresa puede utilizar el modelo para evaluar, por ejemplo, cuánto costaría incorporar personal con ciertos años de experiencia en cargos estratégicos.

  • Atracción y retención de talento: Ofrece un marco cuantitativo para diseñar escalas salariales competitivas según la experiencia y la trayectoria del empleado, lo cual puede mejorar la retención.

En resumen, el modelo sirve como base técnica para la toma de decisiones estratégicas en talento humano y compensaciones, alineando las políticas salariales con las características reales del personal.