library(readxl)
library(readr)
library(dplyr)
library(skimr)
library(knitr)

Introducción

La Gran Encuesta Integrada de Hogares (GEIH) es una de las principales fuentes de información socioeconómica en Colombia, ya que permite caracterizar las condiciones laborales de la población ocupada. Entre los aspectos de mayor interés se encuentra el análisis de los ingresos laborales y los factores que pueden influir en ellos, como las características sociodemográficas y las condiciones del empleo.

En este trabajo se utilizará una muestra de la GEIH correspondiente al mes de abril, con el propósito de identificar los factores asociados al ingreso laboral mensual de la población ocupada mediante técnicas de análisis descriptivo e inferencial, que posteriormente servirán como base para la aplicación de modelos supervisados y no supervisados.

Pregunta de investigación

¿Qué factores sociodemográficos y laborales están asociados con el ingreso laboral mensual de la población ocupada en la GEIH de abril?

Objetivo general

Analizar la relación entre variables sociodemográficas y laborales con el ingreso laboral mensual de la población ocupada registrada en la GEIH correspondiente al mes de abril.

Variables de estudio

Las variables seleccionadas para el análisis fueron elegidas por su posible influencia sobre el ingreso laboral de los trabajadores.

Variable Tipo Descripción Justificación
INGLABO Continua Ingreso laboral mensual Variable respuesta del estudio.
P6800 Continua Horas trabajadas normalmente por semana Permite evaluar si una mayor cantidad de horas trabajadas se relaciona con mayores ingresos.
RAMA2D_R4 Categórica Rama de actividad económica Permite analizar si el sector económico donde trabaja la persona influye en el ingreso laboral.
P6440 Categórica Posición ocupacional Permite evaluar diferencias salariales según la condición laboral (empleado, independiente, patrón, etc.).

Justificación de las variables

La variable INGLABO constituye la variable dependiente del estudio, ya que representa el ingreso laboral mensual percibido por los trabajadores ocupados. Como variables explicativas se consideran las horas trabajadas semanalmente (P6800), la posición ocupacional (P6440) y la rama de actividad económica (RAMA2D_R4). Estas variables permiten analizar cómo las condiciones laborales y el sector económico en el que se desempeñan los trabajadores pueden estar asociadas con las diferencias en el ingreso laboral mensual.

Tipo de variables

De acuerdo con la pregunta de investigación, se definió una variable respuesta y tres variables explicativas, las cuales permitirán analizar los factores asociados al ingreso laboral mensual de la población ocupada.

  • Variable respuesta (dependiente)
    • INGLABO: Ingreso laboral mensual.
  • Variables explicativas (independientes)
    • P6800: Horas trabajadas normalmente por semana.
    • RAMA2D_R4: Rama de actividad económica.
    • P6440: Posición ocupacional.

Descripción del conjunto de datos

datos <- read_delim(
  "B (1).CSV",
  delim = ";",
  show_col_types = FALSE,
  trim_ws = TRUE
)
## Warning: One or more parsing issues, call `problems()` on your data frame for details,
## e.g.:
##   dat <- vroom(...)
##   problems(dat)
head(datos)
## # A tibble: 6 × 208
##    PERIODO MES     PER DIRECTORIO SECUENCIA_P ORDEN HOGAR REGIS AREA  CLASE
##      <dbl> <chr> <dbl>      <dbl>       <dbl> <dbl> <dbl> <dbl> <chr> <dbl>
## 1 20260418 04     2026    8567919           1     1     1    60 <NA>      2
## 2 20260418 04     2026    8567919           1     2     1    60 <NA>      2
## 3 20260418 04     2026    8567920           1     1     1    60 <NA>      2
## 4 20260418 04     2026    8567920           1     5     1    60 <NA>      2
## 5 20260418 04     2026    8567921           1     1     1    60 <NA>      2
## 6 20260418 04     2026    8567921           1     2     1    60 <NA>      2
## # ℹ 198 more variables: FEX_C18 <dbl>, DPTO <chr>, FT <dbl>, P3044S2 <dbl>,
## #   P6440 <dbl>, P6450 <dbl>, P6460 <dbl>, P6460S1 <dbl>, P6400 <dbl>,
## #   P6410 <dbl>, P6422 <dbl>, P6420S2 <dbl>, P6424S1 <dbl>, P6424S2 <dbl>,
## #   P6424S3 <dbl>, P6424S5 <dbl>, P6430 <dbl>, P6430S1 <lgl>, P3045S1 <dbl>,
## #   P3045S2 <dbl>, P3045S3 <dbl>, P3046 <dbl>, P3363 <dbl>, P3363S1 <chr>,
## #   P9440 <dbl>, P6500 <dbl>, P3364 <dbl>, P3364S1 <dbl>, P6510 <dbl>,
## #   P6510S1 <dbl>, P6510S2 <dbl>, P6590 <dbl>, P6590S1 <dbl>, P6600 <dbl>, …

