La economía mundial ha experimentado un período de alta incertidumbre durante los últimos años, caracterizado por la recuperación posterior a la pandemia de COVID-19, episodios inflacionarios persistentes, tensiones geopolíticas y cambios en las condiciones financieras internacionales. Estos acontecimientos han generado efectos significativos sobre el crecimiento económico, el comercio internacional, los mercados laborales y la estabilidad de precios, afectando de manera diferenciada a las economías alrededor del mundo.
De acuerdo con los informes OECD Economic Outlook 2024 y OECD Employment Outlook 2024, aunque la inflación ha mostrado señales de moderación en numerosos países, continúan existiendo desafíos asociados a la desaceleración del crecimiento económico, la evolución de las tasas de interés, la recuperación de la inversión productiva y la capacidad de los mercados laborales para sostener niveles elevados de empleo. Al mismo tiempo, el comercio internacional ha enfrentado cambios importantes derivados de la reorganización de cadenas globales de suministro, las fluctuaciones de los tipos de cambio y la incertidumbre económica global.
En este contexto, resulta relevante analizar de manera conjunta indicadores que reflejen el desempeño económico de los países desde diferentes dimensiones. Variables relacionadas con el crecimiento del producto interno bruto, la inversión, el consumo, la inflación, el empleo y el sector externo permiten evaluar no solo la capacidad de expansión económica de cada país, sino también su estabilidad macroeconómica y su fortaleza frente a choques externos.
La base de datos utilizada en este estudio contiene información económica y laboral de países pertenecientes a la Organización para la Cooperación y el Desarrollo Económicos (OECD). A partir de los lineamientos establecidos en los informes de perspectivas económicas y laborales de la organización, se seleccionaron indicadores asociados a cinco dimensiones fundamentales: crecimiento económico, mercado laboral, estabilidad de precios, demanda interna y sector externo. Estas variables permiten construir una visión integral del desempeño económico de los países y constituyen una base adecuada para la aplicación de técnicas de análisis multivariado orientadas a identificar patrones, similitudes y diferencias entre las economías estudiadas.
A partir de la información, el presente trabajo busca identificar las principales características que diferencian a los países de la OECD desde una perspectiva económica y laboral analizando en conjunto de indicadores relacionados con el crecimiento económico, el mercado laboral, la inflación, la demanda interna y el sector externo, se pretende reconocer patrones de comportamiento para así reducir la complejidad de los datos y obtener una visión más clara de las similitudes y diferencias existentes entre las economías analizadas.El presente estudio se desarrolló mediante la aplicación de técnicas de análisis multivariado sobre una base de datos compuesta por indicadores económicos y laborales de países pertenecientes a la OECD. Inicialmente, se realizó un proceso de depuración de la información para garantizar la calidad de los datos utilizados en el análisis. Posteriormente, las variables fueron estandarizadas con el fin de eliminar las diferencias de escala y permitir comparaciones adecuadas entre los distintos indicadores.
Como primera etapa analítica se llevó a cabo un análisis exploratorio de los datos mediante estadísticas descriptivas y el estudio de las correlaciones entre variables, con el propósito de identificar relaciones relevantes y posibles patrones iniciales en la información. Posteriormente, se aplicó un Análisis de Componentes Principales (ACP) para reducir la dimensionalidad de la base de datos y determinar cuáles eran las dimensiones que explicaban una mayor proporción de la variabilidad observada entre los países.
A partir de los resultados obtenidos en el ACP, se implementaron diferentes técnicas de clasificación no supervisada el algoritmo K-Means y el agrupamiento jerárquico aglomerativo, con el objetivo de identificar grupos de países con características económicas similares. Finalmente, se utilizó la metodología FactoClass, la cual combina la reducción de dimensionalidad y la clasificación de individuos, permitiendo obtener una caracterización más detallada de los grupos identificados y de las variables que mejor explican sus diferencias.La información utilizada en este trabajo proviene de una base de datos proporcionada por el docente, la cual reúne indicadores económicos y laborales de países pertenecientes a la OECD. La selección de esta base permite analizar economías con diferentes características y niveles de desempeño, facilitando la comparación entre países a partir de variables relacionadas con crecimiento económico, mercado laboral, inflación, demanda interna y sector externo.
La elección de estas dimensiones se encuentra alineada con los temas abordados en los informes OECD Economic Outlook 2024 y OECD Employment Outlook 2024, donde se destaca la importancia de estudiar de manera conjunta los factores que influyen en el crecimiento económico, la estabilidad macroeconómica y la generación de empleo. A partir de esta información, el trabajo busca identificar patrones comunes entre los países y comprender cuáles son las características que explican las diferencias observadas en su desempeño económico reciente.Para el desarrollo del análisis se seleccionaron quince variables cuantitativas: x1 (Cuenta corriente como porcentaje del PIB), x2 (Tipo de cambio de la moneda local frente al dólar estadounidense), x8 (Exportaciones netas como contribución al PIB real), x15 (Crecimiento del volumen de exportaciones), x16 (Crecimiento del volumen de importaciones), x17 (Crecimiento del PIB en volumen), x18 (Crecimiento del PIB nominal), x19 (Crecimiento del deflactor del PIB), x20 (Crecimiento de la formación bruta de capital), x21 (Crecimiento del consumo privado), x22 (Crecimiento del consumo del gobierno), x25 (Deflactor del PIB a precios de mercado), x26 (Tasa de desempleo), x27 (Empleo total según encuesta de fuerza laboral) y x28 (Fuerza laboral).
Estas variables fueron seleccionadas porque permiten representar diferentes aspectos de la economía de cada país. Los indicadores asociados al PIB, la inversión y el consumo reflejan el comportamiento de la actividad económica y de la demanda interna, las variables relacionadas con exportaciones, importaciones, cuenta corriente y tipo de cambio permiten analizar el sector externo, los deflactores del PIB aportan información sobre la evolución de los precios mientras que las variables de empleo, desempleo y fuerza laboral describen la situación del mercado laboral. Este conjunto de indicadores proporciona una visión amplia del desempeño económico de los países analizados y constituye la base para la aplicación de las técnicas estadísticas utilizadas en el estudio.¨En este estudio se utilizaron técnicas de análisis multivariado con el propósito de identificar patrones económicos entre los países de la OECD y reducir la complejidad de la información contenida en las variables seleccionadas. En primer lugar, se aplicó un Análisis de Componentes Principales (ACP), cuya finalidad fue resumir la información original en un número reducido de dimensiones capaces de explicar la mayor parte de la variabilidad observada entre los países. Esta técnica permitió identificar cuáles variables tenían una mayor influencia en las diferencias económicas presentes en la base de datos y facilitó la representación gráfica de los resultados.
Posteriormente, se empleó el algoritmo K-Means para agrupar países con características económicas similares. Este método busca formar grupos internamente homogéneos y externamente diferenciados, permitiendo identificar perfiles económicos comunes entre los países analizados. La selección del número de grupos se apoyó en criterios de validación como el método del codo y el coeficiente de silueta.
Como complemento, se implementó un procedimiento de agrupamiento jerárquico aglomerativo utilizando distancia euclidiana y el método de Ward.(ESTO NO SE SI VA) Esta técnica construye una estructura de agrupación basada en la similitud entre observaciones, permitiendo visualizar las relaciones existentes entre los países mediante un dendrograma y comparar los resultados obtenidos con el algoritmo K-Means.
De esta manera, el ACP permitió reducir la dimensionalidad de los datos y facilitar su interpretación, mientras que los métodos de agrupamiento hicieron posible identificar conjuntos de países con comportamientos económicos semejantes.library(readxl)
library(tidyverse)
library(factoextra)
library(reshape2)
library(corrplot)
library(FactoClass)
library(dendextend)
library(gt)
library(dplyr)
library(ggplot2)
library(plotly)DatosEcon <- read_excel("DatosEcon.xlsx")
paises <- DatosEcon$Pais
variablesnombres <- c(
"x1" = "Cuenta corriente (% PIB)",
"x2" = "Tipo de cambio (moneda local/USD)",
"x8" = "Exportaciones netas (contribución al PIB real)",
"x15" = "Exportaciones (volumen, crecimiento)",
"x16" = "Importaciones (volumen, crecimiento)",
"x17" = "PIB (volumen, crecimiento)",
"x18" = "PIB (nominal, crecimiento)",
"x19" = "Deflactor del PIB (crecimiento)",
"x20" = "Formación bruta de capital (volumen, crecimiento)",
"x21" = "Consumo privado (volumen, crecimiento)",
"x22" = "Consumo gobierno (volumen, crecimiento)",
"x25" = "Deflactor del PIB (precios mercado)",
"x26" = "Tasa de desempleo",
"x27" = "Empleo total (encuesta fuerza laboral)",
"x28" = "Fuerza laboral"
)
variables <- c("x26", "x27", "x28", "x17", "x21", "x22",
"x20", "x19", "x15", "x16", "x1", "x8",
"x2", "x18", "x25")
vars_porcentaje <- c("x26", "x17", "x21", "x22", "x20", "x19", "x15", "x16", "x1", "x8", "x18", "x25")
vars_miles <- c("x27", "x28", "x2")
datos_tabla <- DatosEcon %>%
select(Pais, all_of(variables))
datos_tabla <- datos_tabla %>%
mutate(across(all_of(vars_porcentaje),
~ ifelse(is.na(.), NA, paste0(round(.x * 100, 1), "%")))) %>%
mutate(across(all_of(vars_miles),
~ ifelse(is.na(.), NA, format(round(.x, 0), big.mark = ".", decimal.mark = ","))))
nombres_rename <- setNames(names(variablesnombres), variablesnombres)
datos_tabla <- datos_tabla %>% rename(!!!nombres_rename)
gt(datos_tabla) %>%
tab_header(
title = md("**Base de datos económicos**"),
subtitle = "Variables seleccionadas (primeros 10 países)"
) %>%
cols_label(Pais = "País") %>%
tab_style(
style = list(
cell_fill(color = "#D81B60"),
cell_text(color = "white", weight = "bold")
),
locations = cells_column_labels(everything())
) %>%
tab_style(
style = list(
cell_fill(color = "#FCE4EC"),
cell_text(color = "black")
),
locations = cells_body(rows = everything())
) %>%
opt_row_striping() %>%
tab_options(
table.width = pct(100),
table.font.size = "small",
heading.title.font.size = "large",
row.striping.background_color = "#F8BBD9",
table.border.top.color = "#D81B60",
table.border.bottom.color = "#D81B60",
container.height = px(400), # <- altura fija del contenedor
container.overflow.y = "auto" # <- scroll vertical automático
) %>%
tab_source_note("Fuente: Datos económicos - Elaboración propia")| Base de datos económicos | |||||||||||||||
| Variables seleccionadas (primeros 10 países) | |||||||||||||||
| País | Tasa de desempleo | Empleo total (encuesta fuerza laboral) | Fuerza laboral | PIB (volumen, crecimiento) | Consumo privado (volumen, crecimiento) | Consumo gobierno (volumen, crecimiento) | Formación bruta de capital (volumen, crecimiento) | Deflactor del PIB (crecimiento) | Exportaciones (volumen, crecimiento) | Importaciones (volumen, crecimiento) | Cuenta corriente (% PIB) | Exportaciones netas (contribución al PIB real) | Tipo de cambio (moneda local/USD) | PIB (nominal, crecimiento) | Deflactor del PIB (precios mercado) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Australia | 511.6% | 13.065.036 | 13.769.485 | 492.2% | 503.3% | 535.3% | 977.4% | 540.2% | -206.7% | 647.9% | 309% | -1.7% | 1 | 1059% | 105.9% |
| Austria | 618.1% | 4.305.875 | 4.589.575 | 472.6% | 337% | 788.8% | 873.2% | 194.3% | 1023.5% | 1365.1% | 35.4% | -1.4% | 1 | 676.1% | 111.1% |
| Belgium | 625.7% | 5.071.000 | 5.409.482 | 613.4% | 554.7% | 483.9% | 486.5% | 292.6% | 1125.9% | 1066.6% | 43% | 0.7% | 1 | 923.9% | 112.1% |
| Canada | 743.1% | 18.871.842 | 20.386.733 | 454.1% | 488.1% | 582.6% | 713.6% | 806.9% | 139.3% | 770% | 4.3% | -2% | 1 | 1297.7% | 119.3% |
| Chile | 884.1% | 8.304.011 | 9.109.354 | 1185.8% | 2050.5% | 1042.8% | 1804.4% | 760.9% | -143.8% | 3111% | -650% | -8.9% | 1 | 2036.9% | 120% |
| Colombia | 1379.4% | 20.391.741 | 23.654.636 | 1067.7% | 1476.6% | 1032.8% | 1115.6% | 650.2% | 1482.6% | 2869.9% | -563.7% | -3.9% | 4 | 1787.3% | 129.9% |
| Czech Republic | 282% | 5.206.152 | 5.357.246 | 348.8% | 402.2% | 154.1% | 61.4% | 333% | 676.8% | 1322.6% | -83.6% | -3.6% | 22 | 693.4% | 117.7% |
| Denmark | 515.4% | 2.797.250 | 2.949.250 | 485.7% | 413.4% | 416.3% | 624.3% | 277.1% | 799.7% | 797.2% | 903.2% | 0.5% | 6 | 776.3% | 114.9% |
| Estonia | 617.7% | 654.225 | 697.300 | 809.2% | 673.3% | 389.9% | 695.4% | 575.4% | 1997.6% | 2137.3% | -227.5% | -0.9% | 1 | 1431.2% | 120.5% |
| Finland | 763.6% | 2.552.167 | 2.763.167 | 297.2% | 365.6% | 291.9% | 146.4% | 254.8% | 544.2% | 596.6% | 64.1% | -0.2% | 1 | 559.6% | 108.7% |
| France | 791.3% | 27.727.600 | 30.110.100 | 676.6% | 527% | 640.2% | 1139.3% | 133.2% | 860.7% | 783.3% | 35.9% | 0.1% | 1 | 818.7% | 108.9% |
| Germany | 357.5% | 41.374.167 | 42.908.333 | 258.1% | 39.9% | 379.1% | 104.6% | 305.6% | 953.6% | 887.4% | 746.4% | 0.8% | 1 | 571.6% | 112.4% |
| Greece | 1471.4% | 3.928.000 | 4.605.675 | 833.6% | 779% | 373.9% | 1961.1% | 207.8% | 2193.8% | 1606.6% | -671.1% | 0.7% | 1 | 1058.7% | 101% |
| Hungary | 404.1% | 4.635.275 | 4.830.475 | 711.7% | 489.9% | 198.2% | 515.8% | 630.3% | 1025.1% | 909.5% | -417.7% | 1.1% | 3 | 1386.9% | 131% |
| Iceland | 598.6% | 195.925 | 208.400 | 440.3% | 774.1% | 219.7% | 1229.7% | 599.7% | 1272.6% | 2034.4% | -160.4% | -2.7% | 1 | 1066.4% | 121.6% |
| Ireland | 618.9% | 2.388.800 | 2.546.400 | 1342.7% | 446.7% | 605.8% | -3907% | 44% | 1396.8% | -828.3% | 1424.4% | 27.9% | 1 | 1392.5% | 100.6% |
| Israel | 494.1% | 3.957.702 | 4.163.427 | 853.9% | 1108% | 425.8% | 1147.3% | 219.7% | 1449.5% | 2071.3% | 427.2% | -0.8% | 3 | 1092.4% | 106.1% |
| Italy | 948.2% | 22.558.686 | 24.921.751 | 671.7% | 514.7% | 153.3% | 1652.4% | 54.1% | 1352% | 1484.3% | 305.8% | 0.1% | 1 | 729.5% | 106.2% |
| Japan | 282% | 67.123.333 | 69.070.833 | 164.1% | 130.3% | 209.6% | -147.4% | -86.8% | 1175.6% | 508.4% | 397.5% | 1% | 11 | 75.9% | 101% |
| Korea | 362.6% | 27.270.483 | 28.296.633 | 414.5% | 370.2% | 563.3% | 276.4% | 249.8% | 1084.5% | 1006.2% | 485.8% | 0.7% | 11 | 674.7% | 108.1% |
| Luxembourg | 573.4% | 281.550 | 298.677 | 509.8% | 943.1% | 545.8% | 610.9% | 611.9% | 972.1% | 1186.8% | 467.6% | -0.2% | 1 | 1152.9% | 116.1% |
| Mexico | 413.4% | 54.998.526 | 57.370.318 | 478.2% | 749% | 98.5% | 948.4% | 708.4% | 690.7% | 1362.6% | -37% | -2.2% | 20 | 1220.5% | 147.5% |
| Netherlands | 422.3% | 9.254.000 | 9.662.000 | 487.1% | 358.4% | 522% | 320.5% | 250.2% | 526.2% | 401.4% | 718.5% | 1.4% | 1 | 749.5% | 112.2% |
| New Zealand | 376.8% | 2.790.000 | 2.899.250 | 480.1% | 620.6% | 992.2% | 902.1% | 285.9% | -358.6% | 1494% | -587% | -4.3% | 1 | 779.7% | 128.1% |
| Norway | 444.6% | 2.772.750 | 2.901.750 | 388.1% | 487.3% | 376.2% | -92.6% | 1691.1% | 470.9% | 228.1% | 1491.3% | 0.8% | 9 | 2144.9% | 112.7% |
| Poland | 336.2% | 16.656.000 | 17.235.500 | 684.8% | 627.8% | 496% | 205% | 505.2% | 1245.2% | 1612.6% | -146.3% | -1% | 4 | 1224.6% | 116.3% |
| Portugal | 657.7% | 4.812.300 | 5.151.075 | 548.2% | 465.4% | 457.6% | 868.4% | 139.9% | 1345.6% | 1331.8% | -117.1% | -0.2% | 1 | 695.8% | 108.8% |
| Slovak Republic | 682.6% | 2.560.550 | 2.748.150 | 301.4% | 182% | 415.5% | 21.6% | 238.3% | 1056% | 1196% | -250.2% | -0.9% | 1 | 546.9% | 110.4% |
| Slovenia | 475.5% | 971.500 | 1.020.000 | 821.1% | 950.6% | 577.3% | 1368.6% | 260.7% | 1450% | 1758.5% | 380.3% | -0.8% | 1 | 1103.2% | 116.2% |
| Spain | 1478.1% | 19.773.600 | 23.203.150 | 552% | 597.2% | 285.8% | 92% | 230.1% | 1437.8% | 1392.4% | 95.5% | 0.3% | 1 | 794.8% | 108.1% |
| Sweden | 880.1% | 5.057.750 | 5.545.858 | 483% | 588% | 251.3% | 598.8% | 304.2% | 756.5% | 926% | 536.4% | -0.3% | 9 | 801.9% | 100% |
| Switzerland | 508.9% | 4.684.277 | 4.935.422 | 423% | 169.3% | 346.8% | 414.6% | 105.7% | 1218.3% | 487.9% | 740.1% | 5% | 1 | 533.2% | 100% |
| Türkiye | 1202.3% | 28.758.583 | 32.688.917 | 1135.3% | 1572.2% | 265.6% | 739.9% | 2895.1% | 2489.4% | 238.3% | -169.8% | 6.4% | 9 | 4359.1% | 360.7% |
| United Kingdom | 449.2% | 32.406.750 | 33.931.000 | 752.5% | 623.1% | 1263.1% | 556.2% | 36.9% | -30.1% | 278.1% | -200.4% | -0.9% | 1 | 792.2% | 106.3% |
| United States | 535.1% | 152.578.500 | 161.204.000 | 594.7% | 829.4% | 130.9% | 571.9% | 449.2% | 605.4% | 1413.4% | -363% | -1.2% | 1 | 1070.5% | 118.9% |
| Argentina | 927.7% | 121.937.875 | 133.194.875 | 1039.8% | 1002.5% | 709.7% | 3342.5% | 5415.2% | 921.8% | 2202% | 137.3% | -1.5% | 95 | 7018.2% | 6715.2% |
| Brazil | 1320.4% | 91.297.250 | 105.185.750 | 494.8% | 360.8% | 200.1% | 1730.7% | 1074.9% | 642.3% | 1302.4% | -176.5% | -1% | 5 | 1622.8% | 468.7% |
| Croatia | 761.1% | 1.678.250 | 1.816.500 | 980.4% | 992.4% | 318.3% | 747.8% | 308% | 2782.3% | 1442.4% | 42% | 5% | 6 | 1318.6% | 108.4% |
| India | 674.1% | 9.295.687 | 9.892.225 | 868.1% | 791% | 257.1% | 1580.1% | 996.6% | 2432.4% | 3546.5% | -119.7% | -2.9% | 74 | 1951.3% | 160.6% |
| Peru | 587.1% | 16.913.125 | 17.967.950 | 1324% | 1144% | 640.1% | 3531.8% | 841.4% | 1704% | 2501.4% | -238.9% | -2.3% | 4 | 2276.8% | 156.9% |
| Romania | 559.6% | 7.746.200 | 8.205.395 | 510% | 707.5% | 40.6% | 291.1% | 541.7% | 1253.2% | 1462.7% | -728.2% | -1.4% | 4 | 1079.3% | 153.7% |
| SouthAfrica | 3426.7% | 14.690.764 | 22.348.983 | 491.3% | 558.7% | 55.8% | 22.2% | 621.9% | 998.7% | 949.4% | 367.7% | 0.1% | 15 | 1143.8% | 137.5% |
| Fuente: Datos económicos - Elaboración propia | |||||||||||||||
datos_pca <- as.data.frame(na.omit(DatosEcon[, variables]))
datos_scaled <- as.data.frame(scale(datos_pca))tabla_laboral <- data.frame(
Código = c("x26", "x27", "x28"),
Variable = c(variablesnombres["x26"], variablesnombres["x27"], variablesnombres["x28"]),
Descripcion = c(
"Indicador principal del mercado laboral. Según OECD Employment Outlook 2024, tasas bajas reflejan resiliencia y mercados ajustados.",
"Refleja la capacidad de generación de puestos de trabajo formales e informales. Base para políticas de empleo.",
"
Determina el tamaño de la oferta laboral y la tasa de participación."
)
)
gt(tabla_laboral) %>%
tab_header(
title = "Dimensión 1: Mercado Laboral",
subtitle = "OECD Employment Outlook 2024"
) %>%
tab_style(
style = list(
cell_fill(color = "#D81B60"),
cell_text(color = "white", weight = "bold")
),
locations = cells_column_labels(everything())
) %>%
tab_style(
style = cell_fill(color = "white"),
locations = cells_body(rows = 1)
) %>%
tab_style(
style = cell_fill(color = "#FCE4EC"),
locations = cells_body(rows = 2)
) %>%
tab_style(
style = cell_fill(color = "#F8BBD9"),
locations = cells_body(rows = 3)
) %>%
tab_options(
table.width = pct(100),
table.font.size = "small",
heading.background.color = "#F48FB1"
) %>%
tab_source_note(
source_note = "Nota: Interpretaciones basadas en OECD Economic Outlook y Employment Outlook 2024."
)| Dimensión 1: Mercado Laboral | ||
| OECD Employment Outlook 2024 | ||
| Código | Variable | Descripcion |
|---|---|---|
| x26 | Tasa de desempleo | Indicador principal del mercado laboral. Según OECD Employment Outlook 2024, tasas bajas reflejan resiliencia y mercados ajustados. |
| x27 | Empleo total (encuesta fuerza laboral) | Refleja la capacidad de generación de puestos de trabajo formales e informales. Base para políticas de empleo. |
| x28 | Fuerza laboral | Determina el tamaño de la oferta laboral y la tasa de participación. |
| Nota: Interpretaciones basadas en OECD Economic Outlook y Employment Outlook 2024. | ||
tabla_crecimiento <- data.frame(
Código = c("x17", "x18", "x8"),
Variable = c(variablesnombres["x17"], variablesnombres["x18"], variablesnombres["x8"]),
Descripcion = c(
"Mide la expansión real de la economía. OECD Economic Outlook 2024: crecimiento global estable (3.3% en 2025-2026).",
"Crecimiento en precios corrientes. Refleja la evolución nominal del PIB, incluyendo efectos de precios.",
"Contribución del sector externo al crecimiento. Exportaciones netas como porcentaje del PIB real."))
tabla_crecimiento[] <- lapply(
tabla_crecimiento,
function(x) if (is.character(x)) iconv(x, from = "", to = "UTF-8", sub = "") else x)
gt(tabla_crecimiento) %>%
tab_header(
title = "Dimensión 2: Crecimiento Económico",
subtitle = "OECD Economic Outlook 2024"
) %>%
tab_style(
style = list(
cell_fill(color = "#D81B60"),
cell_text(color = "white", weight = "bold")
),
locations = cells_column_labels(everything())
) %>%
tab_style(
style = cell_fill(color = "white"),
locations = cells_body(rows = 1)
) %>%
tab_style(
style = cell_fill(color = "#FCE4EC"),
locations = cells_body(rows = 2)
) %>%
tab_style(
style = cell_fill(color = "#F8BBD9"),
locations = cells_body(rows = 3)
) %>%
tab_options(
table.width = pct(100),
table.font.size = "small",
heading.background.color = "#F48FB1"
) %>%
tab_source_note(
source_note = "Nota: Interpretaciones basadas en OECD Economic Outlook y Employment Outlook 2024."
)| Dimensión 2: Crecimiento Económico | ||
| OECD Economic Outlook 2024 | ||
| Código | Variable | Descripcion |
|---|---|---|
| x17 | PIB (volumen, crecimiento) | Mide la expansión real de la economía. OECD Economic Outlook 2024: crecimiento global estable (3.3% en 2025-2026). |
| x18 | PIB (nominal, crecimiento) | Crecimiento en precios corrientes. Refleja la evolución nominal del PIB, incluyendo efectos de precios. |
| x8 | Exportaciones netas (contribución al PIB real) | Contribución del sector externo al crecimiento. Exportaciones netas como porcentaje del PIB real. |
| Nota: Interpretaciones basadas en OECD Economic Outlook y Employment Outlook 2024. | ||
tabla_precios <- data.frame(
Código = c("x19", "x25", "x2"),
Variable = c(variablesnombres["x19"], variablesnombres["x25"], variablesnombres["x2"]),
Descripcion = c(
"Variación anual del deflactor del PIB. Indicador amplio de inflación. OECD: inflación en descenso (5.4% en 2024 a 3.3% en 2025).",
"Deflactor del PIB a precios de mercado. Refleja los cambios en los precios de todos los bienes y servicios producidos.",
"Precio de la moneda local frente al dólar. Afecta la competitividad y la inflación importada."
)
)
gt(tabla_precios) %>%
tab_header(
title = "Dimensión 3: Precios e Inflación",
subtitle = "OECD Economic Outlook 2024"
) %>%
tab_style(
style = list(
cell_fill(color = "#D81B60"),
cell_text(color = "white", weight = "bold")
),
locations = cells_column_labels(everything())
) %>%
tab_style(
style = cell_fill(color = "white"),
locations = cells_body(rows = 1)
) %>%
tab_style(
style = cell_fill(color = "#FCE4EC"),
locations = cells_body(rows = 2)
) %>%
tab_style(
style = cell_fill(color = "#F8BBD9"),
locations = cells_body(rows = 3)
) %>%
tab_options(
table.width = pct(100),
table.font.size = "small",
heading.background.color = "#F48FB1"
) %>%
tab_source_note(
source_note = "Nota: Interpretaciones basadas en OECD Economic Outlook y Employment Outlook 2024."
)| Dimensión 3: Precios e Inflación | ||
| OECD Economic Outlook 2024 | ||
| Código | Variable | Descripcion |
|---|---|---|
| x19 | Deflactor del PIB (crecimiento) | Variación anual del deflactor del PIB. Indicador amplio de inflación. OECD: inflación en descenso (5.4% en 2024 a 3.3% en 2025). |
| x25 | Deflactor del PIB (precios mercado) | Deflactor del PIB a precios de mercado. Refleja los cambios en los precios de todos los bienes y servicios producidos. |
| x2 | Tipo de cambio (moneda local/USD) | Precio de la moneda local frente al dólar. Afecta la competitividad y la inflación importada. |
| Nota: Interpretaciones basadas en OECD Economic Outlook y Employment Outlook 2024. | ||
tabla_demanda <- data.frame(
Código = c("x21", "x22", "x20"),
Variable = c(variablesnombres["x21"], variablesnombres["x22"], variablesnombres["x20"]),
Descripcion = c(
"Consumo de los hogares. Motor principal del crecimiento. OECD 2024: respaldado por ingresos reales y mercado laboral resiliente.",
"Consumo del gobierno. Gasto público en bienes y servicios. Política fiscal y provisión de servicios públicos.",
"Formación bruta de capital (inversión). Refleja la acumulación de activos fijos. Clave para la capacidad productiva futura."))
tabla_demanda[] <- lapply(
tabla_crecimiento,
function(x) if (is.character(x)) iconv(x, from = "", to = "UTF-8", sub = "") else x)
gt(tabla_demanda) %>%
tab_header(
title = "Dimensión 4: Demanda Interna",
subtitle = "OECD Economic Outlook 2024"
) %>%
tab_style(
style = list(
cell_fill(color = "#D81B60"),
cell_text(color = "white", weight = "bold")
),
locations = cells_column_labels(everything())
) %>%
tab_style(
style = cell_fill(color = "white"),
locations = cells_body(rows = 1)
) %>%
tab_style(
style = cell_fill(color = "#FCE4EC"),
locations = cells_body(rows = 2)
) %>%
tab_style(
style = cell_fill(color = "#F8BBD9"),
locations = cells_body(rows = 3)
) %>%
tab_options(
table.width = pct(100),
table.font.size = "small",
heading.background.color = "#F48FB1"
) %>%
tab_source_note(
source_note = "Nota: Interpretaciones basadas en OECD Economic Outlook y Employment Outlook 2024."
)| Dimensión 4: Demanda Interna | ||
| OECD Economic Outlook 2024 | ||
| Código | Variable | Descripcion |
|---|---|---|
| x17 | PIB (volumen, crecimiento) | Mide la expansión real de la economía. OECD Economic Outlook 2024: crecimiento global estable (3.3% en 2025-2026). |
| x18 | PIB (nominal, crecimiento) | Crecimiento en precios corrientes. Refleja la evolución nominal del PIB, incluyendo efectos de precios. |
| x8 | Exportaciones netas (contribución al PIB real) | Contribución del sector externo al crecimiento. Exportaciones netas como porcentaje del PIB real. |
| Nota: Interpretaciones basadas en OECD Economic Outlook y Employment Outlook 2024. | ||
tabla_comercio <- data.frame(
Código = c("x15", "x16", "x1"),
Variable = c(variablesnombres["x15"], variablesnombres["x16"], variablesnombres["x1"]),
Descripcion = c(
"Crecimiento del volumen de exportaciones. Mide la demanda externa de bienes nacionales. OECD: recuperación del comercio global más rápida de lo esperado.",
"Crecimiento del volumen de importaciones. Refleja la demanda interna de bienes extranjeros y la integración global.",
"Saldo de la balanza por cuenta corriente (% PIB). Indica si el país es prestamista o deudor neto con el resto del mundo."
)
)
gt(tabla_comercio) %>%
tab_header(
title = "Dimensión 5: Comercio Exterior",
subtitle = "OECD Economic Outlook 2024"
) %>%
tab_style(
style = list(
cell_fill(color = "#D81B60"),
cell_text(color = "white", weight = "bold")
),
locations = cells_column_labels(everything())
) %>%
tab_style(
style = cell_fill(color = "white"),
locations = cells_body(rows = 1)
) %>%
tab_style(
style = cell_fill(color = "#FCE4EC"),
locations = cells_body(rows = 2)
) %>%
tab_style(
style = cell_fill(color = "#F8BBD9"),
locations = cells_body(rows = 3)
) %>%
tab_options(
table.width = pct(100),
table.font.size = "small",
heading.background.color = "#F48FB1"
) %>%
tab_source_note(
source_note = "Nota: Interpretaciones basadas en OECD Economic Outlook y Employment Outlook 2024."
)| Dimensión 5: Comercio Exterior | ||
| OECD Economic Outlook 2024 | ||
| Código | Variable | Descripcion |
|---|---|---|
| x15 | Exportaciones (volumen, crecimiento) | Crecimiento del volumen de exportaciones. Mide la demanda externa de bienes nacionales. OECD: recuperación del comercio global más rápida de lo esperado. |
| x16 | Importaciones (volumen, crecimiento) | Crecimiento del volumen de importaciones. Refleja la demanda interna de bienes extranjeros y la integración global. |
| x1 | Cuenta corriente (% PIB) | Saldo de la balanza por cuenta corriente (% PIB). Indica si el país es prestamista o deudor neto con el resto del mundo. |
| Nota: Interpretaciones basadas en OECD Economic Outlook y Employment Outlook 2024. | ||
nombres_cor <- c(
"x1" = "Cta. cte. (% PIB)",
"x2" = "Tipo cambio (mon./USD)",
"x8" = "Exp. netas (cont. PIB real)",
"x15" = "Exp. (vol, cr)",
"x16" = "Imp. (vol, cr)",
"x17" = "PIB (vol, cr)",
"x18" = "PIB (nom, cr)",
"x19" = "Defl. PIB (cr)",
"x20" = "FBC (vol, cr)",
"x21" = "Cons. priv. (vol, cr)",
"x22" = "Cons. gob. (vol, cr)",
"x25" = "Defl. PIB (prec. mdo)",
"x26" = "Tasa desempleo",
"x27" = "Empleo total",
"x28" = "Fuerza laboral"
)
datos_cor <- datos_pca
names(datos_cor) <- nombres_cor[names(datos_pca)]
cor_matrix <- cor(datos_cor, use = "complete.obs")
# Paleta
mi_paleta <- colorRampPalette(c("white", "#FCE4EC", "#F8BBD9", "#F48FB1", "#D81B60"))(200)
corrplot(cor_matrix,
method = "color",
type = "upper",
order = "hclust",
col = mi_paleta,
addCoef.col = "black",
tl.col = "black",
tl.srt = 45,
tl.cex = 0.9,
number.cex = 0.7,
mar = c(0, 0, 2, 0))
title(main = "Matriz de Correlación",
cex.main = 1.5, font.main = 2, col.main = "#D81B60")En general, las correlaciones más altas se observan entre variables pertenecientes a una misma dimensión económica, lo que sugiere que estas capturan fenómenos similares y justifica la aplicación posterior de técnicas de reducción de dimensionalidad.
En el mercado laboral se observa una correlación muy alta entre el empleo total y la fuerza laboral. Este resultado era esperado, ya que ambas variables reflejan el tamaño del mercado de trabajo de cada país y tienden a evolucionar en la misma dirección a pesar de esta asociación, se decidió conservar ambas variables debido a que aportan información complementaria sobre las condiciones laborales de las economías analizadas.
Las asociaciones más fuertes se presentan en la dimensión de precios e inflación. El crecimiento del deflactor del PIB muestra una correlación de 0.97 con el crecimiento nominal del PIB, mientras que el deflactor del PIB a precios de mercado presenta correlaciones de 0.85 y 0.82 con estas variables sugiriendo que una parte importante de las diferencias observadas en el crecimiento nominal entre países está asociada a la evolución de los precios y que el tipo de cambio presenta correlaciones positivas cercanas a 0.70 con los indicadores inflacionarios, reflejando la relación existente entre las variaciones cambiarias y el comportamiento de los precios
En cuanto a la actividad económica, el crecimiento del PIB real registra una correlación de 0.74 con el crecimiento del consumo privado, lo que resalta la importancia de la demanda de los hogares como motor del crecimiento. Asimismo, la formación bruta de capital fijo presenta una correlación de 0.68 con el crecimiento de las importaciones, sugiriendo que los procesos de inversión suelen estar acompañados por una mayor demanda de bienes provenientes del exterior.
Finalmente, se observa una correlación positiva entre el saldo de cuenta corriente y la contribución de las exportaciones netas al PIB, lo que evidencia la importancia del sector externo en la diferenciación económica de los países analizados.res.pca <- prcomp(datos_pca, scale = TRUE)
fviz_eig(res.pca, addlabels = TRUE,
barfill = "#FCE4EC",
barcolor = "#D81B60",
linecolor = "#D81B60",
xlab = "Componentes",
ylab = "Porcentaje de varianza explicada")+
theme_minimal() +
theme(plot.title = element_text(color = "#D81B60", face = "bold"))eigen_tabla <- get_eigenvalue(res.pca)
eigen_df <- as.data.frame(eigen_tabla) %>%
mutate(
variance.percent = variance.percent * 1,
cumulative.variance.percent = cumulative.variance.percent * 1
)
eigen_df %>%
gt() %>%
tab_header(
title = md("**Valores propios del análisis de componentes principales**"),
subtitle = "Varianza explicada por cada componente"
) %>%
cols_label(
eigenvalue = "Valor propio",
variance.percent = "Varianza (%)",
cumulative.variance.percent = "Varianza acumulada (%)"
) %>%
fmt_number(
columns = c(eigenvalue, variance.percent, cumulative.variance.percent),
decimals = 2
) %>%
tab_style(
style = list(
cell_fill(color = "#D81B60"),
cell_text(color = "white", weight = "bold")
),
locations = cells_column_labels(everything())
) %>%
tab_style(
style = list(
cell_fill(color = "#FCE4EC"),
cell_text(color = "black")
),
locations = cells_body(rows = everything())
) %>%
opt_row_striping() %>%
tab_options(
table.width = pct(100),
table.font.size = "small",
heading.title.font.size = "large",
row.striping.background_color = "#F8BBD9",
table.border.top.color = "#D81B60",
table.border.bottom.color = "#D81B60",
container.height = px(400),
container.overflow.y = "auto"
) %>%
tab_source_note("Fuente: Resultados del PCA - Elaboración propia")| Valores propios del análisis de componentes principales | ||
| Varianza explicada por cada componente | ||
| Valor propio | Varianza (%) | Varianza acumulada (%) |
|---|---|---|
| 5.00 | 33.36 | 33.36 |
| 2.71 | 18.08 | 51.45 |
| 2.16 | 14.43 | 65.87 |
| 1.49 | 9.90 | 75.78 |
| 1.12 | 7.46 | 83.24 |
| 0.88 | 5.86 | 89.10 |
| 0.46 | 3.09 | 92.19 |
| 0.42 | 2.82 | 95.01 |
| 0.36 | 2.42 | 97.44 |
| 0.17 | 1.10 | 98.54 |
| 0.12 | 0.82 | 99.36 |
| 0.07 | 0.47 | 99.83 |
| 0.02 | 0.16 | 100.00 |
| 0.00 | 0.00 | 100.00 |
| 0.00 | 0.00 | 100.00 |
| Fuente: Resultados del PCA - Elaboración propia | ||
loadings <- res.pca$rotation
cos2 <- loadings^2
pc1_loadings <- loadings[, 1]
pc1_cos2 <- cos2[, 1]
# === CAMBIO 1: iconv en lugar de enc2utf8 ===
tabla_pc1 <- data.frame(
Variable = iconv(variablesnombres[rownames(loadings)], to = "UTF-8", sub = " "),
Loading = pc1_loadings,
Cos2 = pc1_cos2
)
# Ordenar
tabla_pc1 <- tabla_pc1[order(-tabla_pc1$Cos2), ]
gt(tabla_pc1) %>%
tab_header(
# === CAMBIO 2: enc2utf8 en el título ===
title = enc2utf8(paste0("Contribución de Variables al Componente Principal 1 (",
round(summary(res.pca)$importance[2, 1] * 100, 1), "% de varianza)")),
subtitle = "Cargas (loadings) y coseno al cuadrado (cos²)" # este no suele dar problema, pero si falla, ponle enc2utf8 también
) %>%
cols_label(
Variable = "Variable",
Loading = "Loading",
Cos2 = "Cos²"
) %>%
fmt_number(columns = c(Loading, Cos2), decimals = 4) %>%
tab_style(
style = list(cell_fill(color = "#D81B60"), cell_text(color = "white", weight = "bold")),
locations = cells_column_labels(everything())
) %>%
tab_style(
style = cell_fill(color = "#FFD700"),
locations = cells_body(rows = 1:3)
) %>%
tab_style(
style = cell_fill(color = "#FCE4EC"),
locations = cells_body(rows = seq(4, nrow(tabla_pc1), 2))
) %>%
tab_style(
style = cell_fill(color = "#F8BBD9"),
locations = cells_body(rows = seq(5, nrow(tabla_pc1), 2))
) %>%
tab_options(
table.width = pct(100),
table.font.size = "small",
heading.background.color = "#F48FB1"
) %>%
tab_source_note(
source_note = "Nota: Las filas en dorado corresponden a las 3 variables con mayor contribución al PC1."
)| Contribución de Variables al Componente Principal 1 (33.4% de varianza) | ||
| Cargas (loadings) y coseno al cuadrado (cos²) | ||
| Variable | Loading | Cos² |
|---|---|---|
| PIB (nominal, crecimiento) | 0.3949 | 0.1559 |
| Deflactor del PIB (crecimiento) | 0.3807 | 0.1449 |
| Deflactor del PIB (precios mercado) | 0.3569 | 0.1273 |
| Tipo de cambio (moneda local/USD) | 0.3264 | 0.1065 |
| Formación bruta de capital (volumen, crecimiento) | 0.3074 | 0.0945 |
| Consumo privado (volumen, crecimiento) | 0.2610 | 0.0681 |
| Importaciones (volumen, crecimiento) | 0.2547 | 0.0649 |
| Fuerza laboral | 0.2516 | 0.0633 |
| Empleo total (encuesta fuerza laboral) | 0.2463 | 0.0606 |
| PIB (volumen, crecimiento) | 0.2212 | 0.0489 |
| Cuenta corriente (% PIB) | −0.1649 | 0.0272 |
| Exportaciones netas (contribución al PIB real) | −0.1448 | 0.0210 |
| Tasa de desempleo | 0.0868 | 0.0075 |
| Consumo gobierno (volumen, crecimiento) | 0.0714 | 0.0051 |
| Exportaciones (volumen, crecimiento) | 0.0643 | 0.0041 |
| Nota: Las filas en dorado corresponden a las 3 variables con mayor contribución al PC1. | ||
# Para el PC2
pc2_loadings <- loadings[, 2]
pc2_cos2 <- cos2[, 2]
tabla_pc2 <- data.frame(
Variable = enc2utf8(variablesnombres[rownames(loadings)]),
Loading = pc2_loadings,
Cos2 = pc2_cos2
)
# Ordenar de mayor a menor cos²
tabla_pc2 <- tabla_pc2[order(-tabla_pc2$Cos2), ]
gt(tabla_pc2) %>%
tab_header(
title = paste0("Contribución de Variables al Componente Principal 2 (",
round(summary(res.pca)$importance[2, 2] * 100, 1), "% de varianza)"),
subtitle = "Cargas (loadings) y coseno al cuadrado (cos²)"
) %>%
cols_label(
Variable = "Variable",
Loading = "Loading",
Cos2 = "Cos²"
) %>%
fmt_number(columns = c(Loading, Cos2), decimals = 4) %>%
tab_style(
style = list(cell_fill(color = "#D81B60"), cell_text(color = "white", weight = "bold")),
locations = cells_column_labels(everything())
) %>%
tab_style(
style = cell_fill(color = "#FFD700"),
locations = cells_body(rows = 1:3)
) %>%
tab_style(
style = cell_fill(color = "#FCE4EC"),
locations = cells_body(rows = seq(4, nrow(tabla_pc2), 2))
) %>%
tab_style(
style = cell_fill(color = "#F8BBD9"),
locations = cells_body(rows = seq(5, nrow(tabla_pc2), 2))
) %>%
tab_options(
table.width = pct(100),
table.font.size = "small",
heading.background.color = "#F48FB1"
) %>%
tab_source_note(
source_note = "Nota: Las filas en dorado corresponden a las 3 variables con mayor contribución al PC2."
)| Contribución de Variables al Componente Principal 2 (18.1% de varianza) | ||
| Cargas (loadings) y coseno al cuadrado (cos²) | ||
| Variable | Loading | Cos² |
|---|---|---|
| Importaciones (volumen, crecimiento) | 0.3980 | 0.1584 |
| Cuenta corriente (% PIB) | −0.3748 | 0.1405 |
| Exportaciones netas (contribución al PIB real) | −0.3267 | 0.1067 |
| Consumo privado (volumen, crecimiento) | 0.3261 | 0.1063 |
| Empleo total (encuesta fuerza laboral) | −0.3076 | 0.0946 |
| Fuerza laboral | −0.3074 | 0.0945 |
| Formación bruta de capital (volumen, crecimiento) | 0.2566 | 0.0658 |
| Deflactor del PIB (precios mercado) | −0.2546 | 0.0648 |
| Deflactor del PIB (crecimiento) | −0.2044 | 0.0418 |
| Consumo gobierno (volumen, crecimiento) | 0.1919 | 0.0368 |
| Tipo de cambio (moneda local/USD) | −0.1826 | 0.0333 |
| PIB (volumen, crecimiento) | 0.1718 | 0.0295 |
| PIB (nominal, crecimiento) | −0.1343 | 0.0180 |
| Exportaciones (volumen, crecimiento) | 0.0896 | 0.0080 |
| Tasa de desempleo | 0.0286 | 0.0008 |
| Nota: Las filas en dorado corresponden a las 3 variables con mayor contribución al PC2. | ||
# Para el PC3
pc3_loadings <- loadings[, 3]
pc3_cos2 <- cos2[, 3]
tabla_pc3 <- data.frame(
Variable = enc2utf8(variablesnombres[rownames(loadings)]),
Loading = pc3_loadings,
Cos2 = pc3_cos2
)
# Ordenar de mayor a menor cos²
tabla_pc3 <- tabla_pc3[order(-tabla_pc3$Cos2), ]
gt(tabla_pc3) %>%
tab_header(
title = paste0("Contribución de Variables al Componente Principal 3 (",
round(summary(res.pca)$importance[2, 3] * 100, 1), "% de varianza)"),
subtitle = "Cargas (loadings) y coseno al cuadrado (cos²)"
) %>%
cols_label(
Variable = "Variable",
Loading = "Loading",
Cos2 = "Cos²"
) %>%
fmt_number(columns = c(Loading, Cos2), decimals = 4) %>%
tab_style(
style = list(cell_fill(color = "#D81B60"), cell_text(color = "white", weight = "bold")),
locations = cells_column_labels(everything())
) %>%
tab_style(
style = cell_fill(color = "#FFD700"),
locations = cells_body(rows = 1:3)
) %>%
tab_style(
style = cell_fill(color = "#FCE4EC"),
locations = cells_body(rows = seq(4, nrow(tabla_pc3), 2))
) %>%
tab_style(
style = cell_fill(color = "#F8BBD9"),
locations = cells_body(rows = seq(5, nrow(tabla_pc3), 2))
) %>%
tab_options(
table.width = pct(100),
table.font.size = "small",
heading.background.color = "#F48FB1"
) %>%
tab_source_note(
source_note = "Nota: Las filas en dorado corresponden a las 3 variables con mayor contribución al PC3."
)| Contribución de Variables al Componente Principal 3 (14.4% de varianza) | ||
| Cargas (loadings) y coseno al cuadrado (cos²) | ||
| Variable | Loading | Cos² |
|---|---|---|
| Exportaciones netas (contribución al PIB real) | 0.4832 | 0.2335 |
| PIB (volumen, crecimiento) | 0.4720 | 0.2227 |
| Exportaciones (volumen, crecimiento) | 0.4073 | 0.1659 |
| Empleo total (encuesta fuerza laboral) | −0.2835 | 0.0804 |
| Fuerza laboral | −0.2774 | 0.0769 |
| Consumo privado (volumen, crecimiento) | 0.2284 | 0.0522 |
| Formación bruta de capital (volumen, crecimiento) | −0.2175 | 0.0473 |
| PIB (nominal, crecimiento) | 0.2089 | 0.0436 |
| Cuenta corriente (% PIB) | 0.2021 | 0.0408 |
| Tasa de desempleo | 0.1259 | 0.0158 |
| Deflactor del PIB (crecimiento) | 0.0961 | 0.0092 |
| Importaciones (volumen, crecimiento) | −0.0905 | 0.0082 |
| Consumo gobierno (volumen, crecimiento) | 0.0527 | 0.0028 |
| Tipo de cambio (moneda local/USD) | 0.0229 | 0.0005 |
| Deflactor del PIB (precios mercado) | 0.0038 | 0.0000 |
| Nota: Las filas en dorado corresponden a las 3 variables con mayor contribución al PC3. | ||
Explica principalmente las exportaciones netas, el crecimiento del PIB real y el crecimiento de las exportaciones, capturarndo el vínculo entre crecimiento económico y desempeño exportador, identificando países donde la expansión de la actividad económica está más asociada al dinamismo del sector externo.
A partir del ACP se identificaron tres dimensiones principales que explican cerca del 66% de la variabilidad total de los datos. La primera dimensión, denominada “Inestabilidad nominal y presión inflacionaria”, recoge principalmente información relacionada con el crecimiento nominal del PIB, los deflactores del PIB y el tipo de cambio. Por esta razón, esta dimensión permite diferenciar países con mayores presiones inflacionarias y variaciones nominales de aquellos que presentan una situación más estable en términos de precios.
La segunda dimensión, llamada “Dinamismo de la demanda interna y sector externo”, combina variables asociadas al consumo privado, las importaciones, la cuenta corriente y la contribución de las exportaciones netas al PIB. En este caso, la dimensión parece reflejar la forma en que cada economía combina el comportamiento de su demanda interna con su relación comercial frente al resto del mundo.
Por su parte, la tercera dimensión, denominada “Crecimiento real impulsado por el sector externo”, está explicada principalmente por el crecimiento real del PIB, las exportaciones y la contribución de las exportaciones netas al crecimiento económico. Esto sugiere que algunos países logran una parte importante de su expansión económica a través del desempeño de su sector exportador.ind_coord <- as.data.frame(res.pca$x[, 1:2])
colnames(ind_coord) <- c("PC1", "PC2")
ind_info <- get_pca_ind(res.pca)
ind_coord$cos2 <- ind_info$cos2[, 1]
ind_coord$label <- DatosEcon$Pais # <-- nombres reales de los paises
plot_ly(
data = ind_coord,
x = ~PC1,
y = ~PC2,
type = 'scatter',
mode = 'markers',
marker = list(
size = 8,
color = ~cos2,
colorscale = list(
c(0, "#FCE4EC"),
c(0.5, "#F8BBD9"),
c(1, "#D81B60")
),
showscale = TRUE,
colorbar = list(title = "cos2")
),
text = ~label,
hoverinfo = 'text',
hovertemplate = paste('<b>%{text}</b><br>PC1: %{x:.2f}<br>PC2: %{y:.2f}<br>cos2: %{marker.color:.2f}<extra></extra>')
) %>%
layout(
title = "Grafico de individuos Dimension 1 VS 2",
xaxis = list(title = paste0("Dimension 1 (", round(summary(res.pca)$importance[2,1]*100,1), "%)")),
yaxis = list(title = paste0("Dimension 2 (", round(summary(res.pca)$importance[2,2]*100,1), "%)"))
) %>%
config(displayModeBar = FALSE)El gráfico de individuos se encuentra que la mayoría de los países se concentra alrededor del centro del plano factorial, indicando que, aunque existen diferencias entre ellos, gran parte de las economías analizadas comparten características relativamente similares cuando se consideran de manera conjunta las variables económicas y laborales incluidas en el estudio. Este resultado era esperable debido a que la muestra está compuesta principalmente por países pertenecientes a la OECD, los cuales suelen presentar niveles de desarrollo y estructuras económicas comparables. De igual forma, la cercanía observada entre varios países sugiere la existencia de perfiles económicos semejantes, lo que indica que buena parte de las economías analizadas comparten características similares en términos de estabilidad macroeconómica, crecimiento y relación con el sector externo.
Además aparecen algunos países alejados de la concentración principal. Entre ellos destacan Argentina, Irlanda y Chile, que se ubican como las observaciones más dispersas dentro del plano factorial. Esta posición sugiere que presentan comportamientos diferenciados en las dimensiones que explican la mayor parte de la variabilidad de los datos. En particular, podrían estar asociados a diferencias en aspectos relacionados con la estabilidad de precios, el comportamiento del tipo de cambio y el crecimiento nominal de la economía, variables que caracterizan la primera dimensión denominada “Inestabilidad nominal y presión inflacionaria”. Asimismo, parte de esta dispersión también podría estar vinculada con diferencias en el dinamismo de la demanda interna y el sector externo, reflejado en variables como el consumo privado, las importaciones, la cuenta corriente y la contribución de las exportaciones netas al crecimiento económico.ind_coord <- as.data.frame(res.pca$x[, 2:3])
colnames(ind_coord) <- c("PC2", "PC3")
ind_info <- get_pca_ind(res.pca)
ind_coord$cos2 <- ind_info$cos2[, 2] + ind_info$cos2[, 3]
ind_coord$label <- DatosEcon$Pais # <-- nombres reales de los paises
plot_ly(
data = ind_coord,
x = ~PC2,
y = ~PC3,
type = 'scatter',
mode = 'markers',
marker = list(
size = 8,
color = ~cos2,
colorscale = list(
c(0, "#FCE4EC"),
c(0.5, "#F8BBD9"),
c(1, "#D81B60")
),
showscale = TRUE,
colorbar = list(title = "cos2 (plano 2-3)")
),
text = ~label,
hoverinfo = 'text',
hovertemplate = paste('<b>%{text}</b><br>PC2: %{x:.2f}<br>PC3: %{y:.2f}<br>cos2: %{marker.color:.2f}<extra></extra>')
) %>%
layout(
title = "Grafico de individuos Dimension 2 VS 3",
xaxis = list(title = paste0("Dimension 2 (", round(summary(res.pca)$importance[2,2]*100,1), "%)")),
yaxis = list(title = paste0("Dimension 3 (", round(summary(res.pca)$importance[2,3]*100,1), "%)"))
) %>%
config(displayModeBar = FALSE)Se observa una concentración importante de países alrededor del centro, lo que indica que gran parte de las economías presentan comportamientos relativamente similares en términos de demanda interna, comercio exterior y crecimiento económico. Sin embargo, Argentina, Irlanda, Chile y Estados Unidos continúan ubicándose entre las observaciones más alejadas del grupo principal, aunque Argentina se sitúa ahora sobre el lado negativo de la segunda dimensión.
Esta dispersión sugiere que dichos países presentan características particulares en las variables que definen ambas dimensiones. En el caso de la segunda dimensión, las diferencias pueden estar asociadas al comportamiento del consumo privado, las importaciones, la cuenta corriente y la contribución de las exportaciones netas al PIB, lo que refleja distintas formas de combinar la demanda interna con la relación comercial frente al exterior. Por otra parte, la tercera dimensión permite distinguir economías donde el crecimiento real se encuentra más vinculado al desempeño exportador. En este sentido, la posición de Irlanda, Chile y Estados Unidos podría indicar una dinámica de crecimiento y comercio exterior diferente la mayoría de los países de la muestra.var_coord <- as.data.frame(res.pca$rotation[, 1:2])
colnames(var_coord) <- c("PC1", "PC2")
var_coord$var <- iconv(variablesnombres[rownames(var_coord)], to = "UTF-8", sub = " ")
var_info <- get_pca_var(res.pca)
var_coord$contrib <- var_info$contrib[, 1]
plot_ly() %>%
add_segments(
x = 0, y = 0,
xend = ~PC1, yend = ~PC2,
data = var_coord,
line = list(color = "gray", width = 1.5),
showlegend = FALSE,
hoverinfo = 'none'
) %>%
add_markers(
x = ~PC1, y = ~PC2,
data = var_coord,
marker = list(
size = 10,
color = ~contrib,
colorscale = list(
c(0, "#FCE4EC"),
c(0.5, "#F8BBD9"),
c(1, "#D81B60")
),
showscale = TRUE,
colorbar = list(title = "Contribución")
),
text = ~var,
hoverinfo = 'text',
hovertemplate = paste('<b>%{text}</b><br>PC1: %{x:.2f}<br>PC2: %{y:.2f}<br>Contribucion: %{marker.color:.2f}<extra></extra>'),
name = "Variables"
) %>%
layout(
title = "Variables Dimensión 1 VS 2",
xaxis = list(title = paste0("Dimensión 1 (", round(summary(res.pca)$importance[2,1]*100,1), "%)"),
range = c(-1.1, 1.1)),
yaxis = list(title = paste0("Dimensión 2 (", round(summary(res.pca)$importance[2,2]*100,1), "%)"),
range = c(-1.1, 1.1))
) %>%
config(displayModeBar = FALSE)El gráficomuestra patrones claros que definen a las economías de la OCDE.El primer cuadrante, formado por el PIB nominal, los deflactores del PIB y el tipo de cambio, define la Inestabilidad nominal y presión inflacionaria. Estas variables indican que un mayor crecimiento nominal suele estar impulsado por el aumento de precios y no por una expansión real, lo que refleja una mayor exposición a la inestabilidad macroeconómica.
En contraste, el segundo cuadrante se orienta al Dinamismo de la demanda interna y sector externo, compuesto por el consumo privado, las importaciones, la inversión y el PIB real. Al ser perpendicular al primero, sugiere que el crecimiento real y la demanda interna operan con relativa independencia frente a las presiones inflacionarias.
Por otra parte, la cuenta corriente y las exportaciones netas apuntan en sentido opuesto a la inflación sugirienod que los países con mayor inestabilidad nominal tienden a presentar una posición externa más débil, con mayor dependencia de financiamiento o déficits comerciales.
Así indicadores como el consumo gubernamental, las exportaciones y la tasa de desempleo presentan una menor capacidad para diferenciar a los países, mostrando un comportamiento más homogéneo en la muestra. Mostrando que el desempeño económico depende de la interacción entre la estabilidad de precios, la fortaleza de la demanda interna y la posición externa, elementos clave para caracterizar la resiliencia productiva actual.var_info <- get_pca_var(res.pca)
var_coord <- as.data.frame(res.pca$rotation[, 2:3])
colnames(var_coord) <- c("PC2", "PC3")
var_coord$var <- iconv(variablesnombres[rownames(var_coord)], to = "UTF-8", sub = " ")
var_coord$contrib <- var_info$contrib[, 2]
plot_ly() %>%
add_segments(
x = 0, y = 0,
xend = ~PC2, yend = ~PC3, #
data = var_coord,
line = list(color = "gray", width = 1.5),
showlegend = FALSE,
hoverinfo = 'none'
) %>%
add_markers(
x = ~PC2, y = ~PC3,
data = var_coord,
marker = list(
size = 10,
color = ~contrib,
colorscale = list(
c(0, "#FCE4EC"),
c(0.5, "#F8BBD9"),
c(1, "#D81B60")
),
showscale = TRUE,
colorbar = list(title = "Contribución")
),
text = ~var,
hoverinfo = 'text',
hovertemplate = paste('<b>%{text}</b><br>PC2: %{x:.2f}<br>PC3: %{y:.2f}<br>Contribución: %{marker.color:.2f}<extra></extra>'),
name = "Variables"
) %>%
layout(
title = "Variables Dimensión 2 VS 3",
xaxis = list(title = paste0("Dimensión 2 (", round(summary(res.pca)$importance[2,2]*100,1), "%)"),
range = c(-1.1, 1.1)),
yaxis = list(title = paste0("Dimensión 3 (", round(summary(res.pca)$importance[2,3]*100,1), "%)"),
range = c(-1.1, 1.1))
) %>%
config(displayModeBar = FALSE)El gráfico muestra una clara segmentación de los motores económicos. En el cuadrante superior derecho, se observa un bloque sólido formado por el consumo privado y la formación bruta de capital fijo. Al ser prácticamente perpendicular a las variables de exportación, sugiere que el dinamismo basado en la demanda interna —consumo e inversión— opera con relativa independencia frente al impulso que proviene del sector externo.
En contraste, hacia el cuadrante inferior derecho, las exportaciones y la contribución de las exportaciones netas al PIB real se agrupan en una dirección distinta, indiicando que los países que basan su expansión en el sector exportador presentan una lógica de crecimiento diferente a aquellos centrados en el gasto interno, evidenciando una especialización en la integración comercial global.
Por otra parte, variables como el deflactor del PIB y el tipo de cambio se ubican en una dirección que contrasta con el sector exportador, sugiriendo que la competitividad internacional y los precios locales mantienen una relación de tensión en la estructura económica de estos países.
Finalmente, indicadores como la tasa de desempleo, la fuerza laboral y las exportaciones totales muestran una ubicación más cercana al centro. Esto refleja una menor capacidad para diferenciar a los países, lo que indica un comportamiento más homogéneo en la muestra para estas variables. Mostrando que el desempeño económico depende de la interacción entre el impulso de la demanda interna y la competitividad externa, elementos clave para caracterizar la resiliencia productiva actual.ind_coord <- as.data.frame(res.pca$x[, 1:2])
colnames(ind_coord) <- c("PC1", "PC2")
ind_coord$label <- DatosEcon$Pais
var_coord <- as.data.frame(res.pca$rotation[, 1:2])
colnames(var_coord) <- c("PC1", "PC2")
nombres_limpios <- variablesnombres[rownames(var_coord)]
nombres_limpios <- iconv(nombres_limpios, from = "latin1", to = "UTF-8", sub = "byte")
nombres_limpios <- gsub("<f1>", "n", nombres_limpios, fixed = TRUE)
nombres_limpios <- gsub("<[0-9a-f]{2}>", "", nombres_limpios)
var_coord$var <- nombres_limpios
var_coord$var <- gsub("[\r\n]", " ", var_coord$var)
var_coord$var <- trimws(var_coord$var)
scale_factor <- 5
var_coord$PC1 <- var_coord$PC1 * scale_factor
var_coord$PC2 <- var_coord$PC2 * scale_factor
plot_ly() %>%
add_markers(
x = ~PC1, y = ~PC2,
data = ind_coord,
marker = list(size = 8, color = "#696969", opacity = 0.6),
text = ~label,
hoverinfo = 'text',
hovertemplate = paste('<b>Individuo: %{text}</b><br>PC1: %{x:.2f}<br>PC2: %{y:.2f}<extra></extra>'),
name = "Individuos"
) %>%
add_segments(
x = 0, y = 0,
xend = ~PC1, yend = ~PC2,
data = var_coord,
line = list(color = "#F8BBD9", width = 2),
showlegend = FALSE,
hoverinfo = 'none'
) %>%
add_markers(
x = ~PC1, y = ~PC2,
data = var_coord,
marker = list(size = 10, color = "#D81B60"),
text = ~var,
hoverinfo = 'text',
hovertemplate = paste('<b>%{text}</b><br>PC1: %{x:.2f}<br>PC2: %{y:.2f}<extra></extra>'),
name = "Variables"
) %>%
layout(
title = "Biplot Dimension 1 VS 2",
xaxis = list(title = paste0("Dimension 1 (", round(summary(res.pca)$importance[2,1]*100,1), "%)"),
zeroline = TRUE),
yaxis = list(title = paste0("Dimension 2 (", round(summary(res.pca)$importance[2,2]*100,1), "%)"),
zeroline = TRUE)
) %>%
config(displayModeBar = FALSE)El biplot resume permitiendo identificar patrones clave entre las economías. La mayoría de los países se concentran en el centro, compartiendo comportamientos macroeconómicos similares, mientras que los valores atípicos son los que revelan las diferencias más importantes.
Hacia el cuadrante derecho, Argentina se separa del resto, representando un caso extremo de crisis de estabilidad nominal con inflación desbordada, crecimiento nominal artificial y depreciación cambiaria. En contraste, en el cuadrante superior, países como Colombia, Chile, Perú e India destacan por su dinamismo; estos se alejan del centro debido a una recuperación post-pandemia más intensa, impulsada por un mayor consumo privado e inversión.
En definitiva, este gráfico confirma que el desempeño económico no responde a un único factor. La estructura muestra cómo la interacción entre la estabilidad de precios y el dinamismo de la demanda interna define la resiliencia productiva actual, afectando de manera desigual el crecimiento y la posición comercial de cada país ante la incertidumbre global.ind_coord <- as.data.frame(res.pca$x[, 2:3])
colnames(ind_coord) <- c("PC2", "PC3")
ind_coord$label <- DatosEcon$Pais
var_coord <- as.data.frame(res.pca$rotation[, 2:3])
colnames(var_coord) <- c("PC2", "PC3")
nombres_limpios <- variablesnombres[rownames(var_coord)]
nombres_limpios <- iconv(nombres_limpios, from = "latin1", to = "UTF-8", sub = "byte")
nombres_limpios <- gsub("<f1>", "n", nombres_limpios, fixed = TRUE)
nombres_limpios <- gsub("<[0-9a-f]{2}>", "", nombres_limpios)
var_coord$var <- nombres_limpios
var_coord$var <- gsub("[\r\n]", " ", var_coord$var)
var_coord$var <- trimws(var_coord$var)
scale_factor <- 5
var_coord$PC2 <- var_coord$PC2 * scale_factor
var_coord$PC3 <- var_coord$PC3 * scale_factor
plot_ly() %>%
add_markers(
x = ~PC2, y = ~PC3,
data = ind_coord,
marker = list(size = 8, color = "#696969", opacity = 0.6),
text = ~label,
hoverinfo = 'text',
hovertemplate = paste('<b>Individuo: %{text}</b><br>PC2: %{x:.2f}<br>PC3: %{y:.2f}<extra></extra>'),
name = "Individuos"
) %>%
add_segments(
x = 0, y = 0,
xend = ~PC2, yend = ~PC3,
data = var_coord,
line = list(color = "#F8BBD9", width = 2),
showlegend = FALSE,
hoverinfo = 'none'
) %>%
add_markers(
x = ~PC2, y = ~PC3,
data = var_coord,
marker = list(size = 10, color = "#D81B60"),
text = ~var,
hoverinfo = 'text',
hovertemplate = paste('<b>%{text}</b><br>PC2: %{x:.2f}<br>PC3: %{y:.2f}<extra></extra>'),
name = "Variables"
) %>%
layout(
title = "Biplot Dimension 2 VS 3",
xaxis = list(title = paste0("Dimension 2 (", round(summary(res.pca)$importance[2,2]*100,1), "%)"),
zeroline = TRUE),
yaxis = list(title = paste0("Dimension 3 (", round(summary(res.pca)$importance[2,3]*100,1), "%)"),
zeroline = TRUE)
) %>%
config(displayModeBar = FALSE)Un hallazgo revelador es el posicionamiento de Argentina, mientras que en los demás gráficos dominaba como un valor atípico extremo, aquí se ubica cerca del centro en todo el eje horizontal confirmando que Agrentina y su divergencia estructural radica casi exclusivamente en su inestabilidad nominal, y no en variaciones anómalas de crecimiento real o dinámica exportadora.
Al evaluar los cuadrantes, el caso más llamativo es el de Irlanda, aislada en el extremo superior izquierdo. Esta posición no refleja una contracción económica, sino el impacto de las multinacionales allí instaladas que generan volúmenes de exportación gigantescos y un alto saldo en cuenta corriente, contrastando con un bajo consumo privado. Es una estructura productiva que la propia OCDE reconoce como estadísticamente atípica dentro de las economías avanzadas.
Pero en el cuadrante superior derecho agrupa a países como Colombia, Perú, India, Croacia y Estonia que estas economías destacan como modelos en expansión activa, logrando apalancar su crecimiento al combinar un fuerte dinamismo de la demanda interna con un sólido desempeño exportador. Por el contrario, en la zona inferior, potencias como Estados Unidos, Japón y Brasil muestran un patrón de crecimiento mucho más moderado tanto en su impulso externo como en su demanda doméstica dentro de este plano.
En definitiva, esta representación gráfica permite descifrar los modelos productivos subyacentes de la muestra, evidenciando si la expansión económica de un país se apalanca en su mercado interno o en su desempeño exportador. Identificar estas diferencias es un factor clave para comprender cómo cada economía se está adaptando a la actual reorganización de las cadenas globales de suministro señalada en los reportes de la OCDE.if(is.null(rownames(res.pca$x))) rownames(res.pca$x) <- paises
distribvariables <- fviz_contrib(res.pca, choice = "var", axes = 1:3,
fill = "#FCE4EC", color = "#D81B60",
top = 10, orientation = "horizontal") +
theme_minimal() +
theme(plot.title = element_text(color = "#D81B60", face = "bold")) +
labs(title = "Contribución de las variables")
contribindividuos <- fviz_contrib(res.pca, choice = "ind", axes = 1:2,
fill = "#FCE4EC", color = "#D81B60",
top = 47, orientation = "horizontal") +
theme_minimal() +
theme(plot.title = element_text(color = "#D81B60", face = "bold")) +
labs(title = "Contribución de los individuos") +
scale_y_discrete(labels = function(x) paises[as.numeric(x)])
distribvariablesrownames(scores_pca) <- paises
dist_paises <- dist(scores_pca)
modelo_jerarquico <- hclust(dist_paises, method = "ward.D2")
dend_modelo <- as.dendrogram(modelo_jerarquico)
par(las = 2)
plot(dend_modelo,
cex = 0.6,
main = "Dendrograma jerarquico (Ward)",
xlab = "",
ylab = "Distancia",
sub = "",
col = "#D81B60",
edgePar = list(col = "#D81B60", lwd = 2)) La estructura asimétrica y en forma de cascada que presenta el dendrograma refleja de forma clara un panorama económico global que opera a múltiples velocidadesevidenciando un enorme centro de gravedad en la parte derecha del gráfico, donde la gran mayoría de las naciones se agrupan estrechamente. Este bloque apretado representa a las economías desarrolladas y a los mercados fuertemente integrados que, impulsados por la globalización comercial, se enfrentan a los mismos ciclos, reaccionando con políticas monetarias similares y respiran prácticamente al mismo ritmo macroeconómico, al otro lado las ramas más altas que se desprenden progresivamente hacia la zona izquierda agrupan realidades estructurales distintas. Bloques emergentes como el conformado por Colombia, Chile, India y Perú transitan por caminos con dinámicas particulares, demostrando que sus motores de crecimiento dependen de fuerzas diferentes como una fuerte expansión de su demanda interna o una mayor sensibilidad a los precios internacionales. En conjunto el núcleo duro del mundo transita por una misma autopista macroeconómica estandarizada, mientras que una periferia de países avanza impulsada por sus propias condiciones históricas y estructurales.
colores_cluster <- c("#000000","#696969","#F8BBD9", "#D81B60" )
corte <- 8
dend_modelo %>%
color_branches(h = corte, col = colores_cluster) %>%
color_labels(h = corte, col = colores_cluster) %>%
plot(cex = 0.6, main = "Dendrograma - Clusters de paises", xlab = "", ylab = "Distancia")
abline(h = corte, lty = 2, col = "gray40", lwd = 2)clusters_deseados <- 3
dend_modelo %>%
color_branches(k = clusters_deseados, col = c("#696969", "#F8BBD9", "#D81B60")) %>%
color_labels(k = clusters_deseados, col = c("#696969", "#F8BBD9", "#D81B60")) %>%
plot(main = "Dendrograma - 3 clusters", xlab = "", ylab = "Distancia")Los dendogramas están revelando tres comportamientos muy marcados al establecer una línea de corte cercana a la distancia de 8. Por un lado, la gran mayoría de la muestra se concentra en un extenso bloque homogéneo a la derecha del gráfico, indicando que economías consolidadas como Estados Unidos, Alemania y Japón, junto con mercados grandes como Brasil y México siendo estos mercados o economias que comparten niveles de estabilidad macroeconómica muy similares. En claro contraste, el algoritmo logra aislar a Colombia, Chile, India y Perú en un clúster intermedio bastante definido, lo que demuestra estadísticamente que estos países comparten un modelo de crecimiento apalancado fuertemente en su demanda interna. Finalmente, el gráfico evidencia de forma contundente las mayores divergencias de los datos al ramificar en solitario a Argentina e Irlanda en el extremo izquierdo, confirmando que ambos conforman clústeres individuales por ser casos atípicos extremos, el primero por su fuerte descontrol inflacionario y el segundo por el volumen desproporcionado de sus exportaciones multinacionales.
fviz_nbclust(scores_pca, FUN = kmeans, method = "silhouette") +
labs(
title = "Numero optimo de clusters (Silueta - K-means)",
x = "Numero de clusters k",
y = "Silueta promedio"
) +
theme_minimal() +
scale_color_manual(values = "#D81B60")## PC1 PC2 PC3
## 1 4.0219844 1.0650078 1.0353045
## 2 -0.6703307 -0.1775013 -0.1725508
set.seed(123)
modelo_kmeans <- kmeans(scores_pca, centers = 2)
cluster_paises <- modelo_kmeans$cluster
DatosEcon_agrupados <- datos_pca %>%
mutate(cluster = cluster_paises)
ind_coord <- as.data.frame(res.pca$x[, 1:2])
colnames(ind_coord) <- c("PC1", "PC2")
ind_coord$cluster <- factor(cluster_paises)
ind_coord$label <- rownames(ind_coord)
n_clusters <- length(unique(cluster_paises))
colores_cluster <- switch(as.character(n_clusters),
"2" = c("#696969", "#D81B60"),
"3" = c("#696969", "#F8BBD9", "#D81B60"),
"4" = c("#696969", "#F8BBD9", "#D81B60", "#FCE4EC"),
"5" = c("#696969", "#F8BBD9", "#D81B60", "#FCE4EC", "#000000"),
rep(c("#696969", "#F8BBD9", "#D81B60", "#FCE4EC", "#000000"), length.out = n_clusters)
)
library(plotly)
plotly_obj <- plot_ly()
for (i in seq_along(levels(ind_coord$cluster))) {
grupo <- levels(ind_coord$cluster)[i]
datos_grupo <- ind_coord[ind_coord$cluster == grupo, ]
if (nrow(datos_grupo) >= 3) {
elipse <- car::ellipse(
center = colMeans(datos_grupo[, c("PC1", "PC2")]),
shape = cov(datos_grupo[, c("PC1", "PC2")]),
radius = sqrt(qchisq(0.95, df = 2)),
draw = FALSE
)
plotly_obj <- plotly_obj %>% add_trace(
x = elipse[, 1], y = elipse[, 2],
type = 'scatter', mode = 'lines',
fill = 'none',
line = list(color = colores_cluster[i], width = 2),
showlegend = FALSE,
hoverinfo = 'none'
)
}
}
plotly_obj <- plotly_obj %>% add_trace(
data = ind_coord,
x = ~PC1, y = ~PC2,
type = 'scatter', mode = 'markers',
color = ~cluster,
colors = colores_cluster,
marker = list(size = 10, opacity = 0.8, line = list(width = 1, color = "white")),
text = ~paste(label, '<br>Cluster:', cluster),
hoverinfo = 'text',
hovertemplate = paste('<b>%{text}</b><br>PC1: %{x:.2f}<br>PC2: %{y:.2f}<extra></extra>')
) %>%
layout(
title = "Grafico de individuos por cluster (PC1 vs PC2)",
xaxis = list(title = paste0("Dimension 1 (", round(summary(res.pca)$importance[2,1]*100,1), "%)"),
zeroline = TRUE),
yaxis = list(title = paste0("Dimension 2 (", round(summary(res.pca)$importance[2,2]*100,1), "%)"),
zeroline = TRUE),
legend = list(title = list(text = "Cluster"))
) %>%
config(displayModeBar = FALSE)
plotly_objEl primer grupo, representado por los puntos verdes, actúa como el gran centro de gravedad del mundo. Se concentra de forma muy compacta en el lado izquierdo del plano (valores bajos o negativos en la Dimensión 1) y muy cerca del origen en la Dimensión 2. Esto nos indica que este clúster agrupa a la inmensa mayoría de las economías avanzadas (como Alemania, México, Sudáfrica, entre otras) que lograron mantener su anclaje y estabilidad nominal. Son países que pudieron contener mejor las presiones inflacionarias post-pandemia y mantuvieron un ritmo de consumo e inversión interno mucho más moderado y tradicional.
En claro contraste, el segundo clúster (los puntos morados) captura a la periferia divergente, dispersándose ampliamente hacia la derecha y hacia arriba del gráfico. Al limitarse a solo dos grupos, el algoritmo se vio obligado a meter en este mismo saco a todos los países que rompieron el molde de la normalidad de la OCDE. Por un lado, engloba hacia arriba a economías como Colombia, Chile e India, que experimentaron un vigoroso dinamismo impulsado por la expansión de su demanda interna. Por otro lado, arrastra hacia la extrema derecha a las economías que sufrieron choques severos de inestabilidad nominal y descontrol inflacionario.
En síntesis, esta clasificación binaria divide el panorama económico actual en dos bloques fundamentales: un bloque hegemónico de economías maduras enfocadas en la estabilidad de precios y el crecimiento conservador, frente a un bloque de economías más volátiles que, ya sea por una fuerte aceleración de su mercado interno o por crisis inflacionarias, transitan por fuera del comportamiento estándar internacional.
cluster_paises <- modelo_kmeans$cluster
DatosEcon_agrupados <- datos_pca %>%
mutate(cluster = cluster_paises)
ind_coord <- as.data.frame(res.pca$x[, 2:3])
colnames(ind_coord) <- c("PC2", "PC3")
ind_coord$cluster <- factor(cluster_paises)
ind_coord$label <- rownames(ind_coord)
n_clusters <- length(unique(cluster_paises))
colores_cluster <- switch(as.character(n_clusters),
"2" = c("#696969", "#D81B60"),
"3" = c("#696969", "#F8BBD9", "#D81B60"),
"4" = c("#696969", "#F8BBD9", "#D81B60", "#FCE4EC"),
"5" = c("#696969", "#F8BBD9", "#D81B60", "#FCE4EC", "#000000"),
rep(c("#696969", "#F8BBD9", "#D81B60", "#FCE4EC", "#000000"), length.out = n_clusters)
)
library(plotly)
plotly_obj <- plot_ly()
for (i in seq_along(levels(ind_coord$cluster))) {
grupo <- levels(ind_coord$cluster)[i]
datos_grupo <- ind_coord[ind_coord$cluster == grupo, ]
if (nrow(datos_grupo) >= 3) {
elipse <- car::ellipse(
center = colMeans(datos_grupo[, c("PC2", "PC3")]),
shape = cov(datos_grupo[, c("PC2", "PC3")]),
radius = sqrt(qchisq(0.95, df = 2)),
draw = FALSE
)
plotly_obj <- plotly_obj %>% add_trace(
x = elipse[, 1], y = elipse[, 2],
type = 'scatter', mode = 'lines',
fill = 'none',
line = list(color = colores_cluster[i], width = 2),
showlegend = FALSE,
hoverinfo = 'none'
)
}
}
plotly_obj <- plotly_obj %>% add_trace(
data = ind_coord,
x = ~PC2, y = ~PC3,
type = 'scatter', mode = 'markers',
color = ~cluster,
colors = colores_cluster,
marker = list(size = 10, opacity = 0.8, line = list(width = 1, color = "white")),
text = ~paste(label, '<br>Cluster:', cluster),
hoverinfo = 'text',
hovertemplate = paste('<b>%{text}</b><br>PC2: %{x:.2f}<br>PC3: %{y:.2f}<extra></extra>')
) %>%
layout(
title = "Grafico de individuos por cluster (PC2 vs PC3)",
xaxis = list(title = paste0("Dimension 2 (", round(summary(res.pca)$importance[2,2]*100,1), "%)"),
zeroline = TRUE),
yaxis = list(title = paste0("Dimension 3 (", round(summary(res.pca)$importance[2,3]*100,1), "%)"),
zeroline = TRUE),
legend = list(title = list(text = "Cluster"))
) %>%
config(displayModeBar = FALSE)
plotly_objEn este segundo plano, el algoritmo clasifica los países bajo una lógica distinta: el clúster verde se mantiene como el núcleo central de economías con un comportamiento más moderado, tanto en su demanda interna como en su proyección externa. Sin embargo, la gran diferencia es que este grupo ahora es mucho más inclusivo, absorbiendo a la mayoría de las naciones desarrolladas y mercados grandes, cuya actividad económica se muestra estable y predecible.
Por otro lado, el clúster morado se dispersa en una dirección que marca una clara divergencia productiva. Aquí se agrupan economías que, durante el periodo, mostraron un desempeño atípico al alejarse de la norma: por un lado, países que impulsaron su crecimiento a través de un dinamismo interno y externo más agresivo, y por otro, casos que presentan una especialización o estructura exportadora que los separa del bloque mayoritario. Esta clasificación pone de manifiesto que, al eliminar el factor de inestabilidad nominal, las diferencias entre países no desaparecen, sino que se reconfiguran para resaltar qué naciones están adoptando modelos de crecimiento más activos frente a aquellas con una trayectoria más consolidada y conservadora.
modelo_kmeans <- kmeans(scores_pca, centers = 3)
cluster_paises <- modelo_kmeans$cluster
DatosEcon_agrupados <- datos_pca %>%
mutate(cluster = cluster_paises)
ind_coord <- as.data.frame(res.pca$x[, 1:2])
colnames(ind_coord) <- c("PC1", "PC2")
ind_coord$cluster <- factor(cluster_paises)
ind_coord$label <- rownames(ind_coord)
n_clusters <- length(unique(cluster_paises))
colores_cluster <- switch(as.character(n_clusters),
"2" = c("#696969", "#D81B60"),
"3" = c("#696969", "#F8BBD9", "#D81B60"),
"4" = c("#696969", "#F8BBD9", "#D81B60", "#FCE4EC"),
"5" = c("#696969", "#F8BBD9", "#D81B60", "#FCE4EC", "#000000"),
rep(c("#696969", "#F8BBD9", "#D81B60", "#FCE4EC", "#000000"), length.out = n_clusters)
)
library(plotly)
plotly_obj <- plot_ly()
for (i in seq_along(levels(ind_coord$cluster))) {
grupo <- levels(ind_coord$cluster)[i]
datos_grupo <- ind_coord[ind_coord$cluster == grupo, ]
if (nrow(datos_grupo) >= 3) {
elipse <- car::ellipse(
center = colMeans(datos_grupo[, c("PC1", "PC2")]),
shape = cov(datos_grupo[, c("PC1", "PC2")]),
radius = sqrt(qchisq(0.95, df = 2)),
draw = FALSE
)
plotly_obj <- plotly_obj %>% add_trace(
x = elipse[, 1], y = elipse[, 2],
type = 'scatter', mode = 'lines',
fill = 'none',
line = list(color = colores_cluster[i], width = 2),
showlegend = FALSE,
hoverinfo = 'none'
)
}
}
plotly_obj <- plotly_obj %>% add_trace(
data = ind_coord,
x = ~PC1, y = ~PC2,
type = 'scatter', mode = 'markers',
color = ~cluster,
colors = colores_cluster,
marker = list(size = 10, opacity = 0.8, line = list(width = 1, color = "white")),
text = ~paste(label, '<br>Cluster:', cluster),
hoverinfo = 'text',
hovertemplate = paste('<b>%{text}</b><br>PC1: %{x:.2f}<br>PC2: %{y:.2f}<extra></extra>')
) %>%
layout(
title = "Grafico de individuos por cluster (PC1 vs PC2)",
xaxis = list(title = paste0("Dimension 1 (", round(summary(res.pca)$importance[2,1]*100,1), "%)"),
zeroline = TRUE),
yaxis = list(title = paste0("Dimension 2 (", round(summary(res.pca)$importance[2,2]*100,1), "%)"),
zeroline = TRUE),
legend = list(title = list(text = "Cluster"))
) %>%
config(displayModeBar = FALSE)
plotly_objind_coord <- as.data.frame(res.pca$x[, 2:3])
colnames(ind_coord) <- c("PC2", "PC3")
ind_coord$cluster <- factor(cluster_paises)
ind_coord$label <- rownames(ind_coord)
plotly_obj <- plot_ly()
for (i in seq_along(levels(ind_coord$cluster))) {
grupo <- levels(ind_coord$cluster)[i]
datos_grupo <- ind_coord[ind_coord$cluster == grupo, ]
if (nrow(datos_grupo) >= 3) {
elipse <- car::ellipse(
center = colMeans(datos_grupo[, c("PC2", "PC3")]),
shape = cov(datos_grupo[, c("PC2", "PC3")]),
radius = sqrt(qchisq(0.95, df = 2)),
draw = FALSE
)
plotly_obj <- plotly_obj %>% add_trace(
x = elipse[, 1], y = elipse[, 2],
type = 'scatter', mode = 'lines',
fill = 'none',
line = list(color = colores_cluster[i], width = 2),
showlegend = FALSE,
hoverinfo = 'none'
)
}
}
plotly_obj <- plotly_obj %>% add_trace(
data = ind_coord,
x = ~PC2, y = ~PC3,
type = 'scatter', mode = 'markers',
color = ~cluster,
colors = colores_cluster,
marker = list(size = 10, opacity = 0.8, line = list(width = 1, color = "white")),
text = ~paste(label, '<br>Cluster:', cluster),
hoverinfo = 'text',
hovertemplate = paste('<b>%{text}</b><br>PC2: %{x:.2f}<br>PC3: %{y:.2f}<extra></extra>')
) %>%
layout(
title = "Grafico de individuos por cluster (PC2 vs PC3)",
xaxis = list(title = paste0("Dimension 2 (", round(summary(res.pca)$importance[2,2]*100,1), "%)"),
zeroline = TRUE),
yaxis = list(title = paste0("Dimension 3 (", round(summary(res.pca)$importance[2,3]*100,1), "%)"),
zeroline = TRUE),
legend = list(title = list(text = "Cluster"))
) %>%
config(displayModeBar = FALSE)
plotly_objlibrary(ggplot2)
library(dplyr)
library(tidyr)
# Calcular medias y desviaciones por cluster
# === TABLA DE MEDIAS POR CLUSTER (corregida) ===
tabla_medias <- DatosEcon_agrupados %>%
group_by(cluster) %>%
summarise(across(where(is.numeric), mean)) # solo numéricas
# Mostrar tabla bonita con gt
library(gt)
gt(tabla_medias) %>%
tab_header(
title = "Medias de variables por cluster",
subtitle = "Valores originales (no estandarizados)"
) %>%
fmt_number(columns = -cluster, decimals = 2) %>%
tab_style(
style = list(cell_fill(color = "#D81B60"), cell_text(color = "white", weight = "bold")),
locations = cells_column_labels(everything())
) %>%
tab_options(table.width = pct(100))| Medias de variables por cluster | |||||||||||||||
| Valores originales (no estandarizados) | |||||||||||||||
| cluster | x26 | x27 | x28 | x17 | x21 | x22 | x20 | x19 | x15 | x16 | x1 | x8 | x2 | x18 | x25 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 8.55 | 9,485,282.53 | 10,561,598.34 | 9.88 | 11.54 | 5.32 | 14.69 | 7.72 | 17.84 | 21.28 | −1.79 | −0.01 | 10.33 | 18.42 | 1.48 |
| 2 | 6.93 | 21,532,398.65 | 23,256,262.68 | 5.17 | 4.91 | 4.10 | 4.13 | 4.01 | 8.40 | 9.80 | 1.90 | 0.00 | 4.42 | 9.37 | 1.27 |
| 3 | 9.28 | 121,937,875.00 | 133,194,875.00 | 10.40 | 10.02 | 7.10 | 33.42 | 54.15 | 9.22 | 22.02 | 1.37 | −0.01 | 95.08 | 70.18 | 67.15 |
ajsjakjsjaskjas
ioajsas