1 ANALISIS DE PRODUCTIVIDAD LABORAL

1.1 ELABORADO POR:

  • Daniela Cordero Erazo 2435076
  • Daniela Alexandra Pardo 2515804
  • Ana Rodriguez 202375426
  • Andres Felipe Champutiz 202374589

2 INTRODUCCIÓN

La productividad laboral, medida a través del Producto Interno Bruto (PIB) por persona empleada, constituye una de las métricas fundamentales para la evaluación del desarrollo económico de las naciones. Este indicador no solo refleja la eficiencia con la que los países transforman el trabajo individual en valor económico, sino que, también permite realizar comparaciones con respecto al desempeño productivo de economías con distintas estructuras monetarias y costos de vida, gracias a su ajuste por Paridad de Poder Adquisitivo (PPP constantes de 2017), que es un método de ajuste que permite comparar valores económicos entre países eliminando las diferencias en costos de vida y tipos de cambio de moneda, convirtiendo los datos a una “moneda común” que refleja lo que realmente se puede comprar con ese dinero en cada lugar.

Según estimaciones del Banco Mundial, existen brechas significativas en productividad laboral entre regiones, con economías avanzadas registrando niveles sustancialmente superiores a los de economías en desarrollo. En el contexto global actual, marcado por la transformación digital, los cambios demográficos y la búsqueda de modelos de crecimiento sostenible, resulta importante la comprensión de los determinantes de la productividad laboral. Sin embargo, el PIB por empleado no es homogéneo; varía significativamente dependiendo de la composición por sectores del empleo y la calidad de las relaciones laborales predominantes en cada región (Banco Mundial, 2023; OIT, 2022). A nivel global, aproximadamente el 28% de la población empleada trabaja en el sector agrícola, pero esta proporción varía drásticamente según el nivel de desarrollo económico de cada país.

La problemática central que aborda este estudio está en identificar cómo la estructura del mercado laboral influye en la productividad. Se espera que las economías en procesos de transformación estructural, que van desde la agricultura hacia la industria, presenten mayores niveles de productividad (McCombie & Thirlwall, 2019). Sin embargo, el sector no es el único determinante; la calidad del contrato laboral, diferenciando entre trabajadores asalariados formales, trabajadores familiares y empleo a tiempo parcial también juega un papel importante en la estabilidad y el rendimiento económico de la fuerza laboral (OIT, 2023). Es por eso, que en este informe, se tiene como objetivo principal estimar y evaluar un modelo de regresión lineal múltiple que permita cuantificar y relacionar el impacto de cinco factores laborales clave sobre el PIB por persona empleada.

En este trabajo se utilizó una base de datos correspondiente al año 2019, previo a la pandemia de COVID-19, lo que permite capturar condiciones estructurales del mercado laboral sin distorsiones por crisis sanitarias (Base de datos otorgada por el docente). El análisis se centra en evaluar la estructura del mercado laboral mediante las siguientes variables predictoras: empleo en agricultura, empleo en industria, los trabajadores familiares, el empleo a tiempo parcial y los trabajadores asalariados.

También se hizo una división en cuanto al alcance geográfico del análisis que en nuestro caso, se centró en 3 grandes regiones estratégicas que le ofrecen a este estudio un mejor entendimiento para lograr responder el objetivo que se planteó en un principio, las regiones fueron: Latinoamérica y el Caribe, Europa y Asia Central. Esta selección permite comparar economías en diferentes tipos de desarrollo, desde economías con alta formalización y productividad, hasta economías emergentes con mayor presencia de empleo informal además de las economías en transición en.

El análisis se desarrollará tomando como variable de respuesta o variable dependiente (otorgada por el docente), el indicador GDP per person employed (constant 2017 PPP $). Esta variable será modelada en función de la distribución del empleo por sector, agricultura e industria y por otro conjunto de variables que se podrían denominar como estatus laboral, asalariados, familiares y los trabajadores a tiempo parcial. A través del modelo de regresión múltiple, se evaluará cómo estas características del mercado se asocian con las variaciones de la variable dependiente, permitiendo medir el impacto de cada variable por separado, aislando su efecto de las demás.

3 METODOLOGIA

3.1 VARIABLES Y CRITERIO DE SELECCIÓN

En el informe se usaron 2 tipos de variables, las variables independientes y una dependiente ya establecida, la última fue el PIB por persona empleada (constant 2017 PPP $) que busca medir la productividad laboral, este cálculo se logra con el valor total de bienes y servicios (PIB) que fueron producidos por cada trabajador. Se utiliza la paridad del poder adquisitivo para poder hacer comparaciones internacionales de manera precisa eliminando la inflación y las diferencias de costos (Banco Mundial & OIT, 2026).

Por otro lado se pidió que se escogieran 5 variables independientes para el desarrollo de la investigación, entre ellas están los 2 sectores de empleo, el trabajo en la agricultura y el trabajo en la industria.

Se dice que la cuarta parte de la fuerza laboral del mundo trabaja en la agricultura, siendo una de las principales fuentes de ingresos en países de ingresos medios y bajos, aunque la proporción puede disminuir a medida que los países obtienen más desarrollo. Los líderes del empleo en sistemas agroalimentarios son Asia y África representando el 88% del total mundial (FAO, 2026; Our World in Data, 2026). El empleo en la agricultura entonces, se seleccionó ya que es un indicador clave en el desarrollo económico de muchos países, teóricamente, se relaciona de manera negativa con la productividad laboral ya que a mayor productividad laboral, el empleo del sector puede disminuir debido que están en juego la implementación de tecnologías que generan competitividad y eficiencia en el sector, podremos ver entonces, el patrón que se sigue según los datos observados en el 2019 (Organización Internacional del Trabajo, 2026).

A nivel mundial, el empleo en la industria representó aproximadamente el 23.69% del empleo total, aquí se incluye la manufactura y la construcción y minería, el sector enfrenta una transformación en cuanto a la tecnología con previsiones de cambios en IA y la automatización (Organización Internacional del Trabajo, 2026), se selecciona como variable predictora porque esta variable permite evaluar a países con mayor participación de empleo en el sector, haciendo un tipo de contraste con el sector agricultura y esperando una relación teóricamente positiva contra la productividad ya que se dice que actúa como motor de crecimiento, empleo e inversión (UNIDO, 2026).

Pasando las variables sectorizadas, vienen lo que se denominó como las variables por estatus laboral, en este grupo entran los trabajadores familiares, el empleo a tiempo parcial y los trabajadores asalariados. La variable de los trabajadores familiares mide el porcentaje de personas que trabajan en negocios familiares sin tener como tal una remuneración formal, se representa como una forma de empleo vulnerable e informal que a menudo se caracteriza por tener una baja productividad y una falta de protección social todo esto estimado por la OIT (Organización Internacional del Trabajo). La relación que tiene esta variable con respecto a la productividad es mayormente negativa ya que tiene que ver con la alta informalidad de trabajadores y la baja especialización (Organización Internacional del Trabajo, 2017), aquí se puede aumentarle al análisis, dimensiones sobre la calidad del empleo que, no se explican por sí solas en la división sectorial, permitiendo evaluar la informalidad laboral que como se dijo, se asocia con menores niveles de productividad.

Después, está el empleo parcial que mide el porcentaje de trabajadores empleados con jornadas laborales menores a la jornada laboral completa habitual, todo esto con respecto a las personas empleadas (IndexMundi, 2026). Se incluye como variable predictora porque refleja la intensidad y modalidad de la participación laboral en las economías de las regiones, aquí se pueden apreciar las organizaciones del tiempo laboral, evaluando la intensidad del empleo asociadas con las diferencias de productividad en las regiones que se estudiarán. La relación que se espera con la productividad podría ser positiva, debido a que las evidencias de datos actuales muestran un aumento de 2% para la productividad y el 10% en cuanto a contratos, mejorando el nivel de vida laboral y negativa ya que, puede conllevar a la precariedad laboral o la baja capacitación disminuyendo la productividad por empleado debido a la menor dedicación y compromiso de los mismos (IESE Business School, 2026).

Las cinco variables predictoras se seleccionaron de forma manual, buscando que el conjunto completo permitiera explicar la productividad laboral desde dos dimensiones: la estructura sectorial del empleo (agricultura e industria) y la calidad de la relación laboral (familiares, tiempo parcial y asalariados).

Por último se presenta a la variable de trabajadores asalariados, mide el porcentaje de los trabajadores asalariados con respecto al total del empleo. Se define asalariado como una persona que recibe un sueldo o salario por su trabajo y representa formalidad y estructura laboral, esta última ayuda a diferenciar a las economías basadas en el empleo asalariado de aquellas con alta proporción de autoempleo o sector informal (INEGI, 2018). Se proyecta una relación positiva con la productividad laboral porque según la OIT, un mayor porcentaje de asalariados, generalmente indica menor informalidad, mejores condiciones laborales ya una mayor eficiencia productiva en contraste con el autoempleo. Esta variable complementa el análisis al capturar las dimensiones de la calidad institucional del empleo evaluando la formalización laboral asociada con mayores niveles de productividad con los datos del año 2019.

Se añadirá una variable de región pero se utilizara con fines descriptivos y explicativos, lo que significa que con ella se comparan estadísticas de productividad laboral entre regiones, se generan gráficos agrupados con diferencias geográficas y se contextualizar los hallazgos del modelo, pero no se incluirá como variable predictora del mismo con el objetivo de aislar el efecto de la estructura y calidad del empleo sobre la productividad independientemente de la ubicación geográfica.

library(knitr)
library(kableExtra)
diccionario <- data.frame(
  Variable = c(
    "gdp_person",
    "empleo_agricultura",
    "empleo_industria", "familias_contribuyentes",
    "empleo_parcial", "trabajadores_asalariados","region"
  ),
  Tipo = c(
    "cuantitativa continua",
    "cuantitativa continua","cuantitativa continua",
    "cuantitativa continua", "cuantitativa continua",
    "cuantitativa continua", "categorica nominal"
  ),
  Descripcion = c(
    "Productividad laboral en dólares PPP constantes de 2017.",
    "Porcentaje de empleo en el sector agrícola.",
    "Porcentaje de empleo en el sector industrial.",
    "Porcentaje de trabajadores familiares sin remuneración formal.",
    "Porcentaje de empleados que trabajan menos horas semanales de las establecidas en una jornada laboral completa.",
    "Porcentaje de trabajadores con contrato formal y salario fijo.",
    "Grupo geográfico: Latinoamérica/Caribe, Europa, Asia Central."
  )
)

kable(diccionario, 
      col.names = c("Variable", "Tipo de Variable", "Descripcion"), 
      caption = "Especificaciones de las Variables del Análisis") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "bordered"), 
                full_width = F, position = "center") %>%
  column_spec(1, bold = T, background = "#f8f9fa") %>% 
  column_spec(2, italic = T, color = "#2c3e50") %>% 
  column_spec(3, width = "25em")            
