library(tidyverse)
library(janitor)
library(plotly)
library(DT)
library(kableExtra)
library(htmltools)
library(FactoMineR)
library(cluster)
library(factoextra)
library(ggdendro)
library(countrycode)

1 Introducción

1.1 el presupuesto y sus destinos

Todos los gobiernos se enfrentan a las mismas cuentas : cada peso que paga a sus prestamistas es un peso que no llega a un salón de clases ni a un hospital. En 2019, último año antes de la pandemia, esas cuentas fue muy distinta de un país a otro. Zambia destinó el 42,0 % de su gasto público a intereses y el 15,3 % a educación. Angola, el 31,9 % a intereses y apenas el 6,0 % a educación. Etiopía, con un ingreso mucho menor, pagó en intereses solo el 5,1 % de su gasto y dedicó a la educación el 20,9 %.

La economía pública llama efecto desplazamiento a esta competencia: cuando el servicio de la deuda crece, el gobierno debe recaudar más, endeudarse más o recortar otros gastos, y el gasto social suele ceder primero. Sus beneficios tardan en verse y quienes lo reciben tienen menos capacidad de presión que los acreedores. Para África subsahariana, mostró que el servicio de la deuda reduce la parte del presupuesto que va a educación y a salud.

1.2 Por qué el nivel de desarrollo cambia la historia

La deuda no representa la misma carga para todos los países, ya que sus condiciones económicas y sus posibilidades de financiación son diferentes. Los países de ingresos bajos suelen acceder principalmente a créditos concesionales, ofrecidos por organismos multilaterales bajo condiciones más favorables, como tasas de interés reducidas, plazos de pago más largos y, en algunos casos, programas de condonación de deuda, como la iniciativa para los Países Pobres Muy Endeudados. Por el contrario, a medida que una economía alcanza mayores niveles de desarrollo, puede perder el acceso a este tipo de financiación y depender más de los mercados de capitales, donde los préstamos suelen tener tasas de interés comerciales y plazos de pago más cortos. Por esta razón, un mismo nivel de deuda en relación con los ingresos puede representar una carga muy diferente dependiendo de las condiciones de financiación de cada país.

Además, no es suficiente analizar únicamente cuánto debe un país, sino también cuánto paga por esa deuda y qué parte de su presupuesto utiliza para cumplir con esas obligaciones. Un ejemplo de esto es Mozambique, que presentó el mayor nivel de deuda externa de la muestra, equivalente al 365 % de su ingreso nacional; sin embargo, destinó el 15,3 % de su gasto público al pago de intereses. Por otro lado, Brasil tenía una deuda externa equivalente al 31 % de su ingreso nacional, pero destinó el 22,5 % de su gasto público al pago de intereses. Esta comparación demuestra que tener una deuda elevada no significa necesariamente destinar una mayor proporción del presupuesto a pagar intereses.

Por lo tanto, es importante analizar conjuntamente el nivel de endeudamiento, el costo de la deuda, la capacidad del Estado para recaudar recursos y el gasto social. De esta manera, es posible identificar en cuáles países la deuda representa una mayor presión sobre los recursos públicos y puede afectar la inversión en sectores fundamentales para el bienestar de la población. Para realizar este análisis y comparar las condiciones de 106 países a través de 15 indicadores, se utilizan técnicas de aprendizaje no supervisado, que permiten identificar patrones y relaciones entre los datos sin establecer previamente grupos de países.

Pregunta de investigación ¿Cómo varía el impacto de la carga de la deuda externa sobre la asignación del gasto público social según el nivel de desarrollo económico de los países a nivel global?

1.3 Objetivos e hipótesis

El objetivo general es lograr identificar perfiles de países según su carga de deuda externa y la manera en que asignan su gasto social, mediante Análisis de Componentes Principales (ACP) y clusterización jerárquica de Ward, y contrastar esos perfiles con el nivel de desarrollo. Para ello se describen los indicadores, se reducen a pocas dimensiones interpretables, se forman y caracterizan grupos de países, se evalúa qué tan estables son y se ubica a Colombia dentro de ellos.

H1 · Dos ejes distintosLa carga de la deuda no se confunde con el nivel de desarrollo: hay países muy endeudados en todos los niveles de ingreso.
H2 · El signo cambiaLa relación entre deuda y gasto social es débil o positiva donde la deuda es concesional (ingreso bajo) y negativa donde es de mercado (ingreso medio).
H3 · Una franja expuestaEntre los países de ingreso medio existe un perfil en que los intereses conviven con la menor prioridad social, frente a otro de ingreso similar que protege ese gasto.

Alcance. El Banco Mundial publica la deuda externa solo para los países de ingreso bajo y medio que reportan a su Sistema de Notificación de la Deuda. La comparación por nivel de desarrollo se hace, por tanto, dentro del mundo en desarrollo. Además, el estudio observa un solo año: describe perfiles y asociaciones, no efectos causales.

2 Metodología

2.1 Fuente

Los datos provienen de World Development Indicators del Banco Mundial. Las series de deuda nacen en las International Debt Statistics y las fiscales en las estadísticas de finanzas públicas del Fondo Monetario Internacional. Se trabaja con 2019 por tres motivos. Es el último año antes de la pandemia, que en 2020 y 2021 disparó la deuda y el gasto sanitario por razones extraordinarias. Es anterior a la suspensión del servicio de la deuda acordada por el G20 en 2020, que alteró temporalmente los pagos de los países más pobres. Y es un año con buena cobertura fiscal.

Construcción de la muestra

Filtros aplicados

etapas_m <- tibble(
  etapa = c("Entidades en la descarga", "Sin agregados regionales", "Con dato de deuda e ingreso", "Con 11 o más de 15 variables"),
  n = c(n_entidades, n_entidades - n_agregados, nrow(con_deuda), nrow(base))
)
p_emb <- plot_ly(type = "funnel", y = etapas_m$etapa, x = etapas_m$n, height = 380,
                 textinfo = "value+percent initial", textfont = list(color = "#0A0E14", size = 14),
                 marker = list(color = c("#3A4656", "#A78BFA", "#F472B6", "#22D3EE")),
                 connector = list(fillcolor = "#16202B"),
                 hovertemplate = "%{y}<br>%{x} entidades<extra></extra>") %>%
  pulir("", "", l = 200) %>%
  layout(yaxis = list(showline = FALSE, ticks = "", tickfont = list(color = "#D7DEE7", size = 13)))

figura(p_emb, "Cómo se llegó a la muestra final")
Figura 1 Cómo se llegó a la muestra final
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

El filtro decisivo es el segundo: 102 países y territorios no tienen dato de deuda externa. No es un problema de cobertura sino de diseño institucional. El sistema de notificación del Banco Mundial fue creado para vigilar la deuda del mundo en desarrollo, y los países de ingreso alto no reportan en él. Luego se descartaron 13 países que reportan menos de 11 de los 15 indicadores. Quedan 106 países.

Base de datos

base_ver <- base_imp %>%
  select(País = nombre, Región = region, Ingreso = ingreso, all_of(vars_orig)) %>%
  rename_with(~ unname(corta[.x]), all_of(vars_orig))

cuadro(tabla_dt(base_ver) %>% formatRound(unname(corta[vars_orig]), 1),
       "Base de datos de la muestra")
Cuadro 1 Base de datos de la muestra
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

2.2 Indicadores

Los 15 indicadores forman cuatro bloques, los cuales son: la carga de la deuda es la presión, el gasto social es lo que podría ceder, la capacidad fiscal es el colchón que permite pagar sin recortar, y el desarrollo y contexto describe las condiciones de cada país.

cuadro(ktab(meta_v %>% select(bloque, indicador, unidad, papel, codigo),
            c("Bloque", "Indicador", "Unidad", "Papel en el análisis", "Código"), agrupar = 1, align = "l"),
       "Indicadores utilizados")
Cuadro 2 Indicadores utilizados
Bloque Indicador Unidad Papel en el análisis Código
Carga de deuda Saldo de la deuda externa % del INB Cuánto debe el país al exterior frente a lo que produce DT.DOD.DECT.GN.ZS
Servicio de la deuda externa % del INB Lo que sale cada año en intereses y amortizaciones DT.TDS.DECT.GN.ZS
Deuda de corto plazo % de la deuda externa Exposición a que los acreedores no renueven los créditos DT.DOD.DSTC.ZS
Pago de intereses % del gasto público Porción del presupuesto comprometida con los acreedores GC.XPN.INTP.ZS
Gasto social Gasto público en salud % del PIB Esfuerzo sanitario frente al tamaño de la economía SH.XPD.GHED.GD.ZS
Gasto público en salud % del gasto público Lugar de la salud dentro del presupuesto SH.XPD.GHED.GE.ZS
Gasto público en educación % del PIB Esfuerzo educativo frente al tamaño de la economía SE.XPD.TOTL.GD.ZS
Gasto público en educación % del gasto público Lugar de la educación dentro del presupuesto SE.XPD.TOTL.GB.ZS
Capacidad fiscal Gasto total del gobierno % del PIB Tamaño del Estado GC.XPN.TOTL.GD.ZS
Ingresos tributarios % del PIB Recursos propios para pagar deuda sin recortar otros rubros GC.TAX.TOTL.GD.ZS
Desarrollo y contexto INB per cápita (Atlas) US$ corrientes Nivel de desarrollo; base de la clasificación por ingreso NY.GNP.PCAP.CD
Crecimiento del PIB % anual Dinamismo que facilita pagar la deuda NY.GDP.MKTP.KD.ZG
Desempleo % de la fuerza laboral Presión social sobre el presupuesto SL.UEM.TOTL.ZS
Tasa de dependencia por edad % de la población de 15 a 64 Demanda potencial de escuelas y de atención a mayores SP.POP.DPND
Índice de Gini 0 a 100 Necesidad de gasto redistributivo SI.POV.GINI
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

El gasto social se mide de dos maneras porque cada indicador permite analizar algo diferente. Cuando se expresa como porcentaje del PIB, muestra cuánto esfuerzo económico realiza el Estado en áreas como la salud. En cambio, cuando se mide como porcentaje del gasto público, permite identificar qué importancia tiene este sector dentro del presupuesto estatal. Por ejemplo, un Estado puede invertir poco en salud en relación con su PIB, pero eso no significa necesariamente que la deuda esté afectando esos recursos. Sin embargo, si la salud recibe cada vez menos recursos del presupuesto mientras aumenta el pago de intereses de la deuda, se evidencia una competencia directa entre ambos gastos. Por esta razón, el indicador que más interesa para este análisis es el porcentaje del gasto público, ya que permite identificar si el pago de la deuda está restándole prioridad a la inversión social.

2.3 Técnicas

El análisis se mide en dos pasos: primero se condensa la información y luego se agrupa. Hacerlo al revés contaría dos veces lo que miden variables parecidas.

Estandarización. Cada variable se lleva a puntaje z, para que ninguna pese más por la escala en que se mide:

\[z_{ij}=\frac{x_{ij}-\bar{x}_j}{s_j}\]

Componentes principales. El ACP crea variables nuevas, sin correlación entre sí, que son combinaciones lineales de las originales:

\[CP_k = a_{1k}z_1 + a_{2k}z_2 + \dots + a_{15,k}z_{15}\]

Los pesos salen de la matriz de correlaciones \(R\) al resolver \(R\,a_k=\lambda_k a_k\). El autovalor \(\lambda_k\) es la varianza que resume el componente, y como la varianza total es 15, el componente explica la fracción \(\lambda_k/15\). Se conservan los componentes con \(\lambda_k>1\) . Para interpretarlos se usan las cargas (correlación entre variable y componente), las contribuciones (cuánto aporta cada variable al componente) y el cos² (qué parte de la variable queda representada).

Agrupamiento de Ward. Con las coordenadas de los países en los componentes conservados se mide la distancia euclidiana

\[d_{ih}=\sqrt{\sum_{k=1}^{q}\left(CP_{ik}-CP_{hk}\right)^2}\]

y el método de Ward une paso a paso, los dos grupos cuya fusión menos aumenta la dispersión interna:

\[\Delta(A,B)=\frac{n_A\,n_B}{n_A+n_B}\,\lVert\bar{c}_A-\bar{c}_B\rVert^2\]

Elección del número de grupos y validación. El número de grupos se elige con el método de la silueta promedio . Para cada país, la silueta compara la distancia media a los demás países de su grupo, \(a(i)\), con la distancia media a los del grupo vecino, \(b(i)\):

\[s(i)=\frac{b(i)-a(i)}{\max\{a(i),\,b(i)\}}\]

Se calcula la silueta promedio de todos los países para cortes de 2 a 10 grupos, y el número óptimo es el que la maximiza. Como apoyo se revisa el método del codo, que sigue la suma de cuadrados dentro de los grupos . Ambos criterios se obtienen con la función fviz_nbclust() del paquete factoextra, con hcut para que cada corte se evalúe con el mismo agrupamiento jerárquico de Ward.

Por último, la agrupación se repite cambiando decisiones del análisis y se compara con la original mediante el índice de Rand ajustado, que vale 1 si las dos coinciden por completo y cerca de 0 si coinciden por azar.

3 Resultados descriptivos

3.1 Panorama de los indicadores

Cifras generales

largo <- base %>%
  select(nombre, ingreso, all_of(vars_orig)) %>%
  pivot_longer(all_of(vars_orig), names_to = "orig", values_to = "valor") %>%
  left_join(meta_v %>% select(orig, bloque, indicador, unidad), by = "orig")

est <- base_imp %>%
  select(all_of(vars_orig)) %>%
  pivot_longer(everything(), names_to = "orig", values_to = "valor") %>%
  left_join(meta_v %>% select(orig, bloque), by = "orig") %>%
  group_by(orig, bloque) %>%
  summarise(Mediana = median(valor), Media = mean(valor), DE = sd(valor),
            Mínimo = min(valor), Máximo = max(valor), CV = sd(valor) / abs(mean(valor)),
            Asim = asimetria(valor), .groups = "drop") %>%
  arrange(match(orig, vars_orig)) %>%
  mutate(Indicador = unname(etq[orig]))

cuadro(ktab(est %>% select(bloque, Indicador, Mediana, Media, DE, Mínimo, Máximo, CV, Asim),
            c("Bloque", "Indicador", "Mediana", "Media", "Desv. est.", "Mínimo", "Máximo", "CV", "Asimetría"),
            agrupar = 1),
       "Estadísticos de los indicadores")
Cuadro 3 Estadísticos de los indicadores
Bloque Indicador Mediana Media Desv. est. Mínimo Máximo CV Asimetría
Carga de deuda Saldo de la deuda externa (% del INB) 45,51 55,44 47,13 1,46 364,51 0,85 3,56
Servicio de la deuda externa (% del INB) 4,24 6,68 10,15 0,01 88,96 1,52 5,44
Deuda de corto plazo (% de la deuda externa) 9,07 12,39 11,46 0,00 57,80 0,92 1,65
Pago de intereses (% del gasto público) 8,99 10,26 7,59 0,01 42,00 0,74 1,71
Gasto social Gasto público en salud (% del PIB) 2,10 2,44 1,57 0,15 6,75 0,64 0,71
Gasto público en salud (% del gasto público) 8,63 8,88 4,18 2,18 19,45 0,47 0,52
Gasto público en educación (% del PIB) 3,83 3,84 1,55 0,00 8,40 0,40 0,16
Gasto público en educación (% del gasto público) 14,24 15,05 5,12 3,58 35,01 0,34 0,50
Capacidad fiscal Gasto total del gobierno (% del PIB) 19,93 20,78 7,77 3,47 49,05 0,37 0,64
Ingresos tributarios (% del PIB) 14,19 14,80 5,16 1,34 32,54 0,35 0,46
Desarrollo y contexto INB per cápita (Atlas) (US$ corrientes) 3.440,00 3.962,74 3.055,07 250,00 12.710,00 0,77 0,90
Crecimiento del PIB (% anual) 3,83 3,61 3,60 -6,91 24,21 1,00 1,21
Desempleo (% de la fuerza laboral) 4,99 7,31 5,91 0,12 28,47 0,81 1,37
Tasa de dependencia por edad (% de la población de 15 a 64) 57,83 64,25 17,60 34,23 104,95 0,27 0,54
Índice de Gini (0 a 100) 36,90 37,35 5,24 25,30 53,50 0,14 0,49
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

