INTRODUCCION

El presente informe técnico desarrolla un Análisis Multivariante No Supervisado aplicado a un conjunto de indicadores socioeconómicos de los países miembros de la Organización para la Cooperación y el Desarrollo Económicos (OECD). En el diseño de políticas públicas y la macroeconomía global, evaluar el desempeño de las naciones requiere herramientas capaces de sintetizar grandes volúmenes de información sin sesgos previos o clasificaciones preestablecidas.

A través de este análisis, se busca responder a dos objetivos fundamentales:

Identificar estructuras latentes y patrones de asociación entre 15 variables críticas seleccionadas del ecosistema de datos de la OECD.

Clasificar y agrupar a los países en conglomerados estadísticamente homogéneos (clústeres) y heterogéneos entre sí, permitiendo una caracterización empírica de sus realidades económicas sin depender de criterios geográficos tradicionales.

Metodología

Para cumplir con los objetivos planteados, el flujo de trabajo analítico se estructuró en cuatro fases consecutivas, ejecutadas mediante el lenguaje de programación R:

  1. Preparación, Selección y Estandarización de Datos

Dado que los indicadores macroeconómicos de la OECD se expresan en diferentes escalas y unidades de medida (porcentajes, tasas, valores monetarios), se realizó un proceso de preprocesamiento crítico:

Filtro de Variables: Se preseleccionaron 15 variables específicas consideradas clave para el diagnóstico socioecoómico.

Estandarización: Se aplicó una transformación Z-score a los datos originales mediante la función scale(), garantizando que todas las variables tuvieran una media igual a 0 y una desviación estándar igual a 1 (μ=0,σ=1). Esto evita que las variables con magnitudes numéricas más altas distorsionen el cálculo de distancias.

  1. Análisis Descriptivo y de Correlación

Antes de la modelación, se exploró la estructura interna de los datos mediante:

El cálculo de estadísticos descriptivos multivariados (mínimos, máximos, medias y desviaciones estándar).

Una matriz de correlación de Pearson visualizada mediante mapas de calor (corrplot), con el fin de evaluar visualmente la colinealidad e interdependencia de las variables macroeconómicas.

  1. Análisis de Conglomerados Jerárquicos (Clustering)

Con el fin de segmentar a los países de la OECD, se optó por un enfoque jerárquico aglomerativo:

Métrica de Distancia: Se utilizó la distancia Euclídea para medir la disimilitud entre los perfiles de los países.

Algoritmo de Enlace: Se aplicó el Método de Ward (ward.D2), el cual minimiza la varianza total dentro de cada clúster en cada etapa de la fusión.

Validación del Número Óptimo de Grupos: Se implementó el Método de la Silueta (Silhouette) para evaluar de manera matemática la estructura de los clústeres para valores de k entre 2 y 10, definiendo una solución óptima de k=5 grupos. La partición final fue representada visualmente mediante un dendrograma.

  1. Análisis de Componentes Principales (ACP)

Como técnica complementaria de reducción de dimensionalidad y visualización, se ejecutó un ACP con el objetivo de simplificar el espacio multidimensional:

Criterio de Retención: Se analizó un gráfico de sedimentación (Scree Plot) basado en los valores propios (eigenvalues) para determinar cuántos componentes retienen la mayor cantidad de varianza explicada.

Análisis de Proyecciones: Mediante un círculo de correlación y un gráfico Biplot, se evaluó el “peso” o contribución de cada variable sobre los componentes retenidos, logrando mapear simultáneamente a los países y a las variables en un plano bidimensional fácilmente interpretable.

Selección de Variables y Limpieza de Datos

El proceso de preparación de la información se realizó de la siguiente manera:

Selección de variables: De la base de datos original de la OECD, elegimos un grupo específico de 15 variables . Hicimos este filtro para enfocarnos únicamente en los indicadores clave de la economía, el mercado laboral y el bienestar social de los países, evitando rellenar el modelo con datos innecesarios.

Revisión de datos faltantes: Revisamos si la tabla tenía celdas vacías (NA). Esto nos sirvió para asegurar que la información estuviera completa y que ningún país se quedara por fuera del análisis o alterara los resultados por falta de datos.

Estandarización de los datos: Como las variables venían en medidas muy distintas (algunas en dinero, otras en porcentajes o tasas), no podíamos compararlas directamente. Para solucionar esto, aplicamos un proceso de escalamiento (scale).

Verificación final: Al terminar el escalamiento, comprobamos que todas las variables quedaran bajo la misma regla de juego: con una media cercana a 0 y una desviación estándar de 1. Con esto garantizamos que ninguna variable pese más que otra solo por tener números más grandes, dejando la base de datos lista y limpia para los análisis de clúster y ACP.

# Librerías
library(readxl)
library(dplyr)
library(ggplot2)
library(tidyr)
library(corrplot)
library(factoextra)
library(psych)
library(DT)

datatable(tabla_desc,  
          options = list(pageLength = 5, scrollX = TRUE), 
          caption = 'Tabla 1: Estadísticas descriptivas de las variables originales.')
## Error:
## ! objeto 'tabla_desc' no encontrado

Base de datos

El análisis se realiza utilizando una base de datos con estadísticas oficiales de la Organización para la Cooperación y el Desarrollo Económicos (OECD).Al revisar su estructura original mediante la función str(datos), identificamos las siguientes características clave:

Unidades de observación: Cada fila de la base de datos representa a un País miembro o asociado de la OECD.

Variables disponibles: El archivo original contiene múltiples columnas que registran indicadores sociales, laborales y económicos, codificados desde la variable en adelante.

Estructura de los datos: La mayoría de las variables numéricas corresponden a tasas, porcentajes, montos financieros o índices de rendimiento, mientras que la columna principal identifica el nombre de cada nación de forma textual.

Esta base de datos nos sirve como radiografía para comparar los diferentes modelos de desarrollo y las brechas existentes entre las economías analizadas.

# Importar base de datos

datos <- read_excel(file.choose())





# Revisar estructura

str(datos)
## tibble [42 × 30] (S3: tbl_df/tbl/data.frame)
##  $ Pais: chr [1:42] "Australia" "Austria" "Belgium" "Canada" ...
##  $ x1  : num [1:42] 3.0898 0.3543 0.4298 0.0432 -6.5 ...
##  $ x2  : num [1:42] 1.331 0.846 0.846 1.254 0.76 ...
##  $ x3  : num [1:42] 2.80e+11 2.28e+11 4.34e+11 5.57e+11 9.44e+10 ...
##  $ x4  : num [1:42] 2.69e+11 2.32e+11 4.37e+11 5.27e+11 8.24e+10 ...
##  $ x5  : num [1:42] 2.59e+11 2.35e+11 4.41e+11 4.96e+11 7.05e+10 ...
##  $ x6  : num [1:42] 4.51e+11 7.69e+10 1.08e+11 4.49e+11 2.99e+13 ...
##  $ x7  : num [1:42] 1.08e+12 1.82e+11 2.22e+11 1.20e+12 1.31e+14 ...
##  $ x8  : num [1:42] -0.01651 -0.01383 0.00654 -0.0201 -0.08869 ...
##  $ x9  : num [1:42] 2.18e+12 4.06e+11 5.02e+11 2.49e+12 2.40e+14 ...
##  $ x10 : num [1:42] 2.06e+12 3.65e+11 4.48e+11 2.09e+12 2.00e+14 ...
##  $ x11 : num [1:42] 1.26e+12 4.57e+11 5.60e+11 1.72e+12 4.60e+11 ...
##  $ x12 : num [1:42] 4.85e+11 9.55e+10 1.09e+11 4.63e+11 4.87e+13 ...
##  $ x13 : num [1:42] 3.96e+11 2.06e+11 3.91e+11 6.48e+11 6.31e+13 ...
##  $ x14 : num [1:42] 4.35e+11 2.11e+11 3.97e+11 6.25e+11 5.13e+13 ...
##  $ x15 : num [1:42] -2.07 10.24 11.26 1.39 -1.44 ...
##  $ x16 : num [1:42] 6.48 13.65 10.67 7.7 31.11 ...
##  $ x17 : num [1:42] 4.92 4.73 6.13 4.54 11.86 ...
##  $ x18 : num [1:42] 10.59 6.76 9.24 12.98 20.37 ...
##  $ x19 : num [1:42] 5.4 1.94 2.93 8.07 7.61 ...
##  $ x20 : num [1:42] 9.77 8.73 4.87 7.14 18.04 ...
##  $ x21 : num [1:42] 5.03 3.37 5.55 4.88 20.51 ...
##  $ x22 : num [1:42] 5.35 7.89 4.84 5.83 10.43 ...
##  $ x23 : num [1:42] 1.19 1.07 1.1 1.23 1.49 ...
##  $ x24 : num [1:42] 1.01 1.09 1.1 1.18 1.24 ...
##  $ x25 : num [1:42] 1.06 1.11 1.12 1.19 1.2 ...
##  $ x26 : num [1:42] 5.12 6.18 6.26 7.43 8.84 ...
##  $ x27 : num [1:42] 13065036 4305875 5071000 18871842 8304011 ...
##  $ x28 : num [1:42] 13769485 4589575 5409482 20386733 9109354 ...
##  $ x29 : num [1:42] 0.0283 -0.5488 -0.5488 0.2093 1.4727 ...
#############################################################

# Selección de variables

#############################################################

datos_sel <- datos %>%

  select(

    x1, x2, x4, x7, x10,

    x11, x15, x16, x17, x20,

    x21, x22, x25, x26, x29

  )

Las 15 variables que se usaran en el estudio son:

x1: PIB per cápita (pib_percapita)

x2: Gasto público en educación como % del PIB (porcen_pib_educacion)

x4: Comercio como % del PIB (porcen_pib_comercio)

x7: Tasa de desempleo (desempleo)

x10: Emisiones de CO2 per cápita (dioxido_percapita)

x11: % de la población con inseguridad alimentaria (inseguridad_alimentaria)

x15: % de la población con desnutrición (desnutricion)

x16: % de la población en pobreza extrema (porcen_pobreza)

x17: Gasto sanitario total como % del PIB (porcen_pib_salud) (A esta es a la que le hicieron el Histograma)

x20: % de la población que utiliza internet (internet)

x21: Índice de Desarrollo Humano (idh)

x22: Índice de percepción de la corrupción (ind_corrupcion)

x25: Satisfacción vital autoinformada (satisfaccion_vital)

x26: Esperanza de vida (esperanza_vida)

x29: Ingresos fiscales como % del PIB (porcen_pib_fiscales)

# Verificar dimensiones

dim(datos_sel)
## [1] 42 15
# Estadísticas descriptivas iniciales

summary(datos_sel)
##        x1                x2                x4                  x7           
##  Min.   :-7.2816   Min.   : 0.7270   Min.   :8.364e+09   Min.   :1.310e+10  
##  1st Qu.:-1.9445   1st Qu.: 0.8456   1st Qu.:9.325e+10   1st Qu.:2.263e+11  
##  Median : 0.3565   Median : 1.3005   Median :2.106e+11   Median :1.046e+12  
##  Mean   : 1.0120   Mean   : 7.9867   Mean   :3.762e+11   Mean   :5.074e+13  
##  3rd Qu.: 3.9323   3rd Qu.: 6.3417   3rd Qu.:5.139e+11   3rd Qu.:2.198e+12  
##  Max.   :14.9125   Max.   :95.0821   Max.   :2.751e+12   Max.   :8.825e+14  
##       x10                 x11                 x15              x16        
##  Min.   :2.601e+10   Min.   :1.885e+10   Min.   :-3.586   Min.   :-8.283  
##  1st Qu.:4.295e+11   1st Qu.:3.155e+11   1st Qu.: 6.803   1st Qu.: 7.868  
##  Median :1.931e+12   Median :5.341e+11   Median :10.405   Median :13.125  
##  Mean   :9.137e+13   Mean   :1.545e+12   Mean   :10.670   Mean   :12.824  
##  3rd Qu.:4.297e+12   3rd Qu.:1.711e+12   3rd Qu.:13.856   3rd Qu.:15.785  
##  Max.   :1.916e+15   Max.   :2.053e+13   Max.   :27.823   Max.   :35.465  
##       x17              x20               x21               x22         
##  Min.   : 1.641   Min.   :-39.070   Min.   : 0.3986   Min.   : 0.4061  
##  1st Qu.: 4.740   1st Qu.:  2.801   1st Qu.: 4.2171   1st Qu.: 2.5272  
##  Median : 5.291   Median :  6.599   Median : 5.7335   Median : 4.0269  
##  Mean   : 6.415   Mean   :  7.344   Mean   : 6.6107   Mean   : 4.4603  
##  3rd Qu.: 8.181   3rd Qu.: 11.334   3rd Qu.: 7.8801   3rd Qu.: 5.7379  
##  Max.   :13.427   Max.   : 35.318   Max.   :20.5054   Max.   :12.6307  
##       x25               x26              x29          
##  Min.   : 0.9997   Min.   : 2.820   Min.   :-0.73933  
##  1st Qu.: 1.0819   1st Qu.: 4.558   1st Qu.:-0.54877  
##  Median : 1.1377   Median : 6.082   Median : 0.01972  
##  Mean   : 2.8858   Mean   : 7.372   Mean   : 0.99565  
##  3rd Qu.: 1.2650   3rd Qu.: 7.844   3rd Qu.: 1.06311  
##  Max.   :67.1523   Max.   :34.267   Max.   :18.71363

Análisis Descriptivo

Antes de aplicar cualquier algoritmo, realizamos un análisis descriptivo general para revisar cómo vienen distribuidos los datos originales de las 15 variables.Al observar los valores mínimos, máximos y las medias de la tabla, saltan a la vista dos realidades importantes:Escalas completamente diferentes: Tenemos variables macroeconómicas con valores astronómicos expresados en notación científica (como el Comercio x4 o las Emisiones de CO2 x10 que llegan a magnitudes, conviviendo con índices muy pequeños que apenas se mueven entre 0 y 30 (como el IDH x21 o el Gasto en Salud x17).Presencia de asimetrías y valores extremos: En variables como el PIB per cápita (x1) o los Ingresos Fiscales (x29), encontramos incluso valores mínimos negativos, lo que refleja fuertes contrastes económicos o anomalías en el registro original de los países.

Conclusión de este paso: Si intentáramos agrupar a los países usando estos datos en bruto, las variables con números gigantescos (como el Comercio o el CO2) dominarían por completo los cálculos, haciendo que el IDH o la Salud no sirvieran de nada en el modelo. Esto justifica y hace obligatorio el paso siguiente: la estandarización mediante scale().

#############################################################

# Valores faltantes

#############################################################



colSums(is.na(datos_sel))
##  x1  x2  x4  x7 x10 x11 x15 x16 x17 x20 x21 x22 x25 x26 x29 
##   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

Verificación de Valores Faltantes

Antes de avanzar a la estandarización, ejecutamos la función colSums(is.na(datos_sel)) para contabilizar si existían datos perdidos o celdas vacías en nuestras 15 variables seleccionadas.

#############################################################

# Estandarización

#############################################################



datos_std <- scale(datos_sel)

View(datos_std)

Estandarización de las Variables

Una vez que comprobamos que los datos estaban completos, aplicamos la función scale() para estandarizar las 15 variables. Este proceso se realizó de la siguiente manera:

¿En qué consiste? R toma el valor de cada país, le resta la media de esa variable y lo divide por su desviación estándar.

El objetivo: Lograr que todas las variables —sin importar si se medían en dinero, porcentajes o tasas— queden exactamente en la misma escala, con una media de 0 y una desviación estándar de 1.

# Convertir a data.frame

datos_std <- as.data.frame(datos_std)

Verificación de la Estandarización

Después de transformar los datos, ejecutamos un control de calidad estadístico para asegurarnos de que el escalamiento se aplicó correctamente en las 15 variables. Los resultados confirman que el proceso fue un éxito:

Medias cercanas a 0 (colMeans): Al revisar el resultado del comando, todos los valores se muestran como 0 (o números extremadamente pequeños con notación e-16, que científicamente equivalen a cero). Esto significa que el centro de los datos de cada variable ahora es el mismo.

Desviaciones estándar iguales a 1 (apply con sd): El resultado muestra un 1 exacto para cada una de las variables. Esto nos demuestra que la dispersión o “el ancho” de los datos se ha homogeneizado por completo.

Con esta verificación, la base de datos queda formalmente validada. Hemos eliminado el efecto de las diferentes unidades de medida y estamos listos para que los algoritmos de Clúster y ACP operen sin sesgos.

#############################################################

# Verificación de la estandarización

#############################################################

# Medias (deben ser cercanas a 0)

round(colMeans(datos_std), 4)
##  x1  x2  x4  x7 x10 x11 x15 x16 x17 x20 x21 x22 x25 x26 x29 
##   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
# Desviaciones estándar (deben ser cercanas a 1)

round(apply(datos_std, 2, sd), 4)
##  x1  x2  x4  x7 x10 x11 x15 x16 x17 x20 x21 x22 x25 x26 x29 
##   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1

Visualización de los Datos Estandarizados

Para cerrar la etapa de preparación de los datos, utilizamos la función head(datos_std) con el fin de inspeccionar las primeras 6 filas de nuestra tabla final.

Lo que observamos: En lugar de los números gigantescos de comercio o los porcentajes originales, ahora vemos valores tanto positivos como negativos (por ejemplo: 0.45, -1.23, 2.15).

Cómo se interpreta: * Un número positivo significa que ese país está por encima del promedio global de la OECD en esa variable.

Un número negativo significa que el país está por debajo del promedio.

Un valor cercano a 0 significa que el país se comporta exactamente como la media del grupo.

#############################################################

# Visualizar primeras filas

#############################################################





head(datos_std)
##           x1         x2         x4         x7        x10         x11
## 1  0.4090990 -0.3652676 -0.2163523 -0.2870449 -0.2697996 -0.08896319
## 2 -0.1294945 -0.3919375 -0.2923963 -0.2922081 -0.2749048 -0.33671537
## 3 -0.1146314 -0.3919375  0.1232646 -0.2919752 -0.2746546 -0.30486866
## 4 -0.1907450 -0.3695456  0.3047038 -0.2863449 -0.2696946  0.05465196
## 5 -1.4790588 -0.3966429 -0.5937920  0.4645663  0.3292201 -0.33592666
## 6 -1.3091371 -0.2328410 -0.6398940  3.5756654  2.4625382 -0.26068232
##           x15        x16         x17         x20        x21       x22
## 1 -1.84944855 -0.7700520 -0.52015277  0.22479481 -0.4014416 0.3210262
## 2 -0.06309137  0.1003061 -0.58838153  0.12845362 -0.8247253 1.2326008
## 3  0.08556415 -0.2619922 -0.09775404 -0.22923430 -0.2708325 0.1361429
## 4 -1.34704307 -0.6218908 -0.65293210 -0.01915997 -0.4403000 0.4910856
## 5 -1.75821399  2.2192228  1.89666115  0.98965132  3.5363088 2.1462644
## 6  0.60344557  1.9265783  1.48520704  0.35265085  2.0755545 2.1101776
##          x25         x26        x29
## 1 -0.1794071 -0.42822523 -0.3050145
## 2 -0.1742919 -0.22599494 -0.4869863
## 3 -0.1733917 -0.21160546 -0.4869863
## 4 -0.1662993  0.01116028 -0.2479629
## 5 -0.1655927  0.27881638  0.1504090
## 6 -0.1559093  1.21900491  0.3395544

Tabla Consolidada de Estadísticas Descriptivas

En esta sección agrupamos los principales estadísticos de las 15 variables seleccionadas en su escala original, facilitando la lectura del comportamiento general de la muestra a través de cuatro métricas clave: Media, Desviación Estándar, Mínimo y Máximo.

¿Para qué sirve? Mientras que el summary() inicial nos daba un vistazo rápido, esta tabla consolidada resume de manera limpia el comportamiento central y la dispersión de cada indicador socioeconómico.

Lo que nos revela: Nos permite identificar al instante qué variables tienen un comportamiento homogéneo (poca variación entre países) y cuáles muestran brechas profundas dentro de la OECD. Por ejemplo, al mirar las columnas de Mínimo y Máximo, se pueden contrastar las distancias reales que separan a las economías más rezagadas de las más desarrolladas en aspectos críticos como el PIB per cápita (x1), la pobreza extrema (x16) o el Gasto en Salud (x17).

#############################################################

# ANALISIS DESCRIPTIVO

#############################################################



library(psych)



# Estadísticas descriptivas

describe(datos_sel)
##     vars  n         mean           sd       median      trimmed          mad
## x1     1 42 1.010000e+00 5.080000e+00 3.600000e-01 6.800000e-01 4.150000e+00
## x2     2 42 7.990000e+00 1.822000e+01 1.300000e+00 3.570000e+00 7.400000e-01
## x4     3 42 3.762049e+11 4.947373e+11 2.106370e+11 2.831615e+11 2.299121e+11
## x7     4 42 5.073561e+13 1.730062e+14 1.046384e+12 4.674971e+12 1.251964e+12
## x10    5 42 9.137015e+13 3.310409e+14 1.930567e+12 8.197578e+12 2.296925e+12
## x11    6 42 1.545227e+12 3.230601e+12 5.341115e+11 9.354863e+11 5.046302e+11
## x15    7 42 1.067000e+01 6.890000e+00 1.041000e+01 1.049000e+01 5.340000e+00
## x16    8 42 1.282000e+01 8.240000e+00 1.312000e+01 1.233000e+01 6.460000e+00
## x17    9 42 6.410000e+00 2.870000e+00 5.290000e+00 6.160000e+00 2.150000e+00
## x20   10 42 7.340000e+00 1.081000e+01 6.600000e+00 7.160000e+00 6.750000e+00
## x21   11 42 6.610000e+00 3.930000e+00 5.730000e+00 6.180000e+00 2.990000e+00
## x22   12 42 4.460000e+00 2.780000e+00 4.030000e+00 4.140000e+00 2.480000e+00
## x25   13 42 2.890000e+00 1.018000e+01 1.140000e+00 1.180000e+00 1.100000e-01
## x26   14 42 7.370000e+00 5.270000e+00 6.080000e+00 6.460000e+00 2.390000e+00
## x29   15 42 1.000000e+00 3.170000e+00 2.000000e-02 3.500000e-01 8.400000e-01
##               min          max        range  skew kurtosis           se
## x1  -7.280000e+00 1.491000e+01 2.219000e+01  0.73     0.42 7.800000e-01
## x2   7.300000e-01 9.508000e+01 9.436000e+01  3.71    13.54 2.810000e+00
## x4   8.363996e+09 2.751302e+12 2.742938e+12  2.99    10.78 7.633962e+10
## x7   1.310195e+10 8.824598e+14 8.824467e+14  3.78    13.70 2.669543e+13
## x10  2.601447e+10 1.915777e+15 1.915751e+15  4.38    19.92 5.108071e+13
## x11  1.884749e+10 2.052937e+13 2.051053e+13  4.85    25.46 4.984925e+11
## x15 -3.590000e+00 2.782000e+01 3.141000e+01  0.26     0.22 1.060000e+00
## x16 -8.280000e+00 3.547000e+01 4.375000e+01  0.45     0.79 1.270000e+00
## x17  1.640000e+00 1.343000e+01 1.179000e+01  0.81    -0.15 4.400000e-01
## x20 -3.907000e+01 3.532000e+01 7.439000e+01 -1.09     7.11 1.670000e+00
## x21  4.000000e-01 2.051000e+01 2.011000e+01  1.37     2.39 6.100000e-01
## x22  4.100000e-01 1.263000e+01 1.222000e+01  0.97     0.63 4.300000e-01
## x25  1.000000e+00 6.715000e+01 6.615000e+01  5.99    34.81 1.570000e+00
## x26  2.820000e+00 3.427000e+01 3.145000e+01  3.29    13.53 8.100000e-01
## x29 -7.400000e-01 1.871000e+01 1.945000e+01  4.22    20.35 4.900000e-01
#TABLA DE ESTADISTICA DESCRIPTIVA

tabla_desc <- data.frame(

  Variable = names(datos_sel),

  Media = round(colMeans(datos_sel, na.rm = TRUE),2),

  Desv_Est = round(apply(datos_sel,2,sd,na.rm = TRUE),2),

  Minimo = round(apply(datos_sel,2,min,na.rm = TRUE),2),

  Maximo = round(apply(datos_sel,2,max,na.rm = TRUE),2)

)



tabla_desc
##     Variable        Media     Desv_Est        Minimo       Maximo
## x1        x1 1.010000e+00 5.080000e+00 -7.280000e+00 1.491000e+01
## x2        x2 7.990000e+00 1.822000e+01  7.300000e-01 9.508000e+01
## x4        x4 3.762049e+11 4.947373e+11  8.363996e+09 2.751302e+12
## x7        x7 5.073561e+13 1.730062e+14  1.310195e+10 8.824598e+14
## x10      x10 9.137015e+13 3.310409e+14  2.601447e+10 1.915777e+15
## x11      x11 1.545227e+12 3.230601e+12  1.884749e+10 2.052937e+13
## x15      x15 1.067000e+01 6.890000e+00 -3.590000e+00 2.782000e+01
## x16      x16 1.282000e+01 8.240000e+00 -8.280000e+00 3.547000e+01
## x17      x17 6.410000e+00 2.870000e+00  1.640000e+00 1.343000e+01
## x20      x20 7.340000e+00 1.081000e+01 -3.907000e+01 3.532000e+01
## x21      x21 6.610000e+00 3.930000e+00  4.000000e-01 2.051000e+01
## x22      x22 4.460000e+00 2.780000e+00  4.100000e-01 1.263000e+01
## x25      x25 2.890000e+00 1.018000e+01  1.000000e+00 6.715000e+01
## x26      x26 7.370000e+00 5.270000e+00  2.820000e+00 3.427000e+01
## x29      x29 1.000000e+00 3.170000e+00 -7.400000e-01 1.871000e+01

Análisis de Correlación y Reestructuración de Datos

En este paso realizamos un análisis de asociación entre las 15 variables y preparamos la estructura de la tabla para los gráficos que vienen:

Matriz de Correlación (cor y corrplot): Este análisis nos dice qué variables se mueven juntas. Al mirar el gráfico de colores en la parte superior derecha, buscamos dos cosas:

Justificación para el ACP: Encontrar muchas variables correlacionadas es la señal verde que necesitábamos para hacer el Análisis de Componentes Principales (ACP), ya que confirma que se pueden resumir en menos dimensiones.

Transformación a Formato Largo (pivot_longer): La función pivot_longer reorganiza la tabla de datos estandarizados, pasando de tener 15 columnas a tener solo dos: una que dice el nombre de la variable y otra con su valor. No cambia ningún número; simplemente los acomoda en “formato largo” porque es el único formato que entiende ggplot2 para poder dibujar el gráfico de cajas de todas las variables al mismo tiempo.

#Tabla de correlacion

correlaciones <- cor(datos_sel,

                     use = "complete.obs")



round(correlaciones,2)
##        x1    x2    x4    x7   x10   x11   x15   x16   x17   x20   x21   x22
## x1   1.00  0.00  0.11 -0.04  0.01 -0.10 -0.07 -0.57 -0.19 -0.49 -0.42 -0.12
## x2   0.00  1.00 -0.05  0.04  0.05 -0.07  0.17  0.37  0.19  0.34  0.13 -0.06
## x4   0.11 -0.05  1.00  0.06  0.09  0.89 -0.16 -0.21 -0.20 -0.20 -0.24 -0.12
## x7  -0.04  0.04  0.06  1.00  0.98  0.05  0.05  0.17  0.02 -0.03  0.12  0.24
## x10  0.01  0.05  0.09  0.98  1.00  0.06  0.04  0.10 -0.04 -0.05  0.04  0.18
## x11 -0.10 -0.07  0.89  0.05  0.06  1.00 -0.15 -0.09 -0.12 -0.05 -0.03 -0.19
## x15 -0.07  0.17 -0.16  0.05  0.04 -0.15  1.00  0.25  0.41  0.07  0.20 -0.35
## x16 -0.57  0.37 -0.21  0.17  0.10 -0.09  0.25  1.00  0.34  0.68  0.56  0.13
## x17 -0.19  0.19 -0.20  0.02 -0.04 -0.12  0.41  0.34  1.00  0.21  0.74  0.37
## x20 -0.49  0.34 -0.20 -0.03 -0.05 -0.05  0.07  0.68  0.21  1.00  0.43  0.14
## x21 -0.42  0.13 -0.24  0.12  0.04 -0.03  0.20  0.56  0.74  0.43  1.00  0.32
## x22 -0.12 -0.06 -0.12  0.24  0.18 -0.19 -0.35  0.13  0.37  0.14  0.32  1.00
## x25  0.00  0.76 -0.10 -0.05 -0.05 -0.03 -0.02  0.18  0.23  0.39  0.15  0.14
## x26 -0.12  0.07 -0.19 -0.01 -0.05 -0.07  0.18  0.09  0.15  0.08  0.19 -0.17
## x29 -0.20  0.25 -0.09  0.03  0.02  0.04  0.28  0.01  0.28  0.13  0.43 -0.19
##       x25   x26   x29
## x1   0.00 -0.12 -0.20
## x2   0.76  0.07  0.25
## x4  -0.10 -0.19 -0.09
## x7  -0.05 -0.01  0.03
## x10 -0.05 -0.05  0.02
## x11 -0.03 -0.07  0.04
## x15 -0.02  0.18  0.28
## x16  0.18  0.09  0.01
## x17  0.23  0.15  0.28
## x20  0.39  0.08  0.13
## x21  0.15  0.19  0.43
## x22  0.14 -0.17 -0.19
## x25  1.00  0.07  0.12
## x26  0.07  1.00  0.29
## x29  0.12  0.29  1.00
library(corrplot)



corrplot(correlaciones,

         method = "color",

         type = "upper",

         tl.col = "black",

         tl.cex = 0.8)

library(tidyr)



datos_std_long <- datos_std %>%

  pivot_longer(

    cols = everything(),

    names_to = "variable",

    values_to = "value"

  )

Gráfico de Cajas de las Variables Estandarizadas

Este gráfico nos permite visualizar de un solo vistazo cómo se distribuyen los datos de las 15 variables después de haber sido estandarizadas.

El alineamiento: Como pueden ver, todas las cajas están centradas horizontalmente en torno al valor 0. Esto es la prueba visual de que el escalamiento funcionó y que ahora todas las variables comparten la misma escala de medida.

Identificación de valores atípicos (Outliers): Los puntos que aparecen flotando muy arriba o muy abajo de los bigotes de las cajas representan países con comportamientos extremos o “atípicos” dentro de la OECD. Por ejemplo, una caja muy estirada o con puntos muy alejados nos avisa que en esa variable específica existen brechas gigantescas entre algunos países y el promedio global.

# BOXPLOTS

ggplot(datos_std_long,

       aes(x = variable,

           y = value)) +

  geom_boxplot() +

  theme(axis.text.x = element_text(angle = 90))

Histograma de la Variable x17

Con este gráfico hacemos un acercamiento exclusivo a la variable x17, que corresponde al Gasto Sanitario Total como porcentaje del PIB, utilizando los datos originales (sin estandarizar) divididos en 10 barras (bins = 10).

¿Qué estamos buscando? Queremos ver la forma real en la que se distribuye el presupuesto de salud entre los países. Al observar la acumulación de las barras de color azul, podemos identificar cuál es el porcentaje de inversión más común o frecuente en la OECD (donde se encuentra el pico más alto del gráfico).

Interpretación: Si las barras se concentran en el centro, significa que la mayoría de los países invierten un porcentaje similar en salud. Si hay barras aisladas muy hacia la derecha, nos muestra visualmente a esos países que hacen un esfuerzo presupuestal excepcionalmente alto en comparación con el resto del grupo.

# HISTOGRAMA

ggplot(datos_sel, aes(x = x17)) +

  geom_histogram(bins = 10, color = "black", fill = "steelblue") +

  theme_minimal()

Determinación del Número Óptimo de Clústeres

Para no elegir a ciegas la cantidad de grupos en los que vamos a dividir a los países de la OECD, ejecutamos el método matemático de la Silueta (silhouette) aplicando el mismo algoritmo de enlace que usaremos más adelante (ward.D2)

.¿Cómo se interpreta el gráfico? El eje horizontal (x) muestra las diferentes opciones de grupos (desde 2 hasta 10 clústeres), y el eje vertical (y) mide la calidad de la agrupación mediante el “Ancho promedio de la silueta”. La regla matemática dice que el punto más alto del gráfico indica el número óptimo de grupos.

El resultado: Al visualizar la gráfica, la línea alcanza su pico máximo en k = 5 (o el número que les marque el punto más alto con la línea punteada en su pantalla).

Esto nos demuestra con certeza estadística que la estructura de los datos socioeconómicos de la OECD se organiza de la forma más limpia y homogénea posible si dividimos a las naciones en 5 clústeres bien diferenciados.

# SILUETA

silueta_optimo <- fviz_nbclust(

  datos_std,

  FUN = hcut,

  method = "silhouette",

  k.max = 10,

  hc_method = "ward.D2"

) +

  labs(

    title = "Método de Silueta - Número Óptimo de Clusters",

    subtitle = "Datos Económicos OECD (15 variables seleccionadas)",

    x = "Número de clusters (k)",

    y = "Ancho promedio de la silueta"

  ) +

  theme_minimal()



silueta_optimo

Clusterización mediante el Método de Ward

La clusterización es un método de clasificación automática que agrupa observaciones (países) en conjuntos mutuamente excluyentes llamados clusters, logrando que los elementos de un mismo grupo sean altamente similares (cohesión) y los grupos entre sí sean lo más diferentes posible (separación).

En este reporte se optó por un enfoque jerárquico aglomerativo utilizando la Distancia Euclidiana como medida de disimilitud para emparejar las observaciones. El algoritmo de Ward (específicamente la variante ward.D2) se seleccionó debido a su alta eficiencia, ya que minimiza la suma de los cuadrados de las desviaciones (varianza interna) dentro de cada cluster en cada etapa del agrupamiento. Para determinar de manera óptima y objetiva el número de grupos idóneo (\(k\)) previo a la ejecución del árbol, se utilizó el Método de la Silueta (Silhouette), el cual evalúa de forma matemática la calidad y consistencia del agrupamiento en un rango de opciones del 2 al 10.

Selección de 15 Variables

Siguiendo las instrucciones de la guía de actividades, se seleccionaron exactamente 15 variables e indicadores macroeconómicos de la base de datos original de la OECD. Esta selección busca cubrir las dimensiones más importantes de la economía de un país: su tamaño, su velocidad de crecimiento, su sector externo y su estabilidad financiera.

Las 15 variables se agrupan en cuatro dimensiones clave para facilitar su análisis:

Dimensión de Tamaño Absoluto del Mercado:

x4 (Goods and services trade, volume in USD): Volumen total de comercio.

x7 (Private final consumption expenditure, volume): Gasto total en consumo privado.

x10 (Gross domestic product, volume, market prices): Volumen real del PIB a precios de mercado.

x11 (Gross domestic product, volume in USD, at constant PPP): PIB medido en dólares según la paridad del poder adquisitivo.

Dimensión de Velocidad de Crecimiento Económico:

x15 (Exports growth): Tasa de crecimiento de las exportaciones.

x16 (Imports growth): Tasa de crecimiento de las importaciones.

x17 (Gross domestic product, volume, growth): Tasa de crecimiento real del PIB.

x20 (Gross fixed capital formation, total, volume, growth): Tasa de crecimiento de la inversión nacional.

x21 (Private final consumption expenditure, volume, growth): Crecimiento del consumo de los hogares.

x22 (Government final consumption expenditure, volume, growth): Crecimiento del gasto público o consumo del gobierno.

Dimensión de Sector Externo y Tipo de Cambio:

x1 (Current account balance as a percentage of GDP): Saldo de la balanza de cuenta corriente.

x2 (Exchange rate, national currency per USD): Tipo de cambio de la moneda local frente al dólar.

Dimensión de Estabilidad Social y Financiera:

x25 (Gross domestic product, market prices, deflator): Deflactor del PIB, indicador del nivel general de precios.

x26 (Unemployment rate): Tasa de desempleo abierto.

x29 (Short-term interest rate): Tasa de interés a corto plazo del sistema financiero.

Descripción Detallada de las 15 Variables

x1 (Balanza de Cuenta Corriente como % del PIB):

Mide la diferencia entre el dinero que entra y sale de un país por intercambio de bienes, servicios y transferencias. Si el número es positivo significa superávit (le sobra dinero en su comercio exterior); si es negativo significa déficit (importa más de lo que exporta).

x2 (Tipo de Cambio):

Indica la cantidad de unidades de la moneda nacional que se necesitan para comprar un dólar estadounidense. Permite evaluar la fortaleza, devaluación o estabilidad de las monedas locales frente a la divisa global.

x4 (Volumen de Comercio de Bienes y Servicios):

Representa la suma total de las exportaciones e importaciones de un país expresada en dólares. Mide el grado de apertura e integración de una economía en el mercado internacional.

x7 (Gasto en Consumo Final Privado):

Es el valor total de todas las compras de bienes y servicios realizadas por los hogares (comida, ropa, autos, servicios públicos). Refleja el tamaño del mercado de consumo interno de una nación.

x10 (Producto Interno Bruto, Volumen a Precios de Mercado):

Es el valor total de la producción de bienes y servicios finales de un país. Es el indicador estándar para medir el tamaño absoluto de una economía.

x11 (Producto Interno Bruto a Paridad de Poder Adquisitivo - PPP):

Es el tamaño del PIB medido en dólares constantes, pero ajustado según el costo de vida de cada país. Permite comparar el verdadero poder de compra de las economías eliminando las diferencias de precios entre naciones.

x15 (Crecimiento de las Exportaciones):

Tasa porcentual que mide qué tan rápido están aumentando o disminuyendo las ventas de bienes y servicios del país hacia el resto del mundo de un año a otro.

x16 (Crecimiento de las Importaciones):

Tasa porcentual que mide el ritmo de aumento o disminución de las compras que hace el país de productos provenientes del extranjero.

x17 (Crecimiento del Producto Interno Bruto):

Es la velocidad a la que se expande la economía. Mide la variación porcentual del PIB de un periodo a otro. Un número alto indica auge y dinamismo; un número cercano a cero indica estancamiento.

x20 (Crecimiento de la Formación Bruta de Capital Fijo):

Mide la velocidad de crecimiento de la inversión total en el país (maquinaria, infraestructura, fábricas, carreteras). Es clave porque la inversión define la capacidad de producir más en el futuro.

x21 (Crecimiento del Gasto en Consumo Privado):

Tasa porcentual que indica qué tan rápido está aumentando el gasto diario de las familias. Un crecimiento alto refleja confianza en el empleo y mayor bienestar en los hogares.

x22 (Crecimiento del Gasto en Consumo Final del Gobierno):

Mide el ritmo de aumento del gasto público del Estado (salarios de empleados públicos, salud, educación, administración). Muestra la expansión o contracción de la política fiscal del gobierno.

x25 (Deflactor del PIB):

Es un indicador económico que mide el nivel general de precios de todos los bienes y servicios producidos en el país. Se utiliza para calcular la inflación interna real de la economía.

x26 (Tasa de Desempleo):

Porcentaje de la población económicamente activa que se encuentra sin trabajo pero está buscando empleo activamente. Es el principal indicador de la salud socio-laboral de una nación.

x29 (Tasa de Interés a Corto Plazo):

Es el costo del dinero fijado por los bancos centrales para préstamos a corto plazo. Una tasa alta sirve para frenar la inflación controlando el consumo; una tasa baja busca abaratar los créditos para estimular la economía.

########################################

#CLUSTERIZACION CON METODO DE WARD

#######################################

#comenzamos mirando k óptimo de clusters Ward con Método de la silueta (silhouette)



# Evaluar cuántos grupos son ideales usando SOLO el Método de Ward con tus 15 variables

# Calcular silueta para k = 2 a 10 (REcoemendado para informe)

silueta_optimo <- fviz_nbclust(

  datos_std,

  FUN = hcut,

  method = "silhouette",

  k.max = 10,

  hc_method = "ward.D2"

) +

  labs(

    title = "Método de Silueta - Número Óptimo de Clusters",

    subtitle = "Datos Económicos OECD (15 variables seleccionadas)",

    x = "Número de Grupos (k)",

    y = "Ancho Promedio de la Silueta"

  ) +

  theme_minimal()



print(silueta_optimo)

#Calcular las distancias euclidianas con los datos estandarizados

distancias_paises <- dist(datos_std, method = "euclidean")



#Aplicar el Método de Ward (se usa "ward.D2" que es la versión matemática correcta)

analisis_ward <- hclust(distancias_paises, method = "ward.D2")

Interpretación del Dendrograma

El gráfico de árbol muestra de forma visual cómo se agrupan los países por su cercanía socioeconómica. Al aplicar el corte de k = 5 grupos, el mapa dibuja rectángulos de colores para identificar cada segmento:

Los colores: Los países que quedaron encerrados bajo el mismo color comparten características y perfiles muy similares en sus indicadores.

Las uniones: La altura de las líneas verticales indica la distancia entre las observaciones; entre más arriba se corte el brazo del árbol, mayor es la diferencia entre esos grupos de países.

Este gráfico nos permite identificar de un solo vistazo la estructura y las divisiones reales que existen dentro de las economías de la OECD.

#############################################################

# DENDROGRAMA COMPLETO

#############################################################



k_optimo <- 5



fviz_dend(

  analisis_ward,

  k = k_optimo,

  cex = 0.7,                  # tamaño etiquetas

  k_colors = "jco",           # colores suaves

  color_labels_by_k = TRUE,

  rect = TRUE,                # dibuja rectángulos

  rect_fill = FALSE,          # sin relleno

  rect_border = "jco",

  show_labels = TRUE,         # mostrar etiquetas

  main = "Dendrograma de Países - Método de Ward",

  xlab = "Países",

  ylab = "Distancia"

  

)

Asignación de Clústeres y Resumen de Resultados

En esta parte del proceso pasamos de los gráficos a las tablas numéricas para organizar los resultados finales:

Conteo de países (table(grupos)): Esta función nos muestra el tamaño de cada clúster, es decir, cuántos países cayeron en cada uno de los 5 grupos. Nos sirve para ver si los datos se dividieron de forma equilibrada o si hay clústeres muy pequeños con comportamientos muy exclusivos.

Perfil de los grupos (resumen_cluster): Al agrupar los datos por clúster y calcular la media de cada variable, obtenemos la “cédula de identidad” de cada grupo. Esta tabla nos revela exactamente las características socioeconómicas de cada segmento (por ejemplo, qué clúster tiene el PIB per cápita más alto, cuál sufre mayor desempleo o cuál invierte más en salud).

Consolidado final (datos_con_nombres): Cruzamos los números con la columna original de países de la OECD para crear una lista definitiva. Así sabemos con nombre propio en qué grupo quedó cada país y podemos exportar o revisar la base de datos de forma interactiva.

#############################################################

# OBTENER LOS CLUSTERS

#############################################################



grupos <- cutree(

  analisis_ward,

  k = k_optimo

)



#############################################################

# CANTIDAD DE PAÍSES POR CLUSTER

#############################################################



table(grupos)
## grupos
##  1  2  3  4  5 
## 28 11  1  1  1
#############################################################

# AGREGAR CLUSTERS A LA BASE

#############################################################

datos_cluster <- data.frame(

  Cluster = grupos,

  datos_sel

)

#############################################################

# RESUMEN DE CADA CLUSTER

#############################################################



library(dplyr)



resumen_cluster <- datos_cluster %>%

  group_by(Cluster) %>%

  summarise(

    across(

      everything(),

      mean,

      na.rm = TRUE

    )

  )
## Warning: There was 1 warning in `summarise()`.
## ℹ In argument: `across(everything(), mean, na.rm = TRUE)`.
## ℹ In group 1: `Cluster = 1`.
## Caused by warning:
## ! The `...` argument of `across()` is deprecated as of dplyr 1.1.0.
## Supply arguments directly to `.fns` through an anonymous function instead.
## 
##   # Previously
##   across(a:b, mean, na.rm = TRUE)
## 
##   # Now
##   across(a:b, \(x) mean(x, na.rm = TRUE))
resumen_cluster
## # A tibble: 5 × 16
##   Cluster    x1    x2      x4      x7     x10     x11   x15   x16   x17   x20
##     <int> <dbl> <dbl>   <dbl>   <dbl>   <dbl>   <dbl> <dbl> <dbl> <dbl> <dbl>
## 1       1  1.93  3.92 3.86e11 1.23e13 2.28e13 1.26e12  8.34  9.65  5.19  4.26
## 2       2 -1.29 10.7  1.35e11 8.09e13 1.15e14 5.60e11 17.1  20.2   9.43 13.4 
## 3       3  4.86 11.4  6.98e11 8.82e14 1.92e15 2.23e12 10.8  10.1   4.15  2.76
## 4       4 -3.63  1    2.75e12 1.38e13 1.96e13 2.05e13  6.05 14.1   5.95  5.72
## 5       5  1.37 95.1  7.29e10 4.69e11 6.89e11 8.28e11  9.22 22.0  10.4  33.4 
## # ℹ 5 more variables: x21 <dbl>, x22 <dbl>, x25 <dbl>, x26 <dbl>, x29 <dbl>
#############################################################

# GUARDAR CLUSTER DE CADA PAÍS

#############################################################



datos_cluster
##    Cluster          x1         x2           x4           x7          x10
## 1        1  3.08979308  1.3314843 2.691674e+11 1.075068e+12 2.055445e+12
## 2        1  0.35432513  0.8455534 2.315455e+11 1.818011e+11 3.654151e+11
## 3        1  0.42981340  0.8455534 4.371885e+11 2.220900e+11 4.482640e+11
## 4        1  0.04323884  1.2535377 5.269532e+11 1.196175e+12 2.090196e+12
## 5        2 -6.49999185  0.7598196 8.243387e+10 1.311085e+14 2.003555e+14
## 6        2 -5.63697487  3.7443186 5.962549e+10 6.693478e+14 9.065709e+14
## 7        1 -0.83614486 21.6822229 1.732400e+11 2.416099e+12 5.189217e+12
## 8        1  9.03193435  6.2881372 1.897284e+11 1.017700e+12 2.180400e+12
## 9        2 -2.27514837  0.8455534 2.454644e+10 1.310195e+10 2.601447e+10
## 10       1  0.64090578  0.8455534 1.001402e+11 1.211060e+11 2.312110e+11
## 11       1  0.35860828  0.8455534 7.852054e+11 1.234526e+12 2.295184e+12
## 12       1  7.46412820  0.8455534 1.637524e+12 1.625250e+12 3.195798e+12
## 13       2 -6.71114510  0.8455534 7.968968e+10 1.262414e+11 1.810051e+11
## 14       1 -4.17692837  3.0315730 1.373877e+11 2.157544e+13 4.209137e+13
## 15       1 -1.60401226  1.2695007 8.363996e+09 1.477845e+12 2.674194e+12
## 16       1 14.24374151  0.8455534 5.390766e+11 9.671164e+10 4.232582e+11
## 17       2  4.27173917  3.2304838 1.218745e+11 7.583792e+11 1.487763e+12
## 18       1  3.05759769  0.8455534 5.756909e+11 9.850788e+11 1.676980e+12
## 19       1  3.97545432 10.9765277 8.438933e+11 2.889235e+14 5.359023e+14
## 20       3  4.85802600 11.4445618 6.983382e+11 8.824598e+14 1.915777e+15
## 21       1  4.67553889  0.8455534 1.330458e+11 1.998750e+10 6.218755e+10
## 22       1 -0.36992256 20.2233417 4.746434e+11 1.204225e+13 1.780666e+13
## 23       1  7.18511112  0.8455534 6.871727e+11 3.209920e+11 7.632200e+11
## 24       1 -5.86963123  1.4140355 5.121977e+10 1.703230e+11 2.724440e+11
## 25       1 14.91254099  8.5914975 1.397515e+11 1.547250e+12 3.675232e+12
## 26       1 -1.46263572  3.8608724 3.292968e+11 1.295177e+12 2.255303e+12
## 27       1 -1.17147003  0.8455534 9.553201e+10 1.284612e+11 1.971823e+11
## 28       1 -2.50201991  0.8455534 9.574386e+10 5.028605e+10 8.926212e+10
## 29       2  3.80286051  0.8455534 4.364352e+10 2.371521e+10 4.492168e+10
## 30       1  0.95488888  0.8455534 4.173638e+11 6.374380e+11 1.116506e+12
## 31       1  5.36397918  8.5769462 2.524303e+11 2.388760e+12 5.435508e+12
## 32       1  7.40112064  0.9140261 4.543193e+11 3.604093e+11 7.310894e+11
## 33       2 -1.69838323  8.8614760 2.695308e+11 1.242874e+12 2.009486e+12
## 34       1 -2.00433519  0.7269697 8.336687e+11 1.328146e+12 2.141293e+12
## 35       4 -3.63007099  1.0000000 2.751302e+12 1.375409e+13 1.960981e+13
## 36       5  1.37349112 95.0820778 7.288751e+10 4.691045e+11 6.892107e+11
## 37       1 -1.76492611  5.3938582 2.644902e+11 1.265180e+12 1.851648e+12
## 38       2  0.41990847  6.3595854 3.017303e+10 2.389060e+11 3.972095e+11
## 39       2 -1.19694648 73.9176514 6.241703e+11 8.377854e+13 1.473552e+14
## 40       2 -2.38867054  3.8812007 5.150131e+10 3.575347e+11 5.516164e+11
## 41       1 -7.28163945  4.1602997 1.146111e+11 5.354680e+11 7.690918e+11
## 42       2  3.67692129 14.7830722 9.249512e+10 2.978597e+12 4.504292e+12
##             x11        x15       x16       x17         x20        x21
## 1  1.257822e+12 -2.0666276  6.479293  4.921943   9.7740057  5.0333692
## 2  4.574339e+11 10.2353842 13.650815  4.726137   8.7323756  3.3702218
## 3  5.603179e+11 11.2591223 10.665572  6.134162   4.8650941  5.5465524
## 4  1.721786e+12  1.3932617  7.700102  4.540887   7.1363941  4.8806883
## 5  4.599819e+11 -1.4383274 31.110133 11.857822  18.0435479 20.5053990
## 6  7.030663e+11 14.8255890 28.698819 10.677013  11.1563707 14.7658695
## 7  4.010773e+11  6.7682023 13.225617  3.487682   0.6139368  4.0224380
## 8  3.148062e+11  7.9969728  7.972286  4.857170   6.2432491  4.1338381
## 9  4.828437e+10 19.9764765 21.373492  8.092265   6.9540932  6.7330411
## 10 2.547055e+11  5.4415001  5.965603  2.972339   1.4638945  3.6555827
## 11 2.870407e+12  8.6065787  7.832969  6.765551  11.3927785  5.2703477
## 12 4.106905e+12  9.5357724  8.874487  2.581413   1.0457447  0.3985635
## 13 2.971893e+11 21.9384962 16.066052  8.336077  19.6105760  7.7900133
## 14 3.175041e+11 10.2513067  9.094840  7.117315   5.1577450  4.8992261
## 15 1.884749e+10 12.7257784 20.344132  4.403045  12.2969191  7.7412585
## 16 5.012449e+11 13.9682040 -8.282775 13.426551 -39.0696630  4.4668657
## 17 3.791442e+11 14.4949676 20.712810  8.538596  11.4729779 11.0796375
## 18 2.270175e+12 13.5203194 14.843311  6.717357  16.5242087  5.1468186
## 19 5.178851e+12 11.7557548  5.083883  1.640696  -1.4740505  1.3025558
## 20 2.234176e+12 10.8451273 10.062037  4.145313   2.7642576  3.7020681
## 21 7.054959e+10  9.7212418 11.868196  5.097840   6.1091353  9.4312265
## 22 2.296286e+12  6.9066817 13.625768  4.782483   9.4836390  7.4902726
## 23 9.422079e+11  5.2624038  4.013566  4.870756   3.2048075  3.5842329
## 24 2.058905e+11 -3.5858887 14.940077  4.801068   9.0208949  6.2062730
## 25 3.403700e+11  4.7088613  2.281006  3.880916  -0.9262927  4.8733488
## 26 1.277661e+12 12.4519971 16.125778  6.847761   2.0504200  6.2779095
## 27 3.314007e+11 13.4561117 13.318280  5.482392   8.6842733  4.6542398
## 28 1.815956e+11 10.5595044 11.960331  3.014303   0.2155120  1.8203605
## 29 7.897750e+10 14.5000820 17.584989  8.211062  13.6856169  9.5060201
## 30 1.679632e+12 14.3783229 13.924215  5.519595   0.9199775  5.9720871
## 31 5.366847e+11  7.5646184  9.259765  4.830428   5.9880258  5.8796831
## 32 5.916094e+11 12.1825656  4.879469  4.229781   4.1461421  1.6932176
## 33 2.645504e+12 24.8939393  2.382650 11.353496   7.3993891 15.7216387
## 34 2.869845e+12 -0.3005971  2.780908  7.524910   5.5622961  6.2314907
## 35 2.052937e+13  6.0536783 14.134117  5.946623   5.7188986  8.2937582
## 36 8.282216e+11  9.2175760 22.020011 10.398249  33.4249715 10.0248307
## 37 3.061204e+12  6.4233516 13.024189  4.947930  17.3074672  3.6082077
## 38 1.131138e+11 27.8233128 14.423849  9.803787   7.4775664  9.9235397
## 39 2.580056e+11 24.3241253 35.465165  8.681229  15.8008003  7.9101098
## 40 4.028974e+11 17.0398899 25.013876 13.240283  35.3178452 11.4402892
## 41 5.315382e+11 12.5321452 14.627426  5.100109   2.9114640  7.0748619
## 42 7.732344e+11  9.9868499  9.494297  4.913087   0.2217744  5.5872410
##           x22        x25       x26          x29
## 1   5.3529772  1.0593302  5.116019  0.028333333
## 2   7.8876664  1.1114049  6.181400 -0.548766667
## 3   4.8388977  1.1205696  6.257206 -0.548766667
## 4   5.8258377  1.1927727  7.430772  0.209265070
## 5  10.4281642  1.1999659  8.840827  1.472650009
## 6  10.3278227  1.2985468 13.793891  2.072500000
## 7   1.5405304  1.1768066  2.820376  1.126666667
## 8   4.1634392  1.1485049  5.153853 -0.230833333
## 9   3.8986028  1.2053369  6.177399 -0.548766667
## 10  2.9192512  1.0871585  7.636166 -0.548766667
## 11  6.4017447  1.0887261  7.912627 -0.548766667
## 12  3.7910462  1.1241375  3.575452 -0.548766667
## 13  3.7392202  1.0100831 14.713913 -0.548766667
## 14  1.9815153  1.3096642  4.041010  0.872433333
## 15  2.1973444  1.2157765  5.986084  1.789166667
## 16  6.0577854  1.0061571  6.189130 -0.548766667
## 17  4.2579635  1.0606782  4.941249 -0.008333333
## 18  1.5330885  1.0616922  9.481938 -0.548766667
## 19  2.0960531  1.0101194  2.819569 -0.083777882
## 20  5.6327965  1.0813668  3.626403  0.850000000
## 21  5.4576881  1.1607685  5.734068 -0.548766667
## 22  0.9853111  1.4754891  4.134179  4.625833333
## 23  5.2197098  1.1216268  4.222728 -0.548766667
## 24  9.9220288  1.2813716  3.768216  0.488333333
## 25  3.7620748  1.1269718  4.445593  0.504166667
## 26  4.9599662  1.1634570  3.362247  0.605000000
## 27  4.5760555  1.0876773  6.576783 -0.548766667
## 28  4.1551499  1.1037491  6.826410 -0.548766667
## 29  5.7729717  1.1622020  4.754902 -0.548766667
## 30  2.8581550  1.0809096 14.780536 -0.548766667
## 31  2.5126635  1.0004818  8.801313 -0.042469865
## 32  3.4681735  0.9997199  5.088625 -0.739333333
## 33  2.6557616  3.6072851 12.023443 18.713626382
## 34 12.6306850  1.0632431  4.492205  0.090000000
## 35  1.3085555  1.1889498  5.350674  0.114166667
## 36  7.0969920 67.1522768  9.277229  2.463333333
## 37  2.0007338  4.6874416 13.203785  4.812500000
## 38  3.1832946  1.0835271  7.610790  0.011111100
## 39  2.5707728  1.6059592  6.740691  4.000000000
## 40  6.4014338  1.5685856  5.870592  0.709347970
## 41  0.4061435  1.5367709  5.596254  1.669166667
## 42  0.5583819  1.3747993 34.266521  3.925833333
View(datos_cluster)

# Agregar los nombres reales de los países en la primera columna de tu tabla de clusters

datos_con_nombres <- data.frame(

  Pais = datos$Pais, # (Cambia "Country" por el nombre real de tu columna si se llama diferente)

  datos_cluster

)



# Abrir la nueva tabla interactiva para ver los países y sus grupos

View(datos_con_nombres)

Análisis de Componentes Principales

Una vez agrupados los países con el modelo de clústeres, aplicamos un Análisis de Componentes Principales (ACP) mediante la función prcomp().

El proceso con este algoritmo se plantea bajo los siguientes puntos:

Reducir la complejidad: Como trabajar con 15 variables al mismo tiempo es difícil de visualizar, el ACP se encarga de simplificar el espacio matemático combinando esas variables en unas pocas dimensiones llamadas “Componentes Principales”.

Mantener la información: El algoritmo transforma las variables originales correlacionadas en nuevos factores que no están relacionados entre sí, ordenándolos según la cantidad de información (varianza) de la base de datos que logran retener.

Uso de datos estandarizados: Dejamos el parámetro scale = FALSE porque nuestros datos ya pasaron por un proceso de escalamiento previo. Así garantizamos que las nuevas dimensiones se calculen de forma justa sobre la matriz limpia.

##############################################################################

#APC

############################################################################

##################################################################
# ANÁLISIS DE COMPONENTES PRINCIPALES (ACP) DEFINITIVO

##################################################################

library(factoextra)



# 1. Ejecutar el ACP sobre tus datos económicos estandarizados

# Usamos scale = FALSE porque tus datos ya pasaron por scale() previamente

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

Análisis de Eigenvalores

Al ejecutar la función get_eigenvalue(res.pca), nos devuelve una tabla con tres columnas clave: el Eigenvalue (Valor propio), el Porcentaje de varianza que aporta cada componente por separado, y el Porcentaje acumulado.

Para elegir con cuántos componentes trabajar, nos basamos en dos criterios rápidos:

Criterio de Kaiser (Eigenvalues > 1): Revisamos la primera columna de los resultados. La regla nos dice que solo debemos conservar los componentes que tengan un valor propio mayor a 1, ya que esos factores aportan más información que una variable original por sí sola.

Porcentaje Acumulado: Miramos la última columna para ver en qué dimensión se logra superar un porcentaje aceptable (por lo general, capturar más del 60% o 70% de la variabilidad total de la base de datos).

Los números de esta tabla matemática son el respaldo analítico que usaremos para justificar la reducción de nuestras 15 variables a solo las dos primeras dimensiones.

# 2. OBTENER EIGENVALORES (Varianza explicada por cada factor)

# Esto te dará la tabla matemática para justificar cuántos componentes usar

eig.val <- get_eigenvalue(res.pca)

eig.val
##        eigenvalue variance.percent cumulative.variance.percent
## Dim.1  3.65525407      24.36836044                    24.36836
## Dim.2  2.14915782      14.32771879                    38.69608
## Dim.3  1.83352214      12.22348097                    50.91956
## Dim.4  1.65751285      11.05008569                    61.96965
## Dim.5  1.58212907      10.54752714                    72.51717
## Dim.6  1.22270584       8.15137226                    80.66855
## Dim.7  0.95406456       6.36043042                    87.02898
## Dim.8  0.69610304       4.64068690                    91.66966
## Dim.9  0.40763054       2.71753695                    94.38720
## Dim.10 0.34744430       2.31629533                    96.70349
## Dim.11 0.25531864       1.70212426                    98.40562
## Dim.12 0.12180291       0.81201942                    99.21764
## Dim.13 0.05634700       0.37564668                    99.59329
## Dim.14 0.04682227       0.31214845                    99.90543
## Dim.15 0.01418494       0.09456629                   100.00000

Para este bloque del Gráfico de Sedimentación

La descripción debe explicar qué es esa gráfica de barras y cómo se lee la regla del “codo” para tomar la decisión final.

Aquí tienes el texto directo y al grano para poner abajo de ese código:

Gráfico de Sedimentación (Scree Plot)

Este gráfico es la representación visual de la tabla de eigenvalores anterior y nos muestra de forma decreciente la importancia de cada una de las dimensiones generadas por el ACP.

¿Cómo se lee? Cada barra azul representa el porcentaje de información (varianza) que captura ese componente por sí solo. El número que sale arriba de cada barra te dice el porcentaje exacto.

La regla del “codo”: Buscamos el punto de inflexión en la gráfica, es decir, el lugar donde la caída drástica se detiene y la línea se aplana (formando la silueta de un codo).

La decisión: Al sumar los porcentajes de la Dimensión 1 y la Dimensión 2, confirmamos que logramos retener una gran parte de la variabilidad total de la OECD. Esto justifica visualmente por qué dejamos de lado los componentes del 3 en adelante y nos quedamos únicamente con los dos primeros para hacer los mapas y gráficos que vienen.

# 3. GRÁFICO DE SEDIMENTACIÓN (Scree Plot)

# Primera imagen para tu reporte (muestra la importancia de cada componente)

fviz_eig(res.pca, addlabels = TRUE, 

         main = "Gráfico de Sedimentación - Varianza por Componente") +

  theme_minimal()

Para este bloque del Círculo de Correlación de Variables (fviz_pca_var), la descripción debe explicar cómo interpretar la posición de las flechas y los colores del degradado que configuraron.

Aquí tienen el texto directo y sin rodeos para poner debajo de ese código:

Círculo de Correlación de Variables

Este gráfico nos muestra el comportamiento y la relación de nuestras 15 variables dentro de las dos primeras dimensiones del ACP. Es clave para entender qué mide cada eje del mapa.

La dirección de las flechas (Ángulos): * Las variables que apuntan hacia el mismo lado están positivamente correlacionadas (si una sube, la otra también). Por ejemplo, verán que variables como el IDH (x21) y la Esperanza de Vida (x26) apuntan en direcciones muy similares.

Las que apuntan en sentidos opuestos tienen correlación negativa (si una sube, la otra baja), como la Pobreza Extrema (x16) frente al IDH.

Las que forman un ángulo de 90° no tienen ninguna relación entre sí.

El color de las flechas (Contribución): Gracias al degradado que programaron (gradient.cols), las variables que pasan de azul/amarillo a rojo intenso (#FC4E07) son las que más “pesan” o aportan información para construir los componentes. Las variables más rojas son las verdaderas responsables de que los países se diferencien entre sí en el análisis.

# 4. GRÁFICO DE VARIABLES (Círculo de Correlación) - CORREGIDO

fviz_pca_var(res.pca,

             col.var = "contrib", 

             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),

             repel = TRUE,

             title = "Circulo de Correlacion de Variables Economicas"

)

El Biplot Final del ACP

El Biplot es el gráfico definitivo de nuestro análisis porque cruza dos mundos al mismo tiempo: muestra a los países (puntos grises) y a las 15 variables (flechas azules) en un mismo plano matemático.

Posición de los países respecto a las variables: Si un país quedó ubicado muy cerca o en la misma dirección hacia la que apunta una flecha, significa que ese país tiene valores altos en esa variable. Por ejemplo, los países con mayor IDH (x21) o mayor Esperanza de Vida (x26) se posicionarán del lado donde se agrupan esas flechas.

Países en sentido opuesto: Si un país aparece en el extremo totalmente contrario de una flecha, significa que tiene registros muy bajos en ese indicador (por ejemplo, lejos de la flecha de Pobreza Extrema x16).

Cercanía entre países: Los países que aparecen muy juntos o encimados en el mapa comparten perfiles socioeconómicos casi idénticos.

Este mapa bidimensional es fundamental porque nos ayuda a entender de forma visual y gráfica la “geografía económica” de la OECD, revelando las verdaderas razones por las que el Método de Ward separó a los países en clústeres diferentes.

# 5. EL BIPLOT - CORREGIDO

fviz_pca_biplot(res.pca, 

                repel = TRUE,

                col.var = "#2E9FDF", 

                col.ind = "#696969", 

                title = "Biplot del ACP: Paises y Variables"

)

Matriz de Contribuciones de las Variables

Con este último comando pasamos de las gráficas a los números exactos para validar nuestros hallazgos. R nos devuelve una tabla con el porcentaje numérico con el que cada una de las 15 variables aporta a la construcción de la Dimensión 1 y la Dimensión 2

.¿Cómo se interpreta? Cada columna suma 100%. Si todas las variables aportaran exactamente lo mismo, cada una tendría un valor de 6.67%(que resulta de dividir 100 entre 15). Por lo tanto, cualquier variable que tenga un porcentaje mayor a 6.67% se considera una variable clave o líder en esa dimensión.

Dimensión 1 (Eje Horizontal): Al revisar la primera columna, identificamos qué variables tienen los porcentajes más altos. Estas variables son las que tienen el mayor peso para mover a los países de izquierda a derecha en los mapas anteriores.

Dimensión 2 (Eje Vertical): Al revisar la segunda columna, vemos cuáles variables dominan el eje vertical, siendo las responsables de mover a los países hacia arriba o hacia abajo.

# 6. VER LA MATRIZ DE CONTRIBUCIONES

# Tabla fundamental para saber qué variables "pesan" en el Componente 1 y 2

res.var <- get_pca_var(res.pca)

res.var$contrib[, 1:2] # Muestra la contribución para las dos primeras dimensiones
##          Dim.1       Dim.2
## x1   8.1005981  0.49223057
## x2   6.7093681  0.26110985
## x4   5.1430097  6.32327714
## x7   0.5107570 37.99221389
## x10  0.1273296 37.25935219
## x11  1.8427525  5.26273319
## x15  3.7810024  1.07462107
## x16 16.0311334  1.09065918
## x17 12.8719717  0.02452476
## x20 13.2057827  0.02230884
## x21 17.3827017  0.43897069
## x22  1.9411083  6.33609960
## x25  5.5989737  0.68665102
## x26  2.1471630  2.12884777
## x29  4.6063482  0.60640023