Especificaciones de las Variables del Análisis
Variable Tipo de Variable Descripcion
gdp_person cuantitativa continua Productividad laboral en dólares PPP constantes de 2017.
empleo_agricultura cuantitativa continua Porcentaje de empleo en el sector agrícola.
empleo_industria cuantitativa continua Porcentaje de empleo en el sector industrial.
familias_contribuyentes cuantitativa continua Porcentaje de trabajadores familiares sin remuneración formal.
empleo_parcial cuantitativa continua Porcentaje de empleados que trabajan menos horas semanales de las establecidas en una jornada laboral completa.
trabajadores_asalariados cuantitativa continua Porcentaje de trabajadores con contrato formal y salario fijo.
region categorica nominal Grupo geográfico: Latinoamérica/Caribe, Europa, Asia Central.

3.1.1 BASE DE DATOS

A continuacion, se presenta la base de datos utilizada para el desarrollo del presente modelo de regresion lineal. Esta base contiene informacion correspondiente a diferentes paises y variables economicas relevantes para el analisis.

library(reactable)
library (readxl)
base_paises <- read_excel("base_paises.xlsx")
reactable(
  base_paises,
  defaultPageSize = 15,
  showPageSizeOptions = TRUE,
  pageSizeOptions = c(10, 15, 25, 50),
  striped = TRUE,
  highlight = TRUE,
  bordered = TRUE,
  filterable = TRUE,
  showSortable = TRUE,
  wrap = FALSE,
  resizable = TRUE,
  defaultColDef = colDef(
    header = function(value) gsub("_", " ", toupper(value)),
    cell = function(value) format(value, nsmall = 1),
    align = "center",
    minWidth = 120,
    headerStyle = list(background = "#2E86AB", color = "white", fontWeight = "bold")
  ),
  style = list(fontFamily = "Arial, sans-serif", fontSize = "14px"),
  theme = reactableTheme(
    stripedColor = "#f6f8fa",
    highlightColor = "#e8f4fd",
    cellPadding = "8px 12px",
    style = list(fontFamily = "-apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif"),
    searchInputStyle = list(width = "100%", padding = "8px 12px")
  ),
  columns = list(
  )
)

4 RESULTADOS DESCRIPTIVOS

4.1 Variable Dependiente: GDP_PERSON

En la siguiente tabla presenta las estadísticas descriptivas del GDP person por región, permitiendo comparar el comportamiento de productividad laboral entre Aisa; Europa , Latinoamérica y el Caribe.

library(dplyr)
library(kableExtra)
library(scales)
library(readxl)
library(tidyr)

base_paises <- read_excel("base_paises.xlsx")
tabla_gdp <- base_paises %>%
  mutate(
    region = trimws(region),              
    region = tolower(region),           
    region = case_when(
      grepl("europa", region) ~ "Europa",
      grepl("asia", region) ~ "Asia Central",
      grepl("lat", region) | grepl("caribe", region) ~ "Latinoamérica y el Caribe",
      TRUE ~ NA_character_  
    )
  ) %>%
  
  filter(!is.na(region)) %>%
  
  group_by(region) %>%
  summarise(
    N = n(),
    Promedio = mean(gdp_person, na.rm = TRUE),
    `Desv. Estándar` = sd(gdp_person, na.rm = TRUE),
    Mínimo = min(gdp_person, na.rm = TRUE),
    Máximo = max(gdp_person, na.rm = TRUE),
    .groups = "drop"
  )
tabla_gdp %>%
  kbl(
    caption = "Estadísticas Descriptivas del GDP per cápita por Región",
    align = c("l", "r", "r", "r", "r", "r"),
    format.args = list(big.mark = ".", decimal.mark = ",")
  ) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"),
    full_width = FALSE,
    font_size = 14,
    position = "center"
  ) %>%
  row_spec(0, background = "#2b6cb0", color = "white", bold = TRUE) %>%
  column_spec(1, bold = TRUE, width = "4.5cm") %>%
  column_spec(2:6, width = "3cm") %>%
  footnote(
    general = "Fuente: Elaboración propia con base en base_paises.xlsx",
    general_title = "Nota:",
    footnote_as_chunk = TRUE
  )
Estadísticas Descriptivas del GDP per cápita por Región
region N Promedio Desv. Estándar Mínimo Máximo
Asia Central 7 31.782,71 16.989,46 14.273,568 55.538,77
Europa 51 84.150,12 41.178,85 27.895,018 241.408,35
Latinoamérica y el Caribe 45 42.999,01 28.778,86 8.071,019 127.969,07
Nota: Fuente: Elaboración propia con base en base_paises.xlsx

En términos generales, Europa registra un promedio bastante alto , con un valor aproximado de 84.150 lo que se logra evidenciar un mayor nivel de productividad laboral, así mismo esta región presenta una gran dispersión de datos, la cual se refleja en los valores de desviación estándar indicando así diferencias económicas entre los países europeos.

Por otro lado en Latinoamérica y Caribe muestra un promedio intermedio, con una alta variabilidad entre países evidenciando unos niveles de desigualdad entre países

Finalmente, en Asia el promedio es relativamente bajo alrededor de 31.782,71 con una dispersión similar a la de Europa donde se evidencia una estructura económica homogénea entre los países.

4.1.1 MAPA GLOBAL

Este mapa global permite visualizar la distribución geográfica de la productividad laboral a nivel mundial, observando las regiones en promedio con mayores niveles de PIB por persona empleada, estas se concentran en estas tres grandes zonas:

  • America del Norte
  • Europa
  • Algunas zonas de Asia

También lográndose observar las regiones con menores niveles de productividad los cuales están ubicados en países en desarrollo.

library(rnaturalearth)
library(sf)
library(dplyr)
library(ggplot2)
library(plotly)
library(scales)
library(readxl)

mundo <- ne_countries(scale = "medium", returnclass = "sf")

base_paises <- read_excel("base_paises.xlsx")
mundo_con_gdp <- mundo %>%
  left_join(base_paises, by = c("iso_a3" = "codigo_pais"))

azules_puros <- c("#3E4A89", "#31688E", "#26828E", "#1F9E89")

g_mapa <- ggplot(data = mundo_con_gdp) +
  geom_sf(aes(fill = gdp_person, 
              text = paste("País:", name, "<br>GDP:", dollar(gdp_person))), 
          color = "white", size = 0.1) +
  scale_fill_gradientn(
    name = "GDP per Person (USD)",
    labels = dollar_format(prefix = "$", big.mark = ","),
    colors = azules_puros,
    na.value = "lightgray"
  ) +
  labs(
    title = "Figura 1. Mapa Global de Productividad Laboral",
    subtitle = "PIB por persona empleada (PPA constante 2017)",
    caption = "Fuente: Elaboracion propia con base en base_paises.xlsx"
  ) +
  theme_void() +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 16),
    plot.subtitle = element_text(hjust = 0.5, size = 12),
    legend.position = "right"
  )
mapa_interactivo <- ggplotly(g_mapa, tooltip = "text") %>%
  layout(
    margin = list(t = 60, b = 20, l = 20, r = 20),
    title = list(
      text = "<b>Mapa Global de Productividad Laboral</b>",
      x = 0.5,
      font = list(size = 18)
    )
  ) %>%
  config(displayModeBar = TRUE, displaylogo = FALSE)

mapa_interactivo

5 Variables Explicativas Cuantitativas: Caracterización Estadística

5.1 Estadísticas Descriptivas de empleo_agricultura

library(dplyr)
library(kableExtra)
library(scales)
library(readxl)
library(tidyr)

base_paises <- read_excel("base_paises.xlsx")
tabla_empleo_agricultura <- base_paises %>%
  mutate(
    region = trimws(region),              
    region = tolower(region),           
    region = case_when(
      grepl("europa", region) ~ "Europa",
      grepl("asia", region) ~ "Asia Central",
      grepl("lat", region) | grepl("caribe", region) ~ "Latinoamérica y el Caribe",
      TRUE ~ NA_character_  
    )
  ) %>%
  
  filter(!is.na(region)) %>%
  
  group_by(region) %>%
  summarise(
    N = n(),
    Promedio = mean(empleo_agricultura, na.rm = TRUE),
    `Desv. Estándar` = sd(empleo_agricultura, na.rm = TRUE),
    Mínimo = min(empleo_agricultura, na.rm = TRUE),
    Máximo = max(empleo_agricultura, na.rm = TRUE),
    .groups = "drop"
  )
tabla_empleo_agricultura %>%
  kbl(
    caption = "Estadísticas Descriptivas del Empleo Agricultura por Región",
    align = c("l", "r", "r", "r", "r", "r"),
    format.args = list(big.mark = ".", decimal.mark = ",")
  ) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"),
    full_width = FALSE,
    font_size = 14,
    position = "center"
  ) %>%
  row_spec(0, background = "#2b6cb0", color = "white", bold = TRUE) %>%
  column_spec(1, bold = TRUE, width = "4.5cm") %>%
  column_spec(2:6, width = "3cm") %>%
  footnote(
    general = "Fuente: Elaboración propia con base en base_paises.xlsx",
    general_title = "Nota:",
    footnote_as_chunk = TRUE
  )
Estadísticas Descriptivas del Empleo Agricultura por Región
region N Promedio Desv. Estándar Mínimo Máximo
Asia Central 7 26,477143 10,406375 14,86 44,72
Europa 51 8,012143 8,687334 0,68 38,15
Latinoamérica y el Caribe 45 13,564849 10,027838 0,06 31,30
Nota: Fuente: Elaboración propia con base en base_paises.xlsx

La tabla presenta estadísticas descriptivas del empleo en el sector agrícola por las regiones seleccionadas, permitiendo así comparar la participación entre países

Los resultados mostrados en Asia registran un promedio alto de empleo agrícola de con aproximadamente donde el 26.48% de la población esta ocupada por este sector, reflejando una mayor dependencia de las actividades primarias dentro de la estructura económica también así esta región presenta una dispersión considerable dejando así diferencias entre los países

Por otra parte, Latinoamérica y Caribe presentan un promedio cercano a 13.56% ubicándose en una región intermedia así mismo Europa con un promedio más bajo de 8.012% lo cual evidencia que la economía en esta región depende más de los sectores industriales y de servicios

5.1.1 GRAFICO RELACIÓN EMPLEO AGRICULTURA - GDP PERSON

En la primer grafica de dispersión se logra evidenciar una relación negativa entre las dos variables de empleo en agricultura t la productividad laboral, observando que a medida que aumenta la proporción en empleo_agricultura en PIB por persona empleada tiende a bajar o disminuir de juna forma consistente reflejando la endiente negativa. Siendo este un comportamiento coherente reflejando en la actualidad que las economías más avanzadas que presentan una menor dependencia del sector agrícola y logrando observar también una cierta dispersión de niveles bajos de empleo agrícola lo que indica que podría estar siendo analizados países altamente productivos.

library(ggplot2)
library(scales)
dispercion_agricultura <- ggplot(base_paises, aes(x = empleo_agricultura, y = log(gdp_person))) +
  geom_point(
    aes(color = log(gdp_person)),
    alpha = 0.6,
    size = 3,
    stroke = 0.5
  ) +
  geom_smooth(
    method = "lm",  
    color = "#1a3c5f",
    fill = "#6baed6",
    alpha = 0.2,
    linewidth = 1,
    se = TRUE
  ) +
  scale_color_gradient(
    name = "PIB per cápita (USD)",
    low = "#d0e1f9",
    high = "#1a3c5f",
    labels = function(x) scales::dollar(exp(x), accuracy = 1),
    breaks = log(c(10000, 30000, 60000, 100000)), 
    guide = guide_colorbar(
      barwidth = 15,
      barheight = 0.5,
      direction = "horizontal",
      title.position = "top",
      title.hjust = 0.5,
      label.position = "bottom"
    )
  ) +
  scale_x_continuous(
    name = "Población empleada en agricultura (%)",
    limits = c(0, 50), 
    breaks = seq(0, 50, by = 10)
  ) +
  labs(
    title = "Figura 2. RELACIÓN EMPLEO AGRICULTURA - GDP PERSON",
    subtitle = "Transformación logarítmica aplicada al GDP | Tendencia lineal inversa",
    caption = "Fuente: Elaboración propia con base en base_paises.xlsx",
    y = NULL 
  ) + 
  theme_minimal(base_family = "sans") + 
  theme(
    plot.title = element_text(face = "bold", size = 16, hjust = 0.5, color = "#2c3e50"),
    plot.subtitle = element_text(size = 11, hjust = 0.5, color = "#546e7a", margin = margin(b = 20)),
    plot.caption = element_text(size = 8, color = "#95a5a6", hjust = 0.5, margin = margin(t = 20)),
    axis.title.x = element_text(face = "bold", size = 10, margin = margin(t = 10)),
    axis.text = element_text(size = 9, color = "#7f8c8d"),
    panel.grid.major = element_line(color = "#f0f0f0"),
    panel.grid.minor = element_blank(),
    legend.position = "bottom",
    legend.box.margin = margin(t = -10),
    plot.margin = margin(20, 20, 20, 20)
  )

print(dispercion_agricultura)

5.1.1.1 GRAFICO RELACIÓN EMPLEO AGRICULTURA - GDP PERSON POR REGION

##Estadísticas Descriptivas de empleo_industria

library(dplyr)
library(kableExtra)
library(scales)
library(readxl)
library(tidyr)

base_paises <- read_excel("base_paises.xlsx")
tabla_empleo_industria <- base_paises %>%
  mutate(
    region = trimws(region),              
    region = tolower(region),           
    region = case_when(
      grepl("europa", region) ~ "Europa",
      grepl("asia", region) ~ "Asia Central",
      grepl("lat", region) | grepl("caribe", region) ~ "Latinoamérica y el Caribe",
      TRUE ~ NA_character_  
    )
  ) %>%
  
  filter(!is.na(region)) %>%
  
  group_by(region) %>%
  summarise(
    N = n(),
    Promedio = mean(empleo_industria, na.rm = TRUE),
    `Desv. Estándar` = sd(empleo_industria, na.rm = TRUE),
    Mínimo = min(empleo_industria, na.rm = TRUE),
    Máximo = max(empleo_industria, na.rm = TRUE),
    .groups = "drop"
  )
tabla_empleo_industria %>%
  kbl(
    caption = "Estadísticas Descriptivas del Empleo Industria por Región",
    align = c("l", "r", "r", "r", "r", "r"),
    format.args = list(big.mark = ".", decimal.mark = ",")
  ) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"),
    full_width = FALSE,
    font_size = 14,
    position = "center"
  ) %>%
  row_spec(0, background = "#2b6cb0", color = "white", bold = TRUE) %>%
  column_spec(1, bold = TRUE, width = "4.5cm") %>%
  column_spec(2:6, width = "3cm") %>%
  footnote(
    general = "Fuente: Elaboración propia con base en base_paises.xlsx",
    general_title = "Nota:",
    footnote_as_chunk = TRUE
  )
Estadísticas Descriptivas del Empleo Industria por Región
region N Promedio Desv. Estándar Mínimo Máximo
Asia Central 7 23,50286 8,302409 14,79 39,83
Europa 51 24,13476 6,197133 10,81 37,25
Latinoamérica y el Caribe 45 18,80788 3,852404 6,66 26,64
Nota: Fuente: Elaboración propia con base en base_paises.xlsx

En la siguiente tabla se presenta las estadísticas descriptivas del empleo en el sector industrial, permitiendo analizar la participación de la población en las siguientes regiones

Los resultados muestran que la región de Europa registra un promedio alto de 24,13 donde se evidencia que en esta población está mayor mente empleada en el sector, reflejando así una mayor orientación hacia actividades industriales. Además, esta presenta una dispersión moderada, indicando diferencias entre los países europeos analizados

Por otro lado, Asia presenta un promedio de más o menos 23,50 , llegando a ser muy similar al de Europa, lo que evidencia una gran participación en el sector industrial, sin embargo, al observar la desviación estándar está relativamente mayor que la de los otros países

Y Latinoamérica y Caribe muestran un promedio bajo, acompañando, así también con una menor dispersión de los datos, indicando que la participación en este sector es mucho menor

5.1.2 GRAFICO RELACIÓN EMPLEO indsutria - GDP PERSON

En la siguiente grafica no se logra observar una relación lineal clara entre las dos variables estudiadas (el empleo en el sector industrial y la productividad laboral), aunque se logre observar una leve inclinación de la pendiente en forma negativa la dispersión de los datos es considerable lo que está indicando una relación débil entre las variables sugiriendo que el impacto entre ellas sobre la productividad no es homogéneo entre los países estudiados.

library(ggplot2)
library(scales)
dispercion_industria <- ggplot(base_paises, aes(x = empleo_industria, y = log(gdp_person))) +
  geom_point(
    aes(color = log(gdp_person)),
    alpha = 0.6,
    size = 3,
    stroke = 0.5
  ) +
  geom_smooth(
    method = "lm",  
    color = "#1a3c5f",
    fill = "#6baed6",
    alpha = 0.2,
    linewidth = 1,
    se = TRUE
  ) +
  scale_color_gradient(
    name = "PIB per cápita (USD)",
    low = "#d0e1f9",
    high = "#1a3c5f",
    labels = function(x) scales::dollar(exp(x), accuracy = 1),
    breaks = log(c(10000, 30000, 60000, 100000)), 
    guide = guide_colorbar(
      barwidth = 15,
      barheight = 0.5,
      direction = "horizontal",
      title.position = "top",
      title.hjust = 0.5,
      label.position = "bottom"
    )
  ) +
  scale_x_continuous(
    name = "Población empleada en industria (%)",
    limits = c(0, 50), 
    breaks = seq(0, 50, by = 10)
  ) +
  labs(
    title = "Figura 2. RELACIÓN EMPLEO INDUSTRIA - GDP PERSON",
    subtitle = "Transformación logarítmica aplicada al GDP | Tendencia lineal inversa",
    caption = "Fuente: Elaboración propia con base en base_paises.xlsx",
    y = NULL 
  ) + 
  theme_minimal(base_family = "sans") + 
  theme(
    plot.title = element_text(face = "bold", size = 16, hjust = 0.5, color = "#2c3e50"),
    plot.subtitle = element_text(size = 11, hjust = 0.5, color = "#546e7a", margin = margin(b = 20)),
    plot.caption = element_text(size = 8, color = "#95a5a6", hjust = 0.5, margin = margin(t = 20)),
    axis.title.x = element_text(face = "bold", size = 10, margin = margin(t = 10)),
    axis.text = element_text(size = 9, color = "#7f8c8d"),
    panel.grid.major = element_line(color = "#f0f0f0"),
    panel.grid.minor = element_blank(),
    legend.position = "bottom",
    legend.box.margin = margin(t = -10),
    plot.margin = margin(20, 20, 20, 20)
  )

print(dispercion_industria)

5.1.2.1 GRAFICO RELACIÓN EMPLEO INDUSTRIA - GDP PERSON POR REGION

5.2 Estadísticas Descriptivas de familias_contribuyentes

library(dplyr)
library(kableExtra)
library(scales)
library(readxl)
library(tidyr)

base_paises <- read_excel("base_paises.xlsx")
tabla_familias_contribuyentes <- base_paises %>%
  mutate(
    region = trimws(region),              
    region = tolower(region),           
    region = case_when(
      grepl("europa", region) ~ "Europa",
      grepl("asia", region) ~ "Asia Central",
      grepl("lat", region) | grepl("caribe", region) ~ "Latinoamérica y el Caribe",
      TRUE ~ NA_character_  
    )
  ) %>%
  
  filter(!is.na(region)) %>%
  
  group_by(region) %>%
  summarise(
    N = n(),
    Promedio = mean(familias_contribuyentes, na.rm = TRUE),
    `Desv. Estándar` = sd(familias_contribuyentes, na.rm = TRUE),
    Mínimo = min(familias_contribuyentes, na.rm = TRUE),
    Máximo = max(familias_contribuyentes, na.rm = TRUE),
    .groups = "drop"
  )
tabla_familias_contribuyentes %>%
  kbl(
    caption = "Estadísticas Descriptivas de Familias Contribuyentes por Región",
    align = c("l", "r", "r", "r", "r", "r"),
    format.args = list(big.mark = ".", decimal.mark = ",")
  ) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"),
    full_width = FALSE,
    font_size = 14,
    position = "center"
  ) %>%
  row_spec(0, background = "#2b6cb0", color = "white", bold = TRUE) %>%
  column_spec(1, bold = TRUE, width = "4.5cm") %>%
  column_spec(2:6, width = "3cm") %>%
  footnote(
    general = "Fuente: Elaboración propia con base en base_paises.xlsx",
    general_title = "Nota:",
    footnote_as_chunk = TRUE
  )
Estadísticas Descriptivas de Familias Contribuyentes por Región
region N Promedio Desv. Estándar Mínimo Máximo
Asia Central 7 9,225714 11,577030 0,10 32,96
Europa 51 2,378095 4,512125 0,03 22,03
Latinoamérica y el Caribe 45 4,325758 5,415951 0,03 21,26
Nota: Fuente: Elaboración propia con base en base_paises.xlsx

En la tabla de estadísticas descriptivas de familias contribuyentes por región, permite comparar la participación de trabajadores familiares dentro de las distintas regiones Por parte de Latinoamérica y Caribe presentan un promedio de 4.36, siendo intermedio, acompañado así por una desviación estándar considerable, logrando evidenciar grandes diferencias entre los países latinoamericanos Por el lado de Europa muestra un promedio muy bajo de 2.37 infiriendo una menor dependencia de actividades familiares, por otro lado, los resultados permiten observar la regiones con mayores niveles de desarrollo económico tienden a presentar una menor participación de los trabajadores en las familias.

5.2.1 GRAFICO RELACIÓN FAMILIAS CONTRIBUYENTES - GDP PERSON

La grafica se muestra con una relación negativa marcada entre el porcentaje de trabajadores familiares y la productividad laboral observando que a medida que aumenta la proporción de empleo el PIB por persona empleada disminuye de forma muy significativa reflejando una relación en el trabajo familiar y las economías con un nivel bajo de formalización y menor eficiencia en la productividad

