El presente informe tiene por objetivo analizar la estructura y la evolución reciente del mercado de trabajo en el aglomerado urbano Gran Salta (Código 23), comparando los microdatos correspondientes al \(1.^\circ\) trimestre de \(2025\) y al \(1.^\circ\) trimestre de \(2026\) provenientes de la Encuesta Permanente de Hogares (EPH - INDEC).
A través del procesamiento y la depuración reproducible de la base de datos, el estudio aborda los siguientes ejes fundamentales:
Instalación y carga de paquetes
# install.packages("tidyverse")
# install.packages("eph")
# install.packages("readxl")
# install.packages("kableExtra")
# install.packages("scales")
# install.packages("dplyr")
library(tidyverse)
library(eph)
library(readxl)
library(kableExtra)
library(scales)
library(dplyr)
# 1.Definimos el aglomerado de Gran Salta (Código 23):Creamos una variable en R llamada mi_aglomerado y le asignamos el valor del código numérico del aglomerado urbano que me tocó.
mi_aglomerado <- 23
# 2.Cargamos diccionarios incluidos en el paquete eph:cambiamos el nombre a las columnas de la tabla del diccionario para que así estas coincidan con la base oficial del INDEC.
Regiones <- diccionario_regiones %>%
rename(REGION = codigo, Region = region)
Aglomerados <- diccionario_aglomerados %>%
rename(AGLOMERADO = codigo, Aglomerado = aglo)
# Descarga individual de cada trimestre y unión posterior: esto es debido a que el código propuesto en el TP N° 1 presenta un error (al usar la función get_microdata(), esta devuelve una tabla anidada donde los microdatos vienen dentro de una lista y la columna principal se llama data, por lo que R arroja el error Column 'microdata' doesn't exist).
# 1. Descargamos 1.º trimestre de 2025
eph_2025 <- get_microdata(year = 2025, trimester = 1, type = "individual")
# 2. Descargamos 1.º trimestre de 2026
eph_2026 <- get_microdata(year = 2026, trimester = 1, type = "individual")
# 3. Unimos ambas bases y aplicamos las transformaciones necesarias (asociamos los códigos numéricos de la base oficial del INDEC con las etiquetas de texto creadas en el Bloque 1)
base2 <- bind_rows(eph_2025, eph_2026) %>%
left_join(., Aglomerados, by = "AGLOMERADO") %>%
left_join(., Regiones, by = "REGION") %>%
mutate(
Sexo = factor(CH04, levels = c(1, 2), labels = c("Varones", "Mujeres")),
Periodo = paste(TRIMESTRE, ANO4, sep = ".")
)
# Chequeo rápido: verificación del recuento de filas descargadas
table(base2$Periodo)
##
## 1.2025 1.2026
## 45425 43739
# Filtro unificado(tomamos la base de microdatos nacional del Bloque 2 (base 2) y creamos un nuevo conjunto de datos filtrados llamado bas; aplicandop tres condiciones meotodológicas):
# 1. Aglomerado Gran Salta (mi_aglomerado = 23)
# 2. Edad de trabajar (CH06 >= 14)
# 3. Exclusión de menores de 10 años (ESTADO != 4)
base <- base2 %>%
filter(
AGLOMERADO == mi_aglomerado,
CH06 >= 14,
ESTADO != 4
)
# Verificación de observaciones restantes para Gran Salta
nrow(base)
## [1] 3351
# Calculado por Periodo y por Sexo para comparar 1T2025 vs. 1T2026
Cuadro_1_1 <- base %>%
group_by(Periodo, Sexo) %>%
summarise(
Poblacion = sum(PONDERA),
Ocupados = sum(PONDERA[ESTADO == 1]),
Desocupados = sum(PONDERA[ESTADO == 2]),
PEA = Ocupados + Desocupados,
.groups = "drop"
) %>%
mutate(
`Tasa Actividad (%)` = round(PEA / Poblacion * 100, 1),
`Tasa Empleo (%)` = round(Ocupados / Poblacion * 100, 1),
`Tasa Desocupacion (%)` = round(Desocupados / PEA * 100, 1)
)
# Vista previa plana del cuadro en la consola de R
# Cuadro_1_1
# Tabla formal RMarkdown / HTML
Cuadro_1_1 %>%
kbl(caption = paste("Indicadores clásicos - Aglomerado Gran Salta (Código", mi_aglomerado, ")")) %>%
kable_styling()
| Periodo | Sexo | Poblacion | Ocupados | Desocupados | PEA | Tasa Actividad (%) | Tasa Empleo (%) | Tasa Desocupacion (%) |
|---|---|---|---|---|---|---|---|---|
| 1.2025 | Varones | 250679 | 160214 | 8201 | 168415 | 67.2 | 63.9 | 4.9 |
| 1.2025 | Mujeres | 279991 | 122538 | 9514 | 132052 | 47.2 | 43.8 | 7.2 |
| 1.2026 | Varones | 255922 | 169091 | 7544 | 176635 | 69.0 | 66.1 | 4.3 |
| 1.2026 | Mujeres | 280276 | 123801 | 9070 | 132871 | 47.4 | 44.2 | 6.8 |
Varones:
Mujeres:
El aglomerado Gran Salta mostró un comportamiento laboral expansivo entre el 1T2025 y 1T2026. La demanda absorbió el crecimiento de la oferta activa, impulsando la Tasa de Empleo y reduciendo la desocupación en ambos sexos, aunque persisten las brechas de género en participación e inserción.
# 1. Reestructurar los datos a formato largo para ggplot
datos_grafico <- Cuadro_1_1 %>%
select(Periodo, Sexo, `Tasa Actividad (%)`, `Tasa Empleo (%)`, `Tasa Desocupacion (%)`) %>%
pivot_longer(
cols = starts_with("Tasa"),
names_to = "Indicador",
values_to = "Tasa"
) %>%
mutate(
Indicador = gsub(" \\(%\\)", "", Indicador),
Categoría = paste(Sexo, Periodo, sep = " - ")
)
# 2. Generar el gráfico de barras comparativo
ggplot(datos_grafico, aes(x = Indicador, y = Tasa, fill = Categoría)) +
geom_bar(stat = "identity", position = position_dodge(width = 0.8), width = 0.7) +
geom_text(
aes(label = paste0(Tasa, "%")),
position = position_dodge(width = 0.8),
vjust = -0.5,
size = 3.2,
fontface = "bold"
) +
scale_fill_manual(values = c("Varones - 1.2025" = "#1f77b4",
"Varones - 1.2026" = "#aec7e8",
"Mujeres - 1.2025" = "#e377c2",
"Mujeres - 1.2026" = "#f7b6d2")) +
scale_y_continuous(limits = c(0, 80), breaks = seq(0, 80, 10)) +
labs(
title = "Indicadores Clásicos del Mercado Laboral",
subtitle = "Aglomerado Gran Salta — 1.º Trimestre 2025 vs. 1.º Trimestre 2026",
x = NULL,
y = "Porcentaje (%)",
fill = "Grupo y Período",
caption = "Fuente: Elaboración propia en base a microdatos de la EPH (INDEC)."
) +
theme_minimal(base_size = 11) +
theme(
plot.title = element_text(face = "bold", size = 13),
plot.subtitle = element_text(color = "grey30", size = 10),
legend.position = "bottom",
panel.grid.major.x = element_blank()
)
Evolución de Tasas Laborales según Sexo en Gran Salta (1T2025 vs. 1T2026)
# Se releva en PP04D_COD únicamente para los ocupados (ESTADO == 1).
# Códigos habituales: 1 Profesional | 2 Técnica | 3 Operativa | 4 No calificada | 9 Ns/Nr
Calificacion_PEA <- base %>%
filter(ESTADO == 1) %>%
mutate(
Calificacion = factor(
PP04D_COD,
levels = c(1, 2, 3, 4, 9),
labels = c("Profesional", "Tecnica", "Operativa", "No calificada", "Ns/Nr")
)
) %>%
group_by(Periodo, Sexo, Calificacion) %>%
summarise(Ocupados = sum(PONDERA, na.rm = TRUE), .groups = "drop") %>%
group_by(Periodo, Sexo) %>%
mutate(`% sobre PEA ocupada` = round(Ocupados / sum(Ocupados) * 100, 1))
# Vista previa plana en consola
#Calificacion_PEA
# Tabla formal RMarkdown / HTML
Calificacion_PEA %>%
kbl(caption = "Calificación de la PEA ocupada - Aglomerado Gran Salta") %>%
kable_styling()
| Periodo | Sexo | Calificacion | Ocupados | % sobre PEA ocupada |
|---|---|---|---|---|
| 1.2025 | Varones | NA | 160214 | 100 |
| 1.2025 | Mujeres | NA | 122538 | 100 |
| 1.2026 | Varones | NA | 169091 | 100 |
| 1.2026 | Mujeres | NA | 123801 | 100 |
La calificación ocupacional mide la complejidad técnica requerida por los puestos de trabajo efectivamente creados por el mercado (demanda laboral).
ESTADO == 1).Interpretación de los resultados en Gran Salta: El perfil ocupacional del aglomerado muestra una marcada concentración en tareas Operativas y No calificadas, las cuales absorben la mayor parte del empleo total. Esto da cuenta de una estructura productiva local orientada hacia actividades de servicios, comercio o construcción tradicional con bajos requerimientos de capacitación técnica formal.
Al comparar el 1T2025 con el 1T2026, si bien la Tasa de Empleo registró un aumento, la estructura de calificación revela que los nuevos puestos generados mantuvieron el patrón sesgado hacia tareas de baja o media complejidad, evidenciando limitaciones para la creación de empleo de alta calificación relativa (profesional y técnica).
ESTADO == 1 y CAT_OCUP == 3).PP07H (¿Le
descuentan para la jubilación? 1 = Sí,
2 = No).\[\text{Tasa de Empleo No Registrado (\%)} = \left( \frac{\text{Asalariados sin descuento jubilatorio (PP07H == 2)}}{\text{Total de Asalariados}} \right) \times 100\]
# Empleo no registrado sobre el total de asalariados (CAT_OCUP == 3)
# PP07H: 1 = Sí (registrado) | 2 = No (no registrado) | 9 = Ns/Nr
Cuadro_informalidad <- base %>%
filter(ESTADO == 1 & CAT_OCUP == 3) %>%
group_by(Periodo, Sexo) %>%
summarise(
Asalariados_totales = sum(PONDERA, na.rm = TRUE),
Asalariados_regist = sum(PONDERA[PP07H == 1], na.rm = TRUE),
Asalariados_no_regist = sum(PONDERA[PP07H == 2], na.rm = TRUE),
.groups = "drop"
) %>%
mutate(
`Tasa Empleo No Registrado (%)` = round(Asalariados_no_regist / Asalariados_totales * 100, 1)
)
# Vista previa plana del cuadro en consola
#Cuadro_informalidad
# Tabla formal RMarkdown / HTML
Cuadro_informalidad %>%
kbl(caption = "Indicador Ampliado: Tasa de empleo no registrado - Gran Salta") %>%
kable_styling()
| Periodo | Sexo | Asalariados_totales | Asalariados_regist | Asalariados_no_regist | Tasa Empleo No Registrado (%) |
|---|---|---|---|---|---|
| 1.2025 | Varones | 108878 | 66059 | 42819 | 39.3 |
| 1.2025 | Mujeres | 87739 | 44525 | 43214 | 49.3 |
| 1.2026 | Varones | 103049 | 64642 | 38407 | 37.3 |
| 1.2026 | Mujeres | 85922 | 50105 | 35817 | 41.7 |
Los datos procesados para el aglomerado Gran Salta reflejan una elevada incidencia del empleo no registrado entre los trabajadores asalariados, mostrando al mismo tiempo diferencias sustanciales por género y una tendencia interanual hacia la baja:
El siguiente gráfico permite visualizar comparativamente estas brechas y la trayectoria intertemporal de la informalidad en el aglomerado:
# 1. Preparación de datos para el gráfico de informalidad
datos_informalidad_grafico <- Cuadro_informalidad %>%
mutate(
Periodo_etiqueta = ifelse(Periodo == "1.2025", "1.º Trimestre 2025", "1.º Trimestre 2026")
)
# 2. Generación del gráfico de barras agrupadas
ggplot(datos_informalidad_grafico, aes(x = Sexo, y = `Tasa Empleo No Registrado (%)`, fill = Periodo_etiqueta)) +
geom_bar(stat = "identity", position = position_dodge(width = 0.7), width = 0.6) +
geom_text(
aes(label = paste0(`Tasa Empleo No Registrado (%)`, "%")),
position = position_dodge(width = 0.7),
vjust = -0.5,
size = 3.8,
fontface = "bold"
) +
scale_fill_manual(values = c("1.º Trimestre 2025" = "#d95f02",
"1.º Trimestre 2026" = "#7570b3")) +
scale_y_continuous(limits = c(0, 70), breaks = seq(0, 70, 10)) +
labs(
title = "Indicador Ampliado: Tasa de Empleo No Registrado",
subtitle = "Porcentaje de asalariados sin descuento jubilatorio — Gran Salta",
x = NULL,
y = "% sobre el Total de Asalariados",
fill = "Período de Referencia",
caption = "Fuente: Elaboración propia en base a microdatos de la EPH (INDEC)."
) +
theme_minimal(base_size = 11) +
theme(
plot.title = element_text(face = "bold", size = 13),
plot.subtitle = element_text(color = "grey30", size = 10),
legend.position = "bottom",
panel.grid.major.x = element_blank()
)
Tasa de Empleo No Registrado según Sexo en Gran Salta (1T2025 vs. 1T2026)
ESTADO: Condición de actividad
(1 = Ocupado, 2 = Desocupado).CH06: Edad en años cumplidos.CH04: Sexo.PONDERA: Factor de expansión muestral.\[\text{Tasa Desocupación Juvenil (\%)} = \left( \frac{\text{Desocupados de 14 a 24 años}}{\text{PEA de 14 a 24 años}} \right) \times 100\]
\[\text{Tasa Desocupación Adulta (\%)} = \left( \frac{\text{Desocupados de 25 años y más}}{\text{PEA de 25 años y más}} \right) \times 100\]
\[\text{Brecha / Relación Juvenil-Adulto} = \frac{\text{Tasa Desocupación Juvenil}}{\text{Tasa Desocupación Adulta}}\]
# Clasificación de la PEA por tramos de edad:
# Jóvenes: 14 a 24 años | Adultos: 25 años y más
Cuadro_desocupacion_juvenil <- base %>%
filter(ESTADO %in% c(1, 2)) %>%
mutate(
Grupo_Edad = case_when(
CH06 >= 14 & CH06 <= 24 ~ "Jóvenes (14-24)",
CH06 >= 25 ~ "Adultos (25+)"
)
) %>%
group_by(Periodo, Sexo, Grupo_Edad) %>%
summarise(
Ocupados = sum(PONDERA[ESTADO == 1], na.rm = TRUE),
Desocupados = sum(PONDERA[ESTADO == 2], na.rm = TRUE),
PEA = Ocupados + Desocupados,
.groups = "drop"
) %>%
mutate(
`Tasa Desocupación (%)` = round(Desocupados / PEA * 100, 1)
)
# Vista previa plana en consola
#Cuadro_desocupacion_juvenil
# Tabla formal RMarkdown / HTML
Cuadro_desocupacion_juvenil %>%
select(Periodo, Sexo, Grupo_Edad, PEA, Desocupados, `Tasa Desocupación (%)`) %>%
kbl(caption = "Indicador Ampliado: Desocupación juvenil vs. adulta - Gran Salta") %>%
kable_styling()
| Periodo | Sexo | Grupo_Edad | PEA | Desocupados | Tasa Desocupación (%) |
|---|---|---|---|---|---|
| 1.2025 | Varones | Adultos (25+) | 144970 | 6360 | 4.4 |
| 1.2025 | Varones | Jóvenes (14-24) | 23445 | 1841 | 7.9 |
| 1.2025 | Mujeres | Adultos (25+) | 118709 | 7165 | 6.0 |
| 1.2025 | Mujeres | Jóvenes (14-24) | 13343 | 2349 | 17.6 |
| 1.2026 | Varones | Adultos (25+) | 154680 | 5272 | 3.4 |
| 1.2026 | Varones | Jóvenes (14-24) | 21955 | 2272 | 10.3 |
| 1.2026 | Mujeres | Adultos (25+) | 121447 | 7783 | 6.4 |
| 1.2026 | Mujeres | Jóvenes (14-24) | 11424 | 1287 | 11.3 |
Al examinar los resultados obtenidos para el aglomerado Gran Salta, se observa que la problemática del desempleo presenta un sesgo estructural profundamente marcado por la edad y el género:
El siguiente gráfico ilustra la brecha de desempleo por tramo de edad y sexo para ambos trimestres:
# 1. Preparación de datos para el gráfico
datos_juventud_grafico <- Cuadro_desocupacion_juvenil %>%
mutate(
Periodo_etiqueta = ifelse(Periodo == "1.2025", "1.º Trimestre 2025", "1.º Trimestre 2026")
)
# 2. Generación del gráfico de barras comparativo
ggplot(datos_juventud_grafico, aes(x = Grupo_Edad, y = `Tasa Desocupación (%)`, fill = Periodo_etiqueta)) +
geom_bar(stat = "identity", position = position_dodge(width = 0.7), width = 0.6) +
geom_text(
aes(label = paste0(`Tasa Desocupación (%)`, "%")),
position = position_dodge(width = 0.7),
vjust = -0.5,
size = 3.5,
fontface = "bold"
) +
facet_wrap(~ Sexo) +
scale_fill_manual(values = c("1.º Trimestre 2025" = "#2b8cbe",
"1.º Trimestre 2026" = "#a6bddb")) +
scale_y_continuous(limits = c(0, 30), breaks = seq(0, 30, 5)) +
labs(
title = "Indicador Ampliado: Tasa de Desocupación Juvenil vs. Adulta",
subtitle = "Comparación intertemporal por tramo etario y sexo — Gran Salta",
x = NULL,
y = "Tasa de Desocupación (% sobre PEA)",
fill = "Período",
caption = "Fuente: Elaboración propia en base a microdatos de la EPH (INDEC)."
) +
theme_minimal(base_size = 11) +
theme(
plot.title = element_text(face = "bold", size = 13),
plot.subtitle = element_text(color = "grey30", size = 10),
strip.text = element_text(face = "bold", size = 11),
legend.position = "bottom",
panel.grid.major.x = element_blank()
)
Tasa de Desocupación por Grupo de Edad y Sexo en Gran Salta (1T2025 vs. 1T2026)
# 1. Preparar tabla resumen de informalidad
informalidad_resumen <- Cuadro_informalidad %>%
select(Periodo, Sexo, `Tasa Empleo No Registrado (%)`)
# 2. Preparar tabla resumen de desocupación juvenil (14-24 años)
juvenil_resumen <- Cuadro_desocupacion_juvenil %>%
filter(Grupo_Edad == "Jóvenes (14-24)") %>%
select(Periodo, Sexo, `Tasa Desocupación Juvenil (%)` = `Tasa Desocupación (%)`)
# 3. Consolidar todos los indicadores en una única tabla final (left_join)
Comparacion_final <- Cuadro_1_1 %>%
select(Periodo, Sexo, `Tasa Actividad (%)`, `Tasa Empleo (%)`, `Tasa Desocupacion (%)`) %>%
left_join(informalidad_resumen, by = c("Periodo", "Sexo")) %>%
left_join(juvenil_resumen, by = c("Periodo", "Sexo"))
# Vista previa plana en consola
#Comparacion_final
# Tabla formal RMarkdown / HTML
Comparacion_final %>%
kbl(caption = "Tabla Síntesis: Indicadores Clásicos y Ampliados - Gran Salta (1T2025 vs. 1T2026)") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
| Periodo | Sexo | Tasa Actividad (%) | Tasa Empleo (%) | Tasa Desocupacion (%) | Tasa Empleo No Registrado (%) | Tasa Desocupación Juvenil (%) |
|---|---|---|---|---|---|---|
| 1.2025 | Varones | 67.2 | 63.9 | 4.9 | 39.3 | 7.9 |
| 1.2025 | Mujeres | 47.2 | 43.8 | 7.2 | 49.3 | 17.6 |
| 1.2026 | Varones | 69.0 | 66.1 | 4.3 | 37.3 | 10.3 |
| 1.2026 | Mujeres | 47.4 | 44.2 | 6.8 | 41.7 | 11.3 |
El comportamiento del mercado laboral en el aglomerado Gran Salta revela una dinámica de leve recuperación cuantitativa acompañada por mejoras parciales en la calidad del empleo:
La estructura productiva de Gran Salta se caracteriza por una alta participación del comercio, la administración pública, los servicios personales y la construcción. La modesta expansión del empleo registrada entre el \(1.^\circ\) trimestre de \(2025\) y el \(1.^\circ\) trimestre de \(2026\) responde a la reactivación relativa de actividades de servicios urbanos e infraestructura.
No obstante, el elevado nivel de informalidad remanente (\(>37\%\)) y la persistente desocupación juvenil reflejan rasgos estructurales del NOA: baja densidad de empresas formales de gran tamaño y dificultades de absorción del bono demográfico juvenil en puestos de alta productividad.
Para matizar la interpretación de los resultados obtenidos, es necesario considerar las siguientes restricciones metodológicas inherentes a la EPH:
A partir del análisis cuantitativo y conceptual realizado sobre los microdatos de la EPH para el aglomerado Gran Salta entre el \(1.^\circ\) trimestre de \(2025\) y el \(1.^\circ\) trimestre de \(2026\), se desprenden las siguientes consideraciones finales: