Antes de realizaf el clustering, vamos a normalizar la tabla.
# 1. Calcular la media por paÃs de variables numéricas y mantener info auxiliar
tabla_media <- tabla_filtrada %>%
group_by(Pais) %>%
summarise(
ISO_code = first(ISO_code),
Geographical_Particularity = first(`Geographical Particularity`),
trade_usd = mean(trade_usd, na.rm = TRUE),
`2_property_rights` = mean(`2_property_rights`, na.rm = TRUE),
`4_trade` = mean(`4_trade`, na.rm = TRUE),
`3_sound_money` = mean(`3_sound_money`, na.rm = TRUE),
`5c_business_reg` = mean(`5c_business_reg`, na.rm = TRUE),
.groups = "drop"
)
# 2. Escalar variables numéricas (sin tocar columnas auxiliares)
variables_numericas <- tabla_media %>%
select(trade_usd, `2_property_rights`, `4_trade`, `3_sound_money`, `5c_business_reg`)
variables_escaladas <- scale(variables_numericas)
# 3. Combinar con info auxiliar
tabla_escalada <- bind_cols(
tabla_media %>% select(Pais, ISO_code, Geographical_Particularity),
as_tibble(variables_escaladas)
)
Para evitar que la correlacion se rompa por la diferencia comercial de paises que por sus condiciones tienen un valor de exportaciones alto. Vamos a realizar un dendograma y hacer la visualizacion del mapa de manera correcta sin distorsiones.
# 1. Preparar matriz numérica
datos_trade <- tabla_escalada %>%
select(Pais, trade_usd) %>%
drop_na()
# 2. Convertir a matriz
matriz_trade <- as.matrix(datos_trade$trade_usd)
rownames(matriz_trade) <- datos_trade$Pais
# 3. Calcular distancias (euclidianas por defecto)
distancias <- dist(matriz_trade)
# 4. Clustering jerárquico
hc <- hclust(distancias, method = "ward.D2")
# 5. Crear dendrograma
dend <- as.dendrogram(hc)
# 6. Colorear por clústeres (por ejemplo, k = 4)
k <- 6
dend_coloreado <- color_branches(dend, k = k)
# 7. Graficar
plot(dend_coloreado,
main = paste("Dendrograma jerárquico por trade_usd (", k, "clústeres)"),
ylab = "Distancia",
cex = 0.7)