1 Introducción

La Organización para la Cooperación y el Desarrollo Económicos (OCDE) agrupa a las economías más desarrolladas del mundo, pero su comparación directa enfrenta un problema metodológico central: cada país combina simultáneamente niveles distintos de inflación, crecimiento, tamaño económico y desempleo, lo que dificulta establecer agrupaciones claras a partir de una sola variable. Este informe aborda dicho problema mediante un análisis no supervisado sobre 42 países —38 miembros de la OCDE junto con ocho economías invitadas: Colombia, Argentina, Brasil, India, Perú, Rumania, Croacia y Sudáfrica— utilizando 15 indicadores macroeconómicos que cubren tres dimensiones complementarias: la presión inflacionaria y la posición cambiaria, el dinamismo económico real, y el tamaño de la economía junto con el desempeño de su mercado laboral.

La inclusión de economías no pertenecientes a la OCDE responde a un interés metodológico específico: contrastar el comportamiento de economías consolidadas con el de mercados emergentes que enfrentan dinámicas macroeconómicas distintas, como mayor volatilidad cambiaria o tasas de crecimiento más elevadas. Esta diversidad enriquece el análisis y permite poner a prueba la capacidad de los métodos estadísticos para detectar perfiles económicos genuinamente diferenciados, más allá de la membresía formal a la organización.

Dado que las 15 variables seleccionadas están parcialmente correlacionadas entre sí y se expresan en unidades y escalas muy distintas —porcentajes, índices, montos en dólares—, el análisis se apoya en dos técnicas estadísticas complementarias. Primero, el Análisis de Componentes Principales (ACP) permite reducir la dimensionalidad del conjunto de datos, concentrando la mayor parte de la variabilidad original en un número reducido de componentes interpretables. Segundo, un procedimiento de clusterización jerárquica agrupa a los países según la similitud de su perfil económico completo, considerando las 15 variables de forma conjunta y no de manera aislada.

A partir de este marco, el informe busca responder la siguiente pregunta de investigación: ¿es posible identificar perfiles económicos diferenciados entre los países de la OCDE y las economías invitadas a partir de indicadores de presión inflacionaria, dinamismo real y tamaño económico, y qué características definen a cada grupo?

Las secciones siguientes desarrollan la metodología aplicada, describen el comportamiento individual y conjunto de las 15 variables, presentan los resultados del ACP y la clusterización, e interpretan los grupos resultantes a la luz de la teoría macroeconómica.

datos <- read_excel("DatosEcon.xlsx")
datos <- as.data.frame(datos)
rownames(datos) <- datos$Pais

2 Metodología

El análisis se desarrolla en dos etapas estadísticas complementarias: una de reducción de dimensionalidad y otra de agrupamiento, ambas aplicadas sobre las 15 variables previamente estandarizadas.

2.0.1 Estandarización de las variables

Dado que las variables del estudio se expresan en unidades muy distintas —el PIB nominal en billones de dólares, las tasas de crecimiento en porcentaje, el tipo de cambio en unidades de moneda local por dólar—, es necesario transformarlas a una escala común antes de aplicar cualquier técnica multivariada. Para ello se estandarizan mediante el cálculo del puntaje z (media 0, desviación estándar 1), de modo que ninguna variable domine el análisis simplemente por tener una magnitud numérica mayor. Sin esta transformación, indicadores como el PIB nominal o el tipo de cambio de economías con alta inflación dominarían completamente los resultados, ocultando la información aportada por variables igualmente relevantes como el desempleo o las tasas de crecimiento.

2.0.2 Análisis de Componentes Principales (ACP)

Esta técnica transforma el conjunto original de 15 variables correlacionadas en un nuevo conjunto de componentes no correlacionados entre sí, ordenados de manera que el primero concentre la mayor proporción posible de la varianza total, el segundo la mayor proporción de la varianza restante, y así sucesivamente. El número de componentes a retener se determina mediante el criterio de Kaiser, que conserva únicamente aquellos componentes cuyo eigenvalue es superior a 1, bajo el argumento de que un componente solo aporta información relevante si explica más varianza que una variable original por sí sola. Esta reducción permite, además, representar gráficamente la posición relativa de los países y las variables sobre un plano de baja dimensión, facilitando la interpretación visual de patrones que resultarían difíciles de observar directamente en una tabla de 15 columnas.

2.0.3 Clusterización jerárquica — Método de Ward

Para agrupar a los países según la similitud de su perfil macroeconómico completo se utiliza clusterización jerárquica aglomerativa con el método de Ward, aplicado sobre la matriz de distancias euclidianas calculada a partir de las variables estandarizadas. Este método construye los grupos de manera progresiva: comienza tratando a cada país como un cluster individual y, en cada paso, fusiona los dos clusters cuya unión produce el menor incremento posible en la varianza interna total. El resultado se visualiza mediante un dendrograma, que permite identificar visualmente la estructura jerárquica de los datos y decidir el número de grupos a retener observando la altura a la que ocurren las fusiones más importantes.

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

Antes de fijar el número final de grupos, se emplean dos criterios de validación calculados sobre el mismo conjunto de datos estandarizados: el método del codo (WSS, suma de cuadrados intra-cluster), que identifica el punto a partir del cual añadir más grupos deja de reducir significativamente la dispersión interna, y el coeficiente de silueta (silhouette), que mide qué tan bien separado y cohesionado está cada cluster en una escala de -1 a 1. Estos criterios, calculados mediante el algoritmo K-means únicamente con fines de diagnóstico, se contrastan con la estructura observada en el dendrograma de Ward para tomar la decisión final sobre el número de grupos, priorizando siempre la interpretabilidad económica de los resultados sobre la optimización puramente estadística.

2.0.5 Nota sobre la Calidad de los Datos: Error en la Variable PIB.Nominal

Durante el desarrollo del análisis se identificó una inconsistencia significativa en la variable PIB.Nominal (x9) de la base de datos proporcionada. Al revisar los valores extremos de esta variable, se encontró que países como Corea del Sur, Colombia, Chile e India presentan cifras de PIB nominal varias veces superiores al PIB total estimado de toda la economía mundial —un resultado matemáticamente imposible—. Para confirmar que se trataba de un error y no de una característica genuina de los datos, se calculó la razón entre PIB.Nominal y PIB.PPA (x11) para cada país: dado que ambas variables miden el mismo PIB bajo dos metodologías distintas, esta razón debería tomar valores cercanos a 1 en la gran mayoría de los casos.

tabla_ratio_pib <- datos %>%
  mutate(ratio_PIB = round(x9 / x11, 2)) %>%
  select(Pais, PIB.Nominal = x9, PIB.PPA = x11, ratio_PIB) %>%
  arrange(desc(ratio_PIB)) %>%
  mutate(
    PIB.Nominal = formatC(PIB.Nominal, format = "e", digits = 2),
    PIB.PPA     = formatC(PIB.PPA, format = "e", digits = 2)
  )

datatable(
  tabla_ratio_pib,
  rownames = FALSE,
  colnames = c("País", "PIB Nominal (USD)", "PIB PPA (USD)", "Ratio Nominal/PPA"),
  options  = list(pageLength = 10, dom = "tip"),
  class    = "display compact"
) %>%
  formatStyle(
    "ratio_PIB",
    backgroundColor = styleInterval(c(10), c("transparent", "#D85A3055"))
  )

Mientras 34 de los 42 países del conjunto presentan razones razonables (entre 0.54 y 1.73), un grupo de ocho países —Colombia (1,674x), Corea (927x), India (917x), Chile (523x), Hungría (174x), Islandia (172x), Japón (105x) y Argentina (56x), resaltados en la tabla anterior— exhibe razones extremadamente alejadas de 1, confirmando un error sistemático de captura o digitación en la columna original.

Dado que la base de datos fue suministrada directamente para el desarrollo de este taller, se optó por no modificar ni corregir los valores, documentando en su lugar el hallazgo con la evidencia correspondiente y evaluando su impacto en los resultados del análisis. Como se mostrará más adelante, este error contribuyó a que la variable PIB.Nominal tuviera una representación deficiente dentro de los componentes principales, lo cual debe tenerse en cuenta al interpretar tanto sus estadísticas descriptivas como su papel dentro del modelo de reducción de dimensionalidad.

3 Descripción de Variables

3.1 Variables Seleccionadas — 15 Indicadores Económicos OCDE

Las variables se organizan en tres bloques temáticos que capturan dimensiones distintas e independientes de la economía de cada país. Esta estructura permite que el clustering agrupe países por perfiles económicos completos y no únicamente por una sola dimensión económica.

Bloque 1 — Presión Inflacionaria y Posición Cambiaria

Este bloque describe el comportamiento de los precios y el valor de la moneda de cada país. Responde a la pregunta: ¿qué tan estable es la economía en términos de precios e inflación? Un país con presión inflacionaria alta verá aumentar simultáneamente su tipo de cambio, sus deflactores y su crecimiento nominal del PIB. Cuatro de las cinco variables de este bloque presentan correlaciones altas entre sí —entre 0.72 y 0.97—, lo que confirma que capturan una dimensión común asociada a la estabilidad macroeconómica nominal. La única excepción es la cuenta corriente, cuya correlación con el resto del bloque es prácticamente nula (entre -0.09 y 0.00), lo que indica que el desequilibrio externo de un país no está necesariamente vinculado a su nivel de inflación interna.

x1
Cta.Corriente

Saldo de la cuenta corriente como porcentaje del PIB. Resume la diferencia entre lo que un país vende al mundo y lo que compra. Un valor positivo indica superávit —el país genera más divisas de las que gasta— y uno negativo indica déficit y dependencia del financiamiento externo. Es la variable con menor correlación dentro de su bloque (su relación más fuerte es -0.57 con Crec.Import, fuera del bloque), lo que la convierte en una fuente de información genuinamente independiente del resto de indicadores inflacionarios.

x2
T.Cambio

Unidades de moneda nacional necesarias para comprar un dólar estadounidense. Valores altos indican monedas depreciadas, mientras que valores cercanos a 1 indican monedas fuertes. Su correlación de 0.72 con el deflactor del PIB y de 0.76 con el deflactor de exportaciones confirma el vínculo directo entre depreciación cambiaria e inflación interna: cuando una moneda se devalúa con fuerza, los precios domésticos tienden a subir en la misma proporción.

x18
Crec.PIB.Nom

Tasa de crecimiento anual del PIB a precios corrientes, incluyendo el efecto de la inflación. La diferencia entre esta variable y el crecimiento real del PIB aproxima la inflación general. Es la variable más correlacionada del bloque, con 0.97 respecto al deflactor del PIB y 0.83 respecto al deflactor de exportaciones. Países con inflación elevada registran valores extremadamente altos que no reflejan mejoras reales, sino aumentos generalizados de precios.

x19
Deflactor.PIB

Variación del deflactor del PIB, que mide la inflación desde la perspectiva de toda la producción interna. A diferencia del IPC, incluye todos los bienes y servicios producidos en el país. Su correlación de 0.97 con el crecimiento nominal del PIB es la más alta de todo el conjunto de 15 variables, confirmando que ambas capturan la misma dimensión inflacionaria desde ángulos prácticamente equivalentes.

x23
Deflactor.Export

Índice de precios de los bienes y servicios exportados. Mide cuánto recibe el país por sus ventas al exterior: un aumento indica mejora en los términos de intercambio, mientras que una caída refleja deterioro. Su correlación de 0.87 con el deflactor del PIB y 0.76 con el tipo de cambio vincula el comportamiento de precios internos con el desempeño del sector externo, siendo especialmente relevante para economías exportadoras de materias primas.

Bloque 2 — Dinamismo Económico Real

Este bloque describe el ritmo de expansión de la economía en términos reales, eliminando el efecto de la inflación. Responde a la pregunta: ¿está creciendo la economía y cuáles son sus motores? A diferencia del bloque anterior, las correlaciones internas son moderadas —entre 0.21 y 0.74—, lo que indica que cada variable aporta información parcialmente distinta sobre el ciclo económico: un país puede tener alto crecimiento del consumo sin que necesariamente la inversión o el gasto público se muevan en la misma dirección.

x16
Crec.Import

Tasa de crecimiento anual del volumen de importaciones. Funciona como termómetro de la demanda interna: cuando la economía crece con fuerza, aumenta la importación de bienes de capital, materias primas y consumo. Su correlación de 0.68 con el crecimiento de la inversión refleja que ambos ciclos —el de inversión y el de compras al exterior— tienden a moverse juntos. Valores negativos pueden señalar recesión o restricciones cambiarias.

x17
Crec.PIB.Vol

Tasa de crecimiento anual del PIB en términos reales. Es el principal indicador del dinamismo económico, ya que permite comparar el crecimiento entre países eliminando el efecto de la inflación. Su correlación de 0.74 con el crecimiento del consumo privado —la más alta del bloque— confirma el papel central de los hogares como motor del crecimiento económico real.

x20
Crec.Inversión

Tasa de crecimiento anual de la Formación Bruta de Capital Fijo. Incluye maquinaria, equipos, construcción e infraestructura. Es uno de los indicadores más sensibles al ciclo económico y suele anticipar expansiones o recesiones; su correlación de 0.68 con las importaciones refuerza esa lectura, dado que la inversión productiva depende en buena parte de bienes de capital adquiridos en el exterior.

x21
Crec.Cons.Priv

Tasa de crecimiento anual del consumo final de los hogares. Refleja directamente el poder adquisitivo y la confianza del consumidor. Debido a que el consumo representa una gran proporción del PIB en la mayoría de economías, su correlación de 0.74 con el crecimiento real del PIB es clave para explicar el crecimiento agregado del país.

x22
Crec.Gasto.Pub

Tasa de crecimiento anual del gasto final del gobierno en bienes y servicios. Captura el rol del Estado en la economía: políticas de austeridad generan valores bajos o negativos, mientras que políticas expansivas producen valores altos. Es la variable con menor correlación dentro de su bloque —su valor máximo es 0.37 con el crecimiento real del PIB—, lo que indica que las decisiones fiscales responden tanto a factores económicos como a lógicas políticas, aportando una dimensión genuinamente independiente.

Bloque 3 — Tamaño Económico y Mercado Laboral

Este bloque describe la escala absoluta de la economía y las condiciones del mercado laboral. Responde a la pregunta: ¿qué tan grande es la economía y qué tan eficiente es su mercado de trabajo? Estas variables permiten diferenciar economías grandes de economías pequeñas y evaluar el desempeño laboral de cada país.

x9
PIB.Nominal

Producto Interno Bruto a precios corrientes en dólares. Mide el valor total de la producción sin ajustes por inflación ni diferencias de precios entre países. Es la medida más utilizada para comparar el tamaño económico nominal entre naciones. Su correlación con el resto de variables del conjunto es prácticamente nula (máximo 0.21 con el gasto público), lo que indica que el tamaño nominal de una economía no está determinado por su comportamiento inflacionario ni por su dinamismo de crecimiento, sino que constituye una dimensión propia.

x11
PIB.PPA

PIB ajustado por Paridad de Poder Adquisitivo en dólares constantes. Elimina diferencias en los niveles de precios entre países y permite comparar el tamaño real de las economías de forma más precisa. Su correlación de 0.77 con el empleo total —la segunda más alta de todo el conjunto— refleja el vínculo natural entre el tamaño real de una economía y el volumen de trabajadores que necesita para sostener su producción.

x26
Desempleo

Porcentaje de la fuerza laboral que busca trabajo y no lo encuentra. Es uno de los indicadores más importantes del bienestar económico y del funcionamiento del mercado laboral. A diferencia del empleo total, que mide escala absoluta, el desempleo mide eficiencia: dos países pueden tener el mismo número de personas ocupadas pero tasas de desempleo muy distintas según el tamaño de su fuerza laboral total.

x27
Empleo.Total

Número total de personas ocupadas según encuestas de fuerza laboral. Representa la escala absoluta del mercado de trabajo y depende principalmente del tamaño poblacional y económico del país. Además de su fuerte relación con el PIB.PPA, presenta una correlación de 0.52 con el deflactor de exportaciones, lo que sugiere que las economías con mercados laborales más grandes también tienden a registrar mayores variaciones en los precios de sus bienes exportados.

x29
T.Interés

Tasa de interés de referencia de corto plazo del banco central. Refleja la postura de política monetaria: tasas altas suelen indicar estrategias antiinflacionarias o mayor percepción de riesgo, mientras que tasas bajas reflejan políticas expansivas orientadas al crecimiento económico. Su correlación de 0.54 con el crecimiento nominal del PIB y 0.53 con el deflactor del PIB confirma la reacción típica de los bancos centrales ante la inflación: a mayor presión de precios, mayor es la tasa de interés que fijan para contenerla.

4 Carga y Selección de Variables

datos_sel <- datos %>%
  select(Pais,
         x1, x2, x18, x19, x23,
         x16, x17, x20, x21, x22,
         x9, x11, x26, x27, x29) %>%
  rename(
    Cta.Corriente    = x1,
    T.Cambio         = x2,
    Crec.PIB.Nom     = x18,
    Deflactor.PIB    = x19,
    Deflactor.Export = x23,
    Crec.Import      = x16,
    Crec.PIB.Vol     = x17,
    Crec.Inversión   = x20,
    Crec.Cons.Priv   = x21,
    Crec.Gasto.Pub   = x22,
    PIB.Nominal      = x9,
    PIB.PPA          = x11,
    Desempleo        = x26,
    Empleo.Total     = x27,
    T.Interés        = x29
  )

datos_num <- datos_sel %>% select(-Pais)
tabla_desc <- data.frame(
  Variable  = colnames(datos_num),
  Media     = sapply(datos_num, function(x) mean(x,    na.rm = TRUE)),
  Mediana   = sapply(datos_num, function(x) median(x,  na.rm = TRUE)),
  SD        = sapply(datos_num, function(x) sd(x,      na.rm = TRUE)),
  CV        = sapply(datos_num, function(x)
    abs(sd(x, na.rm = TRUE) / mean(x, na.rm = TRUE)) * 100),
  Min       = sapply(datos_num, function(x) min(x,     na.rm = TRUE)),
  Max       = sapply(datos_num, function(x) max(x,     na.rm = TRUE)),
  Asimetria = sapply(datos_num, function(x) skewness(x, na.rm = TRUE)),
  Curtosis  = sapply(datos_num, function(x) kurtosis(x, na.rm = TRUE))
)

4.1 Estadísticas Descriptivas

# Agregar columna de Bloque para que sea visible y filtrable en la tabla
tabla_dt <- tabla_desc %>%
  mutate(
    Bloque = case_when(
      Variable %in% c("Cta.Corriente","T.Cambio","Crec.PIB.Nom",
                       "Deflactor.PIB","Deflactor.Export") ~ "Presión Inflacionaria y Cambiaria",
      Variable %in% c("Crec.Import","Crec.PIB.Vol","Crec.Inversión",
                       "Crec.Cons.Priv","Crec.Gasto.Pub") ~ "Dinamismo Económico Real",
      TRUE ~ "Tamaño Económico y Mercado Laboral"
    )
  ) %>%
  relocate(Bloque, .after = Variable) %>%
  mutate(
    across(c(Media, Mediana, SD, Min, Max),
           ~ ifelse(abs(.) >= 1e9,
                    formatC(., format = "e", digits = 2),
                    round(., 3))),
    CV        = round(CV, 1),
    Asimetria = round(Asimetria, 2),
    Curtosis  = round(Curtosis, 2)
  )

datatable(
  tabla_dt,
  rownames  = FALSE,
  filter    = "top",
  options   = list(
    pageLength   = 15,
    dom          = "ftip",
    columnDefs   = list(list(className = "dt-center", targets = "_all"))
  ),
  class = "display compact"
) %>%
  formatStyle(
    columns          = "Bloque",
    backgroundColor   = styleEqual(
      c("Presión Inflacionaria y Cambiaria",
        "Dinamismo Económico Real",
        "Tamaño Económico y Mercado Laboral"),
      c("#185FA522", "#2CA02C22", "#D85A3022")
    )
  )

Para el análisis de cada indicador se consideran las medidas estadísticas más relevantes, con el fin de ilustrar cómo el comportamiento de los datos impacta la estructura del conjunto. En primera instancia, los valores máximos y mínimos permiten delimitar el rango de cada variable, facilitando la detección de observaciones atípicas o disparidades estructurales profundas entre las economías. Esta delimitación resulta especialmente clara en el PIB.Nominal, cuyo rango va desde 3.14e+10 hasta 2.07e+15 dólares —una diferencia de varios órdenes de magnitud que anticipa la enorme disparidad de tamaño entre las economías más pequeñas y gigantes como Estados Unidos o India—, y en el tipo de cambio, que oscila entre 0.727 y 95.082 unidades de moneda local por dólar, reflejando la distancia entre monedas fuertes y monedas profundamente depreciadas como el peso argentino.

Respecto a la media, esta representa el nivel general promedio de cada variable. El crecimiento del PIB nominal (Crec.PIB.Nom) exhibe un promedio de 12.974%, valor que ya incorpora tanto crecimiento real como inflación, y que sirve de referencia central para interpretar los valores individuales de cada país dentro del conjunto.

Por su parte, la mediana permite identificar el valor central de la distribución, mitigando el efecto distorsionador de los valores extremos. La comparación entre media y mediana revela posibles asimetrías: en el empleo total, la media (21,054,644) es casi tres veces superior a la mediana (8,025,106), una diferencia de más de 13 millones de personas que delata la presencia de unos pocos países —India y Estados Unidos— cuyo tamaño laboral distorsiona por completo el promedio del conjunto. En contraste, el crecimiento del gasto público presenta una media de 4.46 frente a una mediana de 4.027, una diferencia de apenas 0.43 que indica una distribución mucho más simétrica y sin outliers dominantes.

Para profundizar en la dispersión relativa de los datos se analiza el coeficiente de variación (CV), que mide la variabilidad de cada variable en proporción a su propia media, permitiendo comparar la dispersión entre indicadores con escalas completamente distintas. El PIB.Nominal registra el CV más alto de las 15 variables, con 346.2%, lo que evidencia una heterogeneidad extrema entre los países de la muestra: su desviación estándar es más de tres veces su propia media. En el extremo opuesto, el crecimiento real del PIB (Crec.PIB.Vol) presenta el CV más bajo, con 44.7%, señalando que esta es, comparativamente, la variable más homogénea entre los países analizados —algo esperable, dado que el crecimiento económico real suele moverse dentro de rangos más acotados que variables de tamaño absoluto como el PIB.

Complementariamente, la curtosis describe qué tan concentrados están los datos alrededor de la media y qué tan pesadas son las colas de la distribución. El Deflactor.Export presenta la curtosis más alta del conjunto, con 38.96, muy por encima del valor de referencia de una distribución normal (curtosis = 3), lo que confirma la presencia de valores extremadamente alejados del resto —consistentes con economías como Argentina, cuya inflación de exportaciones no tiene comparación con el resto de la muestra—. En contraste, el crecimiento real del PIB vuelve a ser la variable más estable, con la curtosis más baja del conjunto (2.99), prácticamente equivalente a una distribución normal y sin colas pesadas.

Finalmente, la asimetría determina hacia qué lado se inclina la distribución de cada indicador. El Deflactor.Export presenta el sesgo positivo más pronunciado del conjunto (6.12), seguido por el PIB.PPA (5.03) y el PIB.Nominal (4.32), lo que indica que en estas tres variables la mayoría de los países se concentra en valores bajos mientras unos pocos casos extremos —economías muy grandes o con inflación desbordada— estiran la distribución hacia la derecha. En contraste, el crecimiento real del PIB y el crecimiento de las importaciones muestran los sesgos más moderados (0.84 y 0.46 respectivamente), lo que confirma su comportamiento más equilibrado y cercano a una distribución simétrica.

En conjunto, estas medidas muestran un patrón consistente: las variables de tamaño económico absoluto (PIB.Nominal, PIB.PPA, Empleo.Total) son las más heterogéneas, asimétricas y con colas más pesadas, mientras que las variables de crecimiento real (Crec.PIB.Vol, Crec.Cons.Priv, Crec.Gasto.Pub) tienden a ser más homogéneas y simétricas entre países. Este hallazgo confirma la necesidad de estandarizar todas las variables antes de aplicar el ACP y la clusterización, ya que de lo contrario las variables de tamaño absoluto dominarían completamente el análisis por su mayor dispersión numérica, ocultando la información aportada por los indicadores de crecimiento y mercado laboral.

5 Análisis de Correlación

mat_cor  <- cor(datos_num, use = "complete.obs", method = "pearson")
mat_pval <- ggcorrplot::cor_pmat(datos_num, use = "complete.obs")
mat_cor_lower <- mat_cor
mat_cor_lower[upper.tri(mat_cor_lower)] <- NA

plot_ly(
  x = colnames(mat_cor_lower),
  y = rownames(mat_cor_lower),
  z = mat_cor_lower,
  type = "heatmap",
  colorscale = list(
    list(0,    "#D85A30"),
    list(0.5,  "#16222F"),
    list(1,    "#185FA5")
  ),
  zauto = FALSE,
  zmin = -1,
  zmax = 1,
  hovertemplate = "%{x} vs %{y}<br>Correlación: %{z:.2f}<extra></extra>"
) %>%
  layout(
    title = list(text = "Correlaciones entre Variables",
                 font = list(color = "#4CA3DD", size = 16)),
    paper_bgcolor = "#0F1620",
    plot_bgcolor  = "#0F1620",
    font          = list(color = "#DCE6F0"),
    xaxis = list(tickangle = -45, tickfont = list(size = 10)),
    yaxis = list(autorange = "reversed", tickfont = list(size = 10))
  )
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))) %>%
  mutate(Correlacion = round(Correlacion, 3))

datatable(
  alta_cor,
  rownames = FALSE,
  colnames = c("Variable 1", "Variable 2", "Correlación"),
  options  = list(pageLength = 10, dom = "tip"),
  class    = "display compact"
) %>%
  formatStyle(
    "Correlacion",
    background      = styleColorBar(range(alta_cor$Correlacion), "#185FA566"),
    backgroundSize  = "98% 88%",
    backgroundRepeat = "no-repeat",
    backgroundPosition = "center"
  )

A partir de la matriz de correlación entre las distintas variables es posible identificar el grado de relación lineal existente entre ellas, con valores que oscilan entre -1 y 1. Valores cercanos a 1 indican una relación positiva fuerte, valores cercanos a -1 reflejan una relación negativa fuerte, y valores próximos a 0 sugieren una relación débil o prácticamente inexistente. Sin embargo, el interés del Análisis de Componentes Principales no recae en coeficientes individuales sino en la estructura conjunta de estas relaciones: lo relevante no es que dos variables específicas se muevan juntas, sino que grupos enteros de variables compartan una misma dimensión latente subyacente. La matriz de correlación confirma que esto ocurre con claridad en nuestras 15 variables, que se organizan en patrones bien diferenciados —exactamente la condición que justifica reducir su dimensionalidad sin perder información relevante.

5.1 Bloque de Dinamismo Económico Real

Las correlaciones observadas dentro de este bloque sugieren la existencia de un mecanismo económico común: los países que registran mayores tasas de crecimiento del PIB real (Crec.PIB.Vol) también tienden a presentar expansiones simultáneas del consumo privado (correlación de 0.74 con Crec.Cons.Priv), de la inversión y de las importaciones (Crec.Import con Crec.Inversión, 0.68; Crec.Import con Crec.Cons.Priv, 0.56). Esta asociación conjunta indica que las cinco variables del bloque probablemente capturan una misma dimensión latente, asociada a la expansión económica interna, más que cinco fenómenos independientes entre sí.

En nuestra muestra, este patrón se observa de forma particularmente nítida en economías como Chile, Colombia y Perú, donde el crecimiento del PIB real se acompaña de tasas elevadas de consumo e inversión —un perfil de dinamismo expansivo que contrasta con el de economías europeas más maduras, donde estas mismas variables crecen a ritmos mucho más moderados y sincronizados entre sí.

5.2 Bloque Inflacionario y Cambiario

Este bloque presenta las correlaciones más elevadas de toda la matriz, lo que evidencia una interdependencia particularmente fuerte entre sus cinco variables. El crecimiento del PIB nominal (Crec.PIB.Nom), el deflactor del PIB (Deflactor.PIB), el deflactor de exportaciones (Deflactor.Export) y el tipo de cambio (T.Cambio) se mueven prácticamente en conjunto —con correlaciones entre 0.68 y 0.97—, lo que sugiere que estas variables no aportan información independiente, sino que reflejan distintas manifestaciones de un mismo fenómeno: la presión inflacionaria y cambiaria de cada economía.

Esta estructura está fuertemente influenciada por economías con procesos inflacionarios extremos, particularmente Argentina y, en menor medida, Türkiye, cuyos niveles de depreciación cambiaria y crecimiento nominal superan ampliamente los observados en las economías desarrolladas de la OCDE. Es razonable suponer que buena parte de la correlación de 0.97 entre Crec.PIB.Nom y Deflactor.PIB —la más alta del conjunto de 15 variables— esté impulsada por estos casos extremos, donde el crecimiento nominal del PIB no refleja una mejora real de la producción sino, casi en su totalidad, el efecto de la inflación. El vínculo entre tipo de cambio e inflación interna que muestran estas correlaciones es consistente con el fenómeno conocido como inflación importada: cuando una moneda se deprecia con fuerza frente al dólar, los bienes importados se vuelven más costosos y trasladan presión inflacionaria al resto de la economía.

5.3 Bloque de Tamaño Económico y Mercado Laboral

En este bloque, la relación más relevante es la que existe entre el PIB ajustado por Paridad de Poder Adquisitivo (PIB.PPA) y el empleo total (Empleo.Total), con un coeficiente de 0.77 —la segunda correlación más alta de todo el conjunto—. Esta asociación es consistente con la intuición económica básica: producir más bienes y servicios requiere, en términos generales, más trabajadores, por lo que las economías de mayor tamaño real —como Estados Unidos e India en nuestra muestra— concentran también los niveles más altos de empleo absoluto.

La variable desempleo, en cambio, presenta correlaciones bajas con la práctica totalidad de los indicadores —ninguna supera 0.29 en valor absoluto—. Es importante ser precisos en la interpretación de este resultado: una correlación baja no permite concluir que el desempleo sea independiente del tamaño o el dinamismo de una economía en términos causales, sino algo más limitado y estadísticamente correcto: en esta muestra de 42 países no existe una asociación lineal fuerte entre el desempleo y las demás variables consideradas. Esto es consistente con la naturaleza del desempleo como fenómeno explicado principalmente por factores estructurales e institucionales —rigidez del mercado laboral, políticas de protección al empleo, dinámicas demográficas— que escapan a una relación lineal simple con el tamaño o el ritmo de crecimiento de la economía.

5.4 Relaciones Negativas Relevantes

La relación negativa más fuerte de toda la matriz se presenta entre la cuenta corriente (Cta.Corriente) y el crecimiento de las importaciones (Crec.Import), con un coeficiente de -0.57, seguida por la correlación entre cuenta corriente y crecimiento de la inversión (Crec.Inversión), con -0.49. Ambos resultados son coherentes con la teoría económica: un aumento en las importaciones, o en la inversión —que típicamente depende de bienes de capital adquiridos en el exterior—, incrementa la salida de divisas del país y tiende a deteriorar su saldo externo. Países con procesos activos de expansión de inversión e importaciones, como los del bloque de dinamismo emergente, suelen presentar por esta misma razón saldos de cuenta corriente más deficitarios.

5.5 Síntesis del Análisis de Correlación

Las altas correlaciones observadas dentro de cada bloque sugieren que varias variables están midiendo aspectos distintos de una misma realidad económica subyacente: la presión de precios y la posición cambiaria de un país, su ritmo de expansión real, y su tamaño estructural junto con el desempeño de su mercado laboral. En consecuencia, es razonable esperar que el Análisis de Componentes Principales sintetice estas relaciones en un número reducido de factores, posiblemente asociados a estas mismas tres dimensiones. Los resultados de esa reducción —y la confirmación de si efectivamente emergen componentes asociados al entorno inflacionario, al dinamismo económico y al tamaño estructural— se presentan en la siguiente sección.

6 Análisis Gráfico por Bloque Temático — Boxplots

Antes de revisar cada variable en detalle, conviene observar su comportamiento individual mediante diagramas de caja, que permiten identificar de forma visual la dispersión, la mediana y los países cuyo comportamiento se aleja sustancialmente del resto del conjunto. A continuación se presenta el análisis correspondiente al primer bloque temático.

6.1 Bloque 1: Presión Inflacionaria y Cambiaria

6.1.1 Cuenta Corriente

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()
}

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

plot_ly() %>%
  add_trace(
    data = g_cc, y = ~Valor, type = "box", name = "Cta.Corriente",
    boxpoints = FALSE,
    fillcolor = "rgba(24,95,165,0.65)",
    line = list(color = "#4CA3DD"),
    marker = list(color = "#185FA5")
  ) %>%
  add_trace(
    data = filter(g_cc, es_outlier),
    x = "Cta.Corriente", y = ~Valor, type = "scatter", mode = "markers",
    text = ~paste0(Pais, ": ", round(Valor, 2), "%"),
    hoverinfo = "text",
    marker = list(color = "#D85A30", size = 10),
    showlegend = FALSE
  ) %>%
  layout(
    title = list(text = "Posición Externa — Cuenta Corriente", font = list(color = "#4CA3DD", size = 16)),
    paper_bgcolor = "#0F1620",
    plot_bgcolor  = "#0F1620",
    font          = list(color = "#DCE6F0"),
    yaxis         = list(title = "% del PIB", zeroline = TRUE, zerolinecolor = "grey", zerolinewidth = 1),
    xaxis         = list(title = "")
  )

El saldo de la cuenta corriente como porcentaje del PIB mide la diferencia entre lo que un país vende al exterior y lo que compra, y constituye el indicador más directo de la posición externa de una economía. La distribución de esta variable en el conjunto de 42 países es relativamente compacta: la mitad central de las observaciones (la caja) se ubica entre aproximadamente -2% y 4% del PIB, con una mediana ligeramente positiva cercana a 0.5%. Esto indica que, en términos generales, la muestra está equilibrada entre países con pequeños superávits y países con pequeños déficits externos, sin un sesgo dominante hacia ninguno de los dos lados.

Dos países se distancian claramente del resto de la distribución: Noruega, con un superávit cercano al 15% del PIB, y Irlanda, con un valor próximo al 14%. Ambos casos son coherentes con la estructura productiva de cada economía: Noruega exporta grandes volúmenes de petróleo y gas, generando un ingreso sostenido de divisas que excede ampliamente su gasto en importaciones, mientras que Irlanda concentra una proporción inusualmente alta de sedes regionales de multinacionales tecnológicas y farmacéuticas, cuyas exportaciones de servicios y propiedad intelectual inflan de manera significativa su saldo externo. En ambos casos, el superávit no proviene de un comportamiento típico de ahorro interno, sino de características estructurales muy particulares de cada economía, lo que justifica que aparezcan como valores atípicos dentro del conjunto.

Es importante notar que, a diferencia de otras variables del bloque inflacionario, la cuenta corriente no presenta valores extremos en el lado negativo: ningún país del conjunto muestra un déficit externo lo suficientemente grande como para ser marcado como outlier, lo que sugiere que los desequilibrios por déficit en esta muestra de países —a diferencia de los superávits de Noruega e Irlanda— se mantienen dentro de rangos moderados y comparables entre economías.

6.1.2 Tipo de Cambio

g_tc <- datos_sel %>%
  select(Pais, T.Cambio) %>%
  pivot_longer(-Pais, names_to = "Variable", values_to = "Valor") %>%
  outliers_pais()

plot_ly() %>%
  add_trace(
    data = g_tc, y = ~Valor, type = "box", name = "T.Cambio",
    boxpoints = FALSE,
    fillcolor = "rgba(24,95,165,0.65)",
    line = list(color = "#4CA3DD"),
    marker = list(color = "#185FA5")
  ) %>%
  add_trace(
    data = filter(g_tc, es_outlier),
    x = "T.Cambio", y = ~Valor, type = "scatter", mode = "markers",
    text = ~paste0(Pais, ": ", round(Valor, 1)),
    hoverinfo = "text",
    marker = list(color = "#D85A30", size = 10),
    showlegend = FALSE
  ) %>%
  layout(
    title = list(text = "Presión Cambiaria — Tipo de Cambio", font = list(color = "#4CA3DD", size = 16)),
    paper_bgcolor = "#0F1620",
    plot_bgcolor  = "#0F1620",
    font          = list(color = "#DCE6F0"),
    yaxis         = list(title = "Moneda / USD (log)", type = "log"),
    xaxis         = list(title = "")
  )

El tipo de cambio mide cuántas unidades de moneda nacional se necesitan para comprar un dólar estadounidense, y por su naturaleza presenta rangos extremadamente dispares entre países —desde monedas casi a la par del dólar hasta monedas con cientos de unidades por dólar—, razón por la cual el gráfico se presenta en escala logarítmica. Sin esta transformación, la distribución sería ilegible: un solo país extremo aplastaría visualmente a los otros 41.

La mediana se ubica apenas por encima de 1 unidad de moneda local por dólar, y la caja central —que agrupa a la mitad de los países— se extiende hasta aproximadamente 6 unidades. Esto confirma que la mayoría de las economías del conjunto cuentan con monedas relativamente fuertes o estables frente al dólar, incluyendo a los países de la Eurozona y otras divisas consolidadas.

Cinco países se separan claramente como valores atípicos por encima del resto: Argentina, con un tipo de cambio cercano a 100 unidades por dólar, es el caso más extremo de toda la muestra —consistente con el proceso de devaluación severa que ya identificamos en el análisis de correlación—. Le sigue India, con un valor cercano a 70, que si bien está lejos del caso argentino, refleja la denominación históricamente alta de la rupia frente al dólar más que un proceso inflacionario comparable. República Checa y México aparecen agrupados en un rango similar, entre 15 y 20 unidades, mientras que Sudáfrica se ubica como el quinto outlier, con un valor algo menor pero igualmente por encima del resto del conjunto.

Es importante distinguir entre estos cinco casos: mientras que el valor de Argentina está directamente asociado a un proceso de depreciación acelerada —coherente con su perfil de presión inflacionaria extrema visto anteriormente—, los casos de India, México, República Checa y Sudáfrica reflejan en gran medida la estructura histórica de denominación de sus monedas, que tradicionalmente han operado con tipos de cambio nominales altos frente al dólar sin que esto implique necesariamente una crisis cambiaria activa. Esta distinción es relevante porque, de cara al ACP, ambos tipos de outlier afectan la dispersión de la variable de la misma manera matemática, aun cuando su origen económico sea distinto.

6.1.3 Crecimiento PIB Nominal

g_nom <- datos_sel %>%
  select(Pais, Crec.PIB.Nom) %>%
  pivot_longer(-Pais, names_to = "Variable", values_to = "Valor") %>%
  outliers_pais()

plot_ly() %>%
  add_trace(
    data = g_nom, y = ~Valor, type = "box", name = "Crec.PIB.Nom",
    boxpoints = FALSE,
    fillcolor = "rgba(24,95,165,0.65)",
    line = list(color = "#4CA3DD"),
    marker = list(color = "#185FA5")
  ) %>%
  add_trace(
    data = filter(g_nom, es_outlier),
    x = "Crec.PIB.Nom", y = ~Valor, type = "scatter", mode = "markers",
    text = ~paste0(Pais, ": ", round(Valor, 1), "%"),
    hoverinfo = "text",
    marker = list(color = "#D85A30", size = 10),
    showlegend = FALSE
  ) %>%
  layout(
    title = list(text = "Presión Inflacionaria — Crecimiento PIB Nominal",
                 font = list(color = "#4CA3DD", size = 16)),
    paper_bgcolor = "#0F1620",
    plot_bgcolor  = "#0F1620",
    font          = list(color = "#DCE6F0"),
    yaxis         = list(title = "% crecimiento anual", zeroline = TRUE,
                         zerolinecolor = "grey", zerolinewidth = 1),
    xaxis         = list(title = "")
  )

El crecimiento del PIB nominal mide la variación anual del PIB a precios corrientes, por lo que combina en un solo número tanto la expansión real de la producción como el efecto de la inflación. Por esta razón es una variable más volátil que el crecimiento real (Crec.PIB.Vol) y, como ya se anticipó en el análisis de correlación, su comportamiento está fuertemente ligado al bloque inflacionario más que al de dinamismo económico real.

La distribución de la mayoría de los 42 países es notablemente compacta: la caja central se ubica entre 7.56% y 13.7%, con una mediana de 10.7%, y el valor más alto dentro del rango normal (sin contar outliers) llega a 22.8%. Esto indica que la gran mayoría de las economías de la muestra crece en términos nominales dentro de un rango moderado y predecible, sin grandes sobresaltos de precios.

Dos países rompen completamente esa tendencia: Argentina, con un crecimiento nominal de 70.2%, y Türkiye, con un valor de 43.6%. Ninguno de estos dos valores refleja una expansión real de esa magnitud en la producción de bienes y servicios — de hecho, ya se identificó en la sección de correlación que el crecimiento del PIB nominal está casi perfectamente correlacionado (0.97) con el deflactor del PIB, lo que confirma que estos valores extremos están explicados casi en su totalidad por procesos inflacionarios y no por un crecimiento económico genuino. En otras palabras, mientras que el resto del conjunto crece de forma moderada y estable en términos nominales, Argentina y Türkiye están atravesando episodios de alta inflación que inflan artificialmente esta cifra sin que ello implique una mejora comparable en su capacidad productiva real.

Esta gráfica se mantiene en su escala original —sin recortar el eje Y— porque, a diferencia de los deflactores donde la dispersión hacía ilegible la caja central, aquí el rango entre el grueso de los países (hasta 22.8%) y los dos outliers (43.6% y 70.2%), aunque amplio, permite seguir observando con claridad tanto la mediana como los cuartiles del conjunto principal sin necesidad de comprimir la escala.

6.1.4 Deflactores PIB y Exportaciones

g_defl <- datos_sel %>%
  select(Pais, Deflactor.PIB, Deflactor.Export) %>%
  pivot_longer(-Pais, names_to = "Variable", values_to = "Valor") %>%
  outliers_pais()

etiquetas_defl <- c(
  Deflactor.PIB    = "Deflactor PIB",
  Deflactor.Export = "Deflactor Exportaciones"
)

plot_ly() %>%
  add_trace(
    data = filter(g_defl, Variable == "Deflactor.PIB"),
    y = ~Valor, type = "box", name = "Deflactor PIB",
    boxpoints = FALSE,
    fillcolor = "rgba(24,95,165,0.65)",
    line = list(color = "#4CA3DD")
  ) %>%
  add_trace(
    data = filter(g_defl, Variable == "Deflactor.Export"),
    y = ~Valor, type = "box", name = "Deflactor Exportaciones",
    boxpoints = FALSE,
    fillcolor = "rgba(44,160,44,0.55)",
    line = list(color = "#6FCB6F")
  ) %>%
  add_trace(
    data = filter(g_defl, es_outlier),
    x = ~Variable, y = ~Valor, type = "scatter", mode = "markers",
    text = ~paste0(Pais, ": ", round(Valor, 1)),
    hoverinfo = "text",
    marker = list(color = "#D85A30", size = 10),
    showlegend = FALSE
  ) %>%
  layout(
    title = list(text = "Presión Inflacionaria — Deflactores de Precios",
                 font = list(color = "#4CA3DD", size = 16)),
    paper_bgcolor = "#0F1620",
    plot_bgcolor  = "#0F1620",
    font          = list(color = "#DCE6F0"),
    yaxis         = list(title = "Índice de precios"),
    xaxis         = list(title = ""),
    legend        = list(font = list(color = "#DCE6F0"))
  )

A diferencia de los gráficos anteriores, en esta visualización los países atípicos no aparecen junto a su caja correspondiente, sino agrupados en una posición separada del eje. Esto ocurre porque, al tratarse de un gráfico interactivo de plotly, los puntos identificados como outlier se grafican en su valor real exacto sobre el eje Y, sin ningún recorte de escala — y dado que esos valores extremos (hasta 57.6) son varias veces superiores al rango de la caja central (entre 1 y 11), terminan ubicados muy por encima de ella, lo que visualmente los hace ver como un grupo aparte en la parte alta del gráfico. Se optó deliberadamente por no recortar el eje Y, como se podría hacer en un gráfico estático, porque al ser interactivo el lector puede hacer zoom o pasar el cursor sobre cada caja para inspeccionar con detalle tanto la mediana como los cuartiles del conjunto principal, sin perder la referencia de la magnitud real de los valores extremos.

Los deflactores miden la inflación desde dos perspectivas distintas: el deflactor del PIB captura la variación de precios de toda la producción interna, mientras que el deflactor de exportaciones se concentra únicamente en los precios de los bienes y servicios vendidos al exterior. Ambas variables presentan distribuciones muy distintas entre sí, lo que confirma que, aunque están correlacionadas (0.87, según vimos en la sección de correlación), no son idénticas en su comportamiento.

El deflactor de exportaciones es notablemente más compacto: su caja central va de 1.07 a 1.27, con una mediana de 1.11, y su valor máximo dentro del rango normal apenas alcanza 1.56. Esto indica que, salvo casos puntuales, los precios de exportación de la mayoría de los países del conjunto se mantienen prácticamente estables. El deflactor del PIB, en cambio, muestra una dispersión considerablemente mayor: su caja va de 2.32 a 6.28, con una mediana de 3.07, y llega hasta 10.7 en su valor máximo no atípico — más de seis veces el rango que presenta el deflactor de exportaciones. Esta diferencia sugiere que la inflación interna general de las economías del conjunto es, en promedio, más volátil que la inflación específica del sector exportador.

Argentina es, de nuevo, el caso más extremo de toda la muestra, con un deflactor de exportaciones de 57.6 y un deflactor del PIB de 54.2 — ambos completamente desconectados del resto del conjunto. Türkiye lo sigue en ambas variables, con 5.32 en exportaciones y 29.0 en el PIB general, confirmando que estas dos economías comparten el mismo perfil de presión inflacionaria severa identificado en el resto del análisis. Es interesante notar que Brasil (6.20) supera a Türkiye en el deflactor de exportaciones pero no aparece como outlier en el deflactor del PIB, lo que sugiere que su presión de precios está más concentrada en el sector exportador que en la economía interna en su conjunto — posiblemente vinculado al comportamiento de los precios internacionales de las materias primas que exporta.

El deflactor del PIB también identifica a Noruega como un caso atípico (16.9), pero por una razón completamente distinta a la de Argentina o Türkiye: Noruega no atraviesa un proceso inflacionario descontrolado, sino que su economía está fuertemente ligada a los precios internacionales del petróleo y el gas, cuya volatilidad se traslada directamente al deflactor de toda su producción interna. Este caso es un buen ejemplo de por qué un valor atípico no siempre refleja inestabilidad macroeconómica: en Noruega, el mismo mecanismo que explicaba su superávit de cuenta corriente —su dependencia de los hidrocarburos— vuelve a aparecer aquí, ahora como fuente de variabilidad en los precios.

Por su parte, el deflactor de exportaciones identifica un grupo adicional de outliers de menor magnitud —Perú (1.77), Sudáfrica (1.64), Colombia (1.63) e India (1.59)—, todos ellos economías exportadoras de materias primas cuyos precios externos, aunque mucho más moderados que los de Argentina, Türkiye o Brasil, igualmente se separan del comportamiento mucho más estable que muestra el grueso de las economías desarrolladas de la OCDE.

6.2 Bloque 2: Dinamismo Económico Real

6.2.1 Tasas de Crecimiento Real

g_crec <- datos_sel %>%
  select(Pais, Crec.Import, Crec.PIB.Vol,
         Crec.Inversión, Crec.Cons.Priv, Crec.Gasto.Pub) %>%
  pivot_longer(-Pais, names_to = "Variable", values_to = "Valor") %>%
  outliers_pais()

etiquetas_crec <- c(
  Crec.Import    = "Crec. Importaciones",
  Crec.PIB.Vol   = "Crec. PIB Real",
  "Crec.Inversión" = "Crec. Inversión",
  Crec.Cons.Priv = "Crec. Consumo Privado",
  Crec.Gasto.Pub = "Crec. Gasto Público"
)

g_crec <- g_crec %>%
  mutate(Variable_label = recode(Variable, !!!etiquetas_crec))

colores_crec <- c(
  "Crec. Importaciones"   = "rgba(24,95,165,0.65)",
  "Crec. PIB Real"        = "rgba(76,163,221,0.65)",
  "Crec. Inversión"       = "rgba(44,160,44,0.55)",
  "Crec. Consumo Privado" = "rgba(216,90,48,0.55)",
  "Crec. Gasto Público"   = "rgba(232,147,92,0.55)"
)

fig <- plot_ly()
for (v in unique(g_crec$Variable_label)) {
  fig <- fig %>% add_trace(
    data = filter(g_crec, Variable_label == v),
    x = ~Variable_label, y = ~Valor, type = "box", name = v,
    boxpoints = FALSE,
    fillcolor = colores_crec[v],
    line = list(color = "#DCE6F0")
  )
}
fig <- fig %>%
  add_trace(
    data = filter(g_crec, es_outlier),
    x = ~Variable_label, y = ~Valor, type = "scatter", mode = "markers",
    text = ~paste0(Pais, ": ", round(Valor, 1), "%"),
    hoverinfo = "text",
    marker = list(color = "#D85A30", size = 10),
    showlegend = FALSE
  ) %>%
  layout(
    title = list(text = "Dinamismo Económico Real — Tasas de Crecimiento Anual",
                 font = list(color = "#4CA3DD", size = 16)),
    paper_bgcolor = "#0F1620",
    plot_bgcolor  = "#0F1620",
    font          = list(color = "#DCE6F0"),
    yaxis         = list(title = "% crecimiento anual", zeroline = TRUE,
                         zerolinecolor = "grey", zerolinewidth = 1),
    xaxis         = list(title = ""),
    showlegend    = FALSE
  )
fig

Este grupo de cinco variables comparte una misma unidad de medida —porcentaje de crecimiento anual— y rangos de magnitud razonablemente comparables entre sí, a diferencia de los bloques anteriores donde fue necesario recurrir a escalas logarítmicas o recortes de eje. Esto permite presentar las cinco distribuciones en un mismo panel sin que ninguna domine visualmente a las demás.

La variable más estable del grupo es el crecimiento del PIB real, con una caja entre 4.74% y 8.18%, mediana de 5.29% y un solo país atípico, Ireland, con 13.4%. Esta baja dispersión es consistente con lo observado en el análisis de correlación y en las estadísticas descriptivas: el crecimiento real es, comparativamente, el indicador más homogéneo entre los países de la muestra, ya que no está distorsionado por procesos inflacionarios como sí ocurre con el crecimiento nominal del PIB.

El crecimiento del consumo privado presenta una dispersión algo mayor, con caja entre 4.22% y 7.88% y mediana de 5.73%, pero con tres outliers relevantes: Chile (20.5%), Türkiye (15.7%) y Colombia (14.8%). El caso de Türkiye es coherente con el perfil de presión inflacionaria que ya identificamos en bloques anteriores —cuando los precios suben con fuerza, el gasto nominal de los hogares también puede crecer aceleradamente—, mientras que Chile y Colombia muestran aquí un patrón de expansión del consumo interno que no habíamos visto hasta ahora en el análisis, y que conviene tener presente al interpretar los componentes del ACP.

El crecimiento de las importaciones es la variable con mayor dispersión interna del bloque: su caja va de 7.87% a 15.8%, con mediana de 13.1%, pero su rango total se extiende desde -8.28% (Ireland) hasta 35.5% (India). Que las importaciones de un país caigan de forma tan marcada como en Ireland, mientras que en India, Chile (31.1%) y Colombia (28.7%) crecen con tanta fuerza, confirma lo que ya anticipaba la correlación entre esta variable y el crecimiento de la inversión: las economías que están expandiendo su capacidad productiva tienden a comprar más bienes de capital al exterior, mientras que una caída abrupta en las importaciones —como la de Ireland— suele señalar una contracción de la demanda interna.

El crecimiento de la inversión es la variable con el rango más amplio de todo el bloque, desde -39.1% (Ireland) hasta 35.3% (Peru), con una caja central entre 2.80% y 11.3% y mediana de 6.60%. Esto confirma lo que la teoría económica anticipa sobre esta variable: al ser el componente más volátil del PIB, suele presentar las oscilaciones más extremas del ciclo económico. El caso de Ireland es particularmente llamativo, ya que es el único país que aparece como outlier negativo tanto en importaciones como en inversión, lo que sugiere un episodio puntual de fuerte contracción en su formación de capital —posiblemente vinculado a la salida o reubicación de operaciones de alguna multinacional con alta participación en su economía, dado el peso desproporcionado que estas empresas tienen en las cuentas externas de Irlanda, como ya se observó en el análisis de la cuenta corriente—. En el extremo opuesto, Argentina (33.4%) y Peru (35.3%) muestran expansiones de inversión muy superiores al resto del conjunto.

Finalmente, el crecimiento del gasto público es la variable más estable de todo el bloque junto al PIB real, con caja entre 2.53% y 5.74%, mediana de 4.03%, y un único outlier: United Kingdom, con 12.6%. Esta baja dispersión es consistente con lo identificado en el análisis de correlación, donde esta variable mostró la menor correlación con el resto del bloque (máximo 0.37): el gasto público no sigue el mismo ciclo que el consumo, la inversión o las importaciones, sino que responde a decisiones de política fiscal que pueden mantenerse relativamente estables incluso cuando el resto de la economía muestra mayor variabilidad.

En conjunto, este bloque revela un patrón interesante: Ireland aparece como outlier en tres de las cinco variables (importaciones, inversión y PIB real), pero en direcciones opuestas —crecimiento real más alto de lo normal, junto con caídas abruptas en importaciones e inversión—, lo que sugiere una dinámica económica particular que será importante observar en el análisis de componentes principales. Por su parte, Chile y Colombia se repiten como outliers en consumo e importaciones, reforzando la idea de que estas economías comparten un perfil de dinamismo expansivo en la demanda interna que las distingue del resto del conjunto.

6.2.2 Tamaño Económico — PIB Nominal y PIB PPA

g_pib <- datos_sel %>%
  select(Pais, PIB.Nominal, PIB.PPA) %>%
  pivot_longer(-Pais, names_to = "Variable", values_to = "Valor") %>%
  mutate(Valor = Valor / 1e12) %>%
  outliers_pais()

plot_ly() %>%
  add_trace(
    data = filter(g_pib, Variable == "PIB.Nominal"),
    y = ~Valor, type = "box", name = "PIB Nominal",
    boxpoints = FALSE,
    fillcolor = "rgba(24,95,165,0.65)",
    line = list(color = "#4CA3DD")
  ) %>%
  add_trace(
    data = filter(g_pib, Variable == "PIB.PPA"),
    y = ~Valor, type = "box", name = "PIB PPA",
    boxpoints = FALSE,
    fillcolor = "rgba(44,160,44,0.55)",
    line = list(color = "#6FCB6F")
  ) %>%
  add_trace(
    data = filter(g_pib, es_outlier),
    x = ~Variable, y = ~Valor, type = "scatter", mode = "markers",
    text = ~paste0(Pais, ": ", round(Valor, 1), " billones USD"),
    hoverinfo = "text",
    marker = list(color = "#D85A30", size = 10),
    showlegend = FALSE
  ) %>%
  layout(
    title = list(text = "Tamaño Económico — PIB Nominal vs PIB PPA",
                 font = list(color = "#4CA3DD", size = 16)),
    paper_bgcolor = "#0F1620",
    plot_bgcolor  = "#0F1620",
    font          = list(color = "#DCE6F0"),
    yaxis         = list(title = "Billones de USD"),
    xaxis         = list(title = ""),
    legend        = list(font = list(color = "#DCE6F0"))
  )

Recordatorio: como se documentó en la Metodología, la variable PIB.Nominal contiene un error de digitación que afecta a varios países de la muestra. Los valores que se describen a continuación deben interpretarse con esa advertencia en mente.

El PIB nominal y el PIB ajustado por Paridad de Poder Adquisitivo miden, en principio, la misma magnitud económica desde dos metodologías distintas, por lo que es esperable que ambas variables compartan un comportamiento similar entre países. Sin embargo, en este gráfico la diferencia entre ambas distribuciones es notablemente más amplia de lo que la teoría económica anticiparía, como consecuencia directa del error identificado.

El PIB.PPA, que no presenta inconsistencias, tiene una caja central entre 0.315 y 1.71 billones de USD, con una mediana de 0.534 y un máximo dentro del rango normal de 3.06 billones —valor correspondiente a Brasil—. El PIB.Nominal, en cambio, muestra una caja entre 0.448 y 6.98 billones, con mediana de 2.38 y un máximo no atípico de 8.68 billones. Esta caja sustancialmente más amplia para el PIB.Nominal no refleja una mayor dispersión real entre las economías del conjunto, sino el efecto de arrastre que los valores erróneos ejercen sobre los cuartiles de toda la variable.

Ocho países aparecen como outliers en PIB.Nominal: Korea (2,072 billones), Colombia (1,177), Japan (541), Chile (240), India (237), Hungary (55.1), Argentina (46.3) y Mexico (26.3). De estos, los primeros cinco —Korea, Colombia, Japan, Chile e India— corresponden exactamente a los casos con mayor ratio PIB.Nominal/PIB.PPA identificados en la Metodología, confirmando que su condición de outlier en este gráfico es producto del error de datos y no de un tamaño económico real excepcional.

Estados Unidos es el único país que aparece como outlier en ambas variables simultáneamente (23.3 billones en PIB.Nominal, 20.5 en PIB.PPA), pero a diferencia de los ocho casos anteriores, este es un resultado legítimo: Estados Unidos es, en efecto, la economía más grande de toda la muestra tanto en términos nominales como ajustados por poder de compra, por lo que su posición como valor atípico refleja una realidad económica genuina y no un error de captura.

6.2.3 Mercado Laboral y Política Monetaria — Desempleo y Tasa de Interés

g_lab <- datos_sel %>%
  select(Pais, Desempleo, T.Interés) %>%
  pivot_longer(-Pais, names_to = "Variable", values_to = "Valor") %>%
  outliers_pais()

fig_lab <- plot_ly() %>%
  add_trace(
    data = filter(g_lab, Variable == "Desempleo"),
    y = ~Valor, type = "box", name = "Desempleo",
    boxpoints = FALSE,
    fillcolor = "rgba(24,95,165,0.65)",
    line = list(color = "#4CA3DD")
  ) %>%
  add_trace(
    data = filter(g_lab, Variable == "T.Interés"),
    y = ~Valor, type = "box", name = "Tasa de Interés",
    boxpoints = FALSE,
    fillcolor = "rgba(44,160,44,0.55)",
    line = list(color = "#6FCB6F")
  ) %>%
  add_trace(
    data = filter(g_lab, es_outlier),
    x = ~Variable, y = ~Valor, type = "scatter", mode = "markers",
    text = ~paste0(Pais, ": ", round(Valor, 1)),
    hoverinfo = "text",
    marker = list(color = "#D85A30", size = 10),
    showlegend = FALSE
  ) %>%
  layout(
    title = list(text = "Mercado Laboral y Política Monetaria",
                 font = list(color = "#4CA3DD", size = 16)),
    paper_bgcolor = "#0F1620",
    plot_bgcolor  = "#0F1620",
    font          = list(color = "#DCE6F0"),
    yaxis         = list(title = "Porcentaje (%)", zeroline = TRUE,
                         zerolinecolor = "grey", zerolinewidth = 1),
    xaxis         = list(title = ""),
    legend        = list(font = list(color = "#DCE6F0"))
  )
fig_lab