La base de datos utilizada corresponde a la Gran Encuesta Integrada de Hogares (GEIH) del mes de abril. Inicialmente se verificó la estructura del conjunto de datos con el fin de identificar el número de observaciones, variables y la presencia de datos faltantes.

# Número de observaciones
n_observaciones <- nrow(datos)

# Número de variables
n_variables <- ncol(datos)

# Registros completos (sin valores faltantes)
registros_validos <- sum(complete.cases(datos))

# Total de datos faltantes en toda la base
datos_faltantes <- sum(is.na(datos))

# Tabla resumen
resumen_base <- data.frame(
  Indicador = c("Número de observaciones",
                "Número de variables",
                "Registros válidos",
                "Datos faltantes"),
  Valor = c(n_observaciones,
            n_variables,
            registros_validos,
            datos_faltantes)
)

# Mostrar tabla
knitr::kable(
  resumen_base,
  caption = "Se registró la siguiente información"
)
Se registró la siguiente información
Indicador Valor
Número de observaciones 29874
Número de variables 208
Registros válidos 0
Datos faltantes 3827253

Estadística Descriptiva

Se calculo las caracteristicas de estadistica descriptiva para las variables continuas.

# Función para calcular la moda
moda <- function(x){
  x <- na.omit(x)
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]
}

Para el calculo de las estadisticas se implementó

# Variables continuas
variables_continuas <- datos %>%
  select(INGLABO, P6800)

# Calcular estadísticas descriptivas
resumen_estadistico <- data.frame(
  Variable = names(variables_continuas),
  Media = sapply(variables_continuas, mean, na.rm = TRUE),
  Mediana = sapply(variables_continuas, median, na.rm = TRUE),
  Moda = sapply(variables_continuas, moda),
  Minimo = sapply(variables_continuas, min, na.rm = TRUE),
  Maximo = sapply(variables_continuas, max, na.rm = TRUE),
  Desviacion_Estandar = sapply(variables_continuas, sd, na.rm = TRUE),
  Coeficiente_Variacion = sapply(
    variables_continuas,
    function(x) (sd(x, na.rm = TRUE) / mean(x, na.rm = TRUE)) * 100
  ),
  Percentil_25 = sapply(
    variables_continuas,
    quantile,
    probs = 0.25,
    na.rm = TRUE
  ),
  Percentil_50 = sapply(
    variables_continuas,
    quantile,
    probs = 0.50,
    na.rm = TRUE
  ),
  Percentil_75 = sapply(
    variables_continuas,
    quantile,
    probs = 0.75,
    na.rm = TRUE
  )
)

# Mostrar tabla
knitr::kable(
  resumen_estadistico,
  digits = 2,
  caption = "Medidas descriptivas de las variables continuas"
)
Medidas descriptivas de las variables continuas
Variable Media Mediana Moda Minimo Maximo Desviacion_Estandar Coeficiente_Variacion Percentil_25 Percentil_50 Percentil_75
INGLABO INGLABO 2180496.52 1750900 2e+06 0 1.0e+08 2781336.59 127.56 990000 1750900 2400000
P6800 P6800 42.77 44 4e+01 1 1.3e+02 12.96 30.30 40 44 48

Con el propósito de describir el comportamiento de las variables continuas se calcularon medidas de tendencia central, dispersión y posición. En particular, se obtuvieron la media, mediana, moda, valores mínimo y máximo, desviación estándar, coeficiente de variación y los percentiles 25, 50 y 75 para las variables INGLABO y P6800. Estas medidas permiten resumir la distribución de los datos e identificar la variabilidad y concentración de los valores antes de realizar análisis inferenciales.

Visualización

Con el fin de analizar la distribución de las variables continuas, se construyeron histogramas y diagramas de caja (boxplots). Estas representaciones gráficas permiten identificar la forma de la distribución, la dispersión de los datos, posibles valores atípicos y la existencia de asimetrías.

hist(datos$INGLABO,
     main = "Histograma del ingreso laboral mensual",
     xlab = "Ingreso laboral",
     col = "steelblue",
     border = "white")

boxplot(datos$INGLABO,
        main = "Boxplot del ingreso laboral",
        ylab = "Ingreso laboral",
        col = "lightblue")