library(ggplot2)
library(scales)
dispercion_familias <- ggplot(base_paises, aes(x = familias_contribuyentes, y = log(gdp_person))) +
  geom_point(
    aes(color = log(gdp_person)),
    alpha = 0.6,
    size = 3,
    stroke = 0.5
  ) +
  geom_smooth(
    method = "lm",  
    color = "#1a3c5f",
    fill = "#6baed6",
    alpha = 0.2,
    linewidth = 1,
    se = TRUE
  ) +
  scale_color_gradient(
    name = "PIB per cápita (USD)",
    low = "#d0e1f9",
    high = "#1a3c5f",
    labels = function(x) scales::dollar(exp(x), accuracy = 1),
    breaks = log(c(10000, 30000, 60000, 100000)), 
    guide = guide_colorbar(
      barwidth = 15,
      barheight = 0.5,
      direction = "horizontal",
      title.position = "top",
      title.hjust = 0.5,
      label.position = "bottom"
    )
  ) +
  scale_x_continuous(
    name = "Familias Contribuyentes)",
    limits = c(0, 50), 
    breaks = seq(0, 50, by = 10)
  ) +
  labs(
    title = "Figura 2. RELACIÓN FAMILIAS CONTRIBUYENTES - GDP PERSON",
    subtitle = "Transformación logarítmica aplicada al GDP | Tendencia lineal inversa",
    caption = "Fuente: Elaboración propia con base en base_paises.xlsx",
    y = NULL 
  ) + 
  theme_minimal(base_family = "sans") + 
  theme(
    plot.title = element_text(face = "bold", size = 16, hjust = 0.5, color = "#2c3e50"),
    plot.subtitle = element_text(size = 11, hjust = 0.5, color = "#546e7a", margin = margin(b = 20)),
    plot.caption = element_text(size = 8, color = "#95a5a6", hjust = 0.5, margin = margin(t = 20)),
    axis.title.x = element_text(face = "bold", size = 10, margin = margin(t = 10)),
    axis.text = element_text(size = 9, color = "#7f8c8d"),
    panel.grid.major = element_line(color = "#f0f0f0"),
    panel.grid.minor = element_blank(),
    legend.position = "bottom",
    legend.box.margin = margin(t = -10),
    plot.margin = margin(20, 20, 20, 20)
  )

print(dispercion_familias)

5.2.1.1 GRAFICO RELACIÓN familias contribuyentes - GDP PERSON POR REGION

library(ggplot2)
library(scales)
base_paises_filtrada <- base_paises %>%
  mutate(
    region = trimws(region),          
    region = tolower(region),           
    region = case_when(
      grepl("europa", region) ~ "Europa",
      grepl("asia", region) ~ "Asia Central",
      grepl("lat", region) | grepl("caribe", region) ~ "Latinoamérica y el Caribe",
      TRUE ~ NA_character_  
    )
  ) %>% 
  filter(!is.na(region))
dispercion_familias2 <- ggplot(base_paises_filtrada, aes(x = familias_contribuyentes,  
                                                  y = log(gdp_person))) +
  geom_point(
    aes(color = log(gdp_person)),
    alpha = 0.6,
    size = 1.8 
  ) +
  geom_smooth(
    method = "lm",  
    color = "#1a3c5f",
    fill = "#6baed6",
    alpha = 0.2,
    linewidth = 0.8,
    se = TRUE
  ) +
  facet_wrap(~ region, ncol = 3) + 
  scale_color_gradient(
    name = "GDP per person",
    low = "#d0e1f9",
    high = "#1a3c5f",
    labels = function(x) scales::dollar(exp(x), big.mark = ","),
    breaks = log(c(20000, 40000, 60000, 80000))
  ) +
  scale_x_continuous(
    name = "\nfamilias contribuyentes (%)",
    breaks = seq(0, 100, by = 10)
  ) +
  scale_y_continuous(
    name = "Log(GDP per person)\n"
  ) +
  labs(
    title = "RELACIÓN FAMILIAS CONTRIBUYENTES - GDP PERSON",
    subtitle = "Transformación logarítmica aplicada al GDP",
    caption = "Fuente: Elaboración propia con base en base_paises.xlsx"
  ) +
  theme_minimal(base_size = 10) + 
  theme(
    plot.title = element_text(face = "bold", size = 12, hjust = 0.5, margin = margin(b = 10)),
    plot.subtitle = element_text(size = 9, hjust = 0.5, margin = margin(b = 15)),
    axis.title.x = element_text(margin = margin(t = 10)),
    axis.text.x = element_text(size = 8), 
    legend.position = "right",
    legend.title = element_text(size = 8, face = "bold"),
    legend.text = element_text(size = 7),
    strip.background = element_rect(fill = "#3498db", color = NA),
    strip.text = element_text(color = "white", face = "bold", size = 8),
    panel.spacing = unit(1.5, "lines"),
    plot.margin = margin(20, 20, 20, 20) 
  )

print(dispercion_familias2)

5.3 Estadísticas Descriptivas de empleo_parcial

library(dplyr)
library(kableExtra)
library(scales)
library(readxl)
library(tidyr)

base_paises <- read_excel("base_paises.xlsx")
tabla_empleo_parcial <- base_paises %>%
  mutate(
    region = trimws(region),              
    region = tolower(region),           
    region = case_when(
      grepl("europa", region) ~ "Europa",
      grepl("asia", region) ~ "Asia Central",
      grepl("lat", region) | grepl("caribe", region) ~ "Latinoamérica y el Caribe",
      TRUE ~ NA_character_  
    )
  ) %>%
  
  filter(!is.na(region)) %>%
  
  group_by(region) %>%
  summarise(
    N = n(),
    Promedio = mean(empleo_parcial, na.rm = TRUE),
    `Desv. Estándar` = sd(empleo_parcial, na.rm = TRUE),
    Mínimo = min(empleo_parcial, na.rm = TRUE),
    Máximo = max(empleo_parcial, na.rm = TRUE),
    .groups = "drop"
  )
tabla_empleo_parcial %>%
  kbl(
    caption = "Estadísticas Descriptivas del Empleo Parcial por Región",
    align = c("l", "r", "r", "r", "r", "r"),
    format.args = list(big.mark = ".", decimal.mark = ",")
  ) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"),
    full_width = FALSE,
    font_size = 14,
    position = "center"
  ) %>%
  row_spec(0, background = "#2b6cb0", color = "white", bold = TRUE) %>%
  column_spec(1, bold = TRUE, width = "4.5cm") %>%
  column_spec(2:6, width = "3cm") %>%
  footnote(
    general = "Fuente: Elaboración propia con base en base_paises.xlsx",
    general_title = "Nota:",
    footnote_as_chunk = TRUE
  )
Estadísticas Descriptivas del Empleo Parcial por Región
region N Promedio Desv. Estándar Mínimo Máximo
Asia Central 7 20,24667 4,562898 16,16 25,17
Europa 51 30,03974 11,870683 7,10 56,15
Latinoamérica y el Caribe 45 27,54421 8,163894 8,91 41,87
Nota: Fuente: Elaboración propia con base en base_paises.xlsx

Se evidencia resultados como Europa teniendo un promedio más alto de empleo parcial con aproximadamente el 30.04%, lo que refleja una mayor flexibilidad en el mercado y una mayor presencia de modalidades de trabajo. También presenta la mayor dispersión de datos, indicando diferencias significativas entre los países.

Por otro lado, Latinoamérica y Caribe presentan promedio cercano al 27.54, siendo intermedia la posición y una desviación estándar de 8. 16% presentando una heterogeneidad en la participación.

En general, estos resultados permiten observar que las diferencias en el empleo parcial están relacionadas con el grado del desarrollo económico.

5.3.1 GRAFICO RELACIÓN EMPLEO PARCIAL - GDP PERSON

Se logra observar una relación positiva entre estas variables analizadas el empleo parcial y la productividad evidenciada por la pendiente ascendiente de la recta, sugiriendo que el empleo parcial puede tener una posible asociacion a los mercados laborales flexibles y eficientes, sin embargo la dispersión de los datos en la grafica indica que no es una relación completamente homogénea indicando también, algunos valores que se lograr identificar en extremos que podría influir en la estimación de la tendencia.

library(ggplot2)
library(scales)
dispercion_parcial <- ggplot(base_paises, aes(x = empleo_parcial, y = log(gdp_person))) +
  geom_point(
    aes(color = log(gdp_person)),
    alpha = 0.6,
    size = 3,
    stroke = 0.5
  ) +
  geom_smooth(
    method = "lm",  
    color = "#1a3c5f",
    fill = "#6baed6",
    alpha = 0.2,
    linewidth = 1,
    se = TRUE
  ) +
  scale_color_gradient(
    name = "PIB per cápita (USD)",
    low = "#d0e1f9",
    high = "#1a3c5f",
    labels = function(x) scales::dollar(exp(x), accuracy = 1),
    breaks = log(c(10000, 30000, 60000, 100000)), 
    guide = guide_colorbar(
      barwidth = 15,
      barheight = 0.5,
      direction = "horizontal",
      title.position = "top",
      title.hjust = 0.5,
      label.position = "bottom"
    )
  ) +
  scale_x_continuous(
    name = "Población empleo parcial (%)",
    limits = c(0, 50), 
    breaks = seq(0, 50, by = 10)
  ) +
  labs(
    title = "Figura 2. RELACIÓN EMPLEO PARCIAL - GDP PERSON",
    subtitle = "Transformación logarítmica aplicada al GDP | Tendencia lineal inversa",
    caption = "Fuente: Elaboración propia con base en base_paises.xlsx",
    y = NULL 
  ) + 
  theme_minimal(base_family = "sans") + 
  theme(
    plot.title = element_text(face = "bold", size = 16, hjust = 0.5, color = "#2c3e50"),
    plot.subtitle = element_text(size = 11, hjust = 0.5, color = "#546e7a", margin = margin(b = 20)),
    plot.caption = element_text(size = 8, color = "#95a5a6", hjust = 0.5, margin = margin(t = 20)),
    axis.title.x = element_text(face = "bold", size = 10, margin = margin(t = 10)),
    axis.text = element_text(size = 9, color = "#7f8c8d"),
    panel.grid.major = element_line(color = "#f0f0f0"),
    panel.grid.minor = element_blank(),
    legend.position = "bottom",
    legend.box.margin = margin(t = -10),
    plot.margin = margin(20, 20, 20, 20)
  )

print(dispercion_parcial)

5.3.1.1 GRAFICO RELACIÓN EMPLEO PARCIAL - GDP PERSON POR REGION

library(ggplot2)
library(scales)
base_paises_filtrada <- base_paises %>%
  mutate(
    region = trimws(region),          
    region = tolower(region),           
    region = case_when(
      grepl("europa", region) ~ "Europa",
      grepl("asia", region) ~ "Asia Central",
      grepl("lat", region) | grepl("caribe", region) ~ "Latinoamérica y el Caribe",
      TRUE ~ NA_character_  
    )
  ) %>% 
  filter(!is.na(region))
dispercion_parcial2 <- ggplot(base_paises_filtrada, aes(x = empleo_parcial,  
                                                  y = log(gdp_person))) +
  geom_point(
    aes(color = log(gdp_person)),
    alpha = 0.6,
    size = 1.8 
  ) +
  geom_smooth(
    method = "lm",  
    color = "#1a3c5f",
    fill = "#6baed6",
    alpha = 0.2,
    linewidth = 0.8,
    se = TRUE
  ) +
  facet_wrap(~ region, ncol = 3) + 
  scale_color_gradient(
    name = "GDP per person",
    low = "#d0e1f9",
    high = "#1a3c5f",
    labels = function(x) scales::dollar(exp(x), big.mark = ","),
    breaks = log(c(20000, 40000, 60000, 80000))
  ) +
  scale_x_continuous(
    name = "\nEmpleo parcial (%)",
    breaks = seq(0, 100, by = 10)
  ) +
  scale_y_continuous(
    name = "Log(GDP per person)\n"
  ) +
  labs(
    title = "RELACIÓN EMPLEO PARCIAL - GDP PERSON",
    subtitle = "Transformación logarítmica aplicada al GDP",
    caption = "Fuente: Elaboración propia con base en base_paises.xlsx"
  ) +
  theme_minimal(base_size = 10) + 
  theme(
    plot.title = element_text(face = "bold", size = 12, hjust = 0.5, margin = margin(b = 10)),
    plot.subtitle = element_text(size = 9, hjust = 0.5, margin = margin(b = 15)),
    axis.title.x = element_text(margin = margin(t = 10)),
    axis.text.x = element_text(size = 8), 
    legend.position = "right",
    legend.title = element_text(size = 8, face = "bold"),
    legend.text = element_text(size = 7),
    strip.background = element_rect(fill = "#3498db", color = NA),
    strip.text = element_text(color = "white", face = "bold", size = 8),
    panel.spacing = unit(1.5, "lines"),
    plot.margin = margin(20, 20, 20, 20) 
  )

print(dispercion_parcial2)

5.4 Estadísticas Descriptivas de trabajadores_asalariados

library(dplyr)
library(kableExtra)
library(scales)
library(readxl)
library(tidyr)

base_paises <- read_excel("base_paises.xlsx")
tabla_trabajadores <- base_paises %>%
  mutate(
    region = trimws(region),              
    region = tolower(region),           
    region = case_when(
      grepl("europa", region) ~ "Europa",
      grepl("asia", region) ~ "Asia Central",
      grepl("lat", region) | grepl("caribe", region) ~ "Latinoamérica y el Caribe",
      TRUE ~ NA_character_  
    )
  ) %>%
  
  filter(!is.na(region)) %>%
  
  group_by(region) %>%
  summarise(
    N = n(),
    Promedio = mean(trabajadores_asalariados, na.rm = TRUE),
    `Desv. Estándar` = sd(trabajadores_asalariados, na.rm = TRUE),
    Mínimo = min(trabajadores_asalariados, na.rm = TRUE),
    Máximo = max(trabajadores_asalariados, na.rm = TRUE),
    .groups = "drop"
  )
tabla_trabajadores %>%
  kbl(
    caption = "Estadísticas Descriptivas Trabajadores Asalariados por Región",
    align = c("l", "r", "r", "r", "r", "r"),
    format.args = list(big.mark = ".", decimal.mark = ",")
  ) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"),
    full_width = FALSE,
    font_size = 14,
    position = "center"
  ) %>%
  row_spec(0, background = "#2b6cb0", color = "white", bold = TRUE) %>%
  column_spec(1, bold = TRUE, width = "4.5cm") %>%
  column_spec(2:6, width = "3cm") %>%
  footnote(
    general = "Fuente: Elaboración propia con base en base_paises.xlsx",
    general_title = "Nota:",
    footnote_as_chunk = TRUE
  )
Estadísticas Descriptivas Trabajadores Asalariados por Región
region N Promedio Desv. Estándar Mínimo Máximo
Asia Central 7 63,87143 14,47400 32,15 76,54
Europa 51 82,63024 10,26850 45,73 95,73
Latinoamérica y el Caribe 45 66,11000 15,80109 26,49 93,91
Nota: Fuente: Elaboración propia con base en base_paises.xlsx

La tabla presenta un análisis descriptivo de la variable de trabajadores asalariados donde incluye medidas estadísticas como el número de observaciones. El promedio, desviación estándar, valores mínimo y máximo. Se observan en Europa un promedio relativamente alto del 82.63%, evidenciando una mayor participación en el empleo formal y asalariado, por otra parte Latinoamérica y Caribe presentan un promedio del 66.11% y Asia un promedio más bajo de 63.87%, analizando la desviación estándar, se evidencia que Latinoamérica y Caribe tiene una desviación relativamente elevada, indicando mayor heterogeneidad entre los países , así mismo , los valores mínimos y máximos reflejan importantes niveles de empleo aliados en los países.

5.4.1 GRAFICO RELACIÓN TRABAJADORES ASALARIADOS - GDP PERSON

En la quinta grafica se logra identificar una relación más clara del análisis observándose una fuerte relacion positiva entre el empleo asalariado y la productividad laboral, dado que a medida que aumenta la proporción de trabajadores asalariados, el PIB por persona empleada tiende también a aumentar de manera consistente siendo este un resultado clave dando razón a que la formalización del empleo está realmente relacionada con mayores niveles de la productividad.

library(ggplot2)
library(scales)
dispercion_trabajadores <- ggplot(base_paises, aes(x = trabajadores_asalariados, y = log(gdp_person))) +
  geom_point(
    aes(color = log(gdp_person)),
    alpha = 0.6,
    size = 3,
    stroke = 0.5
  ) +
  geom_smooth(
    method = "lm",  
    color = "#1a3c5f",
    fill = "#6baed6",
    alpha = 0.2,
    linewidth = 1,
    se = TRUE
  ) +
  scale_color_gradient(
    name = "PIB per cápita (USD)",
    low = "#d0e1f9",
    high = "#1a3c5f",
    labels = function(x) scales::dollar(exp(x), accuracy = 1),
    breaks = log(c(10000, 30000, 60000, 100000)), 
    guide = guide_colorbar(
      barwidth = 15,
      barheight = 0.5,
      direction = "horizontal",
      title.position = "top",
      title.hjust = 0.5,
      label.position = "bottom"
    )
  ) +
  scale_x_continuous(
    name = "Trabajadores asalariados (%)",
    limits = c(20, 60), 
    breaks = seq(0, 100, by = 10)
  ) +
  labs(
    title = "Figura 2. RELACIÓN TRABAJADORES ASALARIADOS - GDP PERSON",
    subtitle = "Transformación logarítmica aplicada al GDP | Tendencia lineal inversa",
    caption = "Fuente: Elaboración propia con base en base_paises.xlsx",
    y = NULL 
  ) + 
  theme_minimal(base_family = "sans") + 
  theme(
    plot.title = element_text(face = "bold", size = 16, hjust = 0.5, color = "#2c3e50"),
    plot.subtitle = element_text(size = 11, hjust = 0.5, color = "#546e7a", margin = margin(b = 20)),
    plot.caption = element_text(size = 8, color = "#95a5a6", hjust = 0.5, margin = margin(t = 20)),
    axis.title.x = element_text(face = "bold", size = 10, margin = margin(t = 10)),
    axis.text = element_text(size = 9, color = "#7f8c8d"),
    panel.grid.major = element_line(color = "#f0f0f0"),
    panel.grid.minor = element_blank(),
    legend.position = "bottom",
    legend.box.margin = margin(t = -10),
    plot.margin = margin(20, 20, 20, 20)
  )

print(dispercion_trabajadores)

5.4.1.1 GRAFICO RELACIÓN TRABAJADORES ASALARIADOS - GDP PERSON POR REGION

library(ggplot2)
library(scales)
base_paises_filtrada <- base_paises %>%
  mutate(
    region = trimws(region),          
    region = tolower(region),           
    region = case_when(
      grepl("europa", region) ~ "Europa",
      grepl("asia", region) ~ "Asia Central",
      grepl("lat", region) | grepl("caribe", region) ~ "Latinoamérica y el Caribe",
      TRUE ~ NA_character_  
    )
  ) %>% 
  filter(!is.na(region))
dispercion_trabajadores2 <- ggplot(base_paises_filtrada, aes(x = trabajadores_asalariados,  
                                                  y = log(gdp_person))) +
  geom_point(
    aes(color = log(gdp_person)),
    alpha = 0.6,
    size = 1.8 
  ) +
  geom_smooth(
    method = "lm",  
    color = "#1a3c5f",
    fill = "#6baed6",
    alpha = 0.2,
    linewidth = 0.8,
    se = TRUE
  ) +
  facet_wrap(~ region, ncol = 3) + 
  scale_color_gradient(
    name = "GDP per person",
    low = "#d0e1f9",
    high = "#1a3c5f",
    labels = function(x) scales::dollar(exp(x), big.mark = ","),
    breaks = log(c(20000, 40000, 60000, 80000))
  ) +
  scale_x_continuous(
    name = "\nTrabajadores asalariados (%)",
    breaks = seq(0, 100, by = 10)
  ) +
  scale_y_continuous(
    name = "Log(GDP per person)\n"
  ) +
  labs(
    title = "RELACIÓN TRABAJADORES ASALARIADOS - GDP PERSON",
    subtitle = "Transformación logarítmica aplicada al GDP",
    caption = "Fuente: Elaboración propia con base en base_paises.xlsx"
  ) +
  theme_minimal(base_size = 10) + 
  theme(
    plot.title = element_text(face = "bold", size = 12, hjust = 0.5, margin = margin(b = 10)),
    plot.subtitle = element_text(size = 9, hjust = 0.5, margin = margin(b = 15)),
    axis.title.x = element_text(margin = margin(t = 10)),
    axis.text.x = element_text(size = 8), 
    legend.position = "right",
    legend.title = element_text(size = 8, face = "bold"),
    legend.text = element_text(size = 7),
    strip.background = element_rect(fill = "#3498db", color = NA),
    strip.text = element_text(color = "white", face = "bold", size = 8),
    panel.spacing = unit(1.5, "lines"),
    plot.margin = margin(20, 20, 20, 20) 
  )

print(dispercion_trabajadores2)

6 ESTIMACION DEL MODELO DE REGRESION LINEAL

Se estimó un modelo de regresión lineal múltiple con el objetivo de explicar el comportamiento del PIB per cápita (gdp_person) a partir de un conjunto de variables asociadas a características del mercado laboral.

La especificación del modelo es la siguiente: gdp_person = -97507.5 — 1001.1-empleo_agricultura — 1759.8-empleo_industria + 3064.3-familias_contribuyentes + 847.0-empleo_parcial + 2421.6-trabajadores_asalariados.

Este modelo permite estimar el efecto marginal de cada variable independiente sobre el PIB per cápita, manteniendo constantes las demás variables incluidas en la estimación. De esta manera, se aísla la contribución individual de cada factor, facilitando la interpretación de su influencia dentro del modelo y permitiendo analizar la relación especifica entre cada variable explicativa y la variable dependiente .

library(broom)
library(dplyr)
library(kableExtra)

base_paises <- read_excel("base_paises.xlsx")
model <- lm(gdp_person ~ empleo_agricultura + empleo_industria + familias_contribuyentes + empleo_parcial + trabajadores_asalariados, 
            data = base_paises)

resumen_mod <- broom::tidy(model) %>%
  mutate(across(where(is.numeric), ~ round(., 5))) %>%
  rename(
    `Variable` = term,
    `Coeficiente` = estimate,
    `Error Estándar` = std.error,
    `Estadístico t` = statistic,
    `Valor p` = p.value
  ) %>%
  mutate(
    Significancia = case_when(
      `Valor p` < 0.001 ~ "***",
      `Valor p` < 0.01  ~ "**",
      `Valor p` < 0.05  ~ "*",
      `Valor p` < 0.1   ~ ".",
      TRUE ~ ""
    ),
    `Valor p formateado` = case_when(
      is.na(`Valor p`) ~ "NA",
      `Valor p` < 0.0001 ~ "< 0.0001",
      TRUE ~ sprintf("%.4f", `Valor p`)
    )
  )

