Profesor: Orlando Joaqui Barandica
Asignatura: Gestión de Datos
Universidad del Valle
Facultad de Ingeniería
En este análisis se incluyen 148 países de todas las regiones del mundo, seleccionados por tener información completa en al menos 20 de las 25 variables consideradas. A continuación se presenta la lista completa:
El presente análisis tiene como objetivo aplicar técnicas de aprendizaje no supervisado para identificar patrones y agrupar países según su nivel de desarrollo, utilizando indicadores oficiales del Banco Mundial correspondientes al año 2019. Este año fue elegido de manera intencional porque representa el último periodo estable antes del impacto de la pandemia por COVID-19, lo que permite analizar el comportamiento real de las variables sin las alteraciones económicas, sociales y demográficas que surgieron desde 2020. De esta manera, los resultados reflejan dinámicas más “naturales”, sin distorsiones externas fuertes.
Para este estudio seleccionamos 20 variables cuantitativas que abarcan dimensiones económicas, educativas, demográficas, de salud e infraestructura, con el fin de obtener una visión bastante amplia del nivel de desarrollo de cada país. Posteriormente, se aplicó un Análisis de Componentes Principales (ACP) para reducir la dimensionalidad y facilitar la interpretación, y luego se realizó un clustering jerárquico con el método de Ward, que permite agrupar países en función de su similitud multivariada. Estas herramientas permiten segmentar a los países en grupos homogéneos y describir sus características principales.
library(tidyverse)
library(factoextra)
library(corrplot)
library(dendextend)
library(plotly)
library(DT)
library(knitr)
library(kableExtra)
datos <- read.csv2("World_Development_Indicators(ORGANIZADA).csv",
header = TRUE, stringsAsFactors = FALSE)
# Transponer tabla
nombres_variables <- datos$Series.Name
datos_numericos <- datos[, -1]
datos_t <- as.data.frame(t(datos_numericos))
colnames(datos_t) <- nombres_variables
datos_t$Pais <- rownames(datos_t)
datos <- datos_t %>% select(Pais, everything())
# Convertir a números
convertir_numero <- function(x) {
x <- as.character(x)
x <- ifelse(x == "..", NA, x)
x <- gsub(",", ".", x)
return(as.numeric(x))
}
datos_limpios <- datos %>%
mutate(across(-Pais, convertir_numero))
# Filtrar países con máximo 5 NAs
datos_limpios$num_nas <- rowSums(is.na(datos_limpios %>% select(-Pais)))
datos_filtrados <- datos_limpios %>%
filter(num_nas <= 5) %>%
select(-num_nas)
# Imputar NAs
datos_completos <- datos_filtrados %>%
mutate(across(-Pais, ~ifelse(is.na(.), median(., na.rm = TRUE), .)))
Justificación
Al revisar la base de datos, identificamos un problema común en los indicadores internacionales: la falta de información en ciertas variables. Tuvimos que tomar una decisión de criterio: eliminamos las variables que tenían una tasa de datos perdidos superior al 30%, ya que intentar rellenar tanta información habría distorsionado seriamente el análisis. Con esta medida, nos quedamos con 17 indicadores robustos, todos con un 0% de NA.
Para los escasos valores perdidos remanentes, escogimos solución práctica: la imputación por la media. Dado el gran número de países (148 observaciones) y la marginalidad de los datos faltantes, utilizar la media era el método más seguro para mantener el tamaño muestral completo sin introducir un sesgo significativo en la varianza general. Esto nos permite realizar el análisis con un conjunto de datos limpio.
Se seleccionaron 20 variables agrupadas en 5 dimensiones:
variables_seleccionadas <- c(
"GDP (current US$)",
"GDP growth (annual %)",
"GNI per capita, PPP (current international $)",
"Gross capital formation (% of GDP)",
"Exports of goods and services (% of GDP)",
"Imports of goods and services (% of GDP)",
"School enrollment, primary (% gross)",
"School enrollment, secondary (% gross)",
"Primary completion rate, total (% of relevant age group)",
"Life expectancy at birth, total (years)",
"Mortality rate, infant (per 1,000 live births)",
"Fertility rate, total (births per woman)",
"Immunization, measles (% of children ages 12-23 months)",
"Adolescent fertility rate (births per 1,000 women ages 15-19)",
"Electric power consumption (kWh per capita)",
"Energy use (kg of oil equivalent per capita)",
"Mobile cellular subscriptions (per 100 people)",
"Population, total",
"Population growth (annual %)",
"Population density (people per sq. km of land area)"
)
paises <- datos_completos$Pais
paises_datos <- datos_completos %>%
select(all_of(variables_seleccionadas)) %>%
as.data.frame()
rownames(paises_datos) <- paises
Justificación de las variables
Para nuestro análisis se seleccionaron variables económicas, sociales y demográficas que nos permiten caracterizar el nivel de desarrollo y bienestar de los países. La elección se fundamenta en su relevancia para entender los patrones de crecimiento, salud, educación e infraestructura. A continuación, se detallan:
Variables económicas:
GDP (current US$) y GNI per capita, PPP (current international $): Miden el tamaño de la economía y el ingreso promedio de los habitantes, permitiendo comparar el nivel de desarrollo económico entre países.
GDP growth (annual %): Indica la tasa de crecimiento económico, útil para analizar dinámicas de expansión o recesión.
Gross capital formation (% of GDP): Refleja la inversión en infraestructura y capital productivo, clave para el crecimiento sostenible.
Exports e Imports of goods and services (% of GDP): Permiten evaluar la apertura comercial y la integración económica con el resto del mundo.
Variables de educación:
School enrollment, primary y secondary (% gross): Indican la cobertura educativa en los niveles básico y medio, fundamentales para evaluar desarrollo humano.
Primary completion rate, total (% of relevant age group): Mide la proporción de niños que completan la educación primaria, reflejando la efectividad del sistema educativo.
Variables de salud:
Life expectancy at birth, total (years): Representa la esperanza de vida, un indicador global de bienestar y salud poblacional.
Mortality rate, infant (per 1,000 live births): Mide la mortalidad infantil, reflejando la calidad de los servicios de salud y condiciones de vida.
Fertility rate, total (births per woman): Indica el nivel de natalidad y ayuda a entender tendencias demográficas.
Immunization, measles (% of children ages 12-23 months): Refleja la cobertura de vacunación, indicador de políticas de salud pública y prevención de enfermedades.
Adolescent fertility rate (births per 1,000 women ages 15-19): Permite analizar riesgos en salud reproductiva y educación de las jóvenes.
Variables de infraestructura y tecnología:
Electric power consumption (kWh per capita) y Energy use (kg of oil equivalent per capita): Indican el nivel de desarrollo industrial y acceso a energía, esencial para la calidad de vida y producción.
Mobile cellular subscriptions (per 100 people): Refleja el acceso a telecomunicaciones y conectividad digital, importante para la integración económica y social.
Variables demográficas:
Population, total y Population growth (annual %): Permiten observar la magnitud y ritmo de crecimiento de la población, influyendo en planificación económica y social.
Population density (people per sq. km of land area): Ayuda a identificar la distribución espacial de la población, útil para políticas de urbanismo y servicios públicos.
abreviaturas <- data.frame(
Abreviatura = c("GDP", "GDP_G", "GNI", "GCF", "EXP", "IMP", "SEP", "SES", "PCR", "LE",
"MRI", "FERT", "IMM", "AFR", "EPC", "ENER", "MOB", "POP", "POPG", "POPD"),
Variable_Original = c(
"GDP (current US$)",
"GDP growth (annual %)",
"GNI per capita, PPP (current international $)",
"Gross capital formation (% of GDP)",
"Exports of goods and services (% of GDP)",
"Imports of goods and services (% of GDP)",
"School enrollment, primary (% gross)",
"School enrollment, secondary (% gross)",
"Primary completion rate, total (% of relevant age group)",
"Life expectancy at birth, total (years)",
"Mortality rate, infant (per 1,000 live births)",
"Fertility rate, total (births per woman)",
"Immunization, measles (% children 12-23 months)",
"Adolescent fertility rate",
"Electric power consumption (kWh per capita)",
"Energy use (kg of oil equivalent per capita)",
"Mobile cellular subscriptions (per 100 people)",
"Population, total",
"Population growth (annual %)",
"Population density (people per sq. km of land area)"
)
)
kable(abreviaturas,
caption = "Abreviaturas y Variables Originales del Banco Mundial",
format = "html") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
full_width = FALSE,
font_size = 14)
| Abreviatura | Variable_Original |
|---|---|
| GDP | GDP (current US$) |
| GDP_G | GDP growth (annual %) |
| GNI | GNI per capita, PPP (current international $) |
| GCF | Gross capital formation (% of GDP) |
| EXP | Exports of goods and services (% of GDP) |
| IMP | Imports of goods and services (% of GDP) |
| SEP | School enrollment, primary (% gross) |
| SES | School enrollment, secondary (% gross) |
| PCR | Primary completion rate, total (% of relevant age group) |
| LE | Life expectancy at birth, total (years) |
| MRI | Mortality rate, infant (per 1,000 live births) |
| FERT | Fertility rate, total (births per woman) |
| IMM | Immunization, measles (% children 12-23 months) |
| AFR | Adolescent fertility rate |
| EPC | Electric power consumption (kWh per capita) |
| ENER | Energy use (kg of oil equivalent per capita) |
| MOB | Mobile cellular subscriptions (per 100 people) |
| POP | Population, total |
| POPG | Population growth (annual %) |
| POPD | Population density (people per sq. km of land area) |
p1 <- ggplot(data.frame(PIB = paises_datos$`GNI per capita, PPP (current international $)`),
aes(x = PIB)) +
geom_histogram(bins = 25, fill = "#2b6cb0", color = "white") +
labs(title = "Distribución del Ingreso Nacional Bruto per cápita (2019)",
x = "GNI per cápita (PPP - US$)",
y = "Número de países") +
theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 14))
ggplotly(p1)
Interpretación: La distribución del ingreso per cápita presenta una clara asimetría positiva, donde la mayoría de los países se concentran en valores bajos y medios, mientras que solo unos pocos alcanzan niveles extremadamente altos. En general, la mayor parte de las naciones no supera los 20.000 USD por persona, lo que refleja una estructura global bastante desigual. La cola larga hacia la derecha representa a los países con ingresos elevados, algunos superando incluso los 60.000 USD per cápita, lo cual evidencia la brecha marcada entre economías desarrolladas y en desarrollo. Esta tendencia confirma que el ingreso mundial no está distribuido de manera uniforme y que existe un grupo reducido de países que arrastra la media hacia arriba.
p2 <- ggplot(data.frame(
Mortalidad = paises_datos$`Mortality rate, infant (per 1,000 live births)`,
Esperanza = paises_datos$`Life expectancy at birth, total (years)`,
Pais = paises
), aes(x = Mortalidad, y = Esperanza, text = Pais)) +
geom_point(size = 3, alpha = 0.6, color = "#e53e3e") +
geom_smooth(method = "lm", color = "#2b6cb0", se = TRUE) +
labs(title = "Relación: Mortalidad Infantil vs Esperanza de Vida",
x = "Mortalidad Infantil (por 1,000 nacimientos)",
y = "Esperanza de Vida (años)") +
theme_minimal() +
theme(plot.title = element_text(face = "bold", size = 14))
ggplotly(p2, tooltip = c("text", "x", "y"))
Interpretación: Se evidencia una relación negativa muy fuerte entre la mortalidad infantil y la esperanza de vida (r ≈ –0.85). En términos generales, los países que registran tasas de mortalidad infantil superiores a 50 fallecimientos por cada 1.000 nacimientos tienden a presentar esperanzas de vida por debajo de los 65 años. En contraste, aquellos con mortalidad infantil inferior a 10 por cada 1.000 nacimientos alcanzan esperanzas de vida que superan los 75 años. Esta relación tan marcada refleja, de manera directa, las diferencias en la calidad de los sistemas de salud, las condiciones socioeconómicas y el acceso a servicios básicos entre las distintas naciones.
# Utiliza la base de datos limpia y filtrada.
datos_df <- paises_datos
# Crea la lista de nombres simplificados para las 20 variables
nombres_simplificados <- c(
"GDP", "GDP_G", "GNI", "GCF", "EXP",
"IMP", "SEP", "SES", "PCR", "LE",
"MRI", "FERT", "IMM", "AFR", "EPC",
"ENER", "MOB", "POP", "POPG", "POPD"
)
# Renombra las columnas
names(datos_df) <- nombres_simplificados
# Estandariza los datos.
datos_scale <- scale(datos_df)
# Calcula la matriz de correlaciones.
M <- cor(datos_scale)
corrplot(M,
method = "color",
type = "upper",
order = "hclust",
addCoef.col = "black",
tl.col = "black",
tl.cex = 0.8,
tl.srt = 45,
number.cex = 0.65,
diag = FALSE,
cl.pos = "n",
mar = c(0,0,2,0),
title = "Matriz de Correlaciones",
col = colorRampPalette(c("#e53e3e", "white", "#2b6cb0"))(200))
Interpretación: La matriz de correlaciones permite identificar varios patrones importantes entre los indicadores analizados:
Desarrollo económico y acceso a servicios: Las variables relacionadas con el ingreso, como el GNI, muestran correlaciones positivas fuertes con el consumo eléctrico (EPC) y el uso de energía (ENER) (r > 0.7). Esto indica que los países con mayores niveles de ingreso suelen tener una infraestructura energética más amplia y un consumo per cápita más elevado.
Condiciones de salud: La esperanza de vida (LE) mantiene relaciones negativas muy marcadas con la mortalidad infantil (MRI, r ≈ –0.85) y con la fertilidad (FERT, r ≈ –0.75). En otras palabras, a medida que aumenta la mortalidad infantil o las tasas de fertilidad, la esperanza de vida tiende a disminuir, reflejando desigualdades en acceso a salud, nutrición y condiciones de vida.
Educación y desarrollo: Los indicadores educativos (SEP, SES y PCR) presentan correlaciones positivas entre sí y también una relación directa con el GNI. Esto sugiere que los países con mejores niveles de ingreso tienden a registrar tasas más altas de matrícula y finalización escolar.
Dinámica demográfica: El crecimiento poblacional (POPG) se asocia positivamente con la fertilidad (FERT) y de manera negativa con varios indicadores de desarrollo, lo que evidencia que las tasas de crecimiento más aceleradas suelen concentrarse en países con menor nivel socioeconómico.
Se observan tres bloques de relaciones muy fuertes que serán clave para el PCA:
Bloque de Bienestar/Riqueza: El PIB per cápita se correlaciona fuertemente con la Esperanza de Vida, mientras que ambos tienen una correlación negativa extrema con la Mortalidad Infantil y la Tasa de Fertilidad. Esto establece la dimensión principal de desarrollo.
Bloque de Infraestructura Digital: El uso de Internet y las suscripciones móviles están altamente correlacionados entre sí, y moderadamente con el bloque de Riqueza.
Bloque de Educación/Inversión: Las variables de educación (terciaria y secundaria) muestran una relación fuerte con la inversión extranjera.
res.pca <- prcomp(paises_datos, scale = TRUE)
eig.val <- get_eigenvalue(res.pca)
n_componentes <- sum(eig.val$eigenvalue > 1)
p3 <- fviz_eig(res.pca,
addlabels = TRUE,
barfill = "#2b6cb0",
main = "Varianza por Componente Principal")
ggplotly(p3)
Interpretación: El análisis de componentes principales permitió reducir las 20 variables originales a un conjunto más compacto, es decir, los primeros 4 componentes principales explican más del 70% de la variabilidad total del sistema. El primer componente concentra cerca del 50% de la varianza, y agrupa principalmente indicadores asociados al nivel de desarrollo socioeconómico, como ingreso, consumo energético, esperanza de vida y variables educativas. Los componentes siguientes aportan información complementaria, capturando dimensiones como la estructura demográfica (fertilidad, crecimiento poblacional), la dinámica comercial y ciertos rasgos poblacionales. En conjunto, estos componentes simplifican la complejidad de los datos sin perder la esencia de las relaciones principales entre los países.
Componentes retenidos: 6 (eigenvalue > 1)
Varianza acumulada: 74.9%
fviz_pca_var(res.pca,
col.var = "contrib",
gradient.cols = c("#38b2ac", "#ecc94b", "#e53e3e"),
repel = TRUE,
labelsize = 3,
title = "Círculo de Correlaciones - Variables")
Interpretación: El círculo de correlaciones permite visualizar cómo las variables originales se relacionan con los dos primeros componentes principales. Sobre el eje horizontal (PC1), las variables asociadas al desarrollo —como el ingreso per cápita (GNI), la esperanza de vida y los indicadores educativos— se proyectan hacia la derecha, mientras que aquellas relacionadas con condiciones menos favorables, como la mortalidad infantil y la tasa de fertilidad, se orientan hacia la izquierda. Esto confirma que PC1 representa un eje de desarrollo versus rezago socioeconómico.
Las variables que aparecen cercanas entre sí tienen una alta correlación, lo que indica que se comportan de manera similar entre los países analizados. Por ejemplo, el consumo eléctrico (EPC) y el uso de energía (ENER) se agrupan fuertemente, reflejando su relación directa.
La longitud de las flechas indica qué tanto contribuye cada variable a la construcción de los componentes: las variables con flechas más largas tienen mayor peso en la explicación de la variabilidad total dentro del espacio PCA.
Interpretación: La proyección de los países en el espacio de los dos primeros componentes principales muestra la distribución global del desarrollo con colores diferenciando grupos naturales. Los países se dispersan principalmente a lo largo del eje horizontal (PC1), desde naciones desarrolladas en el extremo derecho hasta países en desarrollo en el extremo izquierdo. Los colores anticipan la segmentación que se formalizará en el análisis de clustering, mostrando que existen agrupaciones naturales en los datos.
factores_pca <- res.pca$x[, 1:n_componentes]
dist_paises <- dist(factores_pca)
modelo_jerarquico <- hclust(dist_paises, method = "ward.D2")
k_optimo <- 4
clusters <- cutree(modelo_jerarquico, k = k_optimo)
fviz_nbclust(factores_pca,
FUN = hcut,
method = "silhouette",
k.max = 10) +
labs(title = "Número Óptimo de Clusters (Método Silhouette)")
Interpretación: El método de la silueta indicó que la mejor partición para los datos es de 4 clusters, ya que esta opción maximiza simultáneamente la cohesión dentro de cada grupo y la separación entre grupos. En otras palabras, los países que quedan en un mismo cluster presentan características más similares entre sí que con los países de otros clusters. Esta segmentación permite distinguir niveles y perfiles diferenciados de desarrollo, facilitando la interpretación de patrones socioeconómicos entre las naciones analizadas.
coord_paises <- as.data.frame(factores_pca[, 1:2])
coord_paises$Pais <- paises
coord_paises$Cluster <- factor(clusters,
levels = c(1, 2, 3, 4),
labels = c("Alto desarrollo",
"Desarrollo medio-alto",
"Desarrollo medio-bajo",
"Bajo desarrollo"))
colnames(coord_paises)[1:2] <- c("PC1", "PC2")
p5 <- ggplot(coord_paises, aes(x = PC1, y = PC2, color = Cluster, text = Pais)) +
geom_point(size = 3, alpha = 0.7) +
scale_color_manual(values = c("#e53e3e", "#2b6cb0", "#38b2ac", "#ed8936")) +
labs(title = "Clusters de Países según Desarrollo (2019)",
x = "Componente Principal 1",
y = "Componente Principal 2",
color = "Nivel de Desarrollo") +
theme_minimal()
ggplotly(p5, tooltip = c("text", "Cluster"))
Interpretación: La visualización de los clusters refleja una división clara de los países en cuatro grupos bien diferenciados dentro del espacio formado por los primeros componentes principales:
Cluster rojo (Alto desarrollo): Ubicado en el extremo izquierdo del plano. Incluye países con altos valores en el PC1, caracterizados por elevados niveles de ingreso, buena infraestructura, y sólidos indicadores de salud y educación.
Cluster azul (Desarrollo medio-alto): Agrupa países en transición hacia niveles más avanzados de desarrollo, mostrando desempeño favorable en diversas variables, aunque con brechas aún presentes frente al cluster de mayor desarrollo.
Cluster verde (Desarrollo medio-bajo): Reúne naciones con indicadores mixtos: presentan avances en algunas dimensiones, pero mantienen rezagos en variables clave como educación, ingreso o salud.
Cluster naranja (Bajo desarrollo): Localizado en los extermos de arriba y abajo del plano, conformado por países con menores niveles de desarrollo, altas tasas de mortalidad infantil y fertilidad, y limitaciones estructurales en infraestructura y acceso a servicios.
coord_pc12 <- as.data.frame(res.pca$x[, 1:2])
rownames(coord_pc12) <- paises
distancia <- dist(coord_pc12, method = "euclidean")
cluster_ward <- hclust(distancia, method = "ward.D2")
dend <- as.dendrogram(cluster_ward)
dend_coloreado <- dend %>%
color_branches(k = 4, col = c("#2b6cb0", "#ed8936", "#718096", "#e53e3e")) %>%
color_labels(k = 4, col = c("#2b6cb0", "#ed8936", "#718096", "#e53e3e"))
par(mar = c(3, 4, 3, 1))
plot(dend_coloreado,
main = "Dendrograma - Método Ward",
ylab = "Distancia (Ward.D2)",
xlab = "",
leaflab = "none")
abline(h = 10, lty = 2, col = "#2b6cb0", lwd = 1.5)
Interpretación: El dendrograma muestra el proceso jerárquico mediante el cual los países se van agrupando según su similitud, aplicando el método de Ward. La línea horizontal azul punteada permite visualizar el punto de corte seleccionado para obtener 4 clusters, lo que permite visualizar cómo se divide la estructura global del conjunto de datos.
La altura de las uniones refleja la disimilitud entre grupos: las fusiones realizadas a mayor altura representan países o conjuntos de países que son más diferentes entre sí, mientras que las uniones más bajas indican agrupamientos entre países más similares. La forma general del dendrograma evidencia que los datos presentan una estructura jerárquica clara, donde algunos grupos se forman de manera compacta y temprana, mientras que otros requieren mayor distancia para fusionarse, sugiriendo diferencias más marcadas en sus niveles de desarrollo.
NuevaBase <- data.frame(
Pais = paises,
Cluster = as.factor(clusters),
paises_datos,
check.names = FALSE,
stringsAsFactors = FALSE
)
caracteristicas <- NuevaBase %>%
group_by(Cluster) %>%
summarise(
N_paises = n(),
PIB_percapita = round(mean(`GNI per capita, PPP (current international $)`, na.rm = TRUE), 0),
Esperanza_vida = round(mean(`Life expectancy at birth, total (years)`, na.rm = TRUE), 1),
Mortalidad_infantil = round(mean(`Mortality rate, infant (per 1,000 live births)`, na.rm = TRUE), 1),
Fertilidad = round(mean(`Fertility rate, total (births per woman)`, na.rm = TRUE), 2)
) %>%
arrange(desc(PIB_percapita))
kable(caracteristicas,
caption = "Características Promedio por Cluster",
format = "html") %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
| Cluster | N_paises | PIB_percapita | Esperanza_vida | Mortalidad_infantil | Fertilidad |
|---|---|---|---|---|---|
| 2 | 42 | 54004 | 81.2 | 4.5 | 1.59 |
| 4 | 3 | 30237 | 75.8 | 13.7 | 1.77 |
| 3 | 55 | 20499 | 75.7 | 9.8 | 1.83 |
| 1 | 64 | 6662 | 66.6 | 33.7 | 3.67 |
Interpretación: La tabla muestra diferencias muy marcadas entre los cuatro clusters identificados:
Cluster 2 — Alto desarrollo: Este cluster está compuesto por 42 países con las mejores condiciones socioeconómicas. Presentan un PIB per cápita promedio de 54,004 USD, esperanza de vida de 81.2 años, mortalidad infantil muy baja (4.5 por cada 1,000 nacimientos) y bajas tasas de fertilidad (1.59 hijos por mujer). Este grupo corresponde a economías desarrolladas, con sistemas de salud eficientes, alta calidad de vida y bajo crecimiento demográfico.
Cluster 4 — Desarrollo medio-alto: Este reúne solo 3 países, caracterizados por niveles de ingreso relativamente altos (PIB per cápita de 30,237 USD) y esperanza de vida de 75.8 años. Su mortalidad infantil (13.7) y fertilidad (1.77) indican condiciones intermedias. Aunque comparten características con los países desarrollados, todavía mantienen rezagos en algunos indicadores.
Cluster 3 — Desarrollo medio: Es el grupo más numeroso, contiene 55 países que presentan un PIB per cápita promedio de 20,499 USD y esperanza de vida de 75.7 años. Sus niveles de mortalidad infantil (9.8) y fertilidad (1.83) reflejan un estado de transición: países con avances importantes, pero aún alejados de los niveles observados en los cluster anteriores.
Cluster 1 — Bajo desarrollo: Con 64 países, este grupo presenta las condiciones menos favorables. Su PIB per cápita es el más bajo (6,662 USD), la esperanza de vida es reducida (66.6 años) y registra una mortalidad infantil muy alta (33.7) junto con una fertilidad elevada (3.67 hijos por mujer). Estos países enfrentan desafíos estructurales significativos en salud, educación, infraestructura y crecimiento económico.
library(reshape2)
variables_salud <- NuevaBase %>%
select(
Cluster,
`Life expectancy at birth, total (years)`,
`Mortality rate, infant (per 1,000 live births)`,
`Fertility rate, total (births per woman)`,
`Adolescent fertility rate (births per 1,000 women ages 15-19)`
)
nombres_bonitos <- c(
"Esperanza de vida",
"Mortalidad infantil",
"Tasa de fertilidad",
"Fertilidad adolescente"
)
colnames(variables_salud)[2:5] <- nombres_bonitos
data_salud <- melt(variables_salud, id = "Cluster")
p6 <- ggplot(data_salud, aes(x = Cluster, y = value, fill = Cluster)) +
geom_boxplot(alpha = 0.85, outlier.size = 0.9) +
scale_fill_manual(values = c("#e53e3e", "#2b6cb0", "#38b2ac", "#ed8936")) +
facet_wrap(~variable, ncol = 2, scales = "free_y") +
labs(
title = "Indicadores de Salud por Cluster",
x = "Cluster",
y = "Valor"
) +
theme_minimal() +
theme(legend.position = "none")
ggplotly(p6)
Interpretación: Los boxplots revelan patrones claros de desarrollo diferenciado entre clusters:
Esperanza de vida: El Cluster 2 (azul) presenta los valores más altos (~82 años), seguido por los Clusters 3 y 4 (~76 años), mientras que el Cluster 1 (rojo) muestra la menor esperanza de vida (~67 años) con mayor variabilidad.
Mortalidad infantil: Patrón inverso a la esperanza de vida. El Cluster 1 (rojo) tiene la mortalidad más alta (~33 por 1,000 nacimientos) con gran dispersión (20-65), mientras que el Cluster 2 (azul) presenta valores mínimos (~4-5) muy homogéneos. Los Clusters 3 y 4 muestran valores intermedios.
Tasa de fertilidad: El Cluster 1 (rojo) exhibe la mayor fertilidad (~3.7 hijos/mujer) con alta variabilidad (1.5-7), mientras que los Clusters 2, 3 y 4 muestran fertilidad baja y similar (~1.6-2 hijos/mujer), típica de países desarrollados.
Fertilidad adolescente: Nuevamente el Cluster 1 (rojo) destaca con valores muy elevados (~75 nacimientos por 1,000 mujeres 15-19 años) y amplia dispersión, mientras que el Cluster 2 (azul) presenta los valores más bajos (~10) y el Cluster 4 (naranja) los menores de todos (~10).
Todo esto se resume en:El Cluster 2 (Alto Desarrollo) no solo está en la cima del PIB per cápita ($54k), sino que su Esperanza de Vida (81.2 años) y baja Mortalidad Infantil (3.9) demuestran que el bienestar está consolidado y la inversión en capital humano es eficiente. Esto contrasta de forma dramática con el Cluster 1 (Bajo Desarrollo), donde la brecha es abismal: con un PIB muy bajo, estos países enfrentan los desafíos estructurales de una alta presión demográfica (Fertilidad 3.32) que limita su capacidad de salir del rezago.
Lo que es realmente interesante es el Cluster 3 (Desarrollo Medio-Bajo). Este grupo, que alberga a las economías en transición (Brasil, China, Rusia), muestra un nivel económico intermedio, pero indicadores de salud rezagados. El hecho de que su Mortalidad Infantil (14.8) sea cuatro veces mayor que la del Cluster 2 evidencia la dificultad para superar la “Trampa de Ingresos Medios”, donde el crecimiento económico no se traduce equitativamente en mejoras en el bienestar social.
for(i in 1:k_optimo) {
paises_cluster <- NuevaBase$Pais[NuevaBase$Cluster == i]
cat("\n**Cluster", i, "(", length(paises_cluster), "países):**\n\n")
cat(paste(paises_cluster, collapse = ", "))
cat("\n")
}
##
## **Cluster 1 ( 64 países):**
##
## Algeria, Bangladesh, Angola, Bolivia, Botswana, Burkina.Faso, Bhutan, Benin, Burundi, Cambodia, Cameroon, Chad, Congo..Dem..Rep., Congo..Rep., Cote.d.Ivoire, Dominica, Dominican.Republic, Egypt..Arab.Rep., Equatorial.Guinea, Eswatini, Ethiopia, Gabon, Gambia..The, Ghana, Guatemala, Honduras, Indonesia, Iraq, Kenya, Kyrgyz.Republic, Lao.PDR, Lesotho, Madagascar, Malawi, Marshall.Islands, Mauritania, Mongolia, Morocco, Mozambique, Namibia, Nauru, Nepal, Niger, Pakistan, Philippines, Rwanda, Samoa, Senegal, Sierra.Leone, Solomon.Islands, Sudan, Tajikistan, Tanzania, Timor.Leste, Togo, Tonga, Turkmenistan, Uganda, Uzbekistan, Vanuatu, Viet.Nam, West.Bank.and.Gaza, Zambia, Zimbabwe
##
## **Cluster 2 ( 42 países):**
##
## Antigua.and.Barbuda, Australia, Bahrain, Austria, Aruba, Brunei.Darussalam, Belgium, Canada, Cyprus, Czechia, Denmark, Estonia, Finland, France, Germany, Hong.Kong.SAR..China, Iceland, Ireland, Italy, Japan, Korea..Rep., Kuwait, Lithuania, Luxembourg, Maldives, Malta, Netherlands, New.Zealand, Norway, Oman, Qatar, Russian.Federation, San.Marino, Saudi.Arabia, Seychelles, Singapore, Slovenia, Spain, Sweden, Switzerland, United.Arab.Emirates, United.Kingdom
##
## **Cluster 3 ( 55 países):**
##
## Armenia, Azerbaijan, Bahamas..The, Argentina, Albania, Belarus, Belize, Brazil, Bulgaria, Bosnia.and.Herzegovina, Barbados, Cabo.Verde, Chile, Colombia, Costa.Rica, Croatia, Cuba, Ecuador, El.Salvador, Fiji, Georgia, Greece, Hungary, Iran..Islamic.Rep., Israel, Jamaica, Jordan, Kazakhstan, Latvia, Lebanon, Libya, Malaysia, Mauritius, Mexico, Moldova, Montenegro, Nicaragua, North.Macedonia, Panama, Paraguay, Peru, Poland, Portugal, Romania, Serbia, Slovak.Republic, South.Africa, Sri.Lanka, St..Lucia, Suriname, Thailand, Tunisia, Turkiye, Ukraine, Uruguay
##
## **Cluster 4 ( 3 países):**
##
## China, India, United.States
Con este análisis pudimos ver que los países se pueden agrupar en cuatro clusters según su nivel de desarrollo. Hay diferencias bastante marcadas: algunos países están muy desarrollados, otros están en transición y muchos todavía enfrentan grandes desafíos sociales y económicos.
Los países con mayores ingresos suelen tener mejor infraestructura, más acceso a energía, mejores indicadores educativos y una mayor esperanza de vida. Por el contrario, los países con menos ingresos presentan alta mortalidad infantil, tasas de fertilidad más altas y menor cobertura educativa. Esto nos deja claro que la economía no lo es todo; el bienestar depende de muchos factores.
Variables como la mortalidad infantil, la esperanza de vida, la fertilidad y la escolarización se relacionan directamente con el desarrollo económico. Esto demuestra que invertir en educación y salud no solo mejora la calidad de vida, sino que también impulsa el desarrollo general de un país.
Los países de menor desarrollo tienden a crecer más rápido en población y a tener más nacimientos en adolescentes, mientras que los países desarrollados muestran poblaciones más estables. Esto refleja que los desafíos y necesidades cambian mucho según el grupo al que pertenece cada país.
El análisis de componentes principales nos ayudó a simplificar toda la información de 20 variables en unos pocos componentes, facilitando la identificación de patrones y la creación de los clusters. Gracias a esto, podemos ver de manera más clara qué caracteriza a cada grupo de países.
Aunque algunos países están muy avanzados, la mayoría se encuentra en niveles intermedios y muchos todavía enfrentan rezagos importantes. Esto evidencia que las desigualdades globales siguen siendo fuertes y que hay que trabajar en políticas que fomenten desarrollo sostenible, educación, salud e infraestructura.El mayor desafío global no es la pobreza extrema (Cluster 1), sino la gran cantidad de países que se encuentran estancados en el Desarrollo Medio-Bajo (Cluster 3)