El coeficiente de variación permite comparar qué tan dispersos están los indicadores, incluso cuando se expresan en unidades diferentes. Entre los cinco indicadores con mayor dispersión, cuatro corresponden a variables relacionadas con la deuda. El que presenta la mayor variabilidad es el servicio de la deuda externa (% del INB), con un valor de 1,52. Por otro lado, los indicadores que muestran un comportamiento más similar entre los países son el índice de Gini, la tasa de dependencia por edad y el gasto público en educación como porcentaje del gasto público. Esto demuestra que los países en desarrollo presentan mayores similitudes en aspectos como la desigualdad y la estructura de su población que en sus niveles de endeudamiento.

Por otra parte, en el saldo de la deuda se observa una diferencia importante entre la media (55,4 %) y la mediana (45,5 %). Esta diferencia se debe principalmente a los valores elevados de países como Mozambique y Mongolia, que aumentan el promedio general. Por esta razón, en los siguientes análisis se utilizarán las medianas, ya que permiten representar mejor el comportamiento de los países sin que los valores extremos distorsionen los resultados.

Casos límite

extremos <- largo %>%
  filter(!is.na(valor)) %>%
  group_by(orig, bloque) %>%
  summarise(altos = paste(paste0(nombre[order(-valor)][1:3], " (", nf(sort(valor, decreasing = TRUE)[1:3]), ")"), collapse = ", "),
            bajos = paste(paste0(nombre[order(valor)][1:3], " (", nf(sort(valor)[1:3]), ")"), collapse = ", "),
            .groups = "drop") %>%
  arrange(match(orig, vars_orig)) %>%
  transmute(bloque, Indicador = unname(etq[orig]), altos, bajos)

cuadro(ktab(extremos, c("Bloque", "Indicador", "Valores más altos", "Valores más bajos"), agrupar = 1, align = "l"),
       "Los tres países en cada extremo de los indicadores")
Cuadro 4 Los tres países en cada extremo de los indicadores
Bloque Indicador Valores más altos Valores más bajos
Carga de deuda Saldo de la deuda externa (% del INB) Mozambique (364,5), Mongolia (263,6), Líbano (146,8) Irán (1,5), Argelia (2,9), Timor-Leste (7,1)
Servicio de la deuda externa (% del INB) Mongolia (89,0), Líbano (34,0), Jamaica (33,3) Somalia (0,0), Irán (0,1), Argelia (0,1)
Deuda de corto plazo (% de la deuda externa) Somalia (57,8), China (57,0), Mauricio (46,2) Burkina Faso (0,0), Tonga (0,0), Turkmenistán (0,0)
Pago de intereses (% del gasto público) Zambia (42,0), Sri Lanka (35,6), Líbano (34,5) Irak (0,0), Timor-Leste (0,1), Islas Salomón (0,5)
Gasto social Gasto público en salud (% del PIB) Lesoto (6,8), Argentina (6,2), Bosnia y Herzegovina (6,1) Somalia (0,2), Bangladés (0,4), Camerún (0,4)
Gasto público en salud (% del gasto público) Irán (19,4), Nicaragua (18,9), Maldivas (17,9) Camerún (2,2), Guinea-Bisáu (2,4), Bangladés (2,7)
Gasto público en educación (% del PIB) Botsuana (8,4), Bolivia (8,1), Surinam (6,8) Somalia (0,0), Nigeria (0,4), Papúa Nueva Guinea (0,8)
Gasto público en educación (% del gasto público) Sierra Leona (35,0), Uzbekistán (28,4), Nicaragua (23,9) Papúa Nueva Guinea (3,6), Somalia (4,3), Vanuatu (4,5)
Capacidad fiscal Gasto total del gobierno (% del PIB) Timor-Leste (49,0), Lesoto (39,2), Serbia (35,7) Somalia (3,5), Bangladés (8,3), República Democrática del Congo (8,8)
Ingresos tributarios (% del PIB) Lesoto (32,5), Mozambique (26,7), Jamaica (25,5) Irak (1,3), Somalia (2,0), Myanmar (Birmania) (6,0)
Desarrollo y contexto INB per cápita (Atlas) (US$ corrientes) Mauricio (12.710,0), Argentina (11.210,0), Rusia (11.190,0) Burundi (250,0), República Democrática del Congo (460,0), República Centroafricana (500,0)
Crecimiento del PIB (% anual) Timor-Leste (24,2), Ruanda (9,3), Etiopía (8,4) Líbano (-6,9), Zimbabue (-6,3), Nicaragua (-2,9)
Desempleo (% de la fuerza laboral) Sudáfrica (28,5), Esuatini (28,2), Congo (20,5) Camboya (0,1), Myanmar (Birmania) (0,4), Níger (0,5)
Tasa de dependencia por edad (% de la población de 15 a 64) República Centroafricana (105,0), Níger (103,4), Chad (100,7) Maldivas (34,2), Santa Lucía (38,1), Mauricio (38,4)
Índice de Gini (0 a 100) Brasil (53,5), Colombia (52,5), Mozambique (50,7) Bielorrusia (25,3), Moldavia (26,0), Ucrania (26,6)
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

Detrás de los extremos de la deuda hay historias muy distintas. Mozambique arrastraba los préstamos ocultos revelados en 2016, que lo llevaron al incumplimiento de pagos. Mongolia, el financiamiento de grandes proyectos mineros. Líbano, que aparece entre los mayores pagadores, dejaría de pagar su deuda en marzo de 2020. En el extremo opuesto, Irán y Argelia casi no tienen deuda externa: son exportadores de hidrocarburos que se financian con recursos propios, y en el caso iraní las sanciones le cierran los mercados. Una deuda baja puede ser señal de solidez o de falta de acceso.

Diferencias por ingreso

por_ingreso <- base %>%
  group_by(Ingreso = ingreso) %>%
  summarise(Países = n(), across(c(deuda_total_inb, deuda_servicio_inb, gasto_intereses_gob, gasto_salud_gob,
                                   gasto_educ_gob, gasto_social_gob, ingresos_fiscales),
                                 ~ median(.x, na.rm = TRUE)))
pin <- function(g, v) por_ingreso[[v]][por_ingreso$Ingreso == g]

d_pi <- por_ingreso %>%
  select(Ingreso, `Servicio de la deuda (% INB)` = deuda_servicio_inb, `Intereses (% gasto)` = gasto_intereses_gob,
         `Salud (% gasto)` = gasto_salud_gob, `Educación (% gasto)` = gasto_educ_gob, `Impuestos (% PIB)` = ingresos_fiscales) %>%
  pivot_longer(-Ingreso, names_to = "Indicador", values_to = "Mediana") %>%
  mutate(Indicador = factor(Indicador, levels = unique(Indicador)))

g_pi <- ggplot(d_pi, aes(Indicador, Mediana, fill = Ingreso, text = paste0(Ingreso, "<br>", Indicador, ": ", nf(Mediana)))) +
  geom_col(position = position_dodge(width = 0.8), width = 0.75) +
  geom_text(aes(label = nf(Mediana), y = Mediana + max(d_pi$Mediana) * 0.04),
            position = position_dodge(width = 0.8), colour = "#D7DEE7", size = 3.4) +
  scale_fill_manual(values = col_ingreso) +
  labs(x = NULL, y = "Mediana del grupo") +
  tema_oscuro()

p_pi <- ggplotly(g_pi, tooltip = "text", height = 480) %>% pulir_gg()

figura(p_pi, "Mediana de los indicadores clave según nivel de ingreso")
Figura 2 Mediana de los indicadores clave según nivel de ingreso
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

El servicio de la deuda aumenta a medida que crece el nivel de ingresos de los países. En los países de ingreso bajo representa el 1,2 % del ingreso nacional, mientras que en los de ingreso medio-bajo alcanza el 4,0 % y en los de ingreso medio-alto llega al 5,6 %. Este comportamiento se explica, en parte, por las condiciones de financiación de cada grupo. Los países más pobres suelen tener acceso a créditos concesionales, que ofrecen tasas de interés muy bajas y plazos de pago más largos, lo que reduce el costo de sus obligaciones financieras.

Por otro lado, la inversión social en salud y educación no aumenta de manera constante con el nivel de ingresos. En los países de ingreso bajo, estos dos sectores reciben conjuntamente el 22,3 % del gasto público. Esta participación disminuye al 20,8 % en los países de ingreso medio-bajo y posteriormente aumenta al 25,6 % en los de ingreso medio-alto. Esto muestra que los países de ingreso medio-bajo presentan la menor proporción de inversión social entre los tres grupos. Una posible explicación es que se encuentran en una etapa de transición en la que comienzan a perder el acceso a los créditos más económicos, pero todavía no cuentan con una capacidad de recaudación suficiente para compensar esa situación.

3.2 Geografía de los indicadores

mapa <- plot_ly(height = 540)
for (i in seq_along(vars_orig)) {
  v <- vars_orig[i]
  mapa <- mapa %>%
    add_trace(type = "choropleth", locations = base_imp$country_code, z = base_imp[[v]], text = base_imp$nombre,
              visible = i == 1, name = corta[[v]],
              colorscale = list(c(0, "#1B2633"), c(0.5, "#7C5CE0"), c(1, "#22D3EE")),
              colorbar = list(title = list(text = meta_v$unidad[i], font = list(color = "#D7DEE7")), thickness = 12, len = 0.65,
                              tickfont = list(color = "#AEB8C5")),
              marker = list(line = list(color = "#0A0E14", width = 0.5)),
              hovertemplate = paste0("<b>%{text}</b><br>", corta[[v]], ": %{z:.1f}<extra></extra>"))
}
botones <- lapply(seq_along(vars_orig), function(i) {
  list(method = "restyle", args = list("visible", as.list(seq_along(vars_orig) == i)), label = unname(etq[vars_orig[i]]))
})

mapa <- mapa %>%
  layout(font = letra, margin = list(l = 0, r = 0, t = 60, b = 0), paper_bgcolor = "rgba(0,0,0,0)",
         geo = list(showframe = FALSE, showcoastlines = FALSE, bgcolor = "rgba(0,0,0,0)", projection = list(type = "natural earth"),
                    showland = TRUE, landcolor = "#141C26", showcountries = TRUE, countrycolor = "#0A0E14"),
         updatemenus = list(list(type = "dropdown", buttons = botones, x = 0.01, xanchor = "left", y = 1.12, yanchor = "top",
                                 bgcolor = "#16202B", bordercolor = "#22D3EE", font = list(color = "#D7DEE7")))) %>%
  config(displayModeBar = FALSE, locale = "es")

figura(mapa, "Mapa interactivo: elija el indicador en el menú superior")
Figura 3 Mapa interactivo: elija el indicador en el menú superior
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

Al observar los indicadores en el mapa, se evidencia una diferencia importante entre el comportamiento del gasto en salud, la recaudación y el pago de intereses de la deuda. El gasto en salud y la recaudación presentan una distribución geográfica más definida, con valores más altos en América Latina, Europa del Este y el sur de África, mientras que en el Sahel y el sur de Asia se registran valores más bajos. En cambio, el pago de intereses de la deuda no sigue una distribución geográfica tan clara, pues existen países de diferentes regiones con presupuestos fuertemente comprometidos, como Zambia, Angola y Ghana en África, Sri Lanka en Asia, y Brasil y Jamaica en América. Esto demuestra que, aunque existen diferencias en los niveles de desarrollo entre regiones, la presión que genera la deuda no depende únicamente de la ubicación geográfica o del nivel de desarrollo de cada país.

3.3 Distribución de cada indicador

p_hist <- plot_ly(height = 480)
for (i in seq_along(vars_orig)) {
  v <- vars_orig[i]
  for (g in names(col_ingreso)) {
    x <- base[[v]][base$ingreso == g]
    p_hist <- p_hist %>% add_boxplot(y = x[!is.na(x)], x = rep(g, sum(!is.na(x))), name = g, visible = i == 1,
                                     text = base$nombre[base$ingreso == g][!is.na(x)], boxpoints = "all", jitter = 0.4, pointpos = 0,
                                     marker = list(color = col_ingreso[[g]], size = 6, opacity = 0.75),
                                     line = list(color = col_ingreso[[g]], width = 2), fillcolor = "rgba(255,255,255,0.04)",
                                     hoverinfo = "text+y", showlegend = FALSE)
  }
}
vis_i <- function(i) as.list(rep(seq_along(vars_orig) == i, each = length(col_ingreso)))
botones_h <- lapply(seq_along(vars_orig), function(i) {
  list(method = "update", label = unname(etq[vars_orig[i]]),
       args = list(list(visible = vis_i(i)),
                   list(yaxis = list(title = list(text = unname(etq[vars_orig[i]]), standoff = 22, font = list(color = "#D7DEE7")),
                                     automargin = TRUE, gridcolor = "#1F2A37", linecolor = "#3A4656", showline = TRUE,
                                     tickfont = list(color = "#AEB8C5")))))
})
p_hist <- p_hist %>%
  pulir("Nivel de ingreso", unname(etq[vars_orig[1]]), t = 70, l = 95) %>%
  layout(updatemenus = list(list(type = "dropdown", buttons = botones_h, x = 0, xanchor = "left", y = 1.16, yanchor = "top",
                                 bgcolor = "#16202B", bordercolor = "#22D3EE", font = list(color = "#D7DEE7"))))

figura(p_hist, "Cada indicador por nivel de ingreso: elija el indicador en el menú")
Figura 4 Cada indicador por nivel de ingreso: elija el indicador en el menú
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

Al analizar los gráficos, se observa que los indicadores de capacidad fiscal y gasto en salud aumentan progresivamente según el nivel de ingresos de los países. Esto muestra que los países con mayores ingresos suelen tener más capacidad para recaudar recursos e invertir en salud. Sin embargo, en los indicadores de deuda no se presenta el mismo comportamiento, ya que los resultados son bastante similares entre los diferentes grupos de ingresos. En todos los niveles se encuentran países que destinan una parte muy alta de sus recursos al pago de intereses y otros que destinan mucho menos. Por lo tanto, se puede anticipar que, en el Análisis de Componentes Principales (ACP), la deuda tendrá un comportamiento diferente al de los indicadores relacionados con el desarrollo económico.

3.4 Deuda frente a gasto social

En los tres primeros diagramas cada punto es un país, el color indica su nivel de ingreso, las líneas punteadas son la tendencia de cada nivel y el anillo blanco marca a Colombia.

Intereses y prioridad social

figura(dispersion("gasto_intereses_gob", "gasto_social_gob"),
       "Parte del presupuesto que va a intereses frente a la que va a salud y educación")
Figura 5 Parte del presupuesto que va a intereses frente a la que va a salud y educación
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

Este es el contraste más directo, porque los dos ejes son partes del mismo presupuesto: lo que se va en intereses no puede ir a escuelas ni a hospitales. Si la deuda le quita espacio al gasto social, los puntos deberían bajar de izquierda a derecha.

Eso solo ocurre en el ingreso medio-bajo. Para medirlo se usa la correlación de Spearman, que va de -1 a 1. Es negativa si a más intereses corresponde menos gasto social, positiva si pasa lo contrario y cercana a 0 si no hay relación. En el ingreso medio-bajo vale -0,19: una relación negativa, aunque débil. En el ingreso bajo es prácticamente nula (-0,01), porque su deuda es barata y casi no cobra intereses. En el medio-alto es incluso positiva (0,15), porque sus presupuestos son más grandes y alcanzan para pagar intereses sin recortar lo social.

Dos países de ingreso medio-bajo muestran los extremos. Angola destina el 31,9 % de su gasto a intereses y solo el 11,6 % a salud y educación. Uzbekistán destina el 1,2 % a intereses y el 36,7 % a salud y educación. Pero hay excepciones: Zambia, con el 42,0 % en intereses, todavía dedica el 22,9 % a lo social, por encima de la mediana de su grupo (20,8 %).

En resumen: la deuda compite con el gasto social sobre todo en los países de ingreso medio-bajo, que ya pagan intereses más altos pero todavía no tienen presupuestos grandes. Es una tendencia, no una regla.

Servicio de la deuda y educación

figura(dispersion("deuda_servicio_inb", "gasto_educ_gob", logx = TRUE),
       "Servicio de la deuda externa (escala logarítmica) frente a la prioridad de la educación")
Figura 6 Servicio de la deuda externa (escala logarítmica) frente a la prioridad de la educación
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

Esta gráfica compara lo que cada país paga por su deuda externa (eje horizontal, como porcentaje de su ingreso nacional) con la parte del presupuesto que dedica a la educación (eje vertical). Si pagar la deuda le quita espacio a la educación, los puntos deberían bajar de izquierda a derecha. Lo interesante es que la respuesta cambia según el nivel de ingreso.

En el ingreso bajo, la relación es positiva (Spearman de 0,53): los países que más pagan por su deuda son también los que más priorizan la educación. Burkina Faso paga el 15,1 % de su ingreso y dedica el 21,7 % del presupuesto a la educación, mientras que Uganda paga el 0,9 % y dedica el 8,9 %. Una explicación probable es el tipo de acreedor: estos países deben sobre todo a la banca multilateral, que presta barato y a menudo para programas sociales y educativos. Pagar esa deuda no compite con la educación, sino que la acompaña.

En el ingreso medio-bajo no hay relación (0,03): pagar más o menos deuda no se asocia con más o menos educación. Es un punto de transición.

En el ingreso medio-alto, la relación se vuelve negativa (-0,37): los países que más pagan priorizan menos la educación. Líbano destina el 34,0 % de su ingreso al servicio de la deuda y solo el 8,1 % del presupuesto a la educación, mientras que Irán, que casi no paga deuda externa (0,1 %), le dedica el 21,2 %. Aquí la deuda es de mercado, con tasas más altas, y su pago sí le quita espacio a la educación.

En resumen: el mismo indicador cuenta historias opuestas según quién presta. La deuda barata de los países pobres no desplaza a la educación; la deuda cara de los países de ingreso medio, sí. Hay que leerlo con cautela: en el ingreso bajo solo 16 países tienen los dos datos, y la línea naranja está estirada por Somalia, que casi no paga deuda y dedica muy poco a la educación. Sin Somalia la relación sigue siendo positiva, aunque más débil.

Recaudación e intereses

figura(dispersion("ingresos_fiscales", "gasto_intereses_gob"), "Ingresos tributarios frente al pago de intereses")
Figura 7 Ingresos tributarios frente al pago de intereses
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

La idea que pone a prueba esta gráfica es que la recaudación funciona como un colchón: un Estado que cobra más impuestos puede pagar sus intereses sin que estos se coman una parte grande del presupuesto. Si es así, los puntos deberían bajar de izquierda a derecha: a más recaudación, menos peso de los intereses.

Las dos esquinas cuentan la historia. Arriba a la izquierda está la zona más frágil, la de los países que recaudan poco y tienen el presupuesto comprometido con los acreedores. Ghana, Sri Lanka y Angola recaudan entre el 11 % y el 12 % del PIB y gastan más del 30 % de su presupuesto en intereses. Ghana y Sri Lanka dejaron de pagar su deuda externa en 2022, y los datos de 2019 ya mostraban esa fragilidad. Abajo a la derecha está la zona sólida: Lesoto recauda el 32,5 % del PIB y solo destina el 3,7 % de su gasto a intereses.

El colchón funciona con claridad en el ingreso medio-bajo. Ahí la correlación de Spearman es de -0,55, la relación más fuerte de la gráfica: los que recaudan más pagan una parte mucho menor de su presupuesto en intereses. En el ingreso medio-alto la relación va en el mismo sentido, pero es débil (-0,19), con excepciones como Jamaica, que recauda el 25,5 % del PIB y aun así gasta el 24,2 % en intereses. En el ingreso bajo la línea sube (0,52), pero no significa que recaudar más cause más intereses. Solo hay 13 países, sus intereses son bajos en general porque su deuda es barata, y la línea la estira Mozambique, un caso especial por la deuda oculta que reveló en 2016.

Colombia queda en el centro de la nube. Recauda el 14,9 % del PIB, casi igual a la mediana de la muestra (14,5 %), pero paga en intereses el 10,3 % de su gasto, por encima de la mediana (8,0 %). No está en la zona frágil, pero tampoco tiene el colchón de los países que recaudan mucho.

Correlaciones por ingreso

pares <- expand_grid(xv = c("deuda_total_inb", "deuda_servicio_inb", "gasto_intereses_gob"),
                     yv = c("gasto_salud_gob", "gasto_educ_gob", "gasto_social_gob"))
cor_g <- pares %>%
  mutate(Bajo = map2_dbl(xv, yv, rho, g = "Bajo"),
         `Medio-bajo` = map2_dbl(xv, yv, rho, g = "Medio-bajo"),
         `Medio-alto y alto` = map2_dbl(xv, yv, rho, g = "Medio-alto y alto"))
mz <- as.matrix(cor_g[, names(col_ingreso)])
filas <- paste(unname(corta[cor_g$xv]), "→", unname(corta[cor_g$yv]))

d_cor <- cor_g %>%
  select(xv, yv, all_of(names(col_ingreso))) %>%
  pivot_longer(all_of(names(col_ingreso)), names_to = "Ingreso", values_to = "rho") %>%
  mutate(fila = factor(paste(unname(corta[xv]), "→", unname(corta[yv])), levels = rev(filas)),
         Ingreso = factor(Ingreso, levels = names(col_ingreso)),
         txt = paste0(fila, "<br>Ingreso ", Ingreso, "<br>Spearman: ", nf(rho, 2)))

g_cor <- ggplot(d_cor, aes(Ingreso, fila, fill = rho, text = txt)) +
  geom_tile(colour = "#0A0E14", linewidth = 1.2) +
  geom_text(aes(label = nf(rho, 2)), colour = "white", size = 4) +
  scale_fill_gradient2(low = "#DB2777", mid = "#16202B", high = "#0891B2", midpoint = 0,
                       limits = c(-0.6, 0.6), oob = scales::squish, name = "ρ") +
  labs(x = "Nivel de ingreso", y = NULL) +
  tema_oscuro() +
  theme(panel.grid = element_blank())

p_cor_g <- ggplotly(g_cor, tooltip = "text", height = 520) %>% pulir_gg(t = 30)

figura(p_cor_g, "Correlación de Spearman entre deuda y gasto social, calculada dentro de cada nivel de ingreso")
Figura 8 Correlación de Spearman entre deuda y gasto social, calculada dentro de cada nivel de ingreso
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

Al comparar los resultados entre los diferentes niveles de ingresos, se observa que varias relaciones entre los indicadores cambian de intensidad e incluso de comportamiento, especialmente aquellas relacionadas con el gasto en educación. Esto se refleja en los colores de la matriz, donde algunas relaciones pasan de tonos cian a fucsia a medida que aumenta el nivel de ingresos de los países.

Para realizar esta comparación se utiliza el coeficiente de Spearman, ya que permite identificar si dos variables mantienen una relación similar en su orden, sin necesidad de que exista una relación lineal. Además, es un método más adecuado para este análisis porque es menos sensible a los valores extremos, especialmente los que se presentan en los indicadores de deuda.

Es importante tener en cuenta que los grupos están conformados por 19, 40 y 47 países, respectivamente, por lo que los resultados de cada celda deben interpretarse con precaución y no tomarse como conclusiones definitivas por sí solos. Lo más importante es identificar los patrones que se repiten entre los diferentes grupos de ingresos.

En conclusión, la deuda es la dimensión que presenta mayores diferencias entre los países y no sigue una relación directa con el nivel de ingresos. Por el contrario, la capacidad fiscal muestra un comportamiento más relacionado con el desarrollo económico. Asimismo, la relación entre el endeudamiento y el gasto social cambia dependiendo del nivel de ingresos de cada país. Por esta razón, el análisis multivariado resulta útil, ya que permite estudiar conjuntamente estas relaciones e identificar patrones que no serían tan fáciles de observar al analizar cada indicador por separado.

4 Resultados del modelo

4.1 Componentes principales

4.1.1 ¿Cuántas dimensiones hay?

Correlaciones

mc <- cor(X)
ord <- hclust(as.dist(1 - mc))$order
mc <- mc[ord, ord]
nom <- unname(corta_m[rownames(mc)])
mc_txt <- ifelse(upper.tri(mc, diag = TRUE), "", nf(mc, 2))
mc_low <- ifelse(upper.tri(mc, diag = TRUE), NA, mc)

p_mc <- plot_ly(x = nom, y = nom, z = mc_low, type = "heatmap", height = 720, colorscale = esc_div, zmin = -1, zmax = 1,
                text = mc_txt, texttemplate = "%{text}", textfont = list(size = 11, color = "#FFFFFF"), xgap = 2, ygap = 2,
                hovertemplate = "%{y}<br>%{x}<br>r = %{z:.2f}<extra></extra>",
                colorbar = list(title = list(text = "r", font = list(color = "#D7DEE7")), thickness = 12, len = 0.7,
                                tickfont = list(color = "#AEB8C5"))) %>%
  pulir("", "", l = 30, b = 40, ejex = list(tickangle = -40, showgrid = FALSE, showline = FALSE),
        ejey = list(autorange = "reversed", showgrid = FALSE, showline = FALSE))

figura(p_mc, "Correlaciones entre los indicadores (triángulo inferior, ordenado por similitud)")
Figura 9 Correlaciones entre los indicadores (triángulo inferior, ordenado por similitud)
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).
mc0 <- cor(X)
r_xy <- function(a, b) nf(mc0[a, b], 2)
n_alta <- sum(abs(mc0[upper.tri(mc0)]) > 0.5)

El servicio de la deuda aumenta a medida que crece el nivel de ingresos de los países. En los países de ingreso bajo representa el 1,2 % del ingreso nacional, mientras que en los de ingreso medio-bajo alcanza el 4,0 % y en los de ingreso medio-alto llega al 5,6 %. Este comportamiento se explica, en parte, por las condiciones de financiación de cada grupo. Los países más pobres suelen tener acceso a créditos concesionales, que ofrecen tasas de interés muy bajas y plazos de pago más largos, lo que reduce el costo de sus obligaciones financieras.

Por otro lado, la inversión social en salud y educación no aumenta de manera constante con el nivel de ingresos. En los países de ingreso bajo, estos dos sectores reciben conjuntamente el 22,3 % del gasto público. Esta participación disminuye al 20,8 % en los países de ingreso medio-bajo y posteriormente aumenta al 25,6 % en los de ingreso medio-alto. Esto muestra que los países de ingreso medio-bajo presentan la menor proporción de inversión social entre los tres grupos. Una posible explicación es que se encuentran en una etapa de transición en la que comienzan a perder el acceso a los créditos más económicos, pero todavía no cuentan con una capacidad de recaudación suficiente para compensar esa situación.

Autovalores

sc <- eig %>% mutate(k = factor(paste0("CP", row_number()), levels = paste0("CP", row_number()))) %>% slice(1:10)

p_sc <- plot_ly(sc, x = ~k, height = 500) %>%
  add_bars(y = ~autovalor, name = "Autovalor", marker = list(color = ifelse(sc$autovalor > 1, "#22D3EE", "#2C3A4B")),
           text = ~nf(autovalor, 2), textposition = "outside", textfont = list(color = "#D7DEE7"), cliponaxis = FALSE,
           customdata = ~acumulada,
           hovertemplate = "%{x}<br>Autovalor: %{y:.2f}<br>Acumulado: %{customdata:.1f} %<extra></extra>") %>%
  add_trace(y = ~autovalor, type = "scatter", mode = "lines+markers", name = "Perfil de los autovalores",
            line = list(color = "#A78BFA", width = 2.5), marker = list(color = "#A78BFA", size = 9), hoverinfo = "skip") %>%
  add_lines(y = rep(1, nrow(sc)), name = "Umbral de Kaiser (λ = 1)", line = list(color = "#F5B041", dash = "dash", width = 2),
            hoverinfo = "skip") %>%
  pulir("Componente", "Autovalor", leyenda = TRUE, ejey = list(range = c(0, max(sc$autovalor) * 1.2))) %>%
  layout(bargap = 0.35)

tab_eig <- eig %>%
  mutate(Componente = paste0("CP", row_number()), Decisión = if_else(autovalor > 1, "Se conserva", "Se descarta")) %>%
  select(Componente, autovalor, varianza, acumulada, Decisión)

tagList(
  cuadro(ktab(tab_eig, c("Componente", "Autovalor", "% de varianza", "% acumulado", "Decisión"),
              align = c("l", "c", "c", "c", "l")) %>%
           row_spec(seq_len(nc), bold = TRUE, background = "#16283A"),
         "Proporción de la varianza explicada por cada componente"),
  figura(p_sc, "Autovalores de los diez primeros componentes")
)
Cuadro 5 Proporción de la varianza explicada por cada componente
Componente Autovalor % de varianza % acumulado Decisión
comp 1 CP1 4,64 30,96 30,96 Se conserva
comp 2 CP2 1,91 12,72 43,67 Se conserva
comp 3 CP3 1,81 12,08 55,75 Se conserva
comp 4 CP4 1,59 10,62 66,38 Se conserva
comp 5 CP5 1,17 7,83 74,20 Se conserva
comp 6 CP6 0,84 5,62 79,82 Se descarta
comp 7 CP7 0,66 4,38 84,20 Se descarta
comp 8 CP8 0,61 4,07 88,27 Se descarta
comp 9 CP9 0,50 3,32 91,60 Se descarta
comp 10 CP10 0,44 2,94 94,54 Se descarta
comp 11 CP11 0,33 2,18 96,72 Se descarta
comp 12 CP12 0,20 1,36 98,08 Se descarta
comp 13 CP13 0,13 0,86 98,93 Se descarta
comp 14 CP14 0,12 0,77 99,71 Se descarta
comp 15 CP15 0,04 0,29 100,00 Se descarta
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).
Figura 10 Autovalores de los diez primeros componentes
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

Según los resultados del análisis, se decidió conservar cinco componentes principales, los cuales explican conjuntamente el 74,2 % de la variabilidad de la información. El primer componente representa el 31,0 %, mientras que los componentes segundo, tercero y cuarto presentan autovalores relativamente cercanos, de 1,91, 1,81 y 1,59, respectivamente. Esto indica que la información no se concentra en un solo componente, sino que se distribuye entre varias dimensiones.

Estos resultados muestran que las finanzas públicas de los países en desarrollo son un fenómeno complejo que no puede explicarse únicamente a partir del nivel de ingresos. Por ejemplo, tener mayores ingresos no significa necesariamente contar con menos deuda o destinar más recursos a la inversión social. Además, el quinto componente presenta un autovalor de 1,17, que supera por poco el valor de referencia de 1 establecido por el criterio de Kaiser. Por esta razón, en el análisis de estabilidad se comparan los resultados utilizando cuatro, cinco y seis componentes, con el fin de comprobar si la estructura identificada se mantiene y si la elección de cinco componentes representa adecuadamente la información.