resumen_global <- glance(model)

R2 <- round(resumen_global$adj.r.squared, 4)
Fstat <- round(resumen_global$statistic, 2)
pvalor_modelo <- ifelse(resumen_global$p.value < 0.0001, 
                       "< 0.0001", 
                       sprintf("%.4f", resumen_global$p.value))
N <- resumen_global$df.residual + length(model$coefficients)

filas_resumen <- tibble(
  Variable = c("R² ajustado", "F", "Valor p (modelo)", "N"),
  Coeficiente = as.character(c(R2, Fstat, pvalor_modelo, N)),
  `Error Estándar` = "",
  `Estadístico t` = "",
  `Valor p formateado` = "",
  Significancia = ""
)


tabla_principal <- resumen_mod %>%
  select(Variable, Coeficiente, `Error Estándar`, `Estadístico t`, 
         `Valor p formateado`, Significancia) %>%
  mutate_all(as.character)

tabla_final <- bind_rows(tabla_principal, filas_resumen)

names(tabla_final) <- c("Variable", "Coeficiente", "Error Estándar", 
                        "Estadístico t", "Valor p", "Sig.")

kbl(tabla_final,
    caption = "Resultados del modelo de regresión lineal múltiple",
    align = c("l", "r", "r", "r", "r", "c"),
    col.names = names(tabla_final)) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE,
                font_size = 14,
                position = "center") %>%
  row_spec(0, background = "#2b6cb0", color = "white", bold = TRUE) %>%
  column_spec(1, bold = TRUE, width = "4cm") %>%
  column_spec(2:6, width = "2.5cm") %>%
  row_spec((nrow(tabla_principal) + 1):nrow(tabla_final),
           bold = TRUE, italic = FALSE, background = "#e6f0ff") %>%
  footnote(
    general = "Elaboración propia",
    general_title = "Modelo lineal multiple",
    footnote_as_chunk = TRUE)
Resultados del modelo de regresión lineal múltiple
Variable Coeficiente Error Estándar Estadístico t Valor p Sig.
(Intercept) -97507.54123 48045.06102 -2.0295 0.0474
empleo_agricultura -1001.12739 953.30057 -1.05017 0.2984
empleo_industria -1759.75739 681.55174 -2.58199 0.0126
familias_contribuyentes 3064.26684 1185.52428 2.58474 0.0125
empleo_parcial 847.01506 377.77687 2.2421 0.0292
trabajadores_asalariados 2421.59599 533.81582 4.53639 < 0.0001 ***
R² ajustado 0.6249
F 20.32
Valor p (modelo) < 0.0001
N 59
Modelo lineal multiple Elaboración propia

6.1 INTERPRETACION DE LOS COEFICIENTES

Los coeficientes estimados muestran que el empleo en agricultura y el empleo en industria presentan un efecto negativo sobre el PIB per cápita, con valores de -1001.13 y -1759.76 respectivamente, lo que implica que un aumento en estas variables se asocia con una disminución del PIB, manteniendo constantes las demás variables. Por otro lado, las variables familias_contribuyentes (3064.27), empleo_parcial (847.02) y trabajadores_asalariados (2421.60) presentan efectos positivos, indicando que un incremento en estas variables se relaciona con un aumento en el PIB per cápita. En términos de significancia estadística, empleo_industria (p = 0.0126), familias_contribuyentes (p = 0.0125), empleo_parcial (p = 0.0292) y trabajadores_asalariados (p <0.0001) son estadísticamente significativas al 5%, siendo esta última la variable con mayor evidencia estadística. En contraste, empleo_agricultura (p = 0.2984) no resulta significativa, por lo que no se puede afirmar que tenga un efecto relevante sobre el PIB dentro del modelo.

6.2 BONDAD DE AJUSTE DEL MODELO

El coeficiente de determinación ajustado (R? ajustado) es de 0.6249, lo que indica que el modelo logra explicar aproximadamente el 62.49% de la variabilidad observada en el PIB per cápita. Este resultado sugiere que las variables independientes incluidas tienen una capacidad explicativa relevante sobre la variable dependiente, permitiendo capturar una proporción considerable de su comportamiento. En este sentido, el modelo presenta un nivel de ajuste adecuado, especialmente considerando la naturaleza multifactorial del fenómeno económico analizado. Adicionalmente, el modelo reporta un estadístico F de 20.32 con un p-valor inferior a 0.0001, lo cual permite rechazar de manera contundente la hipótesis nula de que todos los coeficientes del modelo son simultáneamente iguales a cero. Este resultado confirma que, en conjunto, las variables explicativas incluidas aportan información significativa para explicar las variaciones en el PIB per cápita, evidenciando la validez global del modelo estimado. Por otra parte, la cercanía entre el valor del R? y el R? ajustado sugiere que la incorporación de las variables independientes es pertinente y no genera distorsiones asociadas a sobreajuste. Es decir, el modelo no parece estar capturando ruido innecesario, sino relaciones sistemáticas entre las variables. Esta consistencia entre ambos indicadores refuerza la confiabilidad de la especificación adoptada y respalda la estabilidad de los resultados obtenidos

6.3 Análisis de residuos

El análisis del gráfico de residuos frente a los valores ajustados permite evaluar la adecuación de la especificación del modelo. En términos generales, los residuos se distribuyen alrededor de cero sin evidenciar un patrón sistemático claramente definido, lo que sugiere que la relación entre las variables puede aproximarse de manera razonable mediante una forma funcional lineal. No obstante, la línea de suavizamiento presenta una leve tendencia descendente, lo que podría indicar pequeñas desviaciones respecto al supuesto de lincalidad estricta. En cuanto a la varianza de los residuos, se observa que esta no se mantiene completamente constante a lo largo de los valores ajustados, presentando una mayor dispersión en niveles elevados del PIB per cápita. Este comportamiento sugiere la posible presencia de heterocedasticidad leve, lo que implica una menor precisión del modelo en dichos rangos. Adicionalmente, se identifican algunas observaciones con residuos de gran magnitud, tanto positivos como negativos, lo que evidencia la presencia de valores atípicos. En particular, para valores ajustados altos se presentan errores considerablemente elevados, lo que sugiere que el modelo tiende a subestimar el PIB per cápita en estos casos. En conjunto, los resultados indican que, si bien el modelo presenta un ajuste adecuado en términos generales, existen limitaciones en su capacidad predictiva para valores extremos, por lo que los supuestos del modelo se cumplen de manera razonable, aunque no de forma estricta.

6.4 Consistencia general del modelo estimado

En términos generales, los resultados del modelo presentan coherencia interna y son consistentes con el análisis estadístico realizado. Los signos de los coeficientes estimados resultan plausibles desde el punto de vista económico, evidenciando relaciones diferenciadas entre los distintos sectores del empleo y el PIB per cápita. Asimismo, las variables identificadas como significativas contribuyen de manera efectiva a la explicación de la variable dependiente, mientras que la variable no significativa no altera de forma sustancial el ajuste global del modelo. Por su parte, los indicadores de bondad de ajuste muestran que el modelo posee una capacidad explicativa adecuada, lo cual se ve respaldado por la significancia global del mismo. No obstante, el análisis de los residuos permite identificar ciertas limitaciones, particularmente en la presencia de valores atípicos y una leve variación en la dispersión de los errores, lo que sugiere que el modelo no captura completamente el comportamiento en valores extremos. En este sentido, el modelo puede considerarse consistente y útil para explicar el comportamiento general del PIB per cápita, aunque con restricciones en su capacidad predictiva en algunos casos específicos.

7 ANÁLISIS DE RESIDUOS VS VALORES AJUSTADOS

El gráfico de análisis de residuos vs valores ajustados permite evaluar dos supuestos fundamentales del modelo de regresión lineal. En el eje horizontal, están los valores ajustados y en el eje vertical, los residuos obtenidos, observando que los residuos se encuentran relativamente dispersos dentro de la línea central, sin presentar patrones claramente definidos. Además, la línea de color azul permanece cercana al valor cero durante gran parte del gráfico, indicando que no existe desviaciones severas de linealidad.

library(tidyverse)
library(broom)
base_paises <- read_excel("base_paises.xlsx")
base_limpia <- base_paises %>%
  drop_na(gdp_person, empleo_agricultura, empleo_industria, 
          familias_contribuyentes, empleo_parcial, trabajadores_asalariados)
Modelo_final <- lm(log(gdp_person) ~ 
                     empleo_agricultura + 
                     empleo_industria + 
                     familias_contribuyentes + 
                     empleo_parcial + 
                     trabajadores_asalariados, 
                   data = base_limpia)
res_df <- augment(Modelo_final)
residuos_vs_ajustados <- ggplot(res_df, aes(x = .fitted, y = .resid)) +
  geom_point(
    aes(color = abs(.resid), size = abs(.resid)),
    alpha = 0.6,
    show.legend = FALSE
  ) +
  geom_hline(
    yintercept = 0,
    color = "#e74c3c",
    linetype = "dashed",
    linewidth = 1.2,
    alpha = 0.8
  ) +
  geom_smooth(
    method = "loess",
    color = "#2b6cb0",
    fill = "#2b6cb0",
    alpha = 0.2,
    linewidth = 1.2,
    se = TRUE
  ) +
  geom_ribbon(
    stat = "smooth",
    method = "loess",
    aes(ymin = after_stat(ymax), ymax = after_stat(ymax)),
    fill = "#e74c3c",
    alpha = 0.1
  ) +
  geom_ribbon(
    stat = "smooth", 
    method = "loess",
    aes(ymin = after_stat(ymin), ymax = after_stat(ymin)),
    fill = "#e74c3c",
    alpha = 0.1
  ) +
  scale_color_gradient(low = "#2b6cb0", high = "#e74c3c") +
  scale_size_continuous(range = c(1, 4)) + 
  labs(
    title = "ANÁLISIS DE RESIDUOS VS VALORES AJUSTADOS",
    subtitle = "Linealidad y Homocedasticidad",
    x = "Valores Ajustados",
    y = "Residuos",
    caption = paste(
      "Fuente: Elaboración propia con base en base_paises.xlsx ",
      "Línea azul: tendencia LOESS |",
      "Línea roja: residuo cero"
    )
  ) +
  theme_minimal() + 
  theme(
    text = element_text(family = "sans"),
    plot.title = element_text(
      face = "bold",
      size = 12,
      hjust = 0.5,
      margin = margin(b = 10)
    ),
    plot.subtitle = element_text(
      size = 8,
      hjust = 0.5,
      color = "gray40",
      margin = margin(b = 20)
    ),
    plot.caption = element_text(
      size = 6,
      color = "gray50",
      hjust = 0.5,
      margin = margin(t = 15)
    ),
    axis.title = element_text(face = "bold", size = 8),
    axis.text = element_text(size = 10),
    panel.grid.major = element_line(color = "gray90"),
    panel.grid.minor = element_line(color = "gray95"),
    plot.background = element_rect(fill = "white", color = NA),
    panel.background = element_rect(fill = "white", color = NA)
  )

print(residuos_vs_ajustados)

8 GRÁFICO Q-Q DE LOS RESIDUOS

En el gráfico Q-Q: representan los cuantiles observados de los residuos, logrando evidenciar una línea roja correspondiente a la distribución normal teórica, observando que la mayoría de los residuos se alinean adecuadamente a esta línea, indicando un comportamiento cercano a la normalidad. Sin embargo, en los extremos se evidencian algunas desviaciones, sugiriendo presencia de ciertos valores atípicos.

A pesar de las diferencias en el extremo superior, puede considerarse aceptable para algunos fines de análisis.

library(tidyverse)
library(broom)
base_paises <- read_excel("base_paises.xlsx")
base_limpia <- base_paises %>%
  drop_na(gdp_person, empleo_agricultura, empleo_industria, 
          familias_contribuyentes, empleo_parcial, trabajadores_asalariados)

modelo_final <- lm(log(gdp_person) ~ 
                     empleo_agricultura + 
                     empleo_industria + 
                     familias_contribuyentes + 
                     empleo_parcial + 
                     trabajadores_asalariados, 
                   data = base_limpia)
res_df <- augment(modelo_final)
grafico_qq <- ggplot(res_df, aes(sample = .resid)) +
  geom_qq(alpha = 0.6, color = "#2b6cb0", size = 2) +
  geom_qq_line(color = "#e74c3c", linewidth = 1) +
  labs(
    title = "GRÁFICO Q-Q DE LOS RESIDUOS",
    subtitle = "Validación de normalidad - Residuos vs Distribución Normal Teórica",
    x = "Cuantiles Teóricos",
    y = "Cuantiles de los Residuos",
    caption = "Fuente: Elaboración propia con base en base_paises.xlsx"
  ) +
  theme_minimal() +
  theme(
    text = element_text(family = "sans"),
    plot.title = element_text(face = "bold", size = 12, hjust = 0.5),
    plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray40"),
    axis.title = element_text(face = "bold", size = 8),
    panel.grid.major = element_line(color = "gray90"),
    plot.background = element_rect(fill = "white", color = NA)
  )

print(grafico_qq)

9 HISTOGRAMA DISTRIBUCIÓN DE LOS RESIDUOS DEL MODELO

En el histograma de distribución de frecuencia de residuos, se observa la mayor concentración de residuos alrededor del valor cero consistiendo con un modelo adecuadamente ajustado. Además, la distribución presenta características similares a una distribución normal, donde la línea punteada verde, la media se encuentra cercana a cero cumpliendo con uno de los supuestos básicos de la regresión lineal.

library(tidyverse)
library(broom)
base_paises <- read_excel("base_paises.xlsx")
base_limpia <- base_paises %>%
  drop_na(gdp_person, empleo_agricultura, empleo_industria, 
          familias_contribuyentes, empleo_parcial, trabajadores_asalariados)

modelo_final <- lm(log(gdp_person) ~ 
                     empleo_agricultura + 
                     empleo_industria + 
                     familias_contribuyentes + 
                     empleo_parcial + 
                     trabajadores_asalariados, 
                   data = base_limpia)
res_df <- augment(modelo_final)
residuos_histograma <- ggplot(res_df, aes(x = .resid)) +
  geom_histogram(
    aes(y = after_stat(density)),
    bins = 20, 
    fill = "#3498db",
    color = "white",
    alpha = 0.8
  ) +
  geom_density(linewidth = 1, color = "#e74c3c") +
  geom_vline(
    xintercept = 0,
    color = "#2c3e50",
    linetype = "dashed",
    linewidth = 1
  ) +
  stat_function(
    fun = dnorm,
    args = list(mean = mean(res_df$.resid, na.rm = TRUE), 
                sd = sd(res_df$.resid, na.rm = TRUE)),
    color = "#27ae60",
    linewidth = 1,
    linetype = "dashed"
  ) +
  labs(
    title = "DISTRIBUCIÓN DE LOS RESIDUOS DEL MODELO",
    subtitle = "Validación del supuesto de normalidad",
    x = "Residuos", 
    y = "Densidad",
    caption = "Fuente: Elaboración propia con base en base_paises.xlsx"
  ) +
  theme_minimal() +
  theme(
    text = element_text(family = "sans"),
    plot.title = element_text(face = "bold", size = 16, hjust = 0.5),
    plot.subtitle = element_text(size = 11, hjust = 0.5, color = "gray40"),
    axis.title = element_text(face = "bold"),
    panel.grid.major = element_line(color = "gray92"),
    plot.background = element_rect(fill = "white", color = NA)
  )

print(residuos_histograma)

10 Gráfico Scale-Location - Verificación de Homocedasticidad

En el gráfico Scale- Location permiten analizar la varianza de los residuos, los cuales se mantienen constante a lo largo de los valores ajustados del modelo.

En este caso, la línea de tendencia presenta una ligeras variaciones, aunque sin cambios abruptos, lo que indica que la dispersión de los residuos se mantienen relativamente estables en la mayoría de los niveles ajustados. Por lo tanto este modelo no muestra evidencias valores fuertes, aunque podrían existir algunas pequeñas variaciones en la dispersión por ciertos grupos de observación.

library(tidyverse)
library(broom)
base_paises <- read_excel("base_paises.xlsx")
base_limpia <- base_paises %>%
  drop_na(gdp_person, empleo_agricultura, empleo_industria, 
          familias_contribuyentes, empleo_parcial, trabajadores_asalariados)
Modelo_final <- lm(log(gdp_person) ~ 
                     empleo_agricultura + 
                     empleo_industria + 
                     familias_contribuyentes + 
                     empleo_parcial + 
                     trabajadores_asalariados, 
                   data = base_limpia)
res_df <- augment(Modelo_final)
scale_location <- ggplot(res_df, aes(x = .fitted, y = sqrt(abs(.std.resid)))) +
  geom_point(
    aes(color = sqrt(abs(.std.resid)), size = sqrt(abs(.std.resid))),
    alpha = 0.6,
    show.legend = FALSE
  ) +
  geom_smooth(
    method = "loess",
    color = "#2c3e50",
    fill = "#2c3e50",
    alpha = 0.2,
    linewidth = 1.2,
    se = TRUE
  ) +
  geom_hline(
    yintercept = mean(sqrt(abs(res_df$.std.resid)), na.rm = TRUE),
    color = "#e74c3c",
    linetype = "dashed",
    linewidth = 1,
    alpha = 0.8
  ) +
  scale_color_gradient(low = "#2c3e50", high = "#e74c3c") +
  scale_size_continuous(range = c(1, 3)) +
  labs(
    title = "Gráfico Scale-Location - Verificación de Homocedasticidad",
    subtitle = "Analisis raíz cuadrada de los residuos estandarizados vs valores ajustados",
    x = "Valores Ajustados",
    y = expression(sqrt("Residuos Estandarizados")),
    caption = paste(
      "Fuente: Elaboración propia basada enbase_paises.xlsx",
      "Línea roja: media de √|residuos estandarizados| |",
      "Línea azul: tendencia LOESS"
    )
  ) +
  theme_minimal() + 
  theme(
    text = element_text(family = "sans"),
    plot.title = element_text(
      face = "bold",
      size = 12,
      hjust = 0.5,
      margin = margin(b = 10)
    ),
    plot.subtitle = element_text(
      size = 8,
      hjust = 0.5,
      color = "gray40",
      margin = margin(b = 20)
    ),
    plot.caption = element_text(
      size = 8,
      color = "gray50",
      hjust = 0.5,
      margin = margin(t = 15)
    ),
    axis.title = element_text(face = "bold", size = 12),
    axis.text = element_text(size = 10),
    axis.title.y = element_text(margin = margin(r = 10)),
    panel.grid.major = element_line(color = "gray90"),
    panel.grid.minor = element_line(color = "gray95"),
    plot.background = element_rect(fill = "white", color = NA),
    panel.background = element_rect(fill = "white", color = NA)
  )

print(scale_location)

11 Análisis de Observaciones Influentes - Distancia de Cook

En el siguiente análisis se indica observaciones que mantienen una influencia significativa sobre los coeficientes estimados en este modelo de regresión, mostrando una la línea roja punteada donde países que superan dicho límite, pueden considerarse observaciones influyentes, ya que mantienen la capacidad de modificar considerablemente los resultados del modelo en el gráfico se observa que los países Armenia, Barbados y Luxemburgo presenta valores elevados de la línea roja, indicando que posee características típicas respecto al modelo, no obstante, aunque la observación influyen no necesariamente deben eliminarse del análisis, ya que su presencia refleja diferencias reales entre la economía y aportan gran información importante para el modelo, en términos más generales, el modelo parece relativamente estable.

library(tidyverse)
library(broom)
library(ggrepel)
base_paises <- read_excel("base_paises.xlsx")
base_limpia <- base_paises %>%
  drop_na(gdp_person, empleo_agricultura, empleo_industria, 
          familias_contribuyentes, empleo_parcial, trabajadores_asalariados)
Modelo_final <- lm(log(gdp_person) ~ 
                     empleo_agricultura + 
                     empleo_industria + 
                     familias_contribuyentes + 
                     empleo_parcial + 
                     trabajadores_asalariados, 
                   data = base_limpia)
res_df <- augment(Modelo_final) %>%
  mutate(
    cooksd = cooks.distance(Modelo_final),
    obs_number = row_number(),
    pais = base_limpia$pais 
  )
umbral <- 4/nrow(res_df)
grafica_cook <- ggplot(res_df, aes(x = obs_number, y = cooksd)) +
  geom_point(
    aes(color = cooksd, size = cooksd),
    alpha = 0.7
  ) +
  geom_hline(
    yintercept = umbral,
    color = "#e74c3c",
    linetype = "dashed",
    linewidth = 1.2
  ) +
  geom_point(
    data = res_df %>% filter(cooksd > umbral),
    aes(x = obs_number, y = cooksd),
    color = "#e74c3c",
    size = 3,
    shape = 21,
    fill = "transparent",
    stroke = 1.5
  ) +
  geom_text_repel(
    data = res_df %>% 
      filter(cooksd > umbral) %>%
      arrange(desc(cooksd)) %>%
      head(5),  
    aes(label = pais),
    size = 3.5,
    fontface = "bold",
    color = "#c0392b",
    box.padding = 0.5
  ) +
  scale_color_gradient(
    name = "Distancia de Cook",
    low = "#2b6cb0",
    high = "#e74c3c",
    guide = guide_colorbar(
      barwidth = 10,
      barheight = 0.6,
      direction = "horizontal",
      title.position = "top"
    )
  ) +
  scale_size_continuous(range = c(1, 4), guide = "none") +
  labs(
    title = "Análisis de Observaciones Influentes - Distancia de Cook",
    subtitle = paste(
      "Línea roja: umbral de influencia (4/n =", round(umbral, 4), ")\n",
      "Los países etiquetados tienen un impacto desproporcionado en el modelo"
    ),
    x = "Índice del País (Número de observación)",
    y = "Distancia de Cook",
    caption = paste(
      "Fuente: Elaboración propia basada en base_paises.xlsx",
      "Total de países analizados:", nrow(res_df)
    )
  ) +
  theme_minimal() +
  theme(
    legend.position = "bottom",
    text = element_text(family = "sans"),
    plot.title = element_text(face = "bold", size = 10, hjust = 0.5),
    plot.subtitle = element_text(size = 8, hjust = 0.5, color = "gray30"),
    axis.title = element_text(face = "bold"),
    panel.grid.minor = element_blank(),
    plot.background = element_rect(fill = "white", color = NA)
  )

print(grafica_cook)

12 GRAFICA DE CORRELACION

library(readr)
library(dplyr)
library(ggcorrplot)

base_paises <- read_excel("base_paises.xlsx")
datos_analisis <- base_paises %>%
  select(
    `gdp_person`, 
    empleo_agricultura, empleo_industria, 
    familias_contribuyentes, empleo_parcial, 
    trabajadores_asalariados
  ) %>%
  na.omit()
r <- cor(datos_analisis)

ggcorrplot(r, 
           hc.order = TRUE, 
           type = "lower",
           lab = TRUE,
           lab_size = 3,
)

Primero se logra observar una correlación positiva moderada entre las variables PIB por personas empleadas (gdp_person) y los trabajadores asalariados (trabajadores_asalariados) de una correlación de (0.67) indicando que a mayor proporción de empleo tienden a presentarse mayores niveles de productividad laboral en el año 2019, siendo este un resultado consistente a la realidad dado que el empleo asalariado esta muy relacionado a la mayor estabilidad y eficiencia productiva.

Por otro lado, se observa una correlación negativa de color morado (-0.63) entre las variables gdp_person y empleo_agricultura indicando que las regiones utilizadas con mayor participación en este sector agricola tienden a registrar menores niveles de productividad, dando a interpretar que este es uno de los sectores de menos productividad laborar en comparación con los sectores industrial y de servicios.

Mirando un poco mas las correlaciones como de (-0.88) indicando ser una correlación negativa intensa de las variables empleo en agricultura (empleo_agrucultura) y trabajadore asalariados(trabajadores_asalariados) existiendo entre ellas una relación estructural indicando una existencia de multicolinealidad ya que ambas variables dan resultados de dimensiones opuestos con el desarrollo de la productividad.

Se logra también identificar una correlación positiva intensa (0.86) entre empleo en agricultura y la proporción de trabajadores evidenciando una fuerte relación entre ambas indicando que entre mayor sea la participación del sector agrícola en el desarrollo de la productividad hay mas presencia de empleo familiar sin dejar de resaltar que existe una posible multicolinealidad lo que llega afectar la estabilidad del modelo.

13 tabla vif

Con el propósito de verificar el cumplimiento de los supuestos del modelo de regresión lineal, se evalúa la presencia de multicolinealidad entre las variables explicativas mediante el Factor de Inflación de la Varianza (VIF). Este indicador permite identificar posibles relaciones lineales fuertes entre las variables independientes, las cuales pueden afectar la estabilidad y precisión de los coeficientes estimados.

Los resultados obtenidos muestran que las variables empleo_agricultura (VIF = 7.533) y trabajadores_asalariados (VIF = 5.219) presentan niveles moderados de multicolincalidad, al ubicarse por encima del umbral de referencia de 5. Por su parte, las variables familias_contribuyentes (VIF = 4.251), empleo_parcial (VIF = 1.378) y empleo_industria (VIF = 1.357) se mantienen dentro de rangos aceptables, lo que indica una baja correlación con las demás variables del modelo.

En conjunto, los resultados sugieren que, si bien no existe un problema severo de multicolinealidad, sí se evidencia una relación moderada entre algunas variables explicativas, particularmente en el caso de empleo_agricultura y trabajadores_asalariados. En consecuencia, se recomienda interpretar con cautela los coeficientes asociados a estas variables, asi como considerar posibles ajustes en la especificación del modelo en caso de requerir una mayor precisión en la estimación.

calcular_vif_seguro <- function(model) {
  tryCatch({
    vif_resultados <- vif(model)
    
    if(is.matrix(vif_resultados)) {
      data.frame(
        Variable = rownames(vif_resultados),
        VIF = as.numeric(vif_resultados[, "GVIF"]),
        stringsAsFactors = FALSE
      )
    } else {
      data.frame(
        Variable = names(vif_resultados),
        VIF = as.numeric(vif_resultados),
        stringsAsFactors = FALSE
      )
    }
  }, error = function(e) {
    X <- model.matrix(model)
    if("(Intercept)" %in% colnames(X)) {
      X <- X[, colnames(X) != "(Intercept)", drop = FALSE]
    }
    
    if(ncol(X) > 0) {
      cor_matrix <- cor(X)
      vif_manual <- diag(solve(cor_matrix))
      data.frame(
        Variable = colnames(X),
        VIF = vif_manual,
        stringsAsFactors = FALSE
      )
    } else {
      stop("No se pueden calcular VIF")
    }
  })
}

vif_df <- calcular_vif_seguro(model)

vif_procesado <- vif_df %>%
  mutate(
    VIF = round(VIF, 3),
    Tolerancia = round(1/VIF, 4),
    Diagnóstico = case_when(
      VIF >= 10 ~ "🚨 GRAVE",
      VIF >= 5 & VIF < 10 ~ "⚠️ MODERADO", 
      VIF < 5 ~ "✅ ACEPTABLE"
    )
  ) %>%
  arrange(desc(VIF))


tabla_vif_simple <- vif_procesado %>%
  select(Variable, VIF, Tolerancia, Diagnóstico)

kable(tabla_vif_simple, 
      caption = "Tabla 10. Análisis de Multicolinealidad mediante VIF",
      align = c( "c", "c", "c"),
      format = ifelse(knitr::is_latex_output(), "latex", "pipe")) %>%
  kable_styling(bootstrap_options = c("striped", "hover"), 
                full_width = FALSE,
                position = "center")
Tabla 10. Análisis de Multicolinealidad mediante VIF
Variable VIF Tolerancia Diagnóstico
empleo_agricultura empleo_agricultura 7.533 0.1327 ⚠️ MODERADO
trabajadores_asalariados trabajadores_asalariados 5.219 0.1916 ⚠️ MODERADO
familias_contribuyentes familias_contribuyentes 4.251 0.2352 ✅ ACEPTABLE |
empleo_parcial empleo_parcial 1.378 0.7257 ✅ ACEPTABLE |
empleo_industria empleo_industria 1.357 0.7369 ✅ ACEPTABLE |

13.1 grafica vif

grafico_vif <- ggplot(vif_procesado, aes(x = reorder(Variable, VIF), y = VIF, fill = Diagnóstico)) +
  geom_col(width = 0.7, alpha = 0.8) +
  geom_hline(yintercept = 5, color = "#D69E2E", linetype = "dashed", linewidth = 1) +
  geom_hline(yintercept = 10, color = "#E53E3E", linetype = "dashed", linewidth = 1) +
  geom_text(aes(label = sprintf("%.2f", VIF)), hjust = -0.2, size = 3.5, fontface = "bold") +
  scale_fill_manual(values = c("✅ ACEPTABLE" = "#48BB78", 
                              "⚠️ MODERADO" = "#ECC94B", 
                              "🚨 GRAVE" = "#F56565")) +
  coord_flip() +
  labs(
    title = "Análisis de Multicolinealidad (VIF)",
    subtitle = "Umbrales: VIF < 5 (Aceptable) | VIF ≥ 5 (Moderado) | VIF ≥ 10 (Grave)",
    x = NULL,
    y = "VIF",
    caption = "Fuente:Elaboración propia"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(face = "bold", hjust = 0.5),
    plot.subtitle = element_text(hjust = 0.5, color = "gray40"),
    axis.text.y = element_text(face = "bold"),
    legend.position = "bottom"
  )

print(grafico_vif)

14 CONCLUSIONES

En cuanto a los coeficientes estimados, se identifican relaciones diferenciadas entre los distintos sectores del empleo y el PIB per cápita. En particular, variables como el empleo en industria, las familias contribuyentes, el empleo parcial y los trabajadores asalariados muestran efectos estadísticamente significativos, lo que sugiere que estos factores desempeñan un papel relevante en la explicación del nivel de ingreso por habitante.

Por el contrario, el empleo en el sector agrícola no presenta evidencia estadística suficiente para afirmar una relación significativa dentro del modelo, lo que podría estar asociado a características estructurales de las economías analizadas o a la interacción con otras variables no incluidas.

Desde el punto de vista del ajuste, el modelo logra un equilibrio adecuado entre capacidad explicativa y parsimonia, sin evidenciar problemas severos de sobreajuste. Asimismo, el análisis de multicolinealidad indica que, si bien existen niveles moderados en algunas variables, estos no comprometen de manera crítica la estabilidad de las estimaciones, aunque sí sugieren cautela en la interpretación de ciertos coeficientes.

Por otra parte, la evaluación de los supuestos del modelo, a partir del análisis de residuos, permite concluir que estos se cumplen de manera general, aunque no de forma estricta. En particular, se identifican leves indicios de heterocedasticidad y la presencia de valores atípicos, especialmente en niveles altos del PIB per cápita, lo que sugiere que el modelo presenta limitaciones en su capacidad para capturar adecuadamente comportamientos extremos. No obstante, estas desviaciones no invalidan el modelo, sino que delimitan su alcance y precisión.

En conjunto, los resultados obtenidos permiten afirmar que el modelo estimado constituye una herramienta útil para comprender el comportamiento general del PIB per cápita en función de variables del mercado laboral. Sin embargo, también ponen en evidencia la necesidad de considerar posibles mejoras en futuras especificaciones, tales como la incorporación de nuevas variables explicativas, transformaciones funcionales o el tratamiento de observaciones atípicas, con el fin de fortalecer la capacidad predictiva y la robustez del análisis.

15 BIOGRAFIAS

  • Banco Mundial. (2023). World Development Indicators: GDP per person employed (constant 2017 PPP $) Washington, D.C.: World Bank Group. Recuperado de https://data.worldbank.org/indicator/SL.GDP.PCAP.EM.KD (https://data.worldbank.org/indicator/SL.GDP.PCAP.EM.KD).

  • International Labour Organization (ILO). (2022). World Employment and Social Outlook: Trends 2022. Geneva: ILO. Recuperado de hitps:///(@deomm/@publ/documents/publication/wems_834081.pdf (hitps://www.lo.orgsites/defaul/files/wemsp3/groups/public/(@dgreports/@dcomm/@publ/documents/publication/wems_83408.pdf.

  • International Labour Organization (ILO). (2023). Employment by Status and Sector Database. Geneva: ILO. Recuperado de hitps://www.ilo.org/statistics/ (https://www.ilo.org/statistics/)

  • MeCombie, J. S. L., & Thirlwall, A. P. (2019). Economic Growth and the Balance-of-Payments Constraint. London: Routledge.

  • Gujarati, D. N., & Porter, D. C. (2020). Basic Econometrics (6th ed.). New York: McGraw-Hill Education.

-Banco Mundial & Organización Internacional del Trabajo. (2026). GDP per person employed (constant 2021 PPP S) [Conjunto de datos]. World Development Indicators. https://databank.worldbank.org/metadataglossary/world- development-indicators/series/SL.GDP.PCAP.EM.KD (hups://databank.worldbank.org/metadataglossary/worlddevelopment-indicators/series/SL.GDP.PCAP.EM.KD).