hist(datos$P6800,
     main = "Histograma de horas trabajadas por semana",
     xlab = "Horas trabajadas",
     col = "darkseagreen",
     border = "white")

boxplot(datos$P6800,
        main = "Boxplot de horas trabajadas",
        ylab = "Horas",
        col = "lightgreen")

Los histogramas permiten identificar la forma de la distribución de las variables continuas. En el caso del ingreso laboral es común encontrar una distribución asimétrica hacia la derecha, debido a que una pequeña proporción de trabajadores percibe ingresos considerablemente superiores al promedio. Por otra parte, el boxplot facilita la identificación de valores atípicos, mientras que para la variable horas trabajadas se espera una distribución más concentrada alrededor de la jornada laboral habitual.

Variables Categóricas

# Frecuencia absoluta
frecuencia_abs <- table(datos$P6440)

# Frecuencia relativa
frecuencia_rel <- prop.table(frecuencia_abs)*100

# Tabla
tabla_frecuencia <- data.frame(
  Categoria = names(frecuencia_abs),
  Frecuencia = as.vector(frecuencia_abs),
  Porcentaje = round(as.vector(frecuencia_rel),2)
)

knitr::kable(tabla_frecuencia,
             caption = "Frecuencias de la posición ocupacional")
Frecuencias de la posición ocupacional
Categoria Frecuencia Porcentaje
1 18547 62.08
2 11327 37.92
barplot(frecuencia_abs,
        col="steelblue",
        main="Posición ocupacional",
        xlab="Categoría",
        ylab="Frecuencia")

Cruces Relevantes

boxplot(INGLABO ~ P6440,
        data = datos,
        col = "skyblue",
        main = "Ingreso laboral según posición ocupacional",
        xlab = "Posición ocupacional",
        ylab = "Ingreso")

plot(datos$P6800,
     datos$INGLABO,
     pch = 19,
     col = "darkblue",
     xlab = "Horas trabajadas",
     ylab = "Ingreso laboral",
     main = "Ingreso laboral vs Horas trabajadas")

abline(lm(INGLABO ~ P6800, data = datos),
       col = "red",
       lwd = 2)

boxplot(
  INGLABO ~ RAMA2D_R4,
  data = datos,
  col = "lightgreen",
  las = 2,
  main = "Ingreso laboral según rama de actividad económica",
  xlab = "Rama de actividad económica",
  ylab = "Ingreso laboral mensual"
)

Con el propósito de responder la pregunta de investigación, se realizaron cruces entre la variable de interés, INGLABO (ingreso laboral mensual), y las variables explicativas seleccionadas. Estos cruces permiten explorar de manera preliminar la existencia de asociaciones entre el ingreso laboral y diferentes características laborales de la población ocupada. En particular, se analizó la relación entre el ingreso y la posición ocupacional (P6440) para identificar posibles diferencias salariales según el tipo de vinculación laboral; la relación entre el ingreso laboral y las horas trabajadas por semana (P6800) para evaluar si una mayor dedicación laboral se asocia con mayores ingresos; y, finalmente, la relación entre el ingreso laboral y la rama de actividad económica (RAMA2D_R4) con el fin de explorar posibles diferencias en los ingresos entre los distintos sectores económicos. Estos análisis constituyen una primera aproximación descriptiva que servirá como base para el desarrollo del análisis inferencial y la evaluación de las hipótesis planteadas.

Correlación

Punto 7 # Diferencia de medias

t.test(INGLABO ~ P6440, data = datos)
## 
##  Welch Two Sample t-test
## 
## data:  INGLABO by P6440
## t = 33.342, df = 21392, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group 1 and group 2 is not equal to 0
## 95 percent confidence interval:
##  1055530 1187387
## sample estimates:
## mean in group 1 mean in group 2 
##         2594665         1473206

Hipótesis

Se plantea como hipótesis que el ingreso laboral mensual de la población ocupada se encuentra asociado con las características laborales de los trabajadores. En particular, se espera que las personas que trabajan un mayor número de horas por semana (P6800) tiendan a percibir ingresos más altos. Asimismo, se espera que existan diferencias significativas en el ingreso laboral según la posición ocupacional (P6440) y la rama de actividad económica (RAMA2D_R4), debido a que las condiciones de empleo y el sector económico en el que se desempeñan los trabajadores influyen en la remuneración percibida. las personas con mayor nivel educativo, mayor experiencia laboral, empleos formales y jornadas de trabajo más extensas tienden a percibir ingresos más altos, mientras que variables como el sexo, la edad y el tipo de ocupación también pueden generar diferencias salariales.

Punto 8 # Historia de datos