4.1.2 Qué significa cada componente

Mapa de cargas

tab_c <- tibble(modelo = rownames(carga)) %>%
  bind_cols(as_tibble(carga)) %>%
  mutate(cos2_t = rowSums(cos2[modelo, , drop = FALSE]), ind = unname(corta_m[modelo])) %>%
  arrange(match(modelo, vars_mod))
mcar <- as.matrix(tab_c[, paste0("CP", 1:nc)])

p_car <- plot_ly(x = paste0("CP", 1:nc, "<br>", nombres_cp), y = tab_c$ind, z = mcar, type = "heatmap", height = 640,
                 colorscale = esc_div, zmin = -1, zmax = 1, text = round(mcar, 2), texttemplate = "%{text}",
                 textfont = list(size = 12, color = "#FFFFFF"), xgap = 3, ygap = 3,
                 customdata = matrix(round(tab_c$cos2_t, 2), nrow = nrow(mcar), ncol = nc),
                 hovertemplate = "%{y}<br>%{x}<br>Carga: %{z:.2f}<br>Cos² acumulado de la variable: %{customdata}<extra></extra>",
                 colorbar = list(title = list(text = "Carga", font = list(color = "#D7DEE7")), thickness = 12, len = 0.7,
                                 tickfont = list(color = "#AEB8C5"))) %>%
  pulir("", "", l = 30, t = 20, ejex = list(showgrid = FALSE, showline = FALSE, side = "top", tickfont = list(size = 11, color = "#D7DEE7")),
        ejey = list(autorange = "reversed", showgrid = FALSE, showline = FALSE))

figura(p_car, "Cargas de cada indicador en los componentes conservados")
Figura 11 Cargas de cada indicador en los componentes conservados
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

Los resultados muestran que cada componente principal agrupa variables con características propias, lo que permite identificar y asignar un nombre a cada uno con mayor facilidad. Además, la mayoría de las variables presenta una mayor relación con un componente específico, sin mostrar cargas elevadas en varios componentes al mismo tiempo. Esto facilita la interpretación de los resultados y permite diferenciar las dimensiones económicas y sociales que representa cada componente.

Por otra parte, al evaluar qué tan bien están representadas las variables en el conjunto de componentes, se observa que el servicio de la deuda es la variable con mejor representación, con un cos² de 0,89. Esto significa que los cinco componentes explican una parte importante de su comportamiento. En cambio, la deuda a corto plazo presenta la menor representación, con un cos² de 0,55. Por lo tanto, sus resultados deben interpretarse con mayor precaución, ya que una parte de su variabilidad no queda explicada por los componentes seleccionados.

CP1

figura(graf_contrib(1), paste("Aporte de cada indicador a", eje(1)))
Figura 12 Aporte de cada indicador a CP1 · Capacidad fiscal y desarrollo (31,0 %)
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

El primer componente está relacionado principalmente con la capacidad fiscal y el nivel de desarrollo de los países. Las variables que más contribuyen a su construcción son el gasto en salud como porcentaje del PIB (18 %), el gasto en salud como porcentaje del gasto público (14 %) y el gasto público total (13 %). En términos generales, un valor alto en este componente representa países con mayor capacidad para recaudar recursos, más gasto público y una mayor inversión en salud, además de una menor dependencia demográfica.

Entre los países que presentan los valores más altos se encuentran Sudáfrica (4,54), Lesoto (3,83) y Bosnia y Herzegovina (3,60). Por el contrario, los valores más bajos corresponden a Somalia (-5,14), República Democrática del Congo (-3,93) y República Centroafricana (-3,74). Esto permite observar las diferencias existentes entre los países en cuanto a su capacidad económica y la destinación de recursos públicos.

CP2

figura(graf_contrib(2), paste("Aporte de cada indicador a", eje(2)))
Figura 13 Aporte de cada indicador a CP2 · Carga de la deuda (12,7 %)
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

El segundo componente está relacionado principalmente con la carga de la deuda y representa el 12,7 % de la variabilidad total de los datos. Las variables que más contribuyen a su formación son la deuda externa (29 %), los intereses de la deuda (26 %) y el servicio de la deuda (22 %). Todas presentan una relación en el mismo sentido, mientras que la prioridad del gasto en educación se ubica en el extremo contrario.

Este resultado es especialmente importante para el estudio, porque permite observar que, al diferenciar la carga de la deuda del nivel de desarrollo económico, los países con mayores niveles de endeudamiento y mayores pagos de intereses tienden a destinar una menor proporción de su presupuesto a la educación. Entre los países con los valores más altos de este componente se encuentran Líbano (4,39), Angola (3,97) y Zambia (3,47). En contraste, los valores más bajos corresponden a Timor-Leste (-4,48), Irán (-4,14) y Argelia (-3,71), países que presentan bajos niveles de deuda externa o limitaciones para acceder a los mercados financieros internacionales.

Un aspecto importante es que el gasto en educación aparece en el extremo opuesto de las variables relacionadas con la deuda dentro del mismo componente. Esto indica una relación inversa entre ambas dimensiones y representa, desde el análisis multivariado, el fenómeno conocido como efecto desplazamiento. Es decir, cuando aumenta la presión de la deuda sobre los recursos públicos, puede disminuir la proporción del presupuesto disponible para financiar la educación. De esta manera, los resultados aportan evidencia a favor de la hipótesis central del estudio.

CP3

figura(graf_contrib(3), paste("Aporte de cada indicador a", eje(3)))
Figura 14 Aporte de cada indicador a CP3 · Fragilidad de corto plazo (12,1 %)
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

Fragilidad de corto plazo (12,1 %). Este componente enfrenta dos maneras de manejar las finanzas públicas. Arriba quedan los países con mucha deuda que vence en menos de un año y poco gasto en educación. Abajo, los que tienen deuda de largo plazo y dedican más recursos a la educación.

Lo definen tres indicadores. La deuda de corto plazo (22 % del componente) tiene carga positiva: cuanto más alta, más arriba queda el país. La educación como parte del presupuesto (24 %) y la educación como parte del PIB (17 %) tienen carga negativa: cuanto más gasta un país en educación, más abajo queda. Que su carga sea negativa no les resta importancia. Juntas aportan el 42 % del componente, y son lo que más lo define, solo que desde el polo opuesto a la deuda de corto plazo.

Los extremos lo muestran. Arriba están Somalia (4,31), China (2,86) y Jordania (2,52). Somalia, el caso más claro, tiene el 58 % de su deuda a corto plazo y dedica solo el 4,3 % de su presupuesto a la educación. Abajo están Mozambique (-3,91), Burundi (-3,00) y Burkina Faso (-2,99). Mozambique tiene apenas el 4 % de su deuda a corto plazo y dedica el 19 % de su presupuesto a la educación.

La lección es que no solo importa cuánto se debe, sino cuándo hay que pagarlo. Un país que tiene que renovar sus créditos cada año vive pendiente de sus acreedores. En los datos, esa fragilidad aparece junto a presupuestos que invierten menos en educación, un gasto que tarda años en dar fruto. Es una asociación: con un solo año de datos no se puede afirmar que una cosa cause la otra.

CP4

if (nc >= 4) figura(graf_contrib(4), paste("Aporte de cada indicador a", eje(4)))
Figura 15 Aporte de cada indicador a CP4 · Crecimiento con equidad (10,6 %)
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

Crecimiento con equidad (10,6 %). Este componente separa a las economías que crecen y son más igualitarias de las que están estancadas y son desiguales. Arriba quedan las primeras; abajo, las segundas.

Lo definen sobre todo dos indicadores en polos opuestos. El Gini (29 % del componente) es el que más pesa. Tiene carga negativa porque mide desigualdad: cuanto más desigual es un país, más abajo queda. El crecimiento (24 %) tiene carga positiva: cuanto más crece, más arriba queda. Los acompañan, con un peso menor, los impuestos (8 %), que suben con el componente, y los intereses (7 %), que bajan.

Los extremos lo muestran. Arriba están Timor-Leste (4,21), Mongolia (2,81) y Armenia (2,39). Armenia, por ejemplo, creció 7,6 % en 2019 y tiene un Gini de 30,0, más igualitario que el país típico de la muestra (37,1). Abajo están Irán (-3,29), Somalia (-3,04) y Zimbabue (-3,04). Zimbabue se contrajo 6,3 % ese año y tiene un Gini de 50,3. Colombia también queda abajo: su Gini de 52,5 es de los más altos de la muestra y su crecimiento (3,2 %) fue algo menor que el típico (3,8 %).

La deuda casi no participa. Solo los intereses superan por poco el aporte promedio, y el saldo y el servicio de la deuda quedan por debajo. Por eso este componente funciona como un control: recoge diferencias entre países (cuánto crecen y qué tan desiguales son) que no tienen que ver directamente con la pregunta. Al quedar separadas en su propio eje, no se mezclan con la relación entre deuda y gasto social.

CP5

if (nc >= 5) figura(graf_contrib(5), paste("Aporte de cada indicador a", eje(5)))
Figura 16 Aporte de cada indicador a CP5 · Presión demográfica y laboral (7,8 %)
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

Presión demográfica y laboral (7,8 %). Este componente separa a los países con muchas personas fuera del trabajo, sea por edad o por falta de empleo, de los que tienen mercados laborales holgados y poblaciones en edad de trabajar.

Lo definen sobre todo tres indicadores. El desempleo (25 % del componente) y la dependencia demográfica (18 %) tienen carga positiva: cuanto más altos, más arriba queda el país. La educación como parte del presupuesto (14 %) tiene carga negativa: cuanto más presupuesto le dedica un país a la educación, más abajo queda. Con menos peso también suben los impuestos (11 %) y el gasto total (8 %), y baja el ingreso per cápita (8 %).

Los extremos lo muestran. Arriba están Lesoto (3,67), Esuatini (2,40) y Timor-Leste (2,29). Lesoto tiene un desempleo de 16,9 %, más del triple que el país típico de la muestra (5,0 %), y 66 dependientes por cada 100 personas en edad de trabajar. Su recaudación también es muy alta (32,5 % del PIB), en buena parte por los ingresos que recibe de la unión aduanera del sur de África, y eso explica por qué los impuestos suben con este componente. Abajo están China (-2,21), Tailandia (-2,19) y Mauricio (-1,95). Tailandia, por ejemplo, casi no tiene desempleo (0,7 %), tiene apenas 41 dependientes por cada 100 y dedica el 17,0 % de su presupuesto a la educación.

No todos los países cumplen todos los rasgos: el puntaje combina los indicadores. Esuatini queda arriba aunque prioriza la educación (18,5 %), porque su desempleo del 28,2 %, el más alto de la muestra, pesa más.

Es el componente de lectura más tentativa, porque su autovalor (1,17) apenas supera el umbral de Kaiser. La deuda casi no participa: ninguno de sus indicadores llega al aporte promedio. Por eso, como el cuarto, funciona como un control: recoge las diferencias de empleo y población entre países y las mantiene separadas de la relación entre deuda y gasto social.

Círculos de correlación

figura(circulo(1, 2), "Indicadores en el plano de capacidad fiscal (CP1) y carga de la deuda (CP2)")
Figura 17 Indicadores en el plano de capacidad fiscal (CP1) y carga de la deuda (CP2)
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

La pregunta de investigación se vuelve geometría. Si la deuda dependiera del desarrollo, sus flechas apuntarían hacia el mismo lado que las de la capacidad fiscal. No es así.

Las flechas del desarrollo apuntan a la derecha: el gasto en salud (0,90), el gasto total (0,79), el ingreso per cápita (0,76) y los impuestos (0,66) crecen juntos con el primer componente. Las de la deuda apuntan hacia arriba: el saldo de la deuda (0,74) y los intereses (0,71) definen el segundo. Los dos grupos forman casi un ángulo recto: saber qué tan desarrollado es un país no dice cuánto le pesa su deuda. Es la evidencia más directa de la primera hipótesis.

Hay dos flechas que cruzan esa división. El servicio de la deuda queda en diagonal porque participa de ambos ejes (0,52 en desarrollo y 0,65 en deuda): los países más desarrollados pagan más servicio, porque se financian a tasas de mercado. La dependencia demográfica apunta a la izquierda (-0,71), en el polo opuesto al desarrollo: los países más pobres tienen más niños y adultos mayores por cada persona en edad de trabajar.

La prioridad educativa apunta hacia abajo (-0,36), en sentido contrario a la deuda, pero su flecha es corta y termina dentro de la zona sombreada. Es una tendencia débil en este plano, que se ve con más fuerza en el tercer componente. El Gini, el desempleo y la deuda de corto plazo también quedan cerca del centro: su información está en los componentes 3 a 5, no en estos dos.

figura(circulo(1, 3), "Indicadores en el plano de capacidad fiscal (CP1) y fragilidad de corto plazo (CP3)")
Figura 18 Indicadores en el plano de capacidad fiscal (CP1) y fragilidad de corto plazo (CP3)
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

Este plano mantiene el desarrollo en el eje horizontal y cambia el vertical por la fragilidad de corto plazo. Aquí la pregunta ya no es cuánto se debe, sino cuándo hay que pagarlo.

El eje vertical enfrenta a la deuda de corto plazo con la educación. La deuda de corto plazo apunta hacia arriba (0,63) y la educación como parte del presupuesto, hacia abajo (-0,67). Las dos flechas son casi opuestas y están bien representadas. Los países con más deuda que vence en menos de un año tienden a dar menos prioridad a la educación. En el círculo anterior esta oposición apenas se insinuaba; aquí es donde se ve con claridad.

La prioridad educativa no depende del desarrollo. Su flecha casi no se mueve en horizontal (0,14): países ricos y pobres le dan una parte parecida de su presupuesto. La educación como parte del PIB, en cambio, se inclina a la derecha (0,62), porque los Estados grandes gastan más en todo, y la educación no es la excepción. Es decir, el desarrollo explica cuánto se gasta en educación, pero no qué prioridad se le da. Proteger la educación es una decisión de cada gobierno más que un privilegio del ingreso.

El ingreso per cápita se inclina hacia arriba (0,41): los países de mayor ingreso tienen más deuda de corto plazo, porque ya se financian en los mercados y no con préstamos multilaterales de largo plazo. La dependencia apunta abajo a la izquierda: los países pobres y jóvenes tienen poca deuda de corto plazo y gastan más en educación.

El saldo de la deuda y los intereses quedan cerca del centro. Su información está en el segundo componente, no en este. Lo que este plano agrega es el plazo de la deuda, no su tamaño.

if (nc >= 4) figura(circulo(1, 4), "Indicadores en el plano de capacidad fiscal (CP1) y crecimiento con equidad (CP4)")
Figura 19 Indicadores en el plano de capacidad fiscal (CP1) y crecimiento con equidad (CP4)
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

Este plano cambia el eje vertical por el crecimiento con equidad. Arriba quedan las economías que crecen y son más igualitarias; abajo, las estancadas y desiguales.

El eje vertical lo definen dos flechas casi opuestas. El crecimiento apunta hacia arriba (0,62) y el Gini, hacia abajo (-0,68). Como el Gini mide desigualdad, que estén en sentidos contrarios significa que, en 2019, las economías que más crecieron tendían a ser las menos desiguales. Colombia es un ejemplo del polo de abajo: tiene un Gini de 52,5, uno de los más altos de la muestra, y un crecimiento menor al del país típico.

Ninguna de las dos depende del desarrollo. El Gini casi no se mueve en horizontal (0,17): hay países desiguales e igualitarios en todos los niveles de ingreso. El crecimiento se inclina un poco a la izquierda (-0,33), porque los países más pobres crecen algo más rápido, ya que parten de más abajo. Los impuestos se inclinan hacia arriba (0,35): los países que recaudan más están algo más cerca del polo del crecimiento con equidad.

La deuda casi no aparece. El saldo de la deuda (0,30) y los intereses (-0,33) tienen flechas cortas que terminan dentro de la zona sombreada, es decir, mal representadas. El servicio de la deuda queda fuera, pero sobre todo por su peso en el desarrollo (0,52), no en este eje (0,31). Entre las tres aportan el 18 % del componente, menos del 20 % que les correspondería si todos los indicadores aportaran igual. El eje funciona como un control: separa a los países por su dinamismo y su desigualdad, no por cuánto deben, y así esas diferencias no se mezclan con la relación entre deuda y gasto social.

if (nc >= 5) figura(circulo(1, 5), "Indicadores en el plano de capacidad fiscal (CP1) y presión demográfica y laboral (CP5)")
Figura 20 Indicadores en el plano de capacidad fiscal (CP1) y presión demográfica y laboral (CP5)
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

Este plano cambia el eje vertical por la presión demográfica y laboral. Arriba quedan los países con muchas personas fuera del trabajo; abajo, los que tienen mercados laborales holgados.

Arriba se juntan dos presiones distintas. El desempleo (0,54) y la dependencia demográfica (0,47) suben con el componente. Pero en horizontal se separan. La dependencia apunta a la izquierda, con los países pobres, que tienen muchos niños. El desempleo apunta a la derecha, con los de mayor ingreso, donde el trabajo es más formal y quien no lo encuentra cuenta como desempleado. El quinto componente recoge lo que tienen en común una vez descontado el desarrollo: una población con muchas personas que no trabajan, sea por edad o por falta de empleo.

Con menos fuerza también suben la recaudación (0,36) y el gasto total (0,31), y baja el ingreso per cápita (-0,30). Ese perfil corresponde sobre todo al sur de África: Lesoto y Esuatini combinan desempleo muy alto con Estados que recaudan mucho.

La educación como parte del presupuesto apunta hacia abajo (-0,41), en el polo opuesto a esas presiones. Pero su flecha es corta y termina dentro de la zona sombreada, así que solo indica una tendencia: donde hay más personas fuera del trabajo, la educación no recibe más presupuesto, y tiende a recibir algo menos.

Es el plano de lectura más tentativa. El componente apenas supera el umbral de Kaiser, y aunque algunas flechas son largas, su largo viene sobre todo del eje horizontal. En el vertical, ningún indicador tiene más del 29 % de su varianza.

4.1.3 Los países en el nuevo espacio

Plano principal

figura(plano(1, 2, "ingreso", col_ingreso), "Países según capacidad fiscal (horizontal) y carga de la deuda (vertical)")
Figura 21 Países según capacidad fiscal (horizontal) y carga de la deuda (vertical)
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

Cada punto es un país. Hacia la derecha, más capacidad fiscal: Estados que recaudan y gastan más y tienen más ingreso. Hacia arriba, más carga de la deuda: más deuda externa y más presupuesto comprometido con intereses. El cruce de las líneas es el país promedio.

En horizontal, los colores se ordenan. Los países de ingreso bajo quedan a la izquierda, los de medio-bajo en el centro y los de medio-alto a la derecha: las medianas en CP1 son -2,89, -0,83 y 1,54. En vertical, en cambio, se mezclan: las medianas en CP2 son casi iguales (-0,31, 0,15 y -0,05), y en los tres niveles de ingreso hay países muy y poco endeudados. Es decir, saber el ingreso de un país permite adivinar su capacidad fiscal, pero no cuánto le pesa la deuda. Es la conclusión del círculo de correlación, ahora vista con los países.

Donde la deuda más separa a los países es en el ingreso medio-bajo. Sus puntos son los más dispersos en vertical (desviación de 1,55), mientras que los de ingreso bajo están apretados cerca del promedio (0,76), porque casi todos tienen una deuda parecida, concesional y barata. En los extremos aparecen historias muy distintas. Arriba están Líbano (4,39), Angola (3,97) y Zambia (3,47), con intereses muy altos. Abajo están Timor-Leste (-4,48), Irán (-4,14) y Argelia (-3,71), que casi no tienen deuda externa, sea por solidez o por falta de acceso a los mercados.

Colombia queda muy a la derecha y casi en el centro vertical. Tiene la quinta capacidad fiscal más alta de los 106 países (3,28) y una carga de deuda cercana al promedio (-0,16). No está en la zona frágil, la de los Estados débiles y muy endeudados.

Corto plazo (CP3)

figura(plano(1, 3, "ingreso", col_ingreso), "Países según capacidad fiscal (horizontal) y fragilidad de corto plazo (vertical)")
Figura 22 Países según capacidad fiscal (horizontal) y fragilidad de corto plazo (vertical)
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

El eje horizontal es la capacidad fiscal y el vertical, la fragilidad de corto plazo. Arriba quedan los países con mucha deuda que vence en menos de un año y menos presupuesto para la educación. Abajo, los que tienen deuda de largo plazo y dedican más a la educación.

A diferencia del eje de la deuda, aquí el nivel de ingreso sí se nota. Los países más pobres tienden a quedar abajo y los de mayor ingreso, arriba: la mediana en CP3 sube de -0,89 en el ingreso bajo a 0,15 en el medio-bajo y 0,51 en el medio-alto. La explicación está en a quién le deben. Los países pobres deben sobre todo a organismos multilaterales como el Banco Mundial, que prestan a plazos largos, así que tienen poca deuda de corto plazo (mediana de 3,8 %, frente a 12,7 % en el ingreso medio-alto). Además, le dan más prioridad a la educación (16,1 % del presupuesto, frente a 14,1 %).

Aun así, el ingreso bajo es el grupo más disperso (desviación de 1,72, frente a 1,15 y 1,14), porque reúne a los dos extremos del eje. Arriba de todo está Somalia (4,31): el 58 % de su deuda figura como de corto plazo, pero eso se debe sobre todo a intereses que dejó de pagar durante años y que el Banco Mundial cuenta como deuda de corto plazo. Abajo están Mozambique (-3,91), Burundi (-3,00) y Burkina Faso (-2,99), con deuda de largo plazo y mucho presupuesto para la educación. Por regiones, Oriente Medio y Norte de África (1,00) y Europa y Asia Central (0,83) quedan arriba, y África Subsahariana (-0,67), abajo.

Colombia (-0,29) queda cerca del centro. Su deuda de corto plazo (11,2 %) y su gasto en educación (4,5 % del PIB) están un poco por encima de lo típico en la muestra (9,1 % y 3,9 %). Pero como empujan en sentidos contrarios, la deuda hacia arriba y la educación hacia abajo, se compensan. Este eje no distingue a Colombia.

Crecimiento y equidad (CP4)

if (nc >= 4) figura(plano(1, 4, "ingreso", col_ingreso), "Países según capacidad fiscal (horizontal) y crecimiento con equidad (vertical)")
Figura 23 Países según capacidad fiscal (horizontal) y crecimiento con equidad (vertical)
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

El eje horizontal es la capacidad fiscal y el vertical, el crecimiento con equidad. Arriba quedan las economías que crecieron mucho en 2019 y son poco desiguales. Abajo, las que crecieron poco o se contrajeron y son muy desiguales.

Este eje no lo ordena el ingreso. Las medianas son casi iguales en los tres niveles (-0,04 en el bajo, 0,36 en el medio-bajo y -0,19 en el medio-alto), y los tres colores ocupan toda la altura del gráfico: hay países ricos y pobres tanto arriba como abajo. Lo que sí lo ordena es la región. América Latina tiene la mediana más baja de todas (-1,20), por su desigualdad histórica, y Europa y Asia Central la más alta (1,11), con desigualdad moderada y buen crecimiento en 2019.

Los extremos. Arriba están Timor-Leste (4,21), que creció un excepcional 24 % en 2019, Mongolia (2,81) y Armenia (2,39). Armenia ilustra bien el polo de arriba: creció 7,6 % y tiene un Gini de 30,0, de los más bajos de la muestra. Abajo están Irán (-3,29), Somalia (-3,04) y Zimbabue (-3,04). Irán y Zimbabue estaban en recesión ese año (-2,4 % y -6,3 %). Entre los seis más bajos también aparecen Brasil, con un Gini de 53,5, y Argentina, que se contrajo 2,0 %.

Colombia (-1,66) es uno de los países más bajos de la muestra: ocupa el puesto 96 de 106. La razón principal es su desigualdad: su Gini de 52,5 está 15 puntos por encima del país típico (37,1). Además, creció algo menos (3,2 % frente a 3,8 %). Es el rasgo que ya asomaba en el radar de la sección de Colombia, ahora convertido en una dimensión propia: Colombia tiene un Estado fuerte para la muestra, pero es una de las economías más desiguales.

Presión demográfica (CP5)

if (nc >= 5) figura(plano(1, 5, "ingreso", col_ingreso), "Países según capacidad fiscal (horizontal) y presión demográfica y laboral (vertical)")
Figura 24 Países según capacidad fiscal (horizontal) y presión demográfica y laboral (vertical)
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

El eje horizontal es otra vez la capacidad fiscal, y el vertical es la presión demográfica y laboral. Arriba quedan los países con muchas personas fuera del trabajo, por desempleo o por edad, y con menos presupuesto para la educación. Abajo, los que tienen poco desempleo, poblaciones en edad de trabajar y más presupuesto educativo.

Los países de ingreso bajo tienden a quedar arriba. Su mediana es 0,51, frente a -0,03 en el ingreso medio-bajo y -0,12 en el medio-alto. La razón es demográfica: son poblaciones jóvenes, con muchos niños por cada adulto en edad de trabajar. Lo mismo se ve por regiones: África Subsahariana queda arriba (0,55), y Asia Meridional (-1,04) y Asia Oriental (-0,60), abajo.

Pero el extremo de arriba no lo ocupan los países más pobres, sino el sur de África. Lesoto (3,67), Esuatini (2,40) y Sudáfrica (2,04) tienen desempleos de entre 17 % y 28,5 %, entre los más altos del mundo. Además recaudan mucho, en buena parte por los ingresos que reparte la Unión Aduanera del África Austral. Por eso los impuestos también suben con este componente. En el extremo de abajo están China (-2,21), Tailandia (-2,19) y Mauricio (-1,95), con poco desempleo y una población concentrada en edad de trabajar.

Colombia (0,47) queda en la mitad de arriba, en el puesto 38 de 106. Su caso es mixto: tiene la novena tasa de dependencia más baja de la muestra (43,5 dependientes por cada 100 personas en edad de trabajar), lo que la empujaría hacia abajo. Pero su desempleo de 10,3 % duplica el del país típico (5,0 %), y eso la lleva hacia arriba. La presión de Colombia no viene de su población, sino de la falta de empleo.

Vista tridimensional

escena <- list(xaxis = list(title = "CP1 · capacidad fiscal", color = "#AEB8C5", gridcolor = "#1F2A37", backgroundcolor = "#0F151D", showbackground = TRUE),
               yaxis = list(title = "CP2 · deuda", color = "#AEB8C5", gridcolor = "#1F2A37", backgroundcolor = "#0F151D", showbackground = TRUE),
               zaxis = list(title = "CP3 · corto plazo", color = "#AEB8C5", gridcolor = "#1F2A37", backgroundcolor = "#0F151D", showbackground = TRUE),
               camera = list(eye = list(x = 1.5, y = -1.5, z = 0.7)))
p3 <- plot_ly(height = 660)
for (g in names(col_ingreso)) {
  s <- cp_df %>% filter(ingreso == g)
  p3 <- p3 %>% add_trace(data = s, x = ~CP1, y = ~CP2, z = ~CP3, type = "scatter3d", mode = "markers", name = g,
                         text = ~nombre, marker = list(size = 4.5, color = col_ingreso[[g]], opacity = 0.9),
                         hovertemplate = "<b>%{text}</b><br>CP1: %{x:.2f}<br>CP2: %{y:.2f}<br>CP3: %{z:.2f}<extra></extra>")
}
p3 <- p3 %>%
  layout(font = letra, paper_bgcolor = "rgba(0,0,0,0)", margin = list(l = 0, r = 0, t = 60, b = 0), scene = escena,
         legend = list(orientation = "h", x = 0.5, xanchor = "center", y = 1.05, font = list(color = "#D7DEE7")),
         hoverlabel = list(bgcolor = "#16202B", bordercolor = "#22D3EE", font = list(color = "#FFFFFF"))) %>%
  config(displayModeBar = FALSE, locale = "es")

figura(p3, "Países en los tres primeros componentes")
Figura 25 Países en los tres primeros componentes
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).
# 1. Distancias entre países, con sus coordenadas en los componentes conservados
dist_cp <- dist(coord)

# 2. Jerarquía de Ward
hc <- hclust(dist_cp, method = "ward.D2")
alturas <- rev(hc$height)

# 3. Número de grupos: silueta promedio (criterio de decisión) y codo (apoyo), ambos con Ward a través de hcut
nb_sil <- fviz_nbclust(coord, FUNcluster = hcut, method = "silhouette", k.max = 10)
nb_wss <- fviz_nbclust(coord, FUNcluster = hcut, method = "wss", k.max = 10)
# Cada salida se une por el número de grupos (clusters), sin suponer cuántas filas trae
sil_df <- nb_sil$data %>% transmute(k = as.integer(as.character(clusters)), silueta = y)
wss_df <- nb_wss$data %>% transmute(k = as.integer(as.character(clusters)), wss = y)
evalk <- tibble(k = 1:10) %>%
  left_join(sil_df, by = "k") %>%
  left_join(wss_df, by = "k") %>%
  mutate(silueta = replace_na(silueta, 0),   # con un solo grupo la silueta vale 0 por definición
         entre = 100 * (1 - wss / wss[k == 1]),
         caida = entre - lag(entre, default = 0))
k <- evalk$k[which.max(evalk$silueta)]   # se elige el k con la mayor silueta promedio
if (k != 2) stop("La silueta ya no indica dos grupos: revise los nombres de los grupos.")

# 4. Corte del árbol en k grupos; G1 es el de menor capacidad fiscal (media más baja en CP1)
g0 <- cutree(hc, k)
orden_g <- order(tapply(coord[, "CP1"], g0, mean))
grupo <- match(g0, orden_g)
nombres_cl <- c("G1 · Capacidad fiscal limitada", "G2 · Músculo fiscal")
col_cl <- setNames(c("#F5B041", "#22D3EE"), nombres_cl)

base$cluster <- factor(nombres_cl[grupo], levels = nombres_cl)
base_imp$cluster <- base$cluster
cp_df$cluster <- base$cluster
sil <- silhouette(grupo, dist_cp)
cp_df$silueta <- sil[, 3]

ncl <- table(factor(grupo, levels = 1:k))
mcl <- function(v, j) median(base_imp[[v]][grupo == j])
acl <- function(v, j) mean(base_imp[[v]][grupo == j])

4.1.4 Elección del número de grupos

Silueta promedio

p_sil_k <- plot_ly(evalk, x = ~k, y = ~silueta, type = "scatter", mode = "lines+markers+text", height = 480,
                   line = list(color = "#A78BFA", width = 3),
                   marker = list(color = ifelse(evalk$k == k, "#22D3EE", "#A78BFA"), size = ifelse(evalk$k == k, 16, 10),
                                 line = list(color = "#0A0E14", width = 1)),
                   text = ~nf(silueta, 3), textposition = "top center", textfont = list(color = "#D7DEE7", size = 12),
                   hovertemplate = "%{x} grupos<br>Silueta promedio: %{y:.3f}<extra></extra>") %>%
  pulir("Número de grupos (k)", "Silueta promedio", ejex = list(dtick = 1),
        ejey = list(range = c(0, max(evalk$silueta) * 1.25))) %>%
  layout(shapes = list(list(type = "line", x0 = k, x1 = k, y0 = 0, y1 = 1, yref = "paper",
                            line = list(color = "#22D3EE", dash = "dash", width = 2))))

figura(p_sil_k, "Método de la silueta promedio: se elige el número de grupos que la maximiza")
Figura 26 Método de la silueta promedio: se elige el número de grupos que la maximiza
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

La silueta mide qué tan bien encaja cada país en su grupo. Compara la distancia media a los países de su propio grupo con la distancia media a los del grupo vecino. Vale cerca de 1 si el país está bien ubicado, cerca de 0 si está en la frontera y es negativa si estaría mejor en el otro grupo. Promediada sobre todos los países, resume la calidad del corte.

La silueta promedio alcanza su máximo con dos grupos (0,253). Con tres cae a 0,172, toca su punto más bajo con cuatro (0,158) y después sube despacio, sin volver a alcanzar el valor de dos (0,214 con diez grupos). Siguiendo el método de la silueta promedio, el número óptimo de grupos es k = 2.

El valor también dice algo sobre los datos. Una silueta de 0,25 significa que, en promedio, cada país está más cerca de su grupo que del otro, pero no muchísimo más. Kaufman y Rousseeuw (1990) consideran que por debajo de 0,26 la estructura es débil. Los países en desarrollo no forman dos islas separadas, sino un continuo con dos zonas de mayor densidad, y por eso los grupos se leen como perfiles típicos y no como categorías rígidas.

Método del codo

p_codo <- plot_ly(evalk, x = ~k, y = ~wss, type = "scatter", mode = "lines+markers", height = 480,
                  line = list(color = "#A78BFA", width = 3),
                  marker = list(color = ifelse(evalk$k == k, "#22D3EE", "#A78BFA"), size = ifelse(evalk$k == k, 16, 10),
                                line = list(color = "#0A0E14", width = 1)),
                  customdata = ~entre,
                  hovertemplate = "%{x} grupos<br>Suma de cuadrados dentro de los grupos: %{y:.1f}<br>Variabilidad entre grupos: %{customdata:.1f} %<extra></extra>") %>%
  pulir("Número de grupos (k)", "Suma de cuadrados dentro de los grupos", ejex = list(dtick = 1)) %>%
  layout(shapes = list(list(type = "line", x0 = k, x1 = k, y0 = 0, y1 = 1, yref = "paper",
                            line = list(color = "#22D3EE", dash = "dash", width = 2))))

tab_k <- evalk %>%
  filter(k >= 2) %>%
  transmute(k, silueta = nf(silueta, 3), entre = nf(entre, 1), caida = nf(caida, 1))

tagList(
  figura(p_codo, "Método del codo: suma de cuadrados dentro de los grupos según el número de grupos"),
  cuadro(ktab(tab_k, c("Número de grupos", "Silueta promedio", "Variabilidad entre grupos (%)", "Ganancia frente a un grupo menos (puntos)"),
              align = rep("c", 4)) %>%
           row_spec(k - 1, bold = TRUE, background = "#16283A"),
         "Los dos criterios para cada número de grupos")
)
Figura 27 Método del codo: suma de cuadrados dentro de los grupos según el número de grupos
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).
Cuadro 6 Los dos criterios para cada número de grupos
Número de grupos Silueta promedio Variabilidad entre grupos (%) Ganancia frente a un grupo menos (puntos)
2 0,253 26,6 26,6
3 0,172 36,2 9,6
4 0,158 42,3 6,1
5 0,166 47,9 5,6
6 0,184 53,1 5,2
7 0,197 58,2 5,1
8 0,200 61,6 3,5
9 0,204 65,0 3,4
10 0,214 68,1 3,1
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

La suma de cuadrados dentro de los grupos siempre baja al agregar grupos: con un grupo por país sería cero. Por eso no se busca su mínimo, sino el codo, el punto a partir del cual cada grupo adicional aporta poco.

La caída más fuerte ocurre al pasar de uno a dos grupos: los dos grupos explican el 26,6 % de la variabilidad total. El tercer grupo añade 9,6 puntos, el cuarto 6,1 y el quinto 5,6; desde ahí las ganancias son pequeñas y parejas. El codo es suave, pero está en k = 2, así que los dos métodos coinciden: la silueta lo indica como máximo y el codo como el punto donde la ganancia empieza a frenarse.

Árbol jerárquico

dd <- dendro_data(hc, type = "rectangle")
seg <- dd$segments
hcorte <- mean(alturas[(k - 1):k])
cl_hoja <- as.character(base$cluster)[hc$order]
nn <- nrow(base)
seg$grupo <- ifelse(pmin(seg$y, seg$yend) < hcorte,
                    cl_hoja[pmin(pmax(round((seg$x + seg$xend) / 2), 1), nn)], "Uniones entre grupos")
hojas <- tibble(x = seq_len(nn), nombre = base$nombre[hc$order], grupo = cl_hoja)

p_den <- plot_ly(height = 620)
for (g in c(nombres_cl, "Uniones entre grupos")) {
  s <- seg %>% filter(grupo == g)
  p_den <- p_den %>% add_segments(data = s, x = ~x, xend = ~xend, y = ~y, yend = ~yend, name = g,
                                  line = list(color = if (g %in% nombres_cl) col_cl[[g]] else "#4B5868", width = 1.6),
                                  hoverinfo = "skip", showlegend = g %in% nombres_cl)
}
p_den <- p_den %>%
  add_markers(data = hojas, x = ~x, y = 0, text = ~nombre, showlegend = FALSE,
              marker = list(size = 6, color = unname(col_cl[hojas$grupo])), hovertemplate = "<b>%{text}</b><extra></extra>") %>%
  pulir("", "Altura de unión", leyenda = TRUE, b = 30, ejex = list(showticklabels = FALSE, showgrid = FALSE, ticks = "", showline = FALSE)) %>%
  layout(shapes = list(list(type = "line", x0 = 0, x1 = 1, xref = "paper", y0 = hcorte, y1 = hcorte,
                            line = list(color = "#FFFFFF", dash = "dash", width = 1.5))))

figura(p_den, "Árbol de uniones de Ward con el corte en dos grupos")
Figura 28 Árbol de uniones de Ward con el corte en dos grupos
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

El árbol muestra lo mismo desde otro ángulo. La última unión, la que juntaría a todos los países en un solo grupo, ocurre a una altura de 25,1, muy por encima de la anterior (15,0). Esa rama larga indica que los dos grupos que une son los más distintos del árbol, y cortarla es la forma natural de partirlo. Un tercer o cuarto grupo exigiría cortar ramas de altura parecida entre sí (12,0 y 11,5), es decir, separar grupos bastante menos diferentes. El corte deja 65 países en G1 y 41 en G2.

Encaje de cada país

sd_df <- cp_df %>% arrange(cluster, silueta) %>% mutate(pos = row_number())
p_sil <- plot_ly(height = 520)
for (g in nombres_cl) {
  s <- sd_df %>% filter(cluster == g)
  p_sil <- p_sil %>%
    add_segments(data = s, x = 0, xend = ~silueta, y = ~pos, yend = ~pos, line = list(color = col_cl[[g]], width = 1.5),
                 hoverinfo = "skip", showlegend = FALSE) %>%
    add_markers(data = s, x = ~silueta, y = ~pos, name = g, text = ~nombre,
                marker = list(color = col_cl[[g]], size = 6),
                hovertemplate = "<b>%{text}</b><br>Silueta: %{x:.2f}<extra></extra>")
}
p_sil <- p_sil %>%
  pulir("Silueta", "", leyenda = TRUE, ejey = list(showticklabels = FALSE, ticks = "", showgrid = FALSE),
        ejex = list(zeroline = TRUE, zerolinecolor = "#FFFFFF"))

figura(p_sil, "Silueta de cada país, ordenada dentro de su grupo")
Figura 29 Silueta de cada país, ordenada dentro de su grupo
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).
sil_cl <- cp_df %>% group_by(cluster) %>% summarise(s = mean(silueta), neg = sum(silueta < 0))
neg <- cp_df %>% filter(silueta < 0) %>% arrange(silueta)

Los resultados del análisis de silueta muestran que los dos grupos presentan una calidad de agrupación similar. El grupo G1 tiene una silueta promedio de 0,24, mientras que G2 alcanza 0,27, lo que indica que ambos grupos tienen un nivel de separación parecido. Entre los países que mejor representan las características de G1 se encuentran Camerún, Gambia y Benín, pertenecientes a África Occidental y Central, cuyos perfiles reflejan las condiciones más representativas de este grupo.

Por otra parte, de los 106 países analizados, solamente 9 presentan valores de silueta negativos y ninguno registra un resultado inferior a -0,23. Estos países son Perú, Paraguay, Marruecos, Líbano, República Dominicana, México, Armenia, Mongolia y Timor-Leste. La mayoría pertenece al grupo G1 y corresponde a países de ingresos medios que presentan un tamaño del Estado reducido en comparación con su nivel de ingresos.

Esto significa que, aunque por su nivel de ingresos estos países podrían parecerse más a los del grupo G2, sus niveles de recaudación y gasto público son más cercanos a las características de G1. Por lo tanto, no necesariamente se trata de países mal clasificados, sino de casos que se encuentran en una posición intermedia entre los dos grupos, ya que comparten características de ambos perfiles y hacen menos clara la separación entre ellos.

4.1.5 Retrato de los dos grupos

Perfiles comparados

perfil <- base_imp %>%
  select(cluster, all_of(vars_orig)) %>%
  pivot_longer(-cluster, names_to = "orig", values_to = "valor") %>%
  group_by(orig, cluster) %>%
  summarise(media = mean(valor), mediana = median(valor), .groups = "drop") %>%
  pivot_wider(names_from = cluster, values_from = c(media, mediana), names_glue = "{cluster}_{.value}") %>%
  left_join(base_imp %>% summarise(across(all_of(vars_orig), median)) %>%
              pivot_longer(everything(), names_to = "orig", values_to = "Muestra"), by = "orig") %>%
  mutate(bloque = meta_v$bloque[match(orig, vars_orig)], Indicador = unname(etq[orig])) %>%
  arrange(match(orig, vars_orig)) %>%
  select(bloque, Indicador, all_of(c(paste0(nombres_cl[1], c("_media", "_mediana")), paste0(nombres_cl[2], c("_media", "_mediana")))), Muestra)

encabezado <- setNames(c(2, 2, 2, 1), c(" ", paste0(nombres_cl[1], " (", ncl[1], " países)"),
                                        paste0(nombres_cl[2], " (", ncl[2], " países)"), " "))

cuadro(ktab(perfil, c("Bloque", "Indicador", "Media", "Mediana", "Media", "Mediana", "Mediana de la muestra"), dig = 1) %>%
         add_header_above(encabezado) %>%
         collapse_rows(columns = 1, valign = "middle"),
       "Número de países y valores promedio de cada indicador en los dos grupos")
Cuadro 7 Número de países y valores promedio de cada indicador en los dos grupos
G1 · Capacidad fiscal limitada (65 países)
G2 · Músculo fiscal (41 países)
Bloque Indicador Media Mediana Media Mediana Mediana de la muestra
Carga de deuda Saldo de la deuda externa (% del INB) 56,5 40,7 53,8 55,3 45,5
Servicio de la deuda externa (% del INB) 6,3 3,4 7,3 5,9 4,2
Deuda de corto plazo (% de la deuda externa) 9,4 6,8 17,1 13,9 9,1
Pago de intereses (% del gasto público) 11,8 10,2 7,8 7,5 9,0
Gasto social Gasto público en salud (% del PIB) 1,5 1,4 4,0 3,9 2,1
Gasto público en salud (% del gasto público) 6,9 6,2 12,0 12,0 8,6
Gasto público en educación (% del PIB) 3,2 3,2 4,8 4,6 3,8
Gasto público en educación (% del gasto público) 15,0 14,6 15,2 14,1 14,2
Capacidad fiscal Gasto total del gobierno (% del PIB) 16,4 15,8 27,8 27,8 19,9
Ingresos tributarios (% del PIB) 12,6 12,2 18,3 17,9 14,2
Desarrollo y contexto INB per cápita (Atlas) (US$ corrientes) 2.595,1 1.880,0 6.131,0 5.900,0 3.440,0
Crecimiento del PIB (% anual) 4,2 4,9 2,7 2,1 3,8
Desempleo (% de la fuerza laboral) 5,9 4,6 9,6 8,2 5,0
Tasa de dependencia por edad (% de la población de 15 a 64) 71,6 74,3 52,6 51,4 57,8
Índice de Gini (0 a 100) 37,0 36,2 38,0 37,8 36,9
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

Este es el último paso del método: contar los países de cada grupo y comparar sus valores promedio. Junto a la media se muestra la mediana, porque varios indicadores tienen valores extremos que arrastran la media (sección 3.1). El texto se apoya en la mediana.

G2 · Músculo fiscal (41 países) reúne Estados grandes y con más recursos. El gobierno gasta el 27,8 % del PIB y recauda el 17,9 %, el ingreso per cápita es de US$ 5.900 y hay 51 dependientes por cada 100 personas en edad de trabajar. G1 · Capacidad fiscal limitada (65 países) es su contracara: gasta el 15,8 % del PIB, recauda el 12,2 %, tiene un ingreso de US$ 1.880 y 74 dependientes por cada 100.

Para la pregunta de investigación importan tres comparaciones:

  • Los intereses pesan más en G1: se llevan el 10,2 % del gasto público, frente al 7,5 % en G2 (en la media, 11,8 % frente a 7,8 %). No es porque G1 deba más: su deuda externa mediana es menor (40,7 % del INB, frente a 55,3 %). Es porque su presupuesto es más pequeño, y el mismo pago ocupa una tajada mayor.
  • La salud recibe la mitad de prioridad en G1: 6,2 % del presupuesto, frente al 12,0 % en G2.
  • La educación recibe casi la misma parte del presupuesto en los dos grupos (14,6 % y 14,1 %). Donde sí difieren es en el esfuerzo frente al PIB (3,2 % y 4,6 %), que refleja el tamaño del Estado y no su prioridad.

Huella de cada grupo

zc <- sapply(1:k, function(j) colMeans(scale(X)[grupo == j, , drop = FALSE]))
colnames(zc) <- nombres_cl
zc <- zc[vars_mod, ]
ejes_r <- unname(corta_m[vars_mod])

p_rad <- plot_ly(type = "scatterpolar", mode = "lines", height = 660)
for (j in 1:k) {
  p_rad <- p_rad %>% add_trace(r = c(zc[, j], zc[1, j]), theta = c(ejes_r, ejes_r[1]), name = nombres_cl[j], fill = "toself",
                               fillcolor = paste0(col_cl[[j]], "22"), line = list(color = col_cl[[j]], width = 2.5),
                               hovertemplate = "%{theta}<br>%{r:.2f} desviaciones estándar<extra></extra>")
}
p_rad <- p_rad %>%
  layout(font = letra, paper_bgcolor = "rgba(0,0,0,0)", margin = list(l = 80, r = 80, t = 100, b = 50),
         polar = list(bgcolor = "rgba(0,0,0,0)",
                      radialaxis = list(range = c(-1.5, 1.5), gridcolor = "#223041", linecolor = "#3A4656", tickfont = list(color = "#8B98A9", size = 10)),
                      angularaxis = list(gridcolor = "#223041", linecolor = "#3A4656", tickfont = list(color = "#D7DEE7", size = 12))),
         legend = list(orientation = "h", x = 0.5, xanchor = "center", y = 1.14, font = list(color = "#D7DEE7")),
         hoverlabel = list(bgcolor = "#16202B", bordercolor = "#22D3EE", font = list(color = "#FFFFFF"))) %>%
  config(displayModeBar = FALSE, locale = "es")

figura(p_rad, "Distancia de cada grupo al promedio de la muestra en los quince indicadores")
Figura 30 Distancia de cada grupo al promedio de la muestra en los quince indicadores
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

Las dos huellas son casi un reflejo. G2 se estira en gasto en salud (0,98 desviaciones estándar), gasto total (0,90), recaudación e ingreso. G1 se estira en dependencia (0,42) y, en menor medida, en intereses (0,20) y crecimiento.

Lo más revelador son los indicadores en que los dos grupos coinciden. En la educación como parte del presupuesto (-0,02 y 0,03), el saldo de la deuda (0,02 y -0,04) y el Gini (-0,07 y 0,12), las dos líneas quedan pegadas al promedio. Confirma lo que mostró el ACP: esas variables viven en otros ejes (CP2, CP3 y CP4), independientes del desarrollo, y por eso un corte que separa por capacidad fiscal no las separa.

Indicador por indicador

p_cc <- plot_ly(height = 520)
for (i in seq_along(vars_orig)) {
  v <- vars_orig[i]
  for (g in nombres_cl) {
    s <- base_imp %>% filter(cluster == g)
    p_cc <- p_cc %>% add_boxplot(x = rep(g, nrow(s)), y = s[[v]], text = s$nombre, name = g, visible = i == 1,
                                 showlegend = FALSE, boxpoints = "all", jitter = 0.4, pointpos = 0,
                                 marker = list(color = col_cl[[g]], size = 5, opacity = 0.75),
                                 line = list(color = col_cl[[g]], width = 2), fillcolor = "rgba(255,255,255,0.04)",
                                 hoverinfo = "text+y")
  }
}
vis_c <- function(i) as.list(rep(seq_along(vars_orig) == i, each = length(nombres_cl)))
botones_cc <- lapply(seq_along(vars_orig), function(i) {
  list(method = "update", label = unname(etq[vars_orig[i]]),
       args = list(list(visible = vis_c(i)),
                   list(yaxis = list(title = list(text = unname(etq[vars_orig[i]]), standoff = 22, font = list(color = "#D7DEE7")),
                                     automargin = TRUE, gridcolor = "#1F2A37", linecolor = "#3A4656", showline = TRUE,
                                     tickfont = list(color = "#AEB8C5")))))
})
p_cc <- p_cc %>%
  pulir("", unname(etq[vars_orig[1]]), t = 70, l = 95, ejex = list(tickfont = list(color = "#D7DEE7", size = 12))) %>%
  layout(updatemenus = list(list(type = "dropdown", buttons = botones_cc, x = 0, xanchor = "left", y = 1.16, yanchor = "top",
                                 bgcolor = "#16202B", bordercolor = "#22D3EE", font = list(color = "#D7DEE7"))))

figura(p_cc, "Cada indicador por grupo: elija el indicador en el menú")
Figura 31 Cada indicador por grupo: elija el indicador en el menú
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).
int_g1 <- range(base_imp$gasto_intereses_gob[grupo == 1])

Las cajas muestran qué indicadores definen el corte y cuáles solo lo acompañan. En el gasto en salud, el gasto total, la recaudación, el ingreso per cápita y la dependencia, las cajas de los dos grupos casi no se tocan: son las variables que separan a G1 de G2.

En los intereses, la caja de G1 está más arriba, pero las dos se superponen bastante: dentro de cada grupo hay países con intereses muy altos y muy bajos (en G1 van de 0,0 % a 42,0 % del gasto). En la educación como parte del presupuesto y en el saldo de la deuda, las cajas son prácticamente iguales. La carga de la deuda varía tanto dentro de cada grupo como entre ellos.

Composición

comp <- base %>% count(cluster, ingreso) %>% group_by(cluster) %>% mutate(p = 100 * n / sum(n)) %>% ungroup()
p_comp <- plot_ly(height = 380)
for (g in names(col_ingreso)) {
  s <- comp %>% filter(ingreso == g)
  p_comp <- p_comp %>% add_bars(data = s, y = ~cluster, x = ~p, name = g, orientation = "h", marker = list(color = col_ingreso[[g]]),
                                text = ~n, textposition = "inside", textfont = list(color = "#0A0E14", size = 13),
                                hovertemplate = paste0("%{y}<br>", g, ": %{x:.0f} % (%{text} países)<extra></extra>"))
}
p_comp <- p_comp %>%
  pulir("Porcentaje de los países del grupo", "", leyenda = TRUE, ejey = list(autorange = "reversed", tickfont = list(color = "#D7DEE7")),
        ejex = list(range = c(0, 100))) %>%
  layout(barmode = "stack", bargap = 0.35)

figura(p_comp, "Nivel de ingreso de los países que forman cada grupo")
Figura 32 Nivel de ingreso de los países que forman cada grupo
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).
comp_reg <- as.data.frame.matrix(table(base$cluster, base$region)) %>% rownames_to_column("Grupo")
cuadro(ktab(comp_reg, align = c("l", rep("c", ncol(comp_reg) - 1)), dig = 0), "Regiones del Banco Mundial representadas en cada grupo")
Cuadro 8 Regiones del Banco Mundial representadas en cada grupo
Grupo África Subsahariana América Latina y el Caribe Asia Meridional Asia Oriental y Pacífico Europa y Asia Central Oriente Medio y Norte de África
G1 · Capacidad fiscal limitada 34 6 5 9 7 4
G2 · Músculo fiscal 6 12 1 7 11 4
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).
ing_n <- table(base$cluster, base$ingreso)
reg_n <- table(base$cluster, base$region)
mb_g2 <- sort(base$nombre[grupo == 2 & base$ingreso == "Medio-bajo"])
ma_g1 <- sort(base$nombre[grupo == 1 & base$ingreso == "Medio-alto y alto"])

El corte se parece al nivel de ingreso, aunque el modelo no lo conoció: 19 de los 19 países de ingreso bajo están en G1, y 33 de los 47 de ingreso medio-alto están en G2. Pero no es una copia del ingreso. 14 países de ingreso medio-alto quedan en G1 porque tienen Estados pequeños para su ingreso, entre ellos Armenia, Azerbaiyán, Gabón, Guatemala, Irak, Kazajistán. En sentido contrario, 8 de ingreso medio-bajo quedan en G2 por tener Estados grandes, como Esuatini, Honduras, Islas Salomón, Lesoto, Nicaragua, Timor-Leste, Túnez, Ucrania. Lo que agrupa a los países es su capacidad fiscal, no solo su ingreso.

Por regiones, África Subsahariana aporta 34 de los 65 países de G1, y América Latina (12) y Europa y Asia Central (11) forman el núcleo de G2.

Integrantes

integ <- base %>% group_by(Grupo = cluster) %>%
  summarise(n = n(), Países = paste(sort(nombre), collapse = ", ")) %>% mutate(Grupo = as.character(Grupo))
cuadro(kbl(integ, format = "html", col.names = c("Grupo", "Países", "Integrantes"), align = c("l", "c", "l")) %>%
         kable_styling(bootstrap_options = c("hover", "bordered"), full_width = TRUE) %>%
         column_spec(1, width = "20%", bold = TRUE) %>% column_spec(2, width = "8%") %>% column_spec(3, width = "72%"),
       "Países que integran cada grupo")
Cuadro 9 Países que integran cada grupo
Grupo Países Integrantes
G1 · Capacidad fiscal limitada 65 Angola, Armenia, Azerbaiyán, Bangladés, Benín, Burkina Faso, Burundi, Bután, Camboya, Camerún, Chad, Congo, Côte d’Ivoire, Etiopía, Filipinas, Gabón, Gambia, Ghana, Guatemala, Guinea, Guinea-Bisáu, Haití, India, Indonesia, Irak, Kazajistán, Kenia, Kirguistán, Laos, Líbano, Madagascar, Malaui, Mali, Marruecos, Mauritania, México, Mongolia, Mozambique, Myanmar (Birmania), Nepal, Níger, Nigeria, Pakistán, Papúa Nueva Guinea, Paraguay, Perú, República Centroafricana, República Democrática del Congo, República Dominicana, Ruanda, Santo Tomé y Príncipe, Senegal, Sierra Leona, Somalia, Sri Lanka, Tanzania, Tayikistán, Togo, Turkmenistán, Uganda, Uzbekistán, Vanuatu, Vietnam, Zambia, Zimbabue
G2 · Músculo fiscal 41 Albania, Argelia, Argentina, Belice, Bielorrusia, Bolivia, Bosnia y Herzegovina, Botsuana, Brasil, Bulgaria, Cabo Verde, China, Colombia, Ecuador, El Salvador, Esuatini, Fiyi, Georgia, Honduras, Irán, Islas Salomón, Jamaica, Jordania, Lesoto, Macedonia del Norte, Maldivas, Mauricio, Moldavia, Nicaragua, Rusia, Samoa, Santa Lucía, Serbia, Sudáfrica, Surinam, Tailandia, Timor-Leste, Tonga, Túnez, Turquía, Ucrania
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

4.1.6 Mapa de los grupos

escala_cl <- do.call(c, lapply(1:k, function(i) list(c((i - 1) / k, col_cl[[i]]), c(i / k, col_cl[[i]]))))
p_map <- plot_ly(type = "choropleth", locations = base$country_code, z = grupo, height = 560,
                 text = paste0(base$nombre, "<br>", base$cluster), hoverinfo = "text",
                 zmin = 0.5, zmax = k + 0.5, colorscale = escala_cl,
                 marker = list(line = list(color = "#0A0E14", width = 0.5)),
                 colorbar = list(title = "", tickvals = 1:k, ticktext = nombres_cl, thickness = 14, len = 0.6,
                                 tickfont = list(color = "#D7DEE7", size = 12))) %>%
  layout(font = letra, margin = list(l = 0, r = 0, t = 10, b = 0), paper_bgcolor = "rgba(0,0,0,0)",
         geo = list(showframe = FALSE, showcoastlines = FALSE, bgcolor = "rgba(0,0,0,0)", projection = list(type = "natural earth"),
                    showland = TRUE, landcolor = "#141C26", showcountries = TRUE, countrycolor = "#0A0E14"),
         hoverlabel = list(bgcolor = "#16202B", bordercolor = "#22D3EE", font = list(color = "#FFFFFF"))) %>%
  config(displayModeBar = FALSE, locale = "es")

figura(p_map, "Distribución geográfica de los dos grupos")
Figura 33 Distribución geográfica de los dos grupos
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).
afr_g2 <- sort(base$nombre[grupo == 2 & base$region == "África Subsahariana"])
lat_g1 <- sort(base$nombre[grupo == 1 & base$region == "América Latina y el Caribe"])

G1 cubre casi toda África subsahariana y buena parte del sur y el sureste de Asia. G2 se extiende por América Latina, Europa del Este y Asia Central. Las excepciones muestran que la frontera es fiscal y no geográfica. En África, los países de G2 son Botsuana, Cabo Verde, Esuatini, Lesoto, Mauricio, Sudáfrica: el sur del continente y algunas islas, con Estados grandes y alta recaudación. En América Latina, los de G1 son Guatemala, Haití, México, Paraguay, Perú, República Dominicana, países de ingreso medio con Estados pequeños.

4.1.7 Los grupos en el plano factorial

cent <- cp_df %>% group_by(cluster) %>% summarise(across(starts_with("CP"), mean))
sd_cp2 <- tapply(cp_df$CP2, grupo, sd)
figura(plano(1, 2, "cluster", col_cl), "Los dos grupos según capacidad fiscal (CP1) y carga de la deuda (CP2)")
Figura 34 Los dos grupos según capacidad fiscal (CP1) y carga de la deuda (CP2)
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).

Los dos grupos se separan en horizontal: sus centroides en CP1 son -1,32 y 2,09. En vertical, en cambio, sus nubes se superponen casi por completo: los centroides en CP2 son 0,32 y -0,50, y la dispersión en ese eje es parecida en los dos (desviación de 1,30 en G1 y 1,39 en G2).

El corte en dos grupos sigue el eje de la capacidad fiscal y deja la carga de la deuda repartida dentro de cada grupo. Es lo esperable si la primera hipótesis es cierta: como la deuda no se confunde con el desarrollo, un agrupamiento que separa por desarrollo no la separa. Dentro de cada grupo hay países muy y poco endeudados, y para ver cómo pesa la deuda hay que mirar el eje vertical, no la pertenencia al grupo.

4.1.8 Qué tan firmes son los grupos

reagrupar <- function(datos, ncomp = nc, kk = k) {
  cc <- PCA(datos, scale.unit = TRUE, ncp = ncomp, graph = FALSE)$ind$coord[, 1:ncomp]
  cutree(hclust(dist(cc), method = "ward.D2"), kk)
}
X_sinlog <- as.data.frame(imputar_knn(X_orig %>% mutate(inb_pc_atlas = log(inb_pc_atlas))))
set.seed(2019)
km <- kmeans(coord, centers = k, nstart = 50)$cluster
g_sin_gini <- reagrupar(X %>% select(-gini), nc)

esc <- tibble(
  escenario = c("Cuatro componentes en vez de cinco", "Seis componentes en vez de cinco", "Sin el índice de Gini",
                "Deuda sin logaritmo", "K-means en vez de Ward"),
  ari = c(rand_aj(grupo, reagrupar(X, 4)), rand_aj(grupo, reagrupar(X, 6)),
          rand_aj(grupo, g_sin_gini), rand_aj(grupo, reagrupar(X_sinlog)),
          rand_aj(grupo, km))
) %>% arrange(ari) %>% mutate(escenario = factor(escenario, levels = escenario))

p_esc <- plot_ly(esc, x = ~ari, y = ~escenario, type = "bar", orientation = "h", height = 440,
                 marker = list(color = ifelse(esc$ari >= 0.65, "#22D3EE", ifelse(esc$ari >= 0.45, "#A78BFA", "#F472B6"))),
                 text = ~nf(ari, 2), textposition = "outside", textfont = list(color = "#D7DEE7"), cliponaxis = FALSE,
                 hovertemplate = "%{y}<br>Rand ajustado: %{x:.2f}<extra></extra>") %>%
  pulir("Índice de Rand ajustado frente a la solución principal", "", r = 60, ejex = list(range = c(0, 1.08))) %>%
  layout(bargap = 0.35, shapes = list(list(type = "line", x0 = 0.65, x1 = 0.65, y0 = 0, y1 = 1, yref = "paper",
                                           line = list(color = "#F5B041", dash = "dash", width = 1.5))))

figura(p_esc, "Coincidencia de los grupos al cambiar decisiones del análisis")
Figura 35 Coincidencia de los grupos al cambiar decisiones del análisis
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).
ari_de <- function(x) nf(esc$ari[esc$escenario == x], 2)
t_sg <- table(grupo, g_sin_gini)
cambian_sg <- nrow(base) - max(sum(diag(t_sg)), sum(t_sg) - sum(diag(t_sg)))

Los grupos resisten bien usar cuatro componentes en vez de cinco (0,82). Con k-means, que agrupa con una lógica distinta a la de Ward, la coincidencia es de 0,62. Son más sensibles a usar seis componentes (0,57) y a quitar el logaritmo de la deuda (0,48).

El cambio que más los mueve es quitar el índice de Gini (0,27). Sin él, el núcleo de cada grupo se mantiene, pero la frontera se corre: 25 de los 106 países cambian de grupo. La desigualdad, que define buena parte del cuarto componente, ayuda a decidir de qué lado quedan los países del límite. Los núcleos de los grupos son firmes; sus fronteras, aproximadas.

4.2 Colombia bajo la lupa

z_all <- scale(X)
perf_col <- tibble(eje = ejes_r, Colombia = z_all[i_col, vars_mod],
                   Grupo = apply(z_all[grupo == grupo[i_col], vars_mod, drop = FALSE], 2, median))
p_col <- plot_ly(type = "scatterpolar", mode = "lines+markers", height = 640) %>%
  add_trace(r = c(perf_col$Grupo, perf_col$Grupo[1]), theta = c(perf_col$eje, perf_col$eje[1]), fill = "toself",
            name = paste("Mediana del grupo", nombres_cl[grupo[i_col]]), fillcolor = "rgba(34,211,238,0.12)",
            line = list(color = "#22D3EE", width = 2), marker = list(size = 5, color = "#22D3EE"),
            hovertemplate = "%{theta}<br>Grupo: %{r:.2f} desv. est.<extra></extra>") %>%
  add_trace(r = c(perf_col$Colombia, perf_col$Colombia[1]), theta = c(perf_col$eje, perf_col$eje[1]),
            name = "Colombia", line = list(color = "#F5B041", width = 3), marker = list(size = 7, color = "#F5B041"),
            hovertemplate = "%{theta}<br>Colombia: %{r:.2f} desv. est.<extra></extra>") %>%
  layout(font = letra, paper_bgcolor = "rgba(0,0,0,0)", margin = list(l = 80, r = 80, t = 90, b = 50),
         polar = list(bgcolor = "rgba(0,0,0,0)",
                      radialaxis = list(range = c(-2.5, 2.5), gridcolor = "#223041", linecolor = "#3A4656", tickfont = list(color = "#8B98A9", size = 10)),
                      angularaxis = list(gridcolor = "#223041", linecolor = "#3A4656", tickfont = list(color = "#D7DEE7", size = 12))),
         legend = list(orientation = "h", x = 0.5, xanchor = "center", y = 1.12, font = list(color = "#D7DEE7")),
         hoverlabel = list(bgcolor = "#16202B", bordercolor = "#22D3EE", font = list(color = "#FFFFFF"))) %>%
  config(displayModeBar = FALSE, locale = "es")

figura(p_col, "Colombia frente al país típico de su grupo (desviaciones respecto a la muestra)")
Figura 36 Colombia frente al país típico de su grupo (desviaciones respecto a la muestra)
Fuente: elaboración propia con datos de World Development Indicators e International Debt Statistics (Banco Mundial).
dm <- as.matrix(dist_cp)
vec <- sort(dm[i_col, -i_col])[1:6]
cc <- function(v) base_imp[[v]][i_col]
cm <- function(v) mcl(v, grupo[i_col])
otro <- setdiff(1:k, grupo[i_col])

Colombia está en el grupo G2 · Músculo fiscal, con una silueta de 0,39, por encima del promedio de su grupo (0,27): su ubicación es clara. Sus perfiles más parecidos son Brasil, Ecuador, Túnez, Surinam, Argentina, Turquía. Su rasgo más visible es la salud: le dedica el 16,7 % del presupuesto, frente al 12,0 % del país típico de su grupo, fruto de un aseguramiento casi universal financiado en buena parte con recursos públicos.

El radar también muestra dos alertas. Colombia paga en intereses el 10,3 % de su gasto, frente al 7,5 % de su grupo, y recauda el 14,9 % del PIB, frente al 17,9 %. En intereses, Colombia se parece más al país típico de G1 (10,2 %) que al de su propio grupo, y su recaudación queda a medio camino entre los dos (en G1 es de 12,2 %). Tiene el peso de la deuda de un Estado con poca capacidad fiscal, sin la recaudación de uno con mucha. A eso se suma uno de los Gini más altos de la muestra (52,5): la demanda de gasto redistributivo es grande y el margen para atenderla, estrecho.

4.3 Respuestas a las preguntas del análisis

¿Qué componentes principales explican mayor variabilidad y qué representan? Se conservan 5 componentes, que explican el 74,2 % de la variabilidad. El primero, capacidad fiscal y desarrollo (31,0 %), resume el tamaño del Estado, la recaudación, el gasto en salud y el ingreso per cápita, frente a la dependencia demográfica. El segundo, carga de la deuda (12,7 %), agrupa el saldo y el servicio de la deuda y los intereses, frente a la prioridad educativa. El tercero, fragilidad de corto plazo (12,1 %), opone la deuda que vence en menos de un año al gasto en educación. El cuarto (10,6 %) y el quinto (7,8 %) recogen crecimiento y desigualdad, y presión demográfica y laboral. El resultado central es que la deuda forma un eje propio, separado del desarrollo.

¿Cuántos clusters se formaron y qué características definen cada grupo? Se formaron 2 grupos, el número que maximiza la silueta promedio (0,25); el método del codo y el dendrograma apuntan al mismo corte. G1 · Capacidad fiscal limitada (65 países) reúne Estados pequeños: el gobierno gasta el 15,8 % del PIB y recauda el 12,2 %, el INB per cápita mediano es de US$ 1.880 y las poblaciones tienen muchos dependientes. Los intereses se llevan el 10,2 % de su presupuesto y la salud apenas el 6,2 %. G2 · Músculo fiscal (41 países) es su contracara: gasta el 27,8 % del PIB, recauda el 17,9 %, tiene un ingreso de US$ 5.900, paga en intereses el 7,5 % del gasto y dedica a la salud el 12,0 %. La prioridad de la educación es casi igual en los dos (14,6 % y 14,1 %).

¿Se observan patrones interesantes entre los países? Sí. El corte se parece al nivel de ingreso, pero no lo copia: 14 países de ingreso medio-alto quedan en G1 por tener Estados pequeños, y 8 de ingreso medio-bajo quedan en G2 por tenerlos grandes. Lo que separa a los grupos es la capacidad fiscal. En el mapa, G1 se concentra en África subsahariana y G2 en América Latina y Europa del Este, con excepciones como el sur de África, que está en G2. La carga de la deuda no separa a los grupos: los dos se superponen en el eje de la deuda y dentro de cada uno hay países muy y poco endeudados. La relación entre deuda y gasto social cambia de signo con el desarrollo: es positiva donde la deuda es concesional y negativa donde es de mercado. Y el costo de la deuda pesa más que su tamaño: Mozambique, con la mayor deuda de la muestra, destina a intereses el 15,3 % de su gasto, mientras Ghana y Sri Lanka, con deudas mucho menores, destinan el 31,7 % y el 35,6 %. Colombia pertenece a G2 · Músculo fiscal, con un gasto en salud superior al de su grupo, pero con intereses propios de G1 y una recaudación más baja que la de su grupo.

5 Conclusiones

5.1 Lo que responden los datos

El objetivo del estudio era analizar cómo cambia la relación entre la deuda externa y el gasto social dependiendo del nivel de desarrollo de cada país. A partir de los datos de 2019, los resultados permiten identificar dos hallazgos principales.

El primero es que la deuda representa una mayor presión sobre el presupuesto de los países con menor capacidad fiscal. Mediante el método de la silueta se identificaron dos grupos de países, diferenciados principalmente por el tamaño del Estado, la capacidad de recaudar impuestos y el nivel de ingresos. En el grupo con capacidad fiscal limitada (G1), el pago de intereses representa el 10,2 % del gasto público, mientras que en el grupo con mayor capacidad fiscal (G2) corresponde al 7,5 %. Esto resulta llamativo porque los países del primer grupo tienen una deuda menor en relación con sus ingresos, pero destinan una mayor proporción de su presupuesto al pago de intereses. Además, la salud recibe una prioridad mucho menor en G1, con el 6,2 %, frente al 12,0 % de G2. En cambio, la educación mantiene una participación similar en el presupuesto de ambos grupos.

El segundo hallazgo es que la carga de la deuda no es el factor que determina la formación de los grupos. El ACP muestra que la deuda constituye una dimensión independiente del nivel de desarrollo económico y que dentro de cada grupo existen países con niveles de endeudamiento muy diferentes. Por esta razón, su efecto no se identifica únicamente al comparar los dos grupos, sino también al analizar el componente específico de la deuda. Los resultados muestran que, al separar la influencia del desarrollo económico, los países con mayores niveles de deuda y pagos de intereses tienden a destinar una menor proporción de su presupuesto a la educación. Asimismo, la relación entre la deuda y el gasto social cambia dependiendo del nivel de ingresos de los países.

En este sentido, la deuda puede convertirse en una mayor competencia para la inversión social cuando se combinan una capacidad fiscal limitada, condiciones de financiación más costosas y altos pagos de intereses. Esta situación se puede observar en países como Zambia, Angola, Ghana y Sri Lanka.

5.2 ¿Se identificaron patrones de desarrollo?

Sí. Los resultados permiten identificar dos patrones principales. El primero corresponde a la relación tradicional entre desarrollo económico y capacidad del Estado. A medida que aumenta el nivel de ingresos de los países, también crecen el tamaño del Estado, la recaudación de impuestos y el gasto en salud, mientras que disminuye la dependencia demográfica. Este comportamiento se refleja principalmente en el primer componente del ACP y permite explicar buena parte de las diferencias entre los dos grupos identificados mediante el método de Ward.

El segundo patrón representa uno de los hallazgos más importantes del estudio: la relación entre la deuda y el gasto social también cambia según el nivel de desarrollo. Los países de menores ingresos suelen acceder a créditos concesionales, con condiciones de financiación más favorables. Sin embargo, a medida que avanzan económicamente, pueden depender más de préstamos obtenidos en los mercados financieros, que generalmente implican mayores costos. Esta transición puede generar dificultades para los países de ingresos medios que todavía no cuentan con una capacidad de recaudación suficiente para afrontar esas obligaciones sin afectar otras áreas del presupuesto.

Finalmente, aunque los perfiles promedio de los grupos permiten reconocer diferencias en sus condiciones económicas y fiscales, la separación entre ellos no es completamente clara. Esto se refleja en el coeficiente de silueta de 0,25, que indica una separación relativamente débil entre los grupos. Por lo tanto, el desarrollo económico no establece divisiones rígidas entre los países, sino que representa un proceso continuo en el que las condiciones fiscales, sociales y de endeudamiento pueden variar considerablemente.

5.3 Hipótesis a prueba

veredicto <- tibble(
  Hipótesis = c("H1 · Dos ejes distintos", "H2 · El signo cambia", "H3 · Una franja expuesta"),
  Evidencia = c(
    paste0("La deuda forma su propio componente (CP2); el saldo carga ", nf(carga["log_deuda_total", 1], 2),
           " en el eje de desarrollo, los niveles de ingreso se mezclan en el eje de la deuda y los dos grupos de Ward se superponen en él."),
    paste0("Servicio de la deuda y educación: ", nf(rho("deuda_servicio_inb", "gasto_educ_gob", "Bajo"), 2), " en ingreso bajo y ",
           nf(rho("deuda_servicio_inb", "gasto_educ_gob", "Medio-alto y alto"), 2), " en ingreso medio-alto; no todos los pares siguen el patrón."),
    paste0("El agrupamiento en dos grupos no aísla ese perfil: separa por capacidad fiscal y la deuda queda repartida dentro de cada grupo. ",
           "Hay indicios en el ACP (la educación se opone a la deuda en CP2) y en el ingreso medio-bajo, donde la correlación entre intereses y gasto social es ",
           nf(rho("gasto_intereses_gob", "gasto_social_gob", "Medio-bajo"), 2), ".")),
  Veredicto = c("Se confirma", "Se confirma", "No se confirma con los grupos")
)
cuadro(ktab(veredicto, align = c("l", "l", "c")) %>%
         column_spec(3, bold = TRUE, color = case_when(veredicto$Veredicto == "Se confirma" ~ "#34D399",
                                                        veredicto$Veredicto == "Se confirma" ~ "#34D399",
                                                        TRUE ~ "#F472B6")),
       "Balance de las hipótesis", fuente = "Fuente: elaboración propia a partir de los resultados del análisis.")
Cuadro 10 Balance de las hipótesis
Hipótesis Evidencia Veredicto
H1 · Dos ejes distintos La deuda forma su propio componente (CP2); el saldo carga 0,27 en el eje de desarrollo, los niveles de ingreso se mezclan en el eje de la deuda y los dos grupos de Ward se superponen en él. Se confirma
H2 · El signo cambia Servicio de la deuda y educación: 0,53 en ingreso bajo y -0,37 en ingreso medio-alto; no todos los pares siguen el patrón. Se confirma
H3 · Una franja expuesta El agrupamiento en dos grupos no aísla ese perfil: separa por capacidad fiscal y la deuda queda repartida dentro de cada grupo. Hay indicios en el ACP (la educación se opone a la deuda en CP2) y en el ingreso medio-bajo, donde la correlación entre intereses y gasto social es -0,19. No se confirma con los grupos
Fuente: elaboración propia a partir de los resultados del análisis.

5.4 Aprendizajes

El ingreso no basta para medir la vulnerabilidad. Los organismos internacionales asignan crédito barato según el ingreso per cápita, pero dentro de un mismo nivel de ingreso hay países que protegen lo social y otros que lo sacrifican.

La graduación es un momento de riesgo. Cuando un país supera el umbral de ingreso y pierde el acceso a créditos concesionales, empieza a pagar tasas de mercado antes de haber ampliado su recaudación. Lo ilustran países de ingreso medio-alto que siguen en G1, como Sri Lanka y Líbano: Estados pequeños para su ingreso, con intereses que superan un tercio del gasto (35,6 % y 34,5 %).

La recaudación es la mejor defensa. Lo que distingue a quienes pagan su deuda sin recortar lo social no es cuánto deben, sino cuánto recaudan.

5.5 Alcances y limitaciones del estudio

Alcances

El estudio describe cómo se relacionan la carga de la deuda externa, el gasto social y la capacidad fiscal en 106 países en desarrollo durante 2019, el último año antes de la pandemia. Combina 15 indicadores de cuatro bloques (deuda, gasto social, capacidad fiscal y contexto) y los resume con dos técnicas complementarias: el análisis de componentes principales, que identifica las dimensiones que organizan la información, y el agrupamiento de Ward, que forma perfiles de países parecidos. Con ello permite tres cosas: mostrar que la deuda y el desarrollo son dimensiones distintas, comparar cómo cambia la relación entre deuda y gasto social según el nivel de ingreso, y ubicar a Colombia frente a países comparables.

Limitaciones

De diseño. Es una fotografía de un solo año: muestra asociaciones, no causas. No permite afirmar que los intereses altos provoquen un menor gasto social. Un tercer factor, como la debilidad institucional, podría explicar ambas cosas a la vez. Además, 2019 pudo tener rasgos propios, como recesiones puntuales en algunos países, que con otro año cambiarían ciertas posiciones. Establecer causalidad exigiría datos de varios años y métodos econométricos.

De la muestra. Los países de ingreso alto quedan fuera porque no reportan deuda externa al Banco Mundial, así que las conclusiones valen solo para el mundo en desarrollo. Tampoco entran los países que reportan menos de 11 de los 15 indicadores, que suelen ser los Estados más frágiles o en conflicto, justamente algunos de los más expuestos a la deuda. Y al dividir la muestra por nivel de ingreso, los grupos quedan pequeños (en el ingreso bajo, algunas correlaciones se calculan con apenas 10 a 16 países), por lo que esas cifras son orientativas.

6 Bibliografía

Banco Mundial. (2019). World Bank country and lending groups. https://datahelpdesk.worldbank.org/knowledgebase/articles/906519-world-bank-country-and-lending-groups

Banco Mundial. (2020). International debt statistics 2021. Banco Mundial. https://openknowledge.worldbank.org/handle/10986/34588

Banco Mundial. (2022). COVID-19: Debt Service Suspension Initiative. https://www.worldbank.org/en/topic/debt/brief/covid-19-debt-service-suspension-initiative

Banco Mundial. (2026). World Development Indicators [Base de datos, DataBank]. https://databank.worldbank.org/source/world-development-indicators

Joaqui Barandica, O. (2022). Unsupervised learning. https://www.joaquibarandica.com/post/ansupervised/

Paredes, D. (s. f.). Aprendizaje no supervisado. En Data science con R (cap. 13). https://bookdown.org/dparedesi/data-science-con-r/aprendizaje-no-supervisado.html