Aunque el desempleo y la tasa de interés de corto plazo responden a lógicas económicas distintas —uno mide el funcionamiento del mercado laboral y la otra refleja decisiones de política monetaria—, ambas variables se presentan en el mismo panel porque comparten unidad de medida (porcentaje) y permiten observar simultáneamente dos dimensiones del entorno macroeconómico de cada país.

La tasa de desempleo presenta una caja central entre 4.45% y 6.83%, con una mediana de 5.73%, lo que indica que la mayoría de los países del conjunto mantiene niveles de desempleo moderados y relativamente similares entre sí. Cinco países se separan claramente de este patrón: Sudáfrica, con un desempleo de 34.3% —el valor más extremo de toda la muestra y casi seis veces la mediana—, seguido por España (14.8%), Grecia (14.7%), Colombia (13.8%) y Brasil (13.2%). Los casos de España y Grecia son consistentes con las dificultades estructurales del mercado laboral que históricamente han caracterizado a estas economías del sur de Europa, mientras que Sudáfrica, Colombia y Brasil reflejan mercados laborales con mayor informalidad y menor capacidad de absorción de su fuerza de trabajo, una característica común entre economías emergentes con alta desigualdad estructural.

La tasa de interés de corto plazo muestra un comportamiento muy distinto: su caja central va de -0.549 a 0.605, con una mediana prácticamente nula (-0.0425) y un máximo no atípico de 2.46. Esto confirma que, durante el período analizado, buena parte de las economías de la muestra —en especial las europeas desarrolladas— mantenían políticas monetarias expansivas, con tasas de referencia cercanas o incluso por debajo de cero. En el extremo opuesto aparecen cinco outliers, todos con tasas considerablemente más altas: Türkiye se distancia de forma dramática del resto con una tasa de 18.7% —más de siete veces el siguiente outlier—, seguida por Brasil (4.81%), México (4.63%), India (4%) y Sudáfrica (3.93%).

Es notable que Brasil, México, India y Sudáfrica se repitan como outliers en esta variable con valores relativamente cercanos entre sí (entre 3.9% y 4.8%), lo que sugiere un patrón común entre economías emergentes: tasas de interés sustancialmente más altas que las de las economías desarrolladas, generalmente como mecanismo de defensa frente a la inflación o para atraer capital externo en un contexto de mayor riesgo percibido. El caso de Türkiye, por su magnitud, es coherente con el perfil de presión inflacionaria extrema que ya se ha identificado repetidamente a lo largo del análisis para este país.

6.2.4 Mercado Laboral — Empleo Total

** Nota sobre la calidad de los datos: Durante la revisión de esta variable se identificó que Argentina presenta un nivel de empleo reportado de 121.9 millones de personas. Al combinar este valor con la tasa de desempleo observada, se obtiene una fuerza laboral implícita superior a 134 millones de personas, magnitud incompatible con la población total del país. Este resultado sugiere una posible inconsistencia en la fuente original, por lo que el valor se conserva sin modificaciones pero debe interpretarse con cautela.

g_emp <- datos_sel %>%
  select(Pais, Empleo.Total) %>%
  pivot_longer(-Pais, names_to = "Variable", values_to = "Valor") %>%
  mutate(Valor = Valor / 1e6) %>%
  outliers_pais()

plot_ly() %>%
  add_trace(
    data = g_emp, y = ~Valor, type = "box", name = "Empleo.Total",
    boxpoints = FALSE,
    fillcolor = "rgba(24,95,165,0.65)",
    line = list(color = "#4CA3DD")
  ) %>%
  add_trace(
    data = filter(g_emp, es_outlier),
    x = "Empleo.Total", y = ~Valor, type = "scatter", mode = "markers",
    text = ~paste0(Pais, ": ", round(Valor, 1), " millones"),
    hoverinfo = "text",
    marker = list(color = "#D85A30", size = 10),
    showlegend = FALSE
  ) %>%
  layout(
    title = list(text = "Mercado Laboral — Empleo Total",
                 font = list(color = "#4CA3DD", size = 16)),
    paper_bgcolor = "#0F1620",
    plot_bgcolor  = "#0F1620",
    font          = list(color = "#DCE6F0"),
    yaxis         = list(title = "Millones de personas"),
    xaxis         = list(title = "")
  )

El número total de personas ocupadas depende principalmente del tamaño poblacional y económico de cada país, por lo que es esperable encontrar una distribución muy asimétrica entre economías de escalas tan distintas como las que componen esta muestra. La caja central se ubica entre 2.79 y 16.9 millones de personas, con una mediana de 5.07 millones, y un máximo dentro del rango normal de 41.4 millones —valor correspondiente a una economía de tamaño medio-grande dentro del conjunto—.

Cinco países aparecen como outliers, todos ellos por su gran escala poblacional y económica: Estados Unidos lidera con 153 millones de personas empleadas, la cifra más alta de la muestra y coherente con su condición de mayor economía del conjunto. Le sigue Argentina, con 122 millones —valor que, como se advirtió anteriormente, es producto de un error de digitación y no representa una cifra real—. Brasil (91.3 millones), Japón (67.1 millones) y México (55 millones) completan la lista, todos ellos economías de gran tamaño poblacional cuyo nivel de empleo absoluto es coherente con su escala real.

Es importante distinguir, una vez más, entre outliers genuinos y outliers producto de errores en los datos: mientras que Estados Unidos, Brasil, Japón y México reflejan con precisión su tamaño real de mercado laboral, el valor de Argentina debe leerse con la advertencia correspondiente, ya que no es comparable en magnitud con el resto de los casos de esta lista ni con la población real del país.

7 Heatmap Países × Variables

Con el fin de explorar simultáneamente el comportamiento de las 15 variables seleccionadas, se construyó un heatmap a partir de los valores estandarizados (z-scores) de cada indicador. La estandarización permite expresar todas las variables en una misma escala, donde valores positivos indican observaciones por encima de la media de la muestra y valores negativos observaciones por debajo de ella. De esta forma, las diferencias de magnitud entre variables originales no afectan la comparación visual entre países.

Adicionalmente, los países fueron ordenados mediante un procedimiento de agrupamiento jerárquico utilizando distancia euclidiana y el método de Ward. Este ordenamiento no constituye aún la clusterización final, pero permite visualizar qué países presentan perfiles económicos similares a partir de patrones de color semejantes a lo largo de las distintas variables. El objetivo principal del heatmap es identificar regularidades, contrastes y posibles observaciones atípicas antes de aplicar formalmente las técnicas de reducción de dimensionalidad y segmentación.

orden_vars <- c(
  "Cta.Corriente", "T.Cambio", "Crec.PIB.Nom",
  "Deflactor.PIB", "Deflactor.Export",
  "Crec.Import", "Crec.PIB.Vol", "Crec.Inversión",
  "Crec.Cons.Priv", "Crec.Gasto.Pub",
  "PIB.Nominal", "PIB.PPA", "Desempleo",
  "Empleo.Total", "T.Interés"
)

datos_z <- datos_num %>%
  mutate(across(everything(), scale)) %>%
  as.data.frame()

rownames(datos_z) <- datos_sel$Pais
datos_z$Pais      <- datos_sel$Pais

dist_paises   <- dist(datos_z[, -ncol(datos_z)], method = "euclidean")
hclust_paises <- hclust(dist_paises, method = "ward.D2")
orden_paises  <- hclust_paises$labels[hclust_paises$order]

heatmap_long <- datos_z %>%
  pivot_longer(-Pais, names_to = "Variable", values_to = "Z") %>%
  mutate(
    Variable = factor(Variable, levels = orden_vars),
    Pais     = factor(Pais, levels = orden_paises)
  )

mat_heatmap <- heatmap_long %>%
  pivot_wider(names_from = Variable, values_from = Z) %>%
  column_to_rownames("Pais") %>%
  as.matrix()

mat_heatmap <- mat_heatmap[orden_paises, orden_vars]

plot_ly(
  x = orden_vars,
  y = orden_paises,
  z = mat_heatmap,
  type = "heatmap",
  colors = colorRampPalette(c("#D85A30", "#16222F", "#185FA5"))(200),
  zmin = -3.5, zmax = 3.5,
  hovertemplate = "%{y} — %{x}<br>Z-score: %{z:.2f}<extra></extra>"
) %>%
  layout(
    title = list(text = "Perfil Económico por País — 15 Variables Estandarizadas",
                 font = list(color = "#4CA3DD", size = 16)),
    paper_bgcolor = "#0F1620",
    plot_bgcolor  = "#0F1620",
    font          = list(color = "#DCE6F0"),
    xaxis = list(tickangle = -45, tickfont = list(size = 9)),
    yaxis = list(tickfont = list(size = 9), autorange = "reversed"),
    margin = list(l = 120)
  )

Como se documentó anteriormente, los valores de PIB.Nominal correspondientes a Korea, Colombia, Chile, India, Hungría, Islandia, Japón y Argentina presentan inconsistencias en la fuente original. Por esta razón, la intensidad de color observada en dicha variable debe interpretarse con cautela.

La Figura muestra una marcada heterogeneidad entre los países analizados. Los casos ubicados en la parte superior del ordenamiento presentan patrones de color considerablemente distintos al promedio de la muestra, mientras que los países localizados en la parte inferior exhiben perfiles más homogéneos y cercanos al centro de la escala estandarizada.

Entre las observaciones más extremas destaca Argentina, que concentra varios de los mayores z-scores de toda la matriz en variables asociadas al bloque inflacionario y cambiario. En particular, registra valores excepcionalmente altos en Deflactor.Export, Deflactor.PIB, Crec.PIB.Nom y T.Cambio, lo que evidencia un comportamiento claramente diferenciado respecto al resto de los países de la muestra. También sobresale Türkiye, principalmente por el elevado valor observado en T.Interés, mientras que países como India, Perú, Chile y Colombia comparten una misma dirección en varias variables de dinamismo económico —los cuatro se ubican por encima de la media global en crecimiento real, consumo, inversión e importaciones—, aunque con magnitudes distintas entre sí: Chile y Colombia destacan particularmente en consumo privado, mientras que Perú lo hace en inversión. Esta combinación de dirección común pero intensidad diferenciada será un elemento clave a observar en la clusterización, ya que determinará si estos países terminan agrupados en el mismo segmento o en segmentos distintos dentro del bloque de economías más dinámicas.

Por otra parte, Estados Unidos presenta los valores estandarizados más elevados en PIB.PPA y Empleo.Total, resultado consistente con su tamaño económico y poblacional dentro del conjunto analizado. En contraste, el valor extremo observado para Korea en PIB.Nominal corresponde a la inconsistencia previamente identificada en la base de datos y no debe interpretarse como una característica económica real.

En el extremo inferior de la distribución sobresale Ireland, que registra los valores más bajos de la matriz en Crec.Inversión y Crec.Import. A diferencia del caso argentino, donde varias variables extremas se concentran en un mismo país, los valores negativos más alejados de la media aparecen distribuidos entre distintas economías, lo que sugiere una mayor dispersión de las desviaciones negativas dentro de la muestra.

En conjunto, el heatmap permite anticipar la existencia de perfiles económicos diferenciados entre los países analizados. La presencia de patrones de color recurrentes y de grupos de países con comportamientos similares proporciona una primera evidencia visual de que la información contenida en las 15 variables puede resumirse mediante un conjunto reducido de factores y posteriormente utilizarse para construir segmentos relativamente homogéneos de países.

8 Resultados del Modelo: ACP y Clusterización

8.1 Determinación del Número Óptimo de Clusters

datos_std    <- scale(datos_num)
rownames(datos_std) <- datos_sel$Pais
datos_std_df <- as.data.frame(datos_std)
wss_values <- sapply(1:8, function(k) {
  kmeans(datos_std_df, centers = k, nstart = 10)$tot.withinss
})

sil_values <- sapply(2:8, function(k) {
  km <- kmeans(datos_std_df, centers = k, nstart = 10)
  mean(silhouette(km$cluster, dist(datos_std_df))[, 3])
})

# ── Gráfico 1: Método del Codo (WSS) ──────────────────────────
fig_wss <- plot_ly() %>%
  add_trace(
    x = 1:8, y = wss_values, type = "scatter", mode = "lines+markers",
    name = "WCSS",
    line = list(color = "#4CA3DD"),
    marker = list(color = "#185FA5", size = 8),
    showlegend = FALSE
  ) %>%
  add_trace(
    x = 3, y = wss_values[3], type = "scatter", mode = "markers",
    name = "k = 3 (solución adoptada)",
    marker = list(color = "#D85A30", size = 16, symbol = "star",
                  line = list(color = "#FFFFFF", width = 1)),
    showlegend = FALSE
  ) %>%
  layout(
    title = list(text = "Método del Codo (WCSS)", font = list(color = "#4CA3DD")),
    xaxis = list(title = "Número de clusters (k)"),
    yaxis = list(title = "Suma de cuadrados intra-cluster"),
    paper_bgcolor = "#0F1620", plot_bgcolor = "#0F1620",
    font = list(color = "#DCE6F0"),
    annotations = list(
      list(x = 3, y = wss_values[3], text = "k = 3<br>(solución adoptada)",
           font = list(color = "#D85A30", size = 11),
           ax = 40, ay = -40, showarrow = TRUE,
           arrowcolor = "#D85A30", arrowhead = 3)
    )
  )

# ── Gráfico 2: Coeficiente de Silueta Promedio ────────────────
fig_sil <- plot_ly() %>%
  add_trace(
    x = 2:8, y = sil_values, type = "scatter", mode = "lines+markers",
    name = "Silhouette",
    line = list(color = "#6FCB6F"),
    marker = list(color = "#2CA02C", size = 8),
    showlegend = FALSE
  ) %>%
  add_trace(
    x = 3, y = sil_values[2], type = "scatter", mode = "markers",
    name = "k = 3 (solución adoptada)",
    marker = list(color = "#D85A30", size = 16, symbol = "star",
                  line = list(color = "#FFFFFF", width = 1)),
    showlegend = FALSE
  ) %>%
  layout(
    title = list(text = "Coeficiente de Silueta Promedio", font = list(color = "#4CA3DD")),
    xaxis = list(title = "Número de clusters (k)"),
    yaxis = list(title = "Silhouette promedio"),
    paper_bgcolor = "#0F1620", plot_bgcolor = "#0F1620",
    font = list(color = "#DCE6F0"),
    annotations = list(
      list(x = 3, y = sil_values[2], text = "k = 3<br>(solución adoptada)",
           font = list(color = "#D85A30", size = 11),
           ax = 40, ay = 40, showarrow = TRUE,
           arrowcolor = "#D85A30", arrowhead = 3)
    )
  )

subplot(fig_wss, fig_sil, nrows = 1, margin = 0.08) %>%
  layout(showlegend = FALSE,
         title = list(text = "Determinación del Número Óptimo de Clusters",
                      font = list(color = "#4CA3DD", size = 16)))

Los dos criterios utilizados para evaluar el número adecuado de clusters ofrecen resultados parcialmente distintos. Por un lado, el método del codo muestra una disminución progresiva de la variabilidad interna a medida que aumenta el número de grupos: la suma de cuadrados intra-cluster pasa de 615.0 con un único cluster a 475.6 con dos grupos y 384.6 con tres. Sin embargo, la curva no presenta un punto de inflexión especialmente pronunciado que permita identificar de forma inequívoca un valor óptimo de k. Esto sugiere que la estructura de los datos no está dominada por una única partición natural claramente superior a las demás.

El coeficiente de silueta aporta una señal más definida. Su valor máximo se alcanza en k = 2, con un promedio de 0.63, mientras que para k = 3 desciende a 0.383. Desde una perspectiva estrictamente estadística, este resultado indicaría que la solución de dos grupos genera una separación más marcada entre clusters. No obstante, es importante analizar el origen de esta diferencia antes de adoptar una decisión definitiva, ya que la presencia de observaciones extremadamente alejadas del resto puede influir de manera importante sobre este indicador.

dist_paises <- dist(datos_std_df, method = "euclidean")
modelo_ward <- hclust(dist_paises, method = "ward.D2")

dend_ward <- as.dendrogram(modelo_ward)

# Colorear ramas y etiquetas según 3 clusters
dend_ward <- dend_ward %>%
  dendextend::set("branches_k_color", k = 3,
                  value = c("#D85A30", "#2CA02C", "#185FA5")) %>%
  dendextend::set("labels_colors", k = 3,
                  value = c("#D85A30", "#2CA02C", "#185FA5")) %>%
  dendextend::set("labels_cex", 0.85)

par(bg = "white", mar = c(11, 4, 4, 2))

plot(dend_ward,
     main = "Dendrograma — Método Ward",
     ylab = "Distancia euclidiana sobre datos estandarizados",
     xlab = "",
     horiz = FALSE)

abline(h = 10.5, lty = 2, col = "grey40")

El dendrograma permite profundizar en esta interpretación al mostrar cómo se producen las fusiones sucesivas entre países. La unión que ocurre a mayor distancia corresponde a Argentina, que permanece separada del resto de observaciones hasta las etapas finales del proceso de agrupamiento. Este comportamiento confirma que se trata de un caso excepcional dentro de la muestra y ayuda a explicar por qué la solución de dos clusters obtiene un coeficiente de silueta tan elevado: en términos prácticos, uno de los grupos está formado únicamente por Argentina, mientras que el segundo concentra a los demás países.

Sin embargo, esta partición simplifica en exceso la heterogeneidad existente dentro del conjunto restante. Bajo la solución de dos grupos, economías con características muy diferentes —como Suecia, Estados Unidos, India, Chile o Colombia— quedarían integradas en un mismo cluster, a pesar de presentar perfiles claramente distintos en términos de inflación, crecimiento y estructura económica.

La siguiente gran división observada en el dendrograma permite distinguir dos conjuntos adicionales dentro del grupo de países no argentinos. Por un lado, aparecen economías desarrolladas con patrones relativamente estables y homogéneos; por otro, un conjunto de economías emergentes caracterizadas por mayores niveles de crecimiento y dinamismo económico. Esta separación resulta consistente con los patrones observados previamente tanto en el análisis descriptivo como en el Análisis de Componentes Principales.

Considerando conjuntamente los tres criterios, se opta por retener tres clusters. Aunque esta solución no maximiza el coeficiente de silueta, permite representar de manera más completa la estructura económica presente en los datos. La partición resultante conserva a Argentina como un caso claramente diferenciado, pero además distingue entre economías desarrolladas y economías emergentes, proporcionando una segmentación más informativa para los objetivos del análisis que una simple separación entre Argentina y el resto del mundo.

8.2 Análisis de Componentes Principales

res.pca <- PCA(datos_std_df, graph = FALSE)
clusters_ward <- cutree(modelo_ward, k = 3)
NuevaBase <- datos_sel %>%
  mutate(Cluster = factor(clusters_ward,
                          labels = c("C1: Estables",
                                     "C2: Emergentes",
                                     "C3: Argentina")))

8.2.1 Varianza Explicada — Screeplot

varianza <- data.frame(
  Componente = factor(paste0("CP", 1:15), levels = paste0("CP", 1:15)),
  Varianza   = res.pca$eig[, 2],
  Acumulada  = res.pca$eig[, 3]
) %>%
  mutate(Acumulada_scaled = Acumulada * 40 / 100)

plot_ly(varianza) %>%
  add_trace(
    x = ~Componente, y = ~Varianza,
    type = "bar", name = "% varianza explicada",
    marker = list(
      color = ifelse(1:15 <= 4, "#185FA5", "#243447"),
      line  = list(color = "#0F1620", width = 1)
    )
  ) %>%
  add_trace(
    x = ~Componente, y = ~Acumulada_scaled,
    type = "scatter", mode = "lines+markers",
    name = "% acumulado",
    text = ~paste0(round(Acumulada, 1), "%"),
    hovertemplate = "Acumulado: %{text}<extra></extra>",
    line   = list(color = "#D85A30", width = 2),
    marker = list(color = "#D85A30", size = 7)
  ) %>%
  layout(
    title = list(
      text = "Varianza Explicada por Componente Principal",
      font = list(color = "#4CA3DD", size = 16)
    ),
    paper_bgcolor = "#0F1620",
    plot_bgcolor  = "#0F1620",
    font  = list(color = "#DCE6F0"),
    xaxis = list(title = "Componente"),
    yaxis = list(
      title     = "% varianza explicada",
      range     = c(0, 40),
      tickvals  = c(0, 10, 20, 30, 40),
      ticktext  = c("0%", "10%", "20%", "30%", "40%")
    ),
    shapes = list(
      list(type = "line",
           x0 = 0, x1 = 1, xref = "paper",
           y0 = 100/15 * 40/100, y1 = 100/15 * 40/100, yref = "y",
           line = list(color = "#6FCB6F", dash = "dot", width = 1.5))
    ),
    annotations = list(
      list(x = 0.4, xref = "paper",
           y = 100/15 * 40/100 + 0.8, yref = "y",
           text = "Umbral Kaiser (eigenvalue = 1)",
           font = list(color = "#6FCB6F", size = 10),
           showarrow = FALSE)
    ),
    legend = list(orientation = "h", y = -0.2)
  )

El criterio de Kaiser establece que un componente es informativo únicamente si su eigenvalue supera 1, es decir, si explica más varianza que una variable original por sí sola. Aplicando este criterio al conjunto de 15 variables estandarizadas, se retienen cuatro componentes principales, cuyos eigenvalues son 4.87, 2.35, 1.72 y 1.45 respectivamente. En conjunto, estos cuatro componentes acumulan el 69.3% de la varianza total del conjunto de datos —lo que implica que casi siete décimas partes de toda la información contenida en las 15 variables originales queda capturada en tan solo cuatro dimensiones—, mientras que el quinto componente, con un eigenvalue de 1.26, queda justo por encima del umbral pero se excluye porque su inclusión añadiría complejidad interpretativa sin mejorar sustancialmente la representación del conjunto.

La distribución de la varianza entre los cuatro componentes retenidos no es uniforme: el CP1 concentra el 32.5% de la varianza total —más del doble que cualquier otro componente—, lo que indica que existe una primera dimensión dominante que resume de forma muy eficiente una parte sustancial de las diferencias entre países. El CP2 aporta un 15.7% adicional, el CP3 un 11.5% y el CP4 un 9.7%, con una caída progresiva que confirma que la información del conjunto se organiza de forma jerárquica: una dimensión principal muy poderosa, seguida de tres dimensiones secundarias que capturan aspectos complementarios pero igualmente interpretables de la realidad económica de los países analizados.

8.2.2 Interpretación de los Componentes

cargas <- as.data.frame(res.pca$var$coord[, 1:4])
colnames(cargas) <- c("CP1", "CP2", "CP3", "CP4")
cargas$Variable <- rownames(cargas)

cargas_dt <- cargas %>%
  mutate(
    Bloque = case_when(
      Variable %in% c("Cta.Corriente", "T.Cambio", "Crec.PIB.Nom",
                      "Deflactor.PIB", "Deflactor.Export") ~ "Presión Inflacionaria",
      Variable %in% c("Crec.Import", "Crec.PIB.Vol", "Crec.Inversión",
                      "Crec.Cons.Priv", "Crec.Gasto.Pub")  ~ "Dinamismo Real",
      TRUE ~ "Tamaño y Mercado Laboral"
    )
  ) %>%
  relocate(Variable, Bloque) %>%
  mutate(across(c(CP1, CP2, CP3, CP4), ~ round(., 3)))

datatable(
  cargas_dt, rownames = FALSE,
  options = list(pageLength = 15, dom = "t",
                 columnDefs = list(list(className = "dt-center",
                                        targets = "_all"))),
  class = "display compact"
) %>%
  formatStyle(
    c("CP1", "CP2", "CP3", "CP4"),
    background         = styleColorBar(c(-1, 1), "#185FA544"),
    backgroundSize     = "98% 70%",
    backgroundRepeat   = "no-repeat",
    backgroundPosition = "center"
  ) %>%
  formatStyle(
    "Bloque",
    backgroundColor = styleEqual(
      c("Presión Inflacionaria", "Dinamismo Real", "Tamaño y Mercado Laboral"),
      c("#185FA522", "#2CA02C22", "#D85A3022")
    )
  )

CP1 — Presión inflacionaria y cambiaria (32.5% de la varianza)

El primer componente está dominado por las variables del bloque inflacionario: Crec.PIB.Nom lidera con una carga de 0.929 y una contribución del 17.7%, seguido por Deflactor.PIB (0.880, 15.9%), Deflactor.Export (0.786, 12.7%) y T.Cambio (0.717, 10.6%). Todas estas variables cargan en la misma dirección positiva, lo que confirma que CP1 captura una dimensión única asociada a la intensidad de la presión de precios de cada economía: cuanto mayor es el valor de un país en este componente, mayor es su inflación general, mayor es la depreciación de su moneda y más acelerado es su crecimiento nominal del PIB.

La única variable con carga negativa en CP1 es Cta.Corriente (-0.341), coherente con el hallazgo de la sección de correlación: los países con mayor presión inflacionaria tienden a presentar posiciones externas más débiles. Las variables de dinamismo real —Crec.PIB.Vol, Crec.Cons.Priv, Crec.Inversión, Crec.Import— también cargan positivamente en este componente, aunque con contribuciones menores, lo que sugiere que el crecimiento real y la inflación no son dimensiones completamente independientes en esta muestra de países.

CP2 — Tamaño de mercado y dinamismo de la demanda interna (15.7% de la varianza)

El segundo componente presenta una estructura bipolar clara. En el polo positivo se agrupan Empleo.Total (0.587, 14.7%), Cta.Corriente (0.501, 10.7%) y PIB.PPA (0.424, 7.7%), variables que caracterizan economías de gran escala con posición externa favorable. En el polo negativo aparecen Crec.Cons.Priv (-0.566, 13.6%), Crec.Import (-0.553, 13.0%) y Crec.Gasto.Pub (-0.469, 9.3%), que describen economías con alta expansión de la demanda interna.

CP2 separa por tanto dos tipos de economías que no se distinguen por su nivel de inflación —esa dimensión ya fue capturada por CP1— sino por su estructura: de un lado, economías grandes y con superávit externo; del otro, economías pequeñas o medianas con demanda interna muy dinámica. Este resultado es consistente con la intuición económica de que el tamaño absoluto de una economía y su ritmo de expansión del consumo interno son fenómenos parcialmente independientes.

CP3 — Escala económica real y apertura comercial (11.5% de la varianza)

El tercer componente está liderado por PIB.PPA (0.777, 35.1%) y Empleo.Total (0.585, 19.9%), que cargan juntas en el polo positivo, contrastadas con Cta.Corriente (-0.550, 17.6%) en el polo negativo. A diferencia de CP2, donde el PIB.PPA aparecía junto al empleo como indicadores de tamaño relativo, aquí estos dos indicadores de escala absoluta se consolidan como la dimensión dominante del componente, representando la capacidad productiva real de una economía independientemente de su dinamismo de corto plazo. La carga negativa de Cta.Corriente indica que las economías de mayor tamaño real en esta muestra tienden a presentar posiciones externas más deficitarias, posiblemente porque su mayor volumen de producción e importaciones presiona el saldo comercial.

CP4 — Política monetaria y mercado laboral (9.7% de la varianza)

El cuarto componente tiene una estructura también bipolar pero con una interpretación más específica: T.Interés (-0.655, 29.5%) y Desempleo (-0.613, 25.8%) cargan en el polo negativo, mientras que Crec.Gasto.Pub (0.476, 15.6%) carga en el positivo. Países con valores altos en CP4 combinan alto gasto público con tasas de interés y desempleo bajos —un perfil de política económica expansiva con mercado laboral saneado—, mientras que valores bajos en este componente identifican economías con tasas de interés elevadas, desempleo alto y menor expansión del gasto público. Esta dimensión captura esencialmente la postura de política macroeconómica de cada país y las condiciones de su mercado laboral, dos elementos que no habían quedado suficientemente representados en los tres primeros componentes.

8.2.3 Plano Factorial — Países y Variables

scores <- as.data.frame(res.pca$ind$coord[, 1:2])
scores$Pais    <- rownames(scores)
scores$Cluster <- NuevaBase$Cluster

plot_ly(scores,
        x = ~Dim.1, y = ~Dim.2,
        color = ~Cluster,
        colors = c("#185FA5", "#2CA02C", "#D85A30"),
        type = "scatter", mode = "markers+text",
        text = ~Pais, textposition = "top center",
        textfont = list(size = 9),
        marker = list(size = 9, opacity = 0.9),
        hovertemplate = "%{text}<br>CP1: %{x:.2f}<br>CP2: %{y:.2f}<extra></extra>") %>%
  add_segments(x = 0, xend = 0, y = -6, yend = 6,
               line = list(color = "grey40", dash = "dot", width = 1),
               showlegend = FALSE) %>%
  add_segments(x = -5, xend = 12, y = 0, yend = 0,
               line = list(color = "grey40", dash = "dot", width = 1),
               showlegend = FALSE) %>%
  layout(
    title = list(text = "Países en el Plano Factorial — CP1 vs CP2",
                 font = list(color = "#4CA3DD", size = 16)),
    paper_bgcolor = "#0F1620",
    plot_bgcolor  = "#0F1620",
    font          = list(color = "#DCE6F0"),
    xaxis  = list(title = "CP1 — Presión inflacionaria y cambiaria (32.5%)"),
    yaxis  = list(title = "CP2 — Tamaño y dinamismo de demanda (15.7%)"),
    legend = list(title = list(text = "Cluster"),
                  font  = list(color = "#DCE6F0"))
  )
cargas_circ <- as.data.frame(res.pca$var$coord[, 1:2])
cargas_circ$Variable <- rownames(cargas_circ)
colnames(cargas_circ)[1:2] <- c("CP1", "CP2")

theta <- seq(0, 2*pi, length.out = 200)

plot_ly() %>%
  add_trace(x = cos(theta), y = sin(theta),
            type = "scatter", mode = "lines",
            line = list(color = "grey40", width = 1),
            showlegend = FALSE,
            hoverinfo = "none") %>%
  add_segments(
    data = cargas_circ,
    x = 0, xend = ~CP1, y = 0, yend = ~CP2,
    line = list(color = "#4CA3DD", width = 1.5),
    showlegend = FALSE,
    hoverinfo = "none"
  ) %>%
  add_trace(
    data = cargas_circ,
    x = ~CP1, y = ~CP2,
    type = "scatter", mode = "markers+text",
    text = ~Variable, textposition = "top right",
    textfont = list(size = 9, color = "#E8935C"),
    marker = list(color = "#D85A30", size = 7),
    hovertemplate = "%{text}<br>CP1: %{x:.3f}<br>CP2: %{y:.3f}<extra></extra>",
    showlegend = FALSE
  ) %>%
  add_segments(x = -1.2, xend = 1.2, y = 0, yend = 0,
               line = list(color = "grey40", dash = "dot", width = 1),
               showlegend = FALSE, hoverinfo = "none") %>%
  add_segments(x = 0, xend = 0, y = -1.2, yend = 1.2,
               line = list(color = "grey40", dash = "dot", width = 1),
               showlegend = FALSE, hoverinfo = "none") %>%
  layout(
    title = list(text = "Círculo de Correlaciones — CP1 vs CP2",
                 font = list(color = "#4CA3DD", size = 16)),
    paper_bgcolor = "#0F1620",
    plot_bgcolor  = "#0F1620",
    font = list(color = "#DCE6F0"),
    xaxis = list(title = "CP1 (32.5%)", range = c(-1.3, 1.3),
                 zeroline = FALSE),
    yaxis = list(title = "CP2 (15.7%)", range = c(-1.3, 1.3),
                 zeroline = FALSE, scaleanchor = "x")
  )

El plano factorial definido por CP1 y CP2 permite observar de forma simultánea la posición relativa de los 42 países y la dirección en que cada variable los diferencia. La lectura conjunta de ambas representaciones —el mapa de países y el círculo de correlaciones— es la forma más directa de interpretar qué características económicas separan a los grupos identificados por la clusterización.

Sobre el eje horizontal, CP1 ordena los países de izquierda a derecha según la intensidad de su presión inflacionaria. En el extremo derecho se ubica Argentina, con una coordenada de 10.56 —la más alejada de toda la muestra y casi el doble de la siguiente observación—, seguida por Türkiye (4.61), Chile (2.92), India (2.91) y Perú (2.53). En el extremo opuesto, las economías con menor presión inflacionaria son Alemania (-1.99), Suiza (-2.11), Japón (-2.10) e Irlanda (-2.43), países con inflaciones históricamente bajas y monedas consolidadas. Esta distribución a lo largo del eje horizontal es coherente con los patrones identificados previamente en el análisis descriptivo: las mismas economías que presentaban los valores más extremos en deflactores y tipo de cambio son ahora las que se ubican en los extremos del primer componente.

Sobre el eje vertical, CP2 separa en el polo positivo a economías de gran escala con posición externa sólida —Alemania (1.94), Japón (2.39), Estados Unidos (2.92) y Argentina (3.87)— de economías con alta expansión de la demanda interna en el polo negativo —Chile (-4.30), Colombia (-3.40) y Perú (-2.65)—. El círculo de correlaciones confirma esta lectura: las flechas de Empleo.Total, PIB.PPA y Cta.Corriente apuntan hacia el cuadrante superior, mientras que Crec.Cons.Priv, Crec.Import y Crec.Gasto.Pub apuntan hacia el cuadrante inferior.

Un resultado que merece atención particular es la posición de Argentina en este plano: su coordenada en CP2 es 3.87, lo que la ubica en el polo de las economías grandes junto a Alemania, Japón y Estados Unidos, a pesar de ser una economía mediana en términos reales. Esta aparente contradicción se explica por la influencia del error de digitación identificado en PIB.Nominal y por los valores extremos de Empleo.Total —documentados en el análisis descriptivo como posiblemente incorrectos—, que arrastran su coordenada en CP2 hacia el polo positivo independientemente de su tamaño económico real. Este es un ejemplo concreto de cómo los errores de datos identificados en la Metodología se traducen en distorsiones visibles dentro del modelo.

8.3 Interpretación de los Clusters

8.3.1 Cluster 1 — Economías Estables (36 países)

Este es el grupo más numeroso y homogéneo. Agrupa a la gran mayoría de las economías de la OCDE: todas las europeas desarrolladas, más Australia, Canadá, Japón, Corea, Nueva Zelanda, Israel y México, junto con las economías invitadas de Brasil, Croacia, Rumania y Sudáfrica.

Su perfil medio es el más cercano al centro de la muestra: inflación moderada con un deflactor del PIB de 3.89 y crecimiento nominal del 9.74%, tipo de cambio bajo (4.14), cuenta corriente positiva (1.63% del PIB), crecimiento real del PIB de 5.64% y tasa de interés casi nula (0.34%). Son economías con mercados laborales relativamente estables, con una tasa media de desempleo del 7.0%, y tamaño económico mediano. Lo que define a este cluster no es una característica extrema sino precisamente la ausencia de ella: ninguna variable los aleja significativamente del promedio global.

8.3.2 Cluster 2 — Economías Emergentes Dinámicas (5 países)

Conformado por Chile, Colombia, Türkiye, India y Perú. Este grupo se distingue del primero por dos rasgos simultáneos que no aparecen combinados en ningún otro cluster: presión inflacionaria moderadamente alta junto con un dinamismo económico real muy por encima del promedio.

Su deflactor del PIB medio es 12.29 —más del triple que el Cluster 1— y su tipo de cambio promedio es 18.33, reflejando monedas más depreciadas. Pero lo más característico de este grupo es su dinamismo real: crecimiento de importaciones del 24.53%, crecimiento de la inversión del 17.54% y crecimiento del consumo privado del 14.07%, todos muy superiores al Cluster 1. El patrón conjunto de crecimiento simultáneo de inversión, consumo e importaciones sugiere economías impulsadas por una expansión de la demanda interna y la formación de capital, fenómeno que ya había aparecido en el análisis de correlaciones —donde estas tres variables mostraban las asociaciones más fuertes del bloque de dinamismo real— y que el ACP situó en el polo negativo del CP2, precisamente el eje que separa a este grupo del resto de la muestra. Su tasa de interés media de 5.39% refleja la respuesta de política monetaria ante esa mayor presión de precios: en todos los casos del grupo, los bancos centrales mantienen tasas sustancialmente más altas que las de las economías del Cluster 1.

8.3.3 Cluster 3 — Argentina (1 país)

Argentina forma un cluster propio, resultado que ya anticipaba el dendrograma con claridad. Sus valores son de una magnitud que no tiene comparación en toda la muestra: deflactor del PIB de 54.15, deflactor de exportaciones de 57.56, crecimiento nominal del PIB de 70.18% y tipo de cambio de 95.08. Ninguna otra economía de las 42 analizadas se acerca siquiera a estos valores.

Es importante matizar que Argentina no representa simplemente un caso extremo del Cluster 2. Mientras que Chile, Colombia o Türkiye combinan inflación moderada con crecimiento real sólido, Argentina presenta una inflación de tal magnitud que hace prácticamente imposible separar el componente real del nominal en sus cifras. Su aislamiento en el dendrograma y en el plano factorial está explicado principalmente por el comportamiento extremo de sus variables inflacionarias y cambiarias. Aunque algunas variables de la base presentan inconsistencias documentadas en la sección de Metodología, la magnitud de los indicadores asociados a inflación, tipo de cambio y crecimiento nominal es suficiente por sí sola para distinguir a Argentina del resto de países analizados, con independencia de cualquier error de datos.

8.3.4 Perfil Medio por Cluster — Heatmap

medias_cluster <- datos_sel %>%
  mutate(Cluster = clusters_ward) %>%
  group_by(Cluster) %>%
  summarise(across(where(is.numeric), \(x) mean(x, na.rm = TRUE)))

medias_long <- medias_cluster %>%
  pivot_longer(-Cluster, names_to = "Variable", values_to = "Media") %>%
  group_by(Variable) %>%
  mutate(Media_std = as.numeric(scale(Media))) %>%
  ungroup() %>%
  mutate(
    Variable = factor(Variable, levels = orden_vars),
    Cluster_label = case_when(
      Cluster == 1 ~ "C1: Estables (36 países)",
      Cluster == 2 ~ "C2: Emergentes dinámicas\n(Chile, Colombia, Türkiye, India, Perú)",
      Cluster == 3 ~ "C3: Argentina"
    ),
    Cluster_label = factor(Cluster_label, levels = c(
      "C1: Estables (36 países)",
      "C2: Emergentes dinámicas\n(Chile, Colombia, Türkiye, India, Perú)",
      "C3: Argentina"
    ))
  )

mat_clusters <- medias_long %>%
  select(Cluster_label, Variable, Media_std) %>%
  pivot_wider(names_from = Variable, values_from = Media_std) %>%
  column_to_rownames("Cluster_label") %>%
  as.matrix()

mat_clusters <- mat_clusters[, as.character(orden_vars)]

plot_ly(
  x = colnames(mat_clusters),
  y = rownames(mat_clusters),
  z = mat_clusters,
  type = "heatmap",
  colorscale = list(
    list(0,   "#D85A30"),
    list(0.5, "#16222F"),
    list(1,   "#185FA5")
  ),
  zmin = -1.5, zmax = 1.5,
  text = round(mat_clusters, 2),
  texttemplate = "%{text}",
  hovertemplate = "%{y}<br>%{x}<br>Z-score: %{z:.2f}<extra></extra>"
) %>%
  layout(
    title = list(
      text = "Perfil Medio por Cluster — Variables Estandarizadas",
      font = list(color = "#4CA3DD", size = 16)
    ),
    paper_bgcolor = "#0F1620",
    plot_bgcolor  = "#0F1620",
    font          = list(color = "#DCE6F0"),
    xaxis = list(
      tickangle = -45,
      tickfont  = list(size = 9),
      title     = ""
    ),
    yaxis = list(
      tickfont  = list(size = 9),
      autorange = "reversed",
      title     = ""
    ),
    margin = list(l = 280, b = 120)
  )

8.3.5 Distribución por Cluster — Bloque 1: Presión Inflacionaria y Cambiaria

bloque1_long <- NuevaBase %>%
  pivot_longer(
    cols = c(Cta.Corriente, T.Cambio, Crec.PIB.Nom,
             Deflactor.PIB, Deflactor.Export),
    names_to  = "Variable",
    values_to = "Valor"
  ) %>%
  mutate(Variable = factor(Variable, levels = c(
    "Cta.Corriente", "T.Cambio", "Crec.PIB.Nom",
    "Deflactor.PIB", "Deflactor.Export"
  )))

colores_cluster <- c(
  "C1: Estables"   = "#185FA5",
  "C2: Emergentes" = "#2CA02C",
  "C3: Argentina"  = "#D85A30"
)

plot_ly(
  bloque1_long,
  x = ~Variable, y = ~Valor,
  color = ~Cluster, colors = colores_cluster,
  type = "scatter", mode = "markers",
  jitter = 0.3,
  pointpos = 0,
  text  = ~paste0(Pais, "<br>", Variable, ": ", round(Valor, 2)),
  hovertemplate = "%{text}<extra></extra>",
  marker = list(size = 8, opacity = 0.85)
) %>%
  layout(
    title = list(
      text = "Presión Inflacionaria y Cambiaria — Distribución por Cluster",
      font = list(color = "#4CA3DD", size = 15)
    ),
    paper_bgcolor = "#0F1620",
    plot_bgcolor  = "#0F1620",
    font   = list(color = "#DCE6F0"),
    xaxis  = list(title = "", tickangle = -30),
    yaxis  = list(title = "Valor"),
    legend = list(title = list(text = "Cluster"),
                  font  = list(color = "#DCE6F0"))
  )

8.3.6 Presión Inflacionaria y Cambiaria

Este bloque presenta una de las separaciones visuales más marcadas entre clusters, resultado consistente con el hecho de que CP1 —el componente dominante, con el 32.5% de la varianza— está definido precisamente por estas cinco variables.

En Crec.PIB.Nom, la separación entre grupos es inmediata: el Cluster 1 se concentra compactamente alrededor de su media de 9.74%, mientras que el Cluster 2 se desplaza hacia 24.82% con mayor dispersión interna. Türkiye (43.59%) y Argentina (70.18%) aparecen completamente separados del resto, lo que sugiere que una parte importante de su crecimiento nominal está asociada al fuerte aumento de precios observado en estas economías. El mismo patrón se repite en Deflactor.PIB: Cluster 1 estable en 3.89, Cluster 2 elevado en 12.29 con Türkiye como outlier en 28.95, y Argentina en 54.15 sin ningún país cerca.

En Deflactor.Export la separación entre Cluster 1 (1.28) y Cluster 2 (2.36) es más moderada. Dentro del Cluster 2 se observa cierta heterogeneidad: Perú, Colombia e India presentan deflactores de exportación inferiores al promedio del grupo, mientras que Türkiye concentra los valores más elevados. Por su parte, Brasil (6.20) —perteneciente al Cluster 1— supera a varios países del Cluster 2, un resultado que refuerza la advertencia hecha en el análisis descriptivo sobre la influencia de los precios de materias primas en esta variable para economías exportadoras.

En T.Cambio, Argentina (95.08) domina visualmente el gráfico por la magnitud de su depreciación cambiaria. India (73.92) aparece como uno de los valores más altos de la muestra; sin embargo, esta magnitud refleja principalmente la denominación histórica de la rupia frente al dólar y no una depreciación extrema comparable a la observada en Argentina. Dentro del Cluster 1 aparecen tres outliers —República Checa (21.68), México (20.22) y Sudáfrica (14.78)— cuyo tipo de cambio alto responde igualmente a estructuras monetarias históricas y no a episodios de crisis cambiaria activa.

Finalmente, en Cta.Corriente la separación entre clusters cambia de dirección: mientras el Cluster 1 presenta una media positiva de 1.63% y el Cluster 3 de 1.37%, el Cluster 2 registra un déficit medio de -3.48%, el más bajo de los tres grupos. Esto es coherente con la interpretación del CP2 y con las correlaciones negativas identificadas entre cuenta corriente y crecimiento de importaciones e inversión: las economías del Cluster 2, al expandir simultáneamente consumo, inversión e importaciones, presionan su saldo externo hacia el déficit. Noruega (14.91%) e Irlanda (14.24%) aparecen como outliers positivos dentro del Cluster 1, por las razones estructurales ya explicadas en el análisis descriptivo.

8.3.7 Distribución por Cluster — Bloque 2: Dinamismo Económico Real

bloque2_long <- NuevaBase %>%
  pivot_longer(
    cols = c(Crec.Import, Crec.PIB.Vol, Crec.Inversión,
             Crec.Cons.Priv, Crec.Gasto.Pub),
    names_to  = "Variable",
    values_to = "Valor"
  ) %>%
  mutate(Variable = factor(Variable, levels = c(
    "Crec.Import", "Crec.PIB.Vol", "Crec.Inversión",
    "Crec.Cons.Priv", "Crec.Gasto.Pub"
  )))

plot_ly(
  bloque2_long,
  x = ~Variable, y = ~Valor,
  color = ~Cluster, colors = colores_cluster,
  type = "scatter", mode = "markers",
  jitter = 0.3,
  pointpos = 0,
  text  = ~paste0(Pais, "<br>", Variable, ": ", round(Valor, 2), "%"),
  hovertemplate = "%{text}<extra></extra>",
  marker = list(size = 8, opacity = 0.85)
) %>%
  layout(
    title = list(
      text = "Dinamismo Económico Real — Distribución por Cluster",
      font = list(color = "#4CA3DD", size = 15)
    ),
    paper_bgcolor = "#0F1620",
    plot_bgcolor  = "#0F1620",
    font   = list(color = "#DCE6F0"),
    xaxis  = list(title = "", tickangle = -30),
    yaxis  = list(title = "% crecimiento anual"),
    legend = list(title = list(text = "Cluster"),
                  font  = list(color = "#DCE6F0"))
  )

A diferencia del bloque inflacionario, donde la separación entre clusters seguía un patrón consistente en una sola dirección, en este bloque el Cluster 2 (Economías Emergentes Dinámicas) se distingue del Cluster 1 por mostrar sistemáticamente los valores más altos en las cinco variables, mientras que el Cluster 3 (Argentina) presenta un comportamiento menos consistente, destacando solo en algunas de ellas.

En Crec.Import, el Cluster 2 promedia 24.5% frente al 10.9% del Cluster 1, con India (35.5%), Chile (31.1%) y Colombia (28.7%) liderando el grupo. Resulta especialmente relevante que los tres valores más altos de la variable pertenezcan al Cluster 2, lo que refuerza la interpretación de este grupo como el de mayor dinamismo comercial dentro de la muestra. Ireland, perteneciente al Cluster 1, aparece como el único outlier negativo de toda la variable (-8.28%), un resultado que ya se había identificado en el análisis descriptivo y que confirma su comportamiento atípico dentro de su propio cluster.

Crec.PIB.Vol muestra la menor diferencia relativa entre clusters: 11.2% en el Cluster 2 frente a 5.64% en el Cluster 1, una brecha más moderada que en el resto de variables del bloque. El único outlier es nuevamente Ireland (13.4%), esta vez en dirección positiva, lo que refuerza su carácter atípico dentro del Cluster 1: presenta un crecimiento real elevado al mismo tiempo que registra contracciones importantes en otras variables del bloque.

En Crec.Inversión, el Cluster 2 alcanza un promedio de 17.5%, más del triple que el Cluster 1 (5.20%), con Perú (35.3%) como el valor más alto de toda la muestra. Argentina (33.4%) aparece aquí con un comportamiento llamativo: a pesar de pertenecer al Cluster 3 y de estar definido principalmente por su perfil inflacionario extremo, registra una tasa de crecimiento de la inversión comparable a la observada en varias economías del Cluster 2. Ireland vuelve a aparecer como outlier negativo (-39.1%), el valor más extremo de todo el bloque, consistente con el episodio de contracción de capital ya documentado.

Crec.Cons.Priv refuerza el perfil del Cluster 2 (14.1% frente a 5.48% del Cluster 1), con Chile (20.5%), Türkiye (15.7%) y Colombia (14.8%) como los tres outliers identificados. Resulta especialmente interesante que todos los valores atípicos positivos de esta variable pertenezcan al mismo cluster, reforzando la coherencia interna del grupo en términos de expansión de la demanda privada.

Finalmente, Crec.Gasto.Pub es la variable con la menor diferenciación entre clusters (7.10% en Cluster 3, 6.48% en Cluster 2 y 4.11% en Cluster 1), coherente con lo observado en el análisis de correlación, donde esta variable mostró asociaciones relativamente débiles con el resto de indicadores económicos considerados. El único outlier es United Kingdom (12.6%), perteneciente al Cluster 1, lo que indica que incluso dentro del grupo de economías más estables pueden presentarse episodios puntuales de expansión fiscal significativa.

En conjunto, este bloque confirma con datos numéricos lo que el ACP ya había anticipado en la interpretación del CP2: el Cluster 2 se caracteriza por una expansión simultánea del consumo, la inversión y las importaciones, el mismo patrón de demanda interna dinámica que definía uno de los extremos de ese componente. Por su parte, Ireland se consolida como el caso más atípico dentro del Cluster 1, al combinar un crecimiento real elevado con fuertes caídas en inversión e importaciones, un perfil poco frecuente entre las economías estables que integran este grupo.

8.3.8 Distribución por Cluster — Bloque 3: Tamaño Económico y Mercado Laboral

⚠️ Como se documentó en la Metodología, PIB.Nominal contiene errores de digitación en ocho países —entre ellos Korea, Colombia, Chile, India y Argentina—, y Empleo.Total presenta una inconsistencia adicional en el valor de Argentina. Las interpretaciones de ambas variables en este bloque deben leerse considerando esas advertencias.

bloque3_long <- NuevaBase %>%
  pivot_longer(
    cols = c(PIB.Nominal, PIB.PPA, Desempleo, Empleo.Total, T.Interés),
    names_to  = "Variable",
    values_to = "Valor"
  ) %>%
  mutate(Variable = factor(Variable, levels = c(
    "PIB.Nominal", "PIB.PPA", "Desempleo", "Empleo.Total", "T.Interés"
  )))

plot_ly(
  bloque3_long,
  x = ~Variable, y = ~Valor,
  color = ~Cluster, colors = colores_cluster,
  type = "scatter", mode = "markers",
  jitter = 0.3,
  pointpos = 0,
  text  = ~paste0(Pais, "<br>", Variable, ": ", round(Valor, 2)),
  hovertemplate = "%{text}<extra></extra>",
  marker = list(size = 8, opacity = 0.85)
) %>%
  layout(
    title = list(
      text = "Tamaño Económico y Mercado Laboral — Distribución por Cluster",
      font = list(color = "#4CA3DD", size = 15)
    ),
    paper_bgcolor = "#0F1620",
    plot_bgcolor  = "#0F1620",
    font   = list(color = "#DCE6F0"),
    xaxis  = list(title = "", tickangle = -30),
    yaxis  = list(title = "Valor", type = "log"),
    legend = list(title = list(text = "Cluster"),
                  font  = list(color = "#DCE6F0"))
  )

Este bloque combina dos dimensiones complementarias: el tamaño económico (PIB.Nominal y PIB.PPA) y el mercado laboral (Desempleo, Empleo.Total y T.Interés). Es, junto con el bloque inflacionario, donde más se evidencia el efecto de los errores de datos detectados previamente.

En PIB.Nominal, las medias por cluster muestran al Cluster 2 con el valor más alto (3.32e14), muy por encima del Cluster 1 (7.72e13) y el Cluster 3 (4.63e13). Sin embargo, esta jerarquía está directamente distorsionada por el error documentado. La mayoría de los valores atípicos de PIB.Nominal corresponden precisamente a los países afectados por el error de digitación documentado previamente, lo que confirma que la dispersión observada en esta variable está dominada por problemas de calidad de datos y no por diferencias económicas reales. Por esta razón, no se recomienda extraer conclusiones sobre el tamaño relativo de los clusters a partir de esta variable.

PIB.PPA, que no presenta inconsistencias conocidas, ofrece una imagen mucho más confiable. El Cluster 1 registra el mayor tamaño económico promedio (1.66×10¹²), seguido por el Cluster 2 (8.94×10¹¹) y el Cluster 3 (8.28×10¹¹). Aunque la diferencia entre los clusters es mucho menor que la observada en PIB.Nominal, sí se aprecia una mayor concentración de economías grandes dentro del Cluster 1. Los tres outliers de PIB.PPA —Estados Unidos, Japón y Alemania, todos del Cluster 1— confirman que el tamaño económico real excepcional está concentrado en un pequeño grupo de economías desarrolladas dentro de ese mismo cluster.

En Desempleo, el Cluster 2 presenta la media más alta (9.45%), seguido por el Cluster 3 (9.28%) y el Cluster 1 (7.03%) —aunque la diferencia entre los tres es moderada en comparación con otras variables del análisis—. Los cinco outliers de esta variable se reparten entre ambos clusters mayoritarios: Sudáfrica, España, Grecia y Brasil pertenecen al Cluster 1, mientras que Colombia es el único outlier del Cluster 2, lo que indica que el desempleo elevado no es una característica exclusiva de ningún grupo en particular, sino que responde más a condiciones estructurales propias de cada país que a su perfil macroeconómico general.

Empleo.Total muestra una situación similar a PIB.Nominal en cuanto a la necesidad de cautela: Argentina aparece como el segundo valor más alto de toda la variable (1.22e8), inmediatamente después de Estados Unidos, lo cual —como ya se documentó— es resultado de la inconsistencia identificada en esta cifra y no de un mercado laboral genuinamente comparable en tamaño al de la mayor economía de la muestra. Los demás outliers —Brazil, Japan y Mexico, todos del Cluster 1— sí son coherentes con su tamaño poblacional real.

Finalmente, T.Interés ofrece uno de los contrastes más claros del bloque: el Cluster 2 promedia 5.39%, más de quince veces superior al Cluster 1 (0.344%), mientras que el Cluster 3 (Argentina) se ubica en un punto intermedio con 2.46%. Türkiye (18.7%) es, por amplio margen, el valor más alto de toda la muestra. Entre los siguientes valores más elevados aparecen tanto economías del Cluster 2, como India, como economías emergentes integradas al Cluster 1, entre ellas Brasil, México y Sudáfrica. Este patrón confirma que las tasas de interés elevadas no son exclusivas de un único cluster, aunque sí aparecen con mayor frecuencia en economías sujetas a mayores presiones inflacionarias o de riesgo país.

En conjunto, este bloque refuerza una lección metodológica importante para la lectura del informe completo: mientras que variables como T.Interés, Desempleo y PIB.PPA ofrecen una caracterización confiable de los clusters, PIB.Nominal y Empleo.Total deben tratarse como evidencia secundaria, dado que su capacidad de diferenciar correctamente a los grupos está comprometida por los errores de datos documentados en la Metodología.

9 Conclusiones

El presente análisis partió de una pregunta de investigación concreta: ¿es posible identificar perfiles económicos diferenciados entre los países de la OCDE y las economías invitadas a partir de indicadores de presión inflacionaria, dinamismo real y tamaño económico, y qué características definen a cada grupo? La evidencia presentada a lo largo de este informe permite responder afirmativamente a esta pregunta.

El Análisis de Componentes Principales confirmó que las 15 variables seleccionadas no aportan información independiente entre sí, sino que se organizan en un número reducido de dimensiones interpretables. Los cuatro componentes retenidos, que en conjunto explican el 69.3% de la varianza total, mostraron una estructura coherente con la teoría económica: un primer componente dominante asociado a la presión inflacionaria y cambiaria (32.5% de la varianza), seguido de componentes vinculados al tamaño económico y la demanda interna, la escala productiva real y la política monetaria junto con el mercado laboral.

La clusterización jerárquica con el método de Ward, sustentada en esa misma estructura, identificó tres perfiles económicos claramente diferenciados entre los 42 países analizados. El Cluster 1, con 36 países, agrupa a la gran mayoría de las economías de la OCDE y se caracteriza principalmente por su estabilidad macroeconómica relativa: inflación moderada, crecimiento real estable y ausencia de desequilibrios extremos en las variables consideradas. El Cluster 2, conformado por Chile, Colombia, Türkiye, India y Perú, combina una presión inflacionaria moderadamente alta con un dinamismo de demanda interna —consumo, inversión e importaciones— muy superior al resto de la muestra. El Cluster 3, integrado únicamente por Argentina, representa un perfil de crisis macroeconómica sin comparación dentro del conjunto, con niveles de inflación, depreciación cambiaria y crecimiento nominal que superan ampliamente a cualquier otro país analizado.

En síntesis, los países analizados no se diferencian principalmente por su tamaño económico, sino por la combinación entre presión inflacionaria, estabilidad macroeconómica y dinamismo de la demanda interna, dimensiones que explican la formación de los tres perfiles identificados.

El análisis también reveló que la calidad de los datos es una condición indispensable para la validez de cualquier modelo de aprendizaje no supervisado. La identificación de errores de digitación en las variables PIB.Nominal y Empleo.Total —verificados mediante el cruce con variables de referencia confiables como PIB.PPA y la tasa de desempleo reportada— permitió aislar su impacto específico en los resultados: mientras que estas dos variables quedaron comprometidas como fuentes de interpretación, todo indica que la estructura general de los tres clusters se mantuvo estable frente a estos errores, en la medida en que la estandarización utilizada limitó su capacidad de distorsionar el conjunto completo del análisis. Cabe aclarar que esta conclusión se basa en la evidencia indirecta presentada —la contribución marginal de PIB.Nominal en los componentes retenidos y la coherencia de los clusters resultantes con variables no afectadas— y no en una prueba formal de robustez que repita el modelo excluyendo las variables comprometidas.

Desde una perspectiva económica, los resultados sugieren que las diferencias entre los países analizados no están determinadas únicamente por el nivel de desarrollo o el tamaño de sus economías. Países con escalas productivas muy distintas pueden compartir perfiles macroeconómicos similares cuando presentan patrones comparables de inflación, demanda interna y estabilidad externa. Del mismo modo, economías relativamente cercanas en términos de ingreso pueden ubicarse en grupos diferentes cuando enfrentan presiones inflacionarias o dinámicas de crecimiento sustancialmente distintas. Esto refuerza la utilidad de los enfoques multivariados para estudiar economías nacionales, ya que permiten identificar estructuras de comportamiento que no serían evidentes mediante el análisis aislado de una sola variable.

10 Recomendaciones y Limitaciones

Este estudio presenta limitaciones que conviene señalar de cara a futuros análisis. La principal es la calidad de la base de datos original: se identificaron errores de digitación en al menos dos de las 15 variables utilizadas, lo que sugiere la conveniencia de realizar una validación cruzada sistemática de todas las variables de la fuente —no solo de las que finalmente mostraron inconsistencias— antes de iniciar cualquier análisis multivariado similar en el futuro.

En segundo lugar, el carácter transversal de los datos (una sola observación por país, sin dimensión temporal) limita la posibilidad de explicar por qué ocurren los patrones identificados, restringiendo el análisis a la descripción de asociaciones y diferencias entre grupos en un momento específico. Un análisis de panel con observaciones de varios años permitiría distinguir si los perfiles encontrados son estructurales y persistentes en el tiempo, o si corresponden a un momento particular del ciclo económico de cada país.

Finalmente, el caso de Argentina como cluster individual plantea una pregunta metodológica relevante para trabajos futuros: ¿en qué punto un país atípico deja de ser un outlier dentro de un grupo más amplio y se convierte en una categoría propia? Este informe optó por mantener a Argentina como un cluster independiente porque la evidencia respalda esa decisión —incluyendo la verificación explícita de que sus valores extremos no son producto de los errores de datos identificados—, pero futuros análisis podrían explorar la sensibilidad de esta decisión utilizando criterios de detección de outliers multivariados antes de aplicar la clusterización, en lugar de descubrir el caso atípico como resultado del propio modelo.

11 Referencias