library(tidyverse)
library(factoextra)
library(FactoMineR)
library(dendextend)
library(FactoClass)
library(reshape2)
library(corrplot)
library(ggcorrplot)
library(ggrepel)
library(readxl)
library(knitr)
library(kableExtra)
library(scales)
library(plotly)

1 Introducción

1.1 Problema de investigación

Los manuales de economía internacional suelen clasificar los países en dos grandes bloques: economías avanzadas y economías emergentes. Es una distinción útil, pero incompleta. Dentro de la propia OCDE conviven países con inflaciones de un dígito y países con inflaciones de tres dígitos, economías altamente abiertas al comercio mundial y otras que dependen casi exclusivamente de su mercado interno, mercados laborales de medio millón de trabajadores y mercados de más de mil millones.

Esto lleva a una pregunta que no siempre se formula con claridad: ¿hasta qué punto los indicadores macroeconómicos estándar son suficientes para clasificar países en grupos coherentes, o existen economías cuya trayectoria es tan particular que simplemente no encajan en ninguna categoría?

Dicho de otra forma: cuando se analizan 15 variables económicas simultáneamente sobre 42 países, ¿emergen grupos naturales con sentido económico real, o los datos están tan dispersos que cualquier agrupación es forzada? Y si hay economías que quedan fuera de los patrones comunes, ¿eso es un fallo del método o una señal genuina sobre su situación estructural?

Estas son las preguntas que guían el análisis.

1.2 Contexto

La OCDE lleva décadas documentando cómo la economía global tiende a moverse en bloque, pero también cómo esa imagen de conjunto esconde diferencias enormes entre países. Después de la pandemia eso quedó más claro que nunca.

Cuando los precios empezaron a dispararse entre 2021 y 2022, la inflación no llegó igual a todos lados. En Alemania o España subió y después bajó, siguiendo el ciclo de política monetaria de los bancos centrales. En Argentina ya venía alta antes de la pandemia y siguió escalando hasta superar el 100% anual. En Japón casi no se movió durante años. Como señaló la propia OCDE en su informe de septiembre de 2021, la recuperación económica avanzaba, pero de forma desigual: algunos países retomaban el crecimiento con fuerza mientras otros seguían atrapados en sus propios problemas estructurales (OCDE, 2021).

Esa desigualdad no desapareció con el tiempo. Los reportes más recientes de la organización muestran que si bien la inflación ha bajado en la mayoría de economías avanzadas, no todos van al mismo ritmo ni desde el mismo punto de partida. Según el Economic Outlook 2025 de la OCDE, la inflación anual del G20 se espera que pase del 3.4% en 2025 al 2.8% en 2026, pero esos promedios ocultan que hay economías donde la inflación sigue siendo un problema sin resolver, mientras que otras ya la tienen completamente bajo control (OCDE, 2025).

En cuanto al crecimiento, el panorama también es dispar. La economía global ha mostrado más resistencia de lo que se esperaba frente a shocks como las subidas de aranceles o la incertidumbre geopolítica, pero el crecimiento del PIB global se proyecta que baje del 3.2% en 2025 al 2.9% en 2026, con diferencias notables entre regiones: las economías emergentes de Asia siguen siendo el principal motor, mientras Europa crece más lento y algunos países de América Latina navegan entre la estabilización y la volatilidad (OCDE, 2025).

Todo esto sirve de fondo para entender por qué tiene sentido hacer el ejercicio que propone este trabajo. Si los países fueran más o menos homogéneos, un análisis de clustering sobre sus indicadores daría grupos difusos y poco útiles. Pero si las diferencias estructurales son reales y profundas, los datos deberían organizarse en grupos con sentido económico propio. El objetivo es justamente verificar eso, y de paso, identificar cuáles son las dimensiones que mejor explican por qué unos países se parecen entre sí y otros no.

2 Metodología

2.1 Base de datos

La base de datos utilizada es el archivo DatosEcon.xlsx, hoja Data, con fuente en la OCDE (Organización para la Cooperación y el Desarrollo Económicos). Contiene información de 42 países, incluyendo tanto economías miembros de la OCDE como economías emergentes asociadas o invitadas (Brasil, India, Colombia, Perú, Sudáfrica, Argentina, entre otros).

La base original dispone de 29 variables macroeconómicas (x1 a x29), que cubren áreas como balanza de pagos, cuentas nacionales, precios, empleo, tasas de interés y tipos de cambio. Para el análisis se seleccionaron 15 variables con base en tres criterios: cobertura temática equilibrada entre dimensiones económicas, capacidad discriminante entre grupos de países, y control de valores extremos. Las observaciones corresponden a promedios del período analizado (datos panel resumidos en un corte transversal por país), con los valores monetarios expresados en distintas unidades según la variable (USD corrientes, moneda nacional, índices o porcentajes).

2.2 Técnicas empleadas

Análisis de Componentes Principales (ACP). Es una técnica de reducción de dimensionalidad que transforma un conjunto de variables correlacionadas en un conjunto menor de variables no correlacionadas llamadas componentes principales, ordenadas de manera que las primeras retienen la mayor parte de la variabilidad de los datos originales. Esto permite identificar los “factores” subyacentes que explican el comportamiento conjunto de las variables económicas y visualizar a los países en un espacio de menor dimensión.

Clusterización K-Means. Es un algoritmo de agrupamiento que divide un conjunto de observaciones en k grupos, asignando cada observación al grupo cuyo centroide (promedio) le resulte más cercano, y recalculando iterativamente esos centroides hasta que las asignaciones se estabilizan. Requiere definir de antemano el número de grupos k.

Clusterización jerárquica (método de Ward). A diferencia de K-Means, este método no requiere definir k de antemano: comienza tratando cada observación como su propio grupo y va fusionando los grupos más similares de manera sucesiva, hasta formar una estructura en forma de árbol (dendrograma). El método de Ward fusiona en cada paso los grupos que minimizan el incremento en la varianza interna total, produciendo grupos compactos y homogéneos. El número final de grupos se obtiene “cortando” el dendrograma a una altura determinada.

2.3 Selección del número de clusters

Para determinar el número óptimo de grupos se emplearon los criterios de codo (within-cluster sum of squares) y de silueta promedio. En este análisis, el criterio de silueta sugiere k = 2 como óptimo matemático; sin embargo, esto se debe a que Argentina constituye un caso tan extremo en términos de inflación y deuda externa que cualquier partición en dos grupos tiende a separarla del resto, maximizando artificialmente la silueta. Se optó por k = 3, ya que ofrece una segmentación con mayor riqueza interpretativa: permite distinguir un grupo intermedio de economías emergentes que k = 2 no deja ver, manteniendo a Argentina como un tercer grupo (caso atípico) plenamente justificable desde el punto de vista estadístico y económico.

2.4 Descripción de las variables

Las 15 variables seleccionadas se organizan en cinco dimensiones económicas:

2.4.1 Dimensión 1 — Sector Externo

  • CuentaCorriente_pct (x1): Saldo de la cuenta corriente como porcentaje del PIB. Valores positivos indican superávit (el país exporta más de lo que importa), mientras que valores negativos reflejan déficit y dependencia del financiamiento externo. Es un indicador clave de la sostenibilidad del sector externo.

  • Exportaciones_pctPIB (x4): Exportaciones de bienes y servicios como porcentaje del PIB. Mide el peso del sector exportador dentro de la economía, enfocándose en la oferta exportable.

  • Apertura_Comercial (x21): Suma de exportaciones e importaciones como porcentaje del PIB. Refleja el grado de integración de un país con la economía mundial; economías pequeñas y abiertas tienden a mostrar valores más altos que economías grandes y relativamente cerradas.

2.4.2 Dimensión 2 — Dinámica y Tasas de Crecimiento

  • Crec_PIB_Real (x17): Tasa de crecimiento anual del PIB real. Es el indicador estándar del ritmo de expansión económica, eliminando el efecto de la inflación.

  • Crec_Exportaciones (x16): Tasa de crecimiento de las exportaciones en volumen real. Mide el dinamismo del sector externo y la ganancia de competitividad en mercados internacionales.

  • Crec_FBCF (x20): Tasa de crecimiento de la Formación Bruta de Capital Fijo. Es el componente más volátil del PIB y actúa como señal adelantada del ciclo económico; captura el dinamismo de la inversión productiva.

2.4.3 Dimensión 3 — Precios e Inflación

  • Inflacion_IPC (x18): Variación del Índice de Precios al Consumidor (%). Captura la presión inflacionaria sobre los hogares. Argentina presenta un z-score superior a 5 por su inflación crónica, convirtiéndola en un caso atípico estadísticamente justificable.

  • Deflactor_Crec (x19): Variación del deflactor implícito del PIB (%). Es una medida más amplia de inflación que el IPC, pues incluye bienes de inversión y exportaciones. Presenta alta correlación con la inflación IPC (r = 0.968) dado que ambas capturan el fenómeno inflacionario desde ángulos distintos.

  • Deflactor_PIB_Nivel (x25): Nivel del deflactor del PIB (índice base). A diferencia de la variación anual, captura la acumulación histórica de precios, reflejando cuánto han variado los precios en términos absolutos respecto al año base.

  • Deflactor_Imp_Exp (x8): Relación entre el deflactor de importaciones y el de exportaciones, equivalente a los términos de intercambio implícitos. Valores positivos indican que el país vende caro y compra barato; es sensible a los precios de las materias primas.

2.4.4 Dimensión 4 — Mercado Laboral y Política Monetaria

  • Tasa_Desempleo (x15): Tasa de desempleo (%). Refleja la eficiencia en el uso del factor trabajo y la salud del mercado laboral.

  • Empleo_Total (x27): Número total de personas empleadas. Es una variable de tamaño absoluto que complementa la tasa de desempleo con una medida del volumen real del mercado laboral.

  • FuerzaLaboral (x28): Población económicamente activa (empleados más desempleados que buscan trabajo). Correlaciona muy fuertemente con el empleo total (r = 0.999), pues ambas son componentes del mismo agregado laboral; juntas capturan el tamaño del mercado de trabajo.

  • Tasa_Interes_CP (x29): Tasa de interés de corto plazo del banco central. Tasas elevadas señalan una política monetaria antiinflacionaria o una prima de riesgo país elevada; tasas bajas indican una postura expansiva.

2.4.5 Dimensión 5 — Desequilibrios Macroeconómicos

  • Deuda_Ext_pct (x2): Indicador de posición financiera externa o deuda como ratio. Argentina presenta un z-score de 4.84, consistente con su historial de reestructuraciones de deuda. Junto con las variables de inflación, construye la dimensión de fragilidad macroeconómica que el ACP identifica como componente independiente.

# ── 1. CARGA DE DATOS ────────────────────────────────────────
datos <- read_excel("DatosEcon.xlsx", sheet = "Data")
paises <- datos$Pais
# ── 2. SELECCIÓN Y RENOMBRE DE VARIABLES ─────────────────────
variables_sel <- c(
  "x1",  # CuentaCorriente_pct
  "x15", # Tasa_Desempleo
  "x16", # Crec_Exportaciones
  "x17", # Crec_PIB_Real
  "x18", # Inflacion_IPC
  "x19", # Deflactor_Crec
  "x2",  # Deuda_Ext_pct
  "x20", # Crec_FBCF
  "x21", # Apertura_Comercial
  "x25", # Deflactor_PIB_Nivel
  "x27", # Empleo_Total
  "x28", # FuerzaLaboral
  "x29", # Tasa_Interes_CP
  "x4",  # Exportaciones_pctPIB
  "x8"   # Deflactor_Imp_Exp
)

base <- datos %>%
  select(all_of(variables_sel)) %>%
  rename(
    CuentaCorriente_pct  = x1,
    Tasa_Desempleo       = x15,
    Crec_Exportaciones   = x16,
    Crec_PIB_Real        = x17,
    Inflacion_IPC        = x18,
    Deflactor_Crec       = x19,
    Deuda_Ext_pct        = x2,
    Crec_FBCF            = x20,
    Apertura_Comercial   = x21,
    Deflactor_PIB_Nivel  = x25,
    Empleo_Total         = x27,
    FuerzaLaboral        = x28,
    Tasa_Interes_CP      = x29,
    Exportaciones_pctPIB = x4,
    Deflactor_Imp_Exp    = x8
  )

rownames(base) <- paises

# Objeto auxiliar con columna Pais (útil para gráficos)
datos_sel <- bind_cols(Pais = paises, base)

3 Análisis Descriptivo

3.1 Estadísticas descriptivas

La tabla siguiente resume las principales medidas de tendencia central y dispersión para cada una de las 15 variables seleccionadas, agrupadas por dimensión económica.

tabla_desc <- data.frame(
  Variable  = colnames(base),
  Media     = sapply(base, function(x) mean(x,   na.rm = TRUE)),
  Mediana   = sapply(base, function(x) median(x, na.rm = TRUE)),
  SD        = sapply(base, function(x) sd(x,     na.rm = TRUE)),
  CV        = sapply(base, function(x)
    abs(sd(x, na.rm = TRUE) / mean(x, na.rm = TRUE)) * 100),
  Min       = sapply(base, function(x) min(x,    na.rm = TRUE)),
  Max       = sapply(base, function(x) max(x,    na.rm = TRUE))
)

tabla_fmt <- tabla_desc %>%
  mutate(
    across(c(Media, Mediana, SD, Min, Max),
           ~ ifelse(abs(.) >= 1e9,
                    formatC(., format = "e", digits = 2),
                    round(., 3))),
    CV = round(CV, 1)
  )

tabla_fmt %>%
  kable(
    caption = "Estadísticas descriptivas — 15 variables OCDE",
    align   = c("l", rep("r", 6))
  ) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"),
    full_width        = FALSE,
    font_size         = 12
  ) %>%
  row_spec(0, bold = TRUE, background = "#2C5F8A", color = "white") %>%
  pack_rows("Sector Externo",                    1,  1) %>%   # CuentaCorriente_pct
  pack_rows("Mercado Laboral y Monetario",        2,  2) %>%   # Tasa_Desempleo
  pack_rows("Dinámica y Tasas de Crecimiento",    3,  4) %>%   # Crec_Exportaciones, Crec_PIB_Real
  pack_rows("Precios e Inflación",                5,  6) %>%   # Inflacion_IPC, Deflactor_Crec
  pack_rows("Desequilibrios Macroeconómicos",     7,  7) %>%   # Deuda_Ext_pct
  pack_rows("Dinámica y Tasas de Crecimiento",    8,  8) %>%   # Crec_FBCF
  pack_rows("Sector Externo",                     9,  9) %>%   # Apertura_Comercial
  pack_rows("Precios e Inflación",               10, 10) %>%   # Deflactor_PIB_Nivel
  pack_rows("Mercado Laboral y Monetario",       11, 13) %>%   # Empleo_Total, FuerzaLaboral, Tasa_Interes_CP
  pack_rows("Sector Externo",                    14, 14) %>%   # Exportaciones_pctPIB
  pack_rows("Precios e Inflación",               15, 15)       # Deflactor_Imp_Exp
Estadísticas descriptivas — 15 variables OCDE
Variable Media Mediana SD CV Min Max
Sector Externo
CuentaCorriente_pct CuentaCorriente_pct 1.012 0.356 5.079 501.9 -7.282 14.913
Mercado Laboral y Monetario
Tasa_Desempleo Tasa_Desempleo 10.67 10.405 6.887 64.5 -3.586 27.823
Dinámica y Tasas de Crecimiento
Crec_Exportaciones Crec_Exportaciones 12.824 13.125 8.24 64.3 -8.283 35.465
Crec_PIB_Real Crec_PIB_Real 6.415 5.291 2.87 44.7 1.641 13.427
Precios e Inflación
Inflacion_IPC Inflacion_IPC 12.974 10.685 11.373 87.7 0.759 70.182
Deflactor_Crec Deflactor_Crec 6.085 3.068 9.122 149.9 -0.868 54.152
Desequilibrios Macroeconómicos
Deuda_Ext_pct Deuda_Ext_pct 7.987 1.3 18.22 228.1 0.727 95.082
Dinámica y Tasas de Crecimiento
Crec_FBCF Crec_FBCF 7.344 6.599 10.812 147.2 -39.07 35.318
Sector Externo
Apertura_Comercial Apertura_Comercial 6.611 5.733 3.929 59.4 0.399 20.505
Precios e Inflación
Deflactor_PIB_Nivel Deflactor_PIB_Nivel 2.886 1.138 10.18 352.8 1 67.152
Mercado Laboral y Monetario
Empleo_Total Empleo_Total 21054644.248 8025105.868 32633038.117 155.0 195925 152578500
FuerzaLaboral FuerzaLaboral 22851309.563 8657374.355 35182554.068 154.0 208400 161204000
Tasa_Interes_CP Tasa_Interes_CP 0.996 0.02 3.171 318.5 -0.739 18.714
Sector Externo
Exportaciones_pctPIB Exportaciones_pctPIB 3.76e+11 2.11e+11 4.95e+11 131.5 8.36e+09 2.75e+12
Precios e Inflación
Deflactor_Imp_Exp Deflactor_Imp_Exp 0.001 -0.006 0.051 4027.3 -0.089 0.279

3.2 Análisis gráfico por dimensión

# Función auxiliar para etiquetar outliers en boxplots
outliers_pais <- function(df) {
  df %>%
    group_by(Variable) %>%
    mutate(
      Q1         = quantile(Valor, 0.25, na.rm = TRUE),
      Q3         = quantile(Valor, 0.75, na.rm = TRUE),
      IQR        = Q3 - Q1,
      es_outlier = Valor < (Q1 - 1.5 * IQR) | Valor > (Q3 + 1.5 * IQR)
    ) %>%
    ungroup()
}

# Tema base para boxplots
tema_box <- theme_minimal(base_size = 12) +
  theme(
    plot.title         = element_text(hjust = 0.5, face = "bold", size = 13),
    plot.subtitle      = element_text(hjust = 0.5, size = 10,
                                      color = "grey40", margin = margin(b = 10)),
    plot.caption       = element_text(size = 8, color = "grey55", hjust = 0),
    strip.text         = element_text(face = "bold", size = 11),
    axis.title.y       = element_text(size = 10, color = "grey40"),
    axis.text.x        = element_text(size = 10, face = "bold"),
    axis.text.y        = element_text(size = 9),
    panel.grid.major.x = element_blank(),
    panel.grid.minor   = element_blank(),
    legend.position    = "none"
  )

3.2.1 Dimensión 1 — Sector Externo: Cuenta Corriente

El siguiente boxplot muestra la distribución del saldo de cuenta corriente como porcentaje del PIB entre los 42 países. Los países con superávit externo (Noruega, Irlanda, Alemania) se ubican en la parte positiva, mientras que los países con déficit —como Rumanía, Nueva Zelanda y Chile— presentan valores negativos, indicando dependencia del financiamiento externo. La línea punteada en cero facilita la identificación de la posición externa de cada economía.

g_cc <- datos_sel %>%
  select(Pais, CuentaCorriente_pct) %>%
  pivot_longer(-Pais, names_to = "Variable", values_to = "Valor") %>%
  outliers_pais()

ggplot(g_cc, aes(x = Variable, y = Valor)) +
  geom_boxplot(fill = "#2C5F8A", alpha = 0.65, width = 0.4,
               outlier.shape = NA) +
  geom_hline(yintercept = 0, linetype = "dashed",
             color = "grey50", linewidth = 0.5) +
  geom_point(data = filter(g_cc, es_outlier),
             color = "#C0392B", size = 2.5, shape = 16) +
  geom_text_repel(data = filter(g_cc, es_outlier),
                  aes(label = Pais),
                  size = 3, color = "grey25",
                  box.padding = 0.4, max.overlaps = 20,
                  segment.color = "grey70", segment.size = 0.3) +
  labs(
    title    = "Posición Externa — Cuenta Corriente",
    subtitle = "Saldo como porcentaje del PIB\n(+) superávit externo  |  (–) déficit externo",
    caption  = "Fuente: OCDE",
    x = "", y = "% del PIB"
  ) +
  tema_box
Distribución del saldo de cuenta corriente (% del PIB). Los puntos rojos identifican valores atípicos etiquetados por país.

Distribución del saldo de cuenta corriente (% del PIB). Los puntos rojos identifican valores atípicos etiquetados por país.

3.2.2 Dimensión 1 — Sector Externo: Apertura y orientación exportadora

Los dos paneles muestran el grado de apertura comercial y el peso de las exportaciones en el PIB. Se observa una alta variabilidad: economías pequeñas y muy abiertas como Luxemburgo, Bélgica e Irlanda presentan valores extremadamente altos tanto en apertura como en exportaciones como porcentaje del PIB, lo cual las convierte en valores atípicos respecto al resto de la muestra. En contraste, economías grandes como Estados Unidos o Japón muestran valores más bajos en ambas variables debido al tamaño de su mercado interno.

g_aper <- datos_sel %>%
  select(Pais, Apertura_Comercial, Exportaciones_pctPIB) %>%
  pivot_longer(-Pais, names_to = "Variable", values_to = "Valor") %>%
  outliers_pais()

etiquetas_aper <- c(
  Apertura_Comercial   = "Apertura Comercial\n(% PIB)",
  Exportaciones_pctPIB = "Exportaciones\n(% PIB)"
)

ggplot(g_aper, aes(x = "", y = Valor, fill = Variable)) +
  geom_boxplot(alpha = 0.65, outlier.shape = NA) +
  geom_point(data = filter(g_aper, es_outlier),
             color = "#C0392B", size = 2, shape = 16) +
  geom_text_repel(data = filter(g_aper, es_outlier),
                  aes(label = Pais),
                  size = 2.8, color = "grey25",
                  box.padding = 0.4, max.overlaps = 15,
                  segment.color = "grey70", segment.size = 0.3) +
  facet_wrap(~ Variable, scales = "free_y",
             labeller = as_labeller(etiquetas_aper)) +
  scale_fill_manual(values = c("Apertura_Comercial"   = "#2C5F8A",
                               "Exportaciones_pctPIB" = "#5B9BD5")) +
  labs(
    title    = "Apertura y Orientación Exportadora",
    subtitle = "Indicadores de integración comercial como % del PIB\nCada panel tiene su propia escala",
    caption  = "Fuente: OCDE",
    x = "", y = "%"
  ) +
  tema_box +
  theme(axis.text.x = element_blank())
Apertura comercial y exportaciones como porcentaje del PIB. Cada panel tiene su propia escala.

Apertura comercial y exportaciones como porcentaje del PIB. Cada panel tiene su propia escala.

3.2.3 Dimensión 2 — Dinámica económica: Tasas de crecimiento

Los tres paneles presentan la distribución de las tasas de crecimiento del PIB real, de la inversión (FBCF) y de las exportaciones. Se puede observar que la inversión (Crec_FBCF) es el indicador más volátil de los tres, con una mayor dispersión intercuartílica, confirmando su rol de variable de ciclo económico. Irlanda muestra un valor extremadamente negativo en crecimiento de la inversión, consistente con los efectos contables de la relocalización de activos en su economía. La línea punteada en cero facilita identificar los países con contracción en cada dimensión.

g_crec <- datos_sel %>%
  select(Pais, Crec_PIB_Real, Crec_FBCF, Crec_Exportaciones) %>%
  pivot_longer(-Pais, names_to = "Variable", values_to = "Valor") %>%
  outliers_pais()

etiquetas_crec <- c(
  Crec_PIB_Real      = "Crecimiento PIB Real\n(variación % anual)",
  Crec_FBCF          = "Inversión — FBCF\n(variación % anual)",
  Crec_Exportaciones = "Crecimiento Exportaciones\n(variación % anual)"
)

ggplot(g_crec, aes(x = "", y = Valor, fill = Variable)) +
  geom_boxplot(alpha = 0.65, outlier.shape = NA) +
  geom_hline(yintercept = 0, linetype = "dashed",
             color = "grey50", linewidth = 0.4) +
  geom_point(data = filter(g_crec, es_outlier),
             color = "#C0392B", size = 2, shape = 16) +
  geom_text_repel(data = filter(g_crec, es_outlier),
                  aes(label = Pais),
                  size = 2.8, color = "grey25",
                  box.padding = 0.4, max.overlaps = 15,
                  segment.color = "grey70", segment.size = 0.3) +
  facet_wrap(~ Variable, scales = "free_y",
             labeller = as_labeller(etiquetas_crec)) +
  scale_fill_manual(values = c("Crec_PIB_Real"      = "#2C5F8A",
                               "Crec_FBCF"          = "#5B9BD5",
                               "Crec_Exportaciones" = "#A8C8E8")) +
  labs(
    title    = "Dinámica Económica — Tasas de Crecimiento",
    subtitle = "Variaciones porcentuales anuales en términos reales\nLínea punteada = cero",
    caption  = "Fuente: OCDE",
    x = "", y = "%"
  ) +
  tema_box +
  theme(axis.text.x = element_blank())
Tasas de crecimiento del PIB real, inversión (FBCF) y exportaciones. Cada panel tiene su propia escala.

Tasas de crecimiento del PIB real, inversión (FBCF) y exportaciones. Cada panel tiene su propia escala.

3.2.4 Dimensión 3 — Precios e inflación

Los cuatro paneles permiten visualizar distintas dimensiones del fenómeno inflacionario. Argentina se identifica como valor extremo en todos los indicadores de precios: su inflación IPC y la variación del deflactor del PIB superan ampliamente los máximos del resto de la muestra, mientras que su deflactor de nivel refleja la acumulación histórica de precios. Turquía también emerge como valor atípico en las variables de variación de precios. Para el resto de los países, la distribución es relativamente compacta y cercana a valores bajos, coherente con la experiencia inflacionaria moderada de las economías OCDE en el período analizado.

g_prec <- datos_sel %>%
  select(Pais, Inflacion_IPC, Deflactor_Crec, Deflactor_PIB_Nivel,
         Deflactor_Imp_Exp) %>%
  pivot_longer(-Pais, names_to = "Variable", values_to = "Valor") %>%
  outliers_pais()

etiquetas_prec <- c(
  Inflacion_IPC       = "Inflación IPC\n(var. % anual)",
  Deflactor_Crec      = "Deflactor — Crecimiento\n(var. % anual)",
  Deflactor_PIB_Nivel = "Deflactor PIB\n(nivel índice)",
  Deflactor_Imp_Exp   = "Términos de Intercambio\n(deflactor imp/exp)"
)

ggplot(g_prec, aes(x = "", y = Valor, fill = Variable)) +
  geom_boxplot(alpha = 0.65, outlier.shape = NA) +
  geom_point(data = filter(g_prec, es_outlier),
             color = "#C0392B", size = 2, shape = 16) +
  geom_text_repel(data = filter(g_prec, es_outlier),
                  aes(label = Pais),
                  size = 2.8, color = "grey25",
                  box.padding = 0.4, max.overlaps = 15,
                  segment.color = "grey70", segment.size = 0.3) +
  facet_wrap(~ Variable, scales = "free_y",
             labeller = as_labeller(etiquetas_prec)) +
  scale_fill_manual(values = c("Inflacion_IPC"       = "#2C5F8A",
                               "Deflactor_Crec"      = "#5B9BD5",
                               "Deflactor_PIB_Nivel" = "#A8C8E8",
                               "Deflactor_Imp_Exp"   = "#1A3F5C")) +
  labs(
    title    = "Precios e Inflación",
    subtitle = "Indicadores de presión inflacionaria y términos de intercambio\nCada panel tiene su propia escala",
    caption  = "Fuente: OCDE",
    x = "", y = ""
  ) +
  tema_box +
  theme(axis.text.x = element_blank())
Indicadores de presión inflacionaria y términos de intercambio. Cada panel tiene su propia escala.

Indicadores de presión inflacionaria y términos de intercambio. Cada panel tiene su propia escala.

3.2.5 Dimensión 4 — Mercado laboral y política monetaria

Los cuatro paneles muestran la tasa de desempleo, el empleo total, la fuerza laboral y la tasa de interés de corto plazo. En cuanto al desempleo, países como Grecia, España y Sudáfrica presentan tasas elevadas que los ubican como valores atípicos. Para el empleo total y la fuerza laboral, las economías más grandes en términos poblacionales (India, Estados Unidos, Brasil) se destacan como outliers por el volumen absoluto de sus mercados de trabajo. En la tasa de interés, Turquía aparece como el caso más extremo, reflejando una política monetaria fuertemente restrictiva para contener la presión inflacionaria.

g_lab <- datos_sel %>%
  select(Pais, Tasa_Desempleo, Empleo_Total, FuerzaLaboral, Tasa_Interes_CP) %>%
  pivot_longer(-Pais, names_to = "Variable", values_to = "Valor") %>%
  outliers_pais()

etiquetas_lab <- c(
  Tasa_Desempleo  = "Tasa de Desempleo\n(%)",
  Empleo_Total    = "Empleo Total\n(personas)",
  FuerzaLaboral   = "Fuerza Laboral\n(personas)",
  Tasa_Interes_CP = "Tasa de Interés\nCorto Plazo (%)"
)

ggplot(g_lab, aes(x = "", y = Valor, fill = Variable)) +
  geom_boxplot(alpha = 0.65, outlier.shape = NA) +
  geom_point(data = filter(g_lab, es_outlier),
             color = "#C0392B", size = 2.5, shape = 16) +
  geom_text_repel(data = filter(g_lab, es_outlier),
                  aes(label = Pais),
                  size = 3, color = "grey25",
                  box.padding = 0.4, max.overlaps = 15,
                  segment.color = "grey70", segment.size = 0.3) +
  facet_wrap(~ Variable, scales = "free_y",
             labeller = as_labeller(etiquetas_lab)) +
  scale_fill_manual(values = c("Tasa_Desempleo"  = "#2C5F8A",
                               "Empleo_Total"    = "#5B9BD5",
                               "FuerzaLaboral"   = "#A8C8E8",
                               "Tasa_Interes_CP" = "#1A3F5C")) +
  labs(
    title    = "Mercado Laboral y Política Monetaria",
    subtitle = "Desempleo, tamaño del mercado laboral y tasa de interés de corto plazo\nCada panel tiene su propia escala",
    caption  = "Fuente: OCDE",
    x = "", y = ""
  ) +
  tema_box +
  theme(axis.text.x = element_blank())
Indicadores del mercado laboral y tasa de interés de corto plazo. Cada panel tiene su propia escala.

Indicadores del mercado laboral y tasa de interés de corto plazo. Cada panel tiene su propia escala.

3.2.6 Dimensión 5 — Desequilibrios macroeconómicos: Deuda externa

El boxplot de la deuda externa confirma la posición extrema de Argentina dentro de la muestra. Su ratio de deuda externa supera con amplitud el rango intercuartílico del conjunto, con un z-score de 4.84, consistente con su historial de reestructuraciones y vulnerabilidad financiera externa. El resto de los países se concentra en una distribución relativamente compacta, con valores moderados y similares entre sí.

g_deuda <- datos_sel %>%
  select(Pais, Deuda_Ext_pct) %>%
  pivot_longer(-Pais, names_to = "Variable", values_to = "Valor") %>%
  outliers_pais()

ggplot(g_deuda, aes(x = Variable, y = Valor)) +
  geom_boxplot(fill = "#7D3C98", alpha = 0.65, width = 0.4,
               outlier.shape = NA) +
  geom_point(data = filter(g_deuda, es_outlier),
             color = "#C0392B", size = 2.5, shape = 16) +
  geom_text_repel(data = filter(g_deuda, es_outlier),
                  aes(label = Pais),
                  size = 3, color = "grey25",
                  box.padding = 0.4, max.overlaps = 20,
                  segment.color = "grey70", segment.size = 0.3) +
  labs(
    title    = "Desequilibrios Macroeconómicos — Deuda Externa",
    subtitle = "Indicador de posición financiera externa o deuda como ratio",
    caption  = "Fuente: OCDE",
    x = "", y = "Ratio / % del PIB"
  ) +
  tema_box
Distribución del indicador de deuda externa (ratio o % del PIB). El punto rojo identifica a Argentina como valor atípico extremo.

Distribución del indicador de deuda externa (ratio o % del PIB). El punto rojo identifica a Argentina como valor atípico extremo.

3.3 Análisis de Correlación

La matriz de correlación permite identificar las relaciones lineales entre las 15 variables seleccionadas, detectar redundancias y anticipar la estructura factorial que el ACP revelará. Se presentan dos visualizaciones complementarias: el mapa de calor clásico (ordenado por similitud) y el gráfico de correlaciones significativas filtradas por p-valor.

mat_cor  <- cor(base, use = "complete.obs", method = "pearson")
mat_pval <- ggcorrplot::cor_pmat(base, use = "complete.obs")

corrplot(mat_cor,
         method      = "color",
         type        = "upper",
         order       = "hclust",
         tl.col      = "black",
         tl.srt      = 45,
         tl.cex      = 0.85,
         addCoef.col = "black",
         number.cex  = 0.6,
         col         = colorRampPalette(c("#C0392B", "white", "#2C5F8A"))(200),
         title       = "Matriz de correlación — 15 variables OCDE",
         mar         = c(0, 0, 2, 0))
Matriz de correlaciones entre las 15 variables OCDE, ordenada por similitud (clúster jerárquico). Rojo = correlación negativa, azul = positiva.

Matriz de correlaciones entre las 15 variables OCDE, ordenada por similitud (clúster jerárquico). Rojo = correlación negativa, azul = positiva.

ggcorrplot(mat_cor,
           hc.order = TRUE,
           type     = "lower",
           lab      = TRUE,
           lab_size = 3,
           p.mat    = mat_pval,
           insig    = "blank",
           colors   = c("#C0392B", "white", "#2C5F8A"),
           title    = "Correlaciones significativas (p < 0.05)",
           ggtheme  = theme_minimal())
Correlaciones estadísticamente significativas (p < 0.05). Las celdas en blanco corresponden a pares no significativos.

Correlaciones estadísticamente significativas (p < 0.05). Las celdas en blanco corresponden a pares no significativos.

cor_long <- melt(mat_cor)
colnames(cor_long) <- c("Var1", "Var2", "Correlacion")

alta_cor <- cor_long %>%
  filter(as.character(Var1) < as.character(Var2)) %>%
  filter(abs(Correlacion) >= 0.70) %>%
  arrange(desc(abs(Correlacion)))

alta_cor %>%
  mutate(Correlacion = round(Correlacion, 3)) %>%
  kable(
    caption = "Pares de variables con correlación |r| ≥ 0.70",
    col.names = c("Variable 1", "Variable 2", "Correlación"),
    align = c("l", "l", "r")
  ) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"),
    full_width = FALSE,
    font_size  = 12
  ) %>%
  row_spec(0, bold = TRUE, background = "#2C5F8A", color = "white")
Pares de variables con correlación |r| ≥ 0.70
Variable 1 Variable 2 Correlación
Empleo_Total FuerzaLaboral 0.999
Deflactor_Crec Inflacion_IPC 0.968
Deflactor_Crec Deflactor_PIB_Nivel 0.855
Deflactor_PIB_Nivel Inflacion_IPC 0.817
Deflactor_PIB_Nivel Deuda_Ext_pct 0.760
Apertura_Comercial Crec_PIB_Real 0.739
Deflactor_Crec Deuda_Ext_pct 0.718
Crec_FBCF Deflactor_Imp_Exp -0.703

La mayoría de las correlaciones altas se concentran dentro de cada dimensión temática, lo cual es esperable: variables que miden el mismo fenómeno desde distintos ángulos tienden a moverse juntas. Entre dimensiones diferentes, las correlaciones son bajas o no significativas, lo que confirma que las cinco dimensiones aportan información genuinamente distinta.

Los dos pares con correlación más alta merecen una nota. Empleo_Total y FuerzaLaboral son casi idénticas estadísticamente, ya que una es componente directa de la otra. Se conservaron ambas porque contribuían a aumentar la varianza explicada en el ACP y porque cada una describe el mercado laboral desde un ángulo ligeramente distinto: una mide a quienes trabajan, la otra incluye también a quienes buscan trabajo. Inflacion_IPC y Deflactor_Crec, por su parte, miden la inflación desde ángulos conceptualmente distintos —la canasta del consumidor versus el conjunto de la producción nacional— lo que les otorga relevancia económica propia y justifica conservar las dos en el análisis.

En todo caso, las correlaciones altas dentro de cada dimensión no representan un problema metodológico: el ACP está diseñado precisamente para sintetizar variables que comparten información en un único componente, sin pérdida de señal interpretativa.


4 Resultados

4.1 Análisis de Componentes Principales (ACP)

El ACP se aplica sobre la base estandarizada (escala z) de las 15 variables para sintetizar la variabilidad en un número reducido de factores no correlacionados. Se retienen los componentes con eigenvalor mayor a 1 (criterio de Kaiser).

base_scaled <- scale(base)
res.pca <- prcomp(base_scaled, scale = FALSE)

fviz_eig(res.pca, addlabels = TRUE,
         barfill   = "#2C5F8A",
         barcolor  = "#2C5F8A",
         linecolor = "#C0392B",
         main      = "Varianza explicada por componente principal")
Varianza explicada por cada componente principal. Las barras muestran el porcentaje individual y la línea acumulada.

Varianza explicada por cada componente principal. Las barras muestran el porcentaje individual y la línea acumulada.

eig.val <- get_eigenvalue(res.pca)
eig.val %>%
  round(3) %>%
  head(8) %>%
  kable(
    caption = "Eigenvalores y varianza explicada — Primeros 8 componentes",
    col.names = c("Eigenvalor", "% Varianza", "% Acumulado"),
    align = rep("r", 3)
  ) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"),
    full_width = FALSE,
    font_size  = 12
  ) %>%
  row_spec(0, bold = TRUE, background = "#2C5F8A", color = "white") %>%
  row_spec(1:3, background = "#EBF5FB")
Eigenvalores y varianza explicada — Primeros 8 componentes
Eigenvalor % Varianza % Acumulado
Dim.1 5.158 34.388 34.388
Dim.2 2.919 19.462 53.850
Dim.3 2.358 15.720 69.570
Dim.4 1.471 9.808 79.378
Dim.5 0.956 6.371 85.748
Dim.6 0.808 5.390 91.138
Dim.7 0.457 3.046 94.184
Dim.8 0.391 2.610 96.794

Los primeros 3 componentes presentan eigenvalor superior a 1 y acumulan aproximadamente el 69.6% de la varianza total. El primer componente carga con más peso que los otros dos juntos: su eigenvalor supera 5, lo que indica que hay una dimensión —la inflacionaria— que domina con claridad la variabilidad entre países. Los componentes 2 y 3 tienen eigenvalores más parecidos entre sí (alrededor de 2.9 y 2.4 respectivamente), lo que sugiere que las dimensiones de tamaño laboral y términos de intercambio tienen un peso similar en la estructura de los datos. El cuarto componente, aunque también supera el umbral de Kaiser, se excluye del análisis interpretativo porque los tres primeros ya capturan los factores económicos sustantivos y su adición no cambia la estructura de grupos.

4.1.1 Interpretación de los factores

fviz_pca_var(res.pca,
             col.var       = "contrib",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
             repel         = TRUE,
             axes          = c(1, 2),
             title         = "Variables — PCA (Componentes 1 y 2)")
Círculo de correlaciones: posición de las 15 variables en el espacio de los dos primeros componentes. El color indica la contribución al plano factorial.

Círculo de correlaciones: posición de las 15 variables en el espacio de los dos primeros componentes. El color indica la contribución al plano factorial.

  • Componente 1 — Fragilidad macroeconómica e inflación (34.4% de la varianza): Este componente está dominado por las variables de precios: Inflacion_IPC (15.9%), Deflactor_Crec (14.8%) y Deflactor_PIB_Nivel (11.8%), todas con cargas positivas. La Deuda_Ext_pct también contribuye significativamente (10.4%). Los países que se ubican a la derecha del eje horizontal son aquellos con mayor presión inflacionaria acumulada y mayor fragilidad financiera externa, siendo Argentina el caso más extremo. En el extremo opuesto se ubican las economías OCDE con precios estables y deuda externa contenida.

  • Componente 2 — Tamaño del mercado laboral vs. orientación exportadora (19.5%): Los dos polos de este componente enfrentan Empleo_Total y FuerzaLaboral (contribución conjunta ~33%) contra Exportaciones_pctPIB y Crec_Exportaciones (~27%). Los países con fuerza laboral grande en términos absolutos (India, EE.UU., Brasil) se ubican arriba del eje vertical, mientras que las economías pequeñas pero muy orientadas al comercio exterior (Irlanda, Bélgica, Luxemburgo) se posicionan abajo. Esta dimensión diferencia el tamaño económico-demográfico del grado de apertura.

  • Componente 3 — Términos de intercambio y ciclo de crecimiento (15.7%): El Deflactor_Imp_Exp domina este componente con el 28.4% de la contribución, seguido de CuentaCorriente_pct (10.3%), Crec_PIB_Real (9.7%) y Tasa_Desempleo (9.3%). Esta dimensión captura la posición de cada economía frente a los precios internacionales relativos: los países exportadores de materias primas, que venden caro y compran barato, se diferencian de los importadores netos. La combinación con el crecimiento y el desempleo sugiere que esta dimensión también recoge el momento del ciclo económico.

Para complementar la lectura anterior, se presentan a continuación los gráficos de contribución de cada variable a los tres componentes retenidos. La línea punteada roja marca el umbral esperado si todas las variables aportaran por igual (100 / 15 ≈ 6.67%); las variables que la superan son las que efectivamente definen esa dimensión.

Variables_dim1 <- fviz_contrib(res.pca, choice = "var", axes = 1,
                               top = 15, fill = "#2C5F8A", color = "#2C5F8A") +
  labs(title = "Contribución de las variables a la Dimensión 1",
       x = "Variables", y = "Contribución (%)")
ggplotly(Variables_dim1) %>%
  layout(title = "Contribución de las variables a la Dimensión 1",
         xaxis = list(title = "Variables"),
         yaxis = list(title = "Contribución (%)"))

Contribución (%) de cada variable a la Dimensión 1.

El gráfico confirma lo descrito arriba: Inflacion_IPC, Deflactor_Crec y Deflactor_PIB_Nivel son las únicas tres variables que superan ampliamente la línea de referencia, junto con Deuda_Ext_pct algo más cerca del umbral. El resto de variables aporta poco o nada a esta dimensión, lo que confirma que el Componente 1 es esencialmente un eje de precios y fragilidad financiera, no una mezcla de muchos factores distintos.

Variables_dim2 <- fviz_contrib(res.pca, choice = "var", axes = 2,
                               top = 15, fill = "#2C5F8A", color = "#2C5F8A") +
  labs(title = "Contribución de las variables a la Dimensión 2",
       x = "Variables", y = "Contribución (%)")
ggplotly(Variables_dim2) %>%
  layout(title = "Contribución de las variables a la Dimensión 2",
         xaxis = list(title = "Variables"),
         yaxis = list(title = "Contribución (%)"))

Contribución (%) de cada variable a la Dimensión 2.

Acá se ve con claridad el contraste entre Empleo_Total y FuerzaLaboral por un lado, y Exportaciones_pctPIB y Crec_Exportaciones por el otro: son las cuatro variables que más superan el umbral, mientras que el resto queda muy por debajo. Esto refuerza que el Componente 2 no mide tamaño en general, sino específicamente la tensión entre volumen del mercado laboral y orientación exportadora.

Variables_dim3 <- fviz_contrib(res.pca, choice = "var", axes = 3,
                               top = 15, fill = "#2C5F8A", color = "#2C5F8A") +
  labs(title = "Contribución de las variables a la Dimensión 3",
       x = "Variables", y = "Contribución (%)")
ggplotly(Variables_dim3) %>%
  layout(title = "Contribución de las variables a la Dimensión 3",
         xaxis = list(title = "Variables"),
         yaxis = list(title = "Contribución (%)"))

Contribución (%) de cada variable a la Dimensión 3.

En esta tercera dimensión la contribución está más repartida que en las dos anteriores: Deflactor_Imp_Exp lidera con claridad, pero CuentaCorriente_pct, Crec_PIB_Real y Tasa_Desempleo también superan el umbral con valores cercanos entre sí. Esa distribución más pareja es consistente con la lectura de que el Componente 3 combina precios relativos y ciclo económico, en lugar de estar dominado por una sola variable.

fviz_pca_ind(res.pca,
             col.ind       = "cos2",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
             repel         = TRUE,
             title         = "Países — PCA (Componentes 1 y 2)")
Proyección de los 42 países en el plano de los dos primeros componentes. El color indica la calidad de representación (cos²).

Proyección de los 42 países en el plano de los dos primeros componentes. El color indica la calidad de representación (cos²).

Argentina se ubica claramente aislada en el extremo derecho del eje horizontal, separada del resto de la nube de puntos, lo que confirma visualmente su condición de caso atípico sobre el Componente 1. En el eje vertical, Estados Unidos y Alemania se ubican en el extremo superior por su elevado volumen de empleo y fuerza laboral, mientras que economías pequeñas y muy abiertas como Chile y Perú se ubican en el extremo inferior. Los colores más intensos (naranja) señalan los países cuya posición está mejor explicada por estos dos primeros componentes; los tonos más claros indican países cuya variabilidad responde más a otras dimensiones no graficadas aquí.

fviz_pca_biplot(res.pca,
                repel   = TRUE,
                col.var = "#2E9FDF",
                col.ind = "#696969",
                axes    = c(1, 2),
                title   = "Biplot — Países y Variables")
Biplot: variables (flechas azules) y países (puntos grises) superpuestos en el espacio factorial.

Biplot: variables (flechas azules) y países (puntos grises) superpuestos en el espacio factorial.

El biplot integra ambas lecturas anteriores en un solo gráfico: la dirección de las flechas indica qué variables explican el comportamiento de los países que se ubican cerca de ellas. Argentina se posiciona en la dirección de las flechas de inflación y deuda externa, confirmando que su distancia del resto de países está asociada a esas variables. Del mismo modo, los países que se agrupan cerca de las flechas de Empleo_Total y FuerzaLaboral (parte superior) son los de mayor tamaño demográfico-laboral, mientras que los que se acercan a las flechas de exportaciones (parte inferior) son economías pequeñas pero muy abiertas al comercio exterior.


4.2 Determinación del número óptimo de clusters

Se emplearon dos criterios complementarios sobre la base estandarizada para decidir el número de grupos.

fviz_nbclust(base_scaled, FUN = kmeans, method = "wss", k.max = 10) +
  labs(title = "Método del codo — número óptimo de clusters") +
  theme_minimal()
Método del codo: la caída en la inercia intra-cluster se aplana a partir de k = 3.

Método del codo: la caída en la inercia intra-cluster se aplana a partir de k = 3.

fviz_nbclust(base_scaled, FUN = kmeans, method = "silhouette", k.max = 10) +
  labs(title = "Silueta promedio — número óptimo de clusters") +
  theme_minimal()
Silueta promedio: el máximo matemático es k = 2, pero la elección de k = 3 se justifica por riqueza interpretativa.

Silueta promedio: el máximo matemático es k = 2, pero la elección de k = 3 se justifica por riqueza interpretativa.

Si bien la silueta sugiere k = 2 como óptimo matemático, este resultado está influenciado por el carácter extremo de Argentina. Con k = 3 se obtiene una segmentación con mayor riqueza interpretativa que distingue un grupo de economías emergentes intermedias, conservando a Argentina como caso singular.


4.3 Clusterización K-Means (k = 3)

set.seed(123)
k_optimo      <- 3
modelo_kmeans <- kmeans(base_scaled, centers = k_optimo, nstart = 25)
equipo        <- modelo_kmeans$cluster

paises_kmeans <- base %>%
  mutate(cluster = factor(equipo), Pais = paises)
fviz_cluster(modelo_kmeans,
             data    = base_scaled,
             geom    = "point",
             repel   = TRUE,
             palette = c("#E7B800", "#00AFBB", "#FC4E07"),
             ggtheme = theme_minimal(),
             main    = "Clusters K-Means (proyección PCA)")
Visualización de los 3 clusters K-Means proyectados sobre los dos primeros componentes del ACP.

Visualización de los 3 clusters K-Means proyectados sobre los dos primeros componentes del ACP.

El gráfico muestra tres agrupaciones bien diferenciadas en el plano factorial. El clúster amarillo concentra a la gran mayoría de países (30 en total), correspondiente al bloque de economías avanzadas con baja inflación y crecimiento estable. El clúster celeste agrupa a 11 economías emergentes y en transición, ubicadas en una zona intermedia del plano. Argentina aparece sola, en naranja, completamente separada de los otros dos grupos sobre el eje horizontal — la misma posición extrema que ya se había observado en la proyección de países, ahora confirmada como un clúster propio por el algoritmo K-Means.

paises_kmeans %>%
  select(Pais, cluster) %>%
  arrange(cluster, Pais) %>%
  kable(
    caption   = "Asignación de países a clusters K-Means",
    col.names = c("País", "Cluster"),
    align     = c("l", "c")
  ) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"),
    full_width = FALSE,
    font_size  = 12
  ) %>%
  row_spec(0, bold = TRUE, background = "#2C5F8A", color = "white")
Asignación de países a clusters K-Means
País Cluster
Australia 1
Austria 1
Belgium 1
Brazil 1
Canada 1
Czech Republic 1
Denmark 1
Finland 1
France 1
Germany 1
Hungary 1
Ireland 1
Italy 1
Japan 1
Korea 1
Luxembourg 1
Mexico 1
Netherlands 1
New Zealand 1
Norway 1
Poland 1
Portugal 1
Romania 1
Slovak Republic 1
SouthAfrica 1
Spain 1
Sweden 1
Switzerland 1
United Kingdom 1
United States 1
Chile 2
Colombia 2
Croatia 2
Estonia 2
Greece 2
Iceland 2
India 2
Israel 2
Peru 2
Slovenia 2
Türkiye 2
Argentina 3
paises_kmeans %>%
  group_by(cluster) %>%
  summarise(
    n = n(),
    across(where(is.numeric) & !matches("cluster"),
           ~ round(mean(.x, na.rm = TRUE), 2))
  ) %>%
  kable(
    caption = "Medias de cada variable por cluster K-Means",
    align   = c("c", "c", rep("r", 15))
  ) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"),
    full_width = TRUE,
    font_size  = 11,
    position   = "left"
  ) %>%
  row_spec(0, bold = TRUE, background = "#2C5F8A", color = "white") %>%
  scroll_box(width = "100%")
Medias de cada variable por cluster K-Means
cluster n CuentaCorriente_pct Tasa_Desempleo Crec_Exportaciones Crec_PIB_Real Inflacion_IPC Deflactor_Crec Deuda_Ext_pct Crec_FBCF Apertura_Comercial Deflactor_PIB_Nivel Empleo_Total FuerzaLaboral Tasa_Interes_CP Exportaciones_pctPIB Deflactor_Imp_Exp
1 30 2.02 8.26 9.45 5.19 9.33 3.94 4.53 3.86 4.82 1.27 22243614 24024525 0.41 477738861625 0.01
2 11 -1.77 17.37 21.20 9.38 17.71 7.56 9.51 14.47 11.19 1.46 8640795 9620398 2.46 126868449362 -0.01
3 1 1.37 9.22 22.02 10.40 70.18 54.15 95.08 33.42 10.02 67.15 121937875 133194875 2.46 72887513870 -0.01
data_long <- paises_kmeans %>%
  select(-Pais) %>%
  pivot_longer(-cluster, names_to = "Variable", values_to = "Valor")

ggplot(data_long, aes(y = Valor, x = Variable, color = cluster)) +
  geom_boxplot() +
  facet_wrap(~ cluster, ncol = 1, labeller = label_both) +
  scale_color_manual(values = c("1" = "#E7B800", "2" = "#00AFBB", "3" = "#FC4E07")) +
  theme_minimal(base_size = 11) +
  theme(
    axis.text.x    = element_text(angle = 45, hjust = 1, size = 9),
    legend.position = "none",
    strip.text     = element_text(face = "bold")
  ) +
  labs(
    title = "Variables por cluster K-Means",
    x = "", y = "Valor"
  )
Distribución de las variables estandarizadas por cluster K-Means.

Distribución de las variables estandarizadas por cluster K-Means.

4.3.1 Comparación entre clusters

Para comparar los tres grupos de forma directa, se presenta un gráfico de barras interactivo con la media de cada variable por cluster. Cada barra representa el promedio de esa variable dentro del cluster correspondiente; los tres colores identifican a cada grupo y coinciden con la paleta usada en los gráficos anteriores: amarillo para el cluster 1 (economías OCDE maduras), celeste para el cluster 2 (economías emergentes) y naranja para el cluster 3 (Argentina). Al pasar el cursor sobre cualquier barra se muestra el valor exacto de la media original de esa variable, sin estandarizar.

medias_long <- paises_kmeans %>%
  group_by(cluster) %>%
  summarise(across(where(is.numeric) & !matches("cluster"), ~ mean(.x, na.rm = TRUE))) %>%
  pivot_longer(-cluster, names_to = "Variable", values_to = "Media") %>%
  group_by(Variable) %>%
  mutate(Media_std = as.numeric(scale(Media))) %>%
  ungroup()

g_comparacion <- ggplot(medias_long,
                        aes(x = Variable, y = Media_std, fill = cluster,
                            text = paste0("Cluster: ", cluster,
                                         "<br>Variable: ", Variable,
                                         "<br>Media original: ", round(Media, 2)))) +
  geom_col(position = "dodge") +
  scale_fill_manual(values = c("1" = "#E7B800", "2" = "#00AFBB", "3" = "#FC4E07")) +
  theme_minimal(base_size = 11) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 9)) +
  labs(title = "Comparación de medias por cluster (estandarizadas)",
       x = "Variables", y = "Media estandarizada", fill = "Cluster")

ggplotly(g_comparacion, tooltip = "text") %>%
  layout(title = "Comparación de medias por cluster (estandarizadas)",
         xaxis = list(title = "Variables"),
         yaxis = list(title = "Media estandarizada"),
         legend = list(title = list(text = "Cluster")))

Comparación de medias por variable y cluster (valores estandarizados).

El eje vertical no muestra las medias en su unidad original, sino estandarizadas por variable (z-score), para que todas queden en una escala comparable y las de mayor magnitud (como Empleo_Total, en millones de personas) no opaquen visualmente a las de menor magnitud (como las tasas, en porcentaje). El gráfico hace evidente lo que antes solo estaba descrito en texto: la barra naranja del cluster 3 (Argentina) se dispara muy por encima de las demás en Inflacion_IPC, Deflactor_Crec y Deuda_Ext_pct, mientras que en el resto de variables se mantiene en un rango similar al de los otros dos grupos. Entre el cluster 1 y el cluster 2 la diferencia es más sutil, y se concentra principalmente en Tasa_Interes_CP y en las variables de tamaño laboral.

4.3.2 Descripción de los grupos

  • Cluster 1 — Economías OCDE maduras: Concentra a la mayoría de los países europeos avanzados, junto con Estados Unidos, Canadá, Australia, Japón y Corea. Lo que los une no es solo el nivel de ingreso sino la estabilidad: inflación IPC promedio por debajo del 5%, deuda externa contenida y tasas de interés de corto plazo bajas o negativas en varios casos. El crecimiento del PIB real es positivo pero moderado, lo cual es coherente con economías que ya alcanzaron su frontera de producción y crecen principalmente por productividad.

  • Cluster 2 — Economías emergentes y en transición: Incluye países como Colombia, Brasil, Perú, India, Sudáfrica y Turquía. La principal diferencia con el grupo anterior no está en el crecimiento —de hecho varios de estos países crecen más rápido— sino en la volatilidad de precios y en el tamaño absoluto de su mercado laboral. Las tasas de interés promedio de este grupo son notablemente más altas, reflejo de políticas monetarias que tienen que lidiar con inflaciones más persistentes y primas de riesgo más elevadas.

  • Cluster 3 — Caso atípico (Argentina): Argentina forma un grupo propio no por capricho del algoritmo sino porque sus valores en inflación IPC, variación del deflactor y deuda externa están tan alejados del resto que ningún otro país de la muestra le resulta cercano en el espacio multivariado. La separación es una señal estadística genuina de una trayectoria macroeconómica que no tiene equivalente entre los 42 países analizados.


4.4 Clusterización Jerárquica (Método de Ward)

La clusterización jerárquica se aplica sobre las coordenadas de los 3 primeros componentes del ACP (que retienen el ~69.6% de la varianza), usando distancia euclidiana y el criterio de Ward.

scores_pca  <- res.pca$x[, 1:3]
dist_paises <- dist(scores_pca, method = "euclidean")
modelo_ward <- hclust(dist_paises, method = "ward.D2")
dend_modelo <- as.dendrogram(modelo_ward)
dend_modelo %>%
  color_branches(k = k_optimo) %>%
  color_labels(k = k_optimo) %>%
  plot(main = "Dendrograma — Método de Ward (factores ACP)",
       cex  = 0.7)
Dendrograma coloreado por los 3 grupos resultantes del corte del árbol. La altura indica la disimilitud acumulada al fusionar los grupos.

Dendrograma coloreado por los 3 grupos resultantes del corte del árbol. La altura indica la disimilitud acumulada al fusionar los grupos.

fviz_nbclust(scores_pca, FUN = hcut, method = "silhouette", k.max = 10) +
  labs(title = "Silueta — Clusterización jerárquica (Ward, factores ACP)") +
  theme_minimal()
Silueta promedio para la clusterización jerárquica (Ward sobre factores ACP).

Silueta promedio para la clusterización jerárquica (Ward sobre factores ACP).

clusters_ward <- cutree(modelo_ward, k = k_optimo)

paises_ward <- base %>%
  mutate(cluster_ward = factor(clusters_ward), Pais = paises)

paises_ward %>%
  select(Pais, cluster_ward) %>%
  arrange(cluster_ward, Pais) %>%
  kable(
    caption   = "Asignación de países a clusters jerárquicos (Ward)",
    col.names = c("País", "Cluster Ward"),
    align     = c("l", "c")
  ) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"),
    full_width = FALSE,
    font_size  = 12
  ) %>%
  row_spec(0, bold = TRUE, background = "#2C5F8A", color = "white")
Asignación de países a clusters jerárquicos (Ward)
País Cluster Ward
Australia 1
Austria 1
Belgium 1
Brazil 1
Canada 1
Czech Republic 1
Denmark 1
Finland 1
France 1
Germany 1
Hungary 1
Ireland 1
Italy 1
Japan 1
Korea 1
Luxembourg 1
Mexico 1
Netherlands 1
New Zealand 1
Norway 1
Poland 1
Portugal 1
Slovak Republic 1
SouthAfrica 1
Spain 1
Sweden 1
Switzerland 1
United Kingdom 1
United States 1
Chile 2
Colombia 2
Croatia 2
Estonia 2
Greece 2
Iceland 2
India 2
Israel 2
Peru 2
Romania 2
Slovenia 2
Türkiye 2
Argentina 3

Los resultados de Ward y K-Means coinciden en lo fundamental: Argentina queda aislada en ambos, y el bloque de economías avanzadas se mantiene estable. La única diferencia apreciable está en cómo los dos métodos distribuyen algunos países del grupo intermedio —por ejemplo, ciertos países de Europa del Este que K-Means asigna al Cluster 1 y Ward ubica en el Cluster 2—, lo cual es esperable dado que ambos algoritmos miden la similitud de forma distinta. Que la estructura principal se repita en los dos métodos no es algo menor: significa que los tres grupos no dependen de los supuestos de un algoritmo particular sino que están en los propios datos.


5 Conclusiones

El ejercicio de segmentación sobre 42 países nos permite ver cosas que variable por variable no se dejarían ver.

Primero, el ACP sobre las 15 variables seleccionadas sintetizó la información en 3 componentes principales que acumulan el 69.6% de la varianza total. Cada componente tiene una lectura económica clara: el primero captura la dimensión de fragilidad inflacionaria y financiera, el segundo diferencia el tamaño del mercado laboral del grado de apertura comercial, y el tercero recoge la posición de cada economía frente a los precios internacionales relativos y el ciclo de crecimiento. Esta estructura factorial no es arbitraria, refleja las verdaderas tensiones que organizan las economías de la muestra.

Segundo, tanto K-Means como el método de Ward convergen en tres grupos con sentido económico, un bloque de economías OCDE con inflación controlada y crecimiento estable, un grupo de economías emergentes y en transición con mayor volatilidad y dinamismo, y Argentina como caso singular. Que dos algoritmos distintos lleguen a la misma partición no es un resultado menor: indica que esta estructura de grupos está en los datos, no en el método.

Tercero, y en respuesta directa al problema de investigación: los indicadores macroeconómicos estándar sí son suficientes para clasificar a la gran mayoría de los países en grupos coherentes y diferenciados. Pero también confirman que hay economías que no encajan en ninguna categoría estándar. Argentina no es un fallo del método, es exactamente lo que el problema de investigación anticipaba que es una trayectoria macroeconómica tan particular con inflación crónica, deuda externa elevada, política monetaria disruptiva que ningún otro país de la muestra comparte de forma simultánea. El análisis multivariado simplemente lo hace visible de forma objetiva.

Por último, el análisis tiene límites que conviene reconocer. Se trabajó con un corte transversal que resume el período en promedios, lo que puede ocultar variaciones cíclicas importantes. Países como Türkiye, que estaban en proceso de estabilización, quedan clasificados según su promedio y no según su trayectoria. Una extensión natural sería incorporar una dimensión temporal para seguir cómo evoluciona la pertenencia de cada país a los grupos a lo largo del tiempo.


5.1 Bibliografía

OCDE (2021). La recuperación económica mundial prosigue, pero continúa siendo desigual. OCDE, París. https://www.oecd.org/en/about/news/press-releases/2021/09/la-recuperacion-economica-mundial-prosigue-pero-continua-siendo-desigual-asegura-la-ocde.html

OCDE (2024). OECD Economic Outlook, Volume 2024 Issue 2. OECD Publishing, París. https://doi.org/10.1787/d8814e8b-en

OCDE (2025). OECD Economic Outlook, Volume 2025 Issue 2. OECD Publishing, París. https://www.oecd.org/en/publications/oecd-economic-outlook-volume-2025-issue-2_9f653ca1-en.html

OCDE (2026). OECD Economic Outlook, Volume 2026 Issue 1. OECD Publishing, París. https://www.oecd.org/en/publications/oecd-economic-outlook-volume-2026-issue-1_2d1956f0-en.html

OCDE. Inflation and cost of living. https://www.oecd.org/en/topics/inflation-and-cost-of-living.html

OCDE. Global and regional development trends. https://www.oecd.org/en/topics/global-and-regional-development-trends.html


Informe elaborado con R y R Markdown. Datos: OCDE — DatosEcon.xlsx.