Segmentación de Países mediante Indicadores de Mortalidad

Análisis de técnicas de Aprendizaje No Supervisado - Banco Mundial

Universidad del Valle - Facultad de Ingeniería

Melany Enriquez - Santiago Posada - Sofia Potosi - Valery Rivera

Resumen

Este estudio aplica técnicas de aprendizaje no supervisado para identificar patrones naturales de agrupación entre países basándose en 22 indicadores de mortalidad del Banco Mundial correspondientes al año 2019. Se empleó Análisis de Componentes Principales (ACP) para reducir la dimensionalidad del conjunto de datos, seguido de clusterización jerárquica mediante el método de Ward para identificar segmentos de países con perfiles de mortalidad similares. Los indicadores analizados incluyen expectativa de vida por sexo, mortalidad por enfermedades crónicas, mortalidad por causas externas (accidentes de tránsito, envenenamientos, suicidios), mortalidad infantil y neonatal desagregada por sexo, y supervivencia hasta los 65 años. Los resultados permitieron identificar grupos de países con características de mortalidad homogéneas internamente pero diferenciadas entre sí, proporcionando información para la formulación de políticas de salud pública basadas en evidencia.

Introducción

La mortalidad constituye uno de los indicadores fundamentales para evaluar el estado de salud de las poblaciones y la efectividad de los sistemas sanitarios a nivel global. Los patrones de mortalidad reflejan diferencias significativas entre naciones, resultado de factores como acceso a servicios de salud, nivel de desarrollo económico, infraestructura sanitaria, calidad de la atención materno-infantil y magnitud de determinantes sociales. Estas variaciones no son únicamente atribuibles a regiones geográficas o niveles de ingresos, sino que responden a dinámicas epidemiológicas complejas que estructuran la carga de enfermedad de formas distintas en cada contexto nacional.

Actualmente, la clasificación de países para fines de política sanitaria se realiza mediante categorías predefinidas basadas en criterios geográficos o económicos. Sin embargo, estas clasificaciones convencionales no necesariamente capturan las similitudes reales en los perfiles epidemiológicos entre naciones. Existe una desalineación entre las agrupaciones administrativas que utilizamos para organizar datos internacionales y la realidad de los patrones de mortalidad que los países efectivamente experimentan. Esto implica que una segmentación basada empíricamente en los propios datos de mortalidad podría revelar qué países enfrentan desafíos sanitarios comparables, independientemente de sus características tradicionales, facilitando intercambio de experiencias y estrategias relevantes entre contextos similares.

Las técnicas de aprendizaje no supervisado permiten identificar estas estructuras naturales sin imponer categorías predeterminadas. El Análisis de Componentes Principales sintetiza múltiples indicadores correlacionados en dimensiones fundamentales que explican la variabilidad en mortalidad entre países. La clusterización jerárquica subsecuente agrupa naciones según similitud en estas dimensiones, produciendo segmentaciones coherentes que reflejan realidades epidemiológicas.

El objetivo de este estudio es aplicar estas técnicas para segmentar 182 países según 22 indicadores de mortalidad del año 2019, identificando grupos de naciones con perfiles epidemiológicos similares. Se espera que los clusters resultantes revelen patrones de mortalidad que trascienden categorías convencionales, faciliten la caracterización de inequidades de género, y proporcionen una base empírica para el diseño de políticas de salud pública diferenciadas según contextos epidemiológicos reales.

Descripción de la fuente de Datos

Base de datos: World Development Indicators (WDI) - Banco Mundial

Unidad de análisis: País

Período: 2019

Acceso: https://databank.worldbank.org/source/world-development-indicators

Los datos utilizados en esta investigación provienen de la base World Development Indicators del Banco Mundial, una de las compilaciones más exhaustivas de indicadores de desarrollo compilados a partir de fuentes internacionales estandarizadas. Esta base integra información de organismos especializados reconocidos mundialmente, incluyendo la Organización Mundial de la Salud (OMS), UNICEF y agencias especializadas de las Naciones Unidas, garantizando comparabilidad metodológica entre países y confiabilidad en la medición de indicadores. El año 2019 fue seleccionado como periodo de referencia por presentar la mayor cobertura de datos disponibles para los indicadores de mortalidad incluidos en este análisis.

Metodología

La metodología se fundamenta en la aplicación secuencial de Análisis de Componentes Principales (ACP) y clusterización jerárquica mediante el método de Ward, permitiendo reducir la dimensionalidad de 22 indicadores de mortalidad e identificar grupos de países con perfiles epidemiológicos similares. El análisis se realiza sobre datos del año 2019 del Banco Mundial, con una muestra de 182 países que presentan información completa para las 22 variables seleccionadas.

3.1 Selección y Justificación de Variables

La selección del conjunto de 22 indicadores de mortalidad se fundamentó en tres criterios complementarios que aseguran relevancia analítica y robustez estadística:

  1. Relevancia epidemiológica documentada En la literatura de salud global, garantizando que cada variable capture aspectos fundamentales del perfil de mortalidad poblacional.
  2. Disponibilidad sistemática de datos Para la mayoría de países en el año 2019, minimizando problemas de valores faltantes.
  3. Capacidad discriminante Para diferenciar entre perfiles de mortalidad distintos, evitando redundancia informativa que podría sesgar los resultados del análisis multivariado.

Dimensión: Expectativa de vida y longevidad

Se incluyen medidas de expectativa de vida al nacer y supervivencia acumulada hasta los 65 años, desagregadas por sexo. Estos indicadores sintéticos capturan el impacto integrado de todas las causas de muerte a lo largo del ciclo vital y constituyen medidas ampliamente reconocidas del estado general de salud y desarrollo socioeconómico de las poblaciones. La desagregación por sexo permite identificar inequidades de género en longevidad, un aspecto fundamental para políticas de equidad en salud.

expectativa_vida <- data.frame(
  Variable = c(
    "Expectativa de vida al nacer (mujeres)",
    "Expectativa de vida al nacer (hombres)",
    "Supervivencia hasta los 65 años (%) (mujeres)",
    "Supervivencia hasta los 65 años (%) (hombres)"
  ),
  Descripción = c(
    "Número promedio de años que se espera que viva una mujer al nacer.",
    "Número promedio de años que se espera que viva un hombre al nacer.",
    "Porcentaje de mujeres que sobreviven hasta los 65 años.",
    "Porcentaje de hombres que sobreviven hasta los 65 años."
  ),
  Tipo_Variable = c("Cuantitativa continua", "Cuantitativa continua",
                    "Cuantitativa continua", "Cuantitativa continua")
)

kable(expectativa_vida, 
      caption = "Tabla 1. Dimensión: Expectativa de vida y longevidad",
      align = "l", 
      col.names = c("Variable", "Descripción", "Tipo de Variable")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = TRUE,
                position = "center",
                font_size = 14,
                html_font = "Segoe UI") %>%
  row_spec(0, background = "#488B49", color = "white", bold = TRUE) %>%
  column_spec(1, bold = FALSE, width = "25%") %>%
  column_spec(2, width = "55%") %>%
  column_spec(3, width = "20%") %>%
  footnote(general = "Fuente: Elaboración propia con base en indicadores de mortalidad global (2019).")
Tabla 1. Dimensión: Expectativa de vida y longevidad
Variable Descripción Tipo de Variable
Expectativa de vida al nacer (mujeres) Número promedio de años que se espera que viva una mujer al nacer. Cuantitativa continua
Expectativa de vida al nacer (hombres) Número promedio de años que se espera que viva un hombre al nacer. Cuantitativa continua
Supervivencia hasta los 65 años (%) (mujeres) Porcentaje de mujeres que sobreviven hasta los 65 años. Cuantitativa continua
Supervivencia hasta los 65 años (%) (hombres) Porcentaje de hombres que sobreviven hasta los 65 años. Cuantitativa continua
Note:
Fuente: Elaboración propia con base en indicadores de mortalidad global (2019).

Dimensión: Mortalidad por enfermedades crónicas no transmisibles

Comprende tasas de mortalidad por enfermedades cardiovasculares, cáncer y diabetes mellitus, desagregadas por sexo. Estos indicadores son particularmente relevantes en contextos de países desarrollados y en transición epidemiológica avanzada, donde las enfermedades no transmisibles representan la carga de enfermedad predominante. La inclusión de esta dimensión permite identificar países que han completado la transición epidemiológica versus aquellos que aún enfrentan cargas duales de mortalidad.

cronicas <- data.frame(
  Variable = c("Mortalidad por enfermedades cardíacas, cáncer y diabetes (mujeres)",
               "Mortalidad por enfermedades cardíacas, cáncer y diabetes (hombres)"),
  Descripción = c("Tasa de mortalidad por enfermedades cardiovasculares, cáncer y diabetes en mujeres.",
                  "Tasa de mortalidad por enfermedades cardiovasculares, cáncer y diabetes en hombres."),
  Tipo_Variable = c("Cuantitativa continua", "Cuantitativa continua")
)

kable(cronicas,
      caption = "Tabla 2. Dimensión: Mortalidad por enfermedades crónicas no transmisibles",
      align = "l",
      col.names = c("Variable", "Descripción", "Tipo de Variable")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = TRUE,
                position = "center",
                font_size = 14,
                html_font = "Segoe UI") %>%
  row_spec(0, background = "#488B49", color = "white", bold = TRUE) %>%
  column_spec(1, bold = FALSE, width = "30%") %>%
  column_spec(2, width = "50%") %>%
  column_spec(3, width = "20%") %>%
  footnote(general = "Fuente: Elaboración propia con base en estadísticas de mortalidad (2019).")
Tabla 2. Dimensión: Mortalidad por enfermedades crónicas no transmisibles
Variable Descripción Tipo de Variable
Mortalidad por enfermedades cardíacas, cáncer y diabetes (mujeres) Tasa de mortalidad por enfermedades cardiovasculares, cáncer y diabetes en mujeres. Cuantitativa continua
Mortalidad por enfermedades cardíacas, cáncer y diabetes (hombres) Tasa de mortalidad por enfermedades cardiovasculares, cáncer y diabetes en hombres. Cuantitativa continua
Note:
Fuente: Elaboración propia con base en estadísticas de mortalidad (2019).

Dimensión: Mortalidad por causas externas

Agrupa mortalidad por accidentes de tránsito, envenenamientos accidentales y suicidios, con desagregación por sexo. Estos indicadores reflejan determinantes sociales de la salud incluyendo violencia interpersonal, seguridad vial, salud mental y factores de riesgo comportamentales. La mortalidad por causas externas es altamente prevenible mediante intervenciones de salud pública y políticas intersectoriales, constituyendo un área crítica de acción para sistemas de salud efectivos.

externas <- data.frame(
  Variable = c("Mortalidad por accidentes de tránsito",
               "Mortalidad por envenenamiento accidental (mujeres)",
               "Mortalidad por envenenamiento accidental (hombres)",
               "Mortalidad por suicidios (mujeres)",
               "Mortalidad por suicidios (hombres)"),
  Descripción = c("Tasa de mortalidad por accidentes de tránsito por 100,000 habitantes.",
                  "Tasa de mortalidad femenina por envenenamientos accidentales.",
                  "Tasa de mortalidad masculina por envenenamientos accidentales.",
                  "Tasa de mortalidad femenina por suicidios.",
                  "Tasa de mortalidad masculina por suicidios."),
  Tipo_Variable = rep("Cuantitativa continua", 5)
)

kable(externas,
      caption = "Tabla 3. Dimensión: Mortalidad por causas externas",
      align = "l",
      col.names = c("Variable", "Descripción", "Tipo de Variable")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = TRUE,
                position = "center",
                font_size = 14,
                html_font = "Segoe UI") %>%
  row_spec(0, background = "#488B49", color = "white", bold = TRUE) %>%
  column_spec(1, bold = FALSE, width = "30%") %>%
  column_spec(2, width = "50%") %>%
  column_spec(3, width = "20%") %>%
  footnote(general = "Fuente: Elaboración propia con base en registros vitales y salud pública (2019).")
Tabla 3. Dimensión: Mortalidad por causas externas
Variable Descripción Tipo de Variable
Mortalidad por accidentes de tránsito Tasa de mortalidad por accidentes de tránsito por 100,000 habitantes. Cuantitativa continua
Mortalidad por envenenamiento accidental (mujeres) Tasa de mortalidad femenina por envenenamientos accidentales. Cuantitativa continua
Mortalidad por envenenamiento accidental (hombres) Tasa de mortalidad masculina por envenenamientos accidentales. Cuantitativa continua
Mortalidad por suicidios (mujeres) Tasa de mortalidad femenina por suicidios. Cuantitativa continua
Mortalidad por suicidios (hombres) Tasa de mortalidad masculina por suicidios. Cuantitativa continua
Note:
Fuente: Elaboración propia con base en registros vitales y salud pública (2019).

Dimensión: Mortalidad por factores ambientales

Incluye mortalidad atribuible a polución del aire, desagregada por sexo. Este indicador captura determinantes de salud ambiental y refleja desafíos de sostenibilidad, industrialización e infraestructura sanitaria. La creciente importancia de factores ambientales en la carga global de enfermedad justifica la inclusión de esta dimensión en el análisis.

ambiental <- data.frame(
  Variable = c("Mortalidad por polución del aire (mujeres)",
               "Mortalidad por polución del aire (hombres)"),
  Descripción = c("Tasa de mortalidad femenina atribuible a la contaminación del aire.",
                  "Tasa de mortalidad masculina atribuible a la contaminación del aire."),
  Tipo_Variable = c("Cuantitativa continua", "Cuantitativa continua")
)

kable(ambiental,
      caption = "Tabla 4. Dimensión: Mortalidad por factores ambientales",
      align = "l",
      col.names = c("Variable", "Descripción", "Tipo de Variable")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = TRUE,
                position = "center",
                font_size = 14,
                html_font = "Segoe UI") %>%
  row_spec(0, background = "#488B49", color = "white", bold = TRUE) %>%
  column_spec(1, bold = FALSE, width = "30%") %>%
  column_spec(2, width = "50%") %>%
  column_spec(3, width = "20%") %>%
  footnote(general = "Fuente: Elaboración propia con base en datos de mortalidad ambiental (2019).")
Tabla 4. Dimensión: Mortalidad por factores ambientales
Variable Descripción Tipo de Variable
Mortalidad por polución del aire (mujeres) Tasa de mortalidad femenina atribuible a la contaminación del aire. Cuantitativa continua
Mortalidad por polución del aire (hombres) Tasa de mortalidad masculina atribuible a la contaminación del aire. Cuantitativa continua
Note:
Fuente: Elaboración propia con base en datos de mortalidad ambiental (2019).

Dimensión: Mortalidad Adulta

Comprende tasas de mortalidad en población adulta (probabilidad de muerte entre 15 y 60 años) desagregadas por sexo. Estos indicadores miden la carga de mortalidad prematura y la efectividad acumulada de sistemas de salud en proteger a población en edades productivas. La mortalidad adulta elevada señala fragilidad de sistemas de salud y factores de riesgo prevenibles que afectan población económicamente activa.

mortalidad_adulta <- data.frame(
  Variable = c("Tasa de mortalidad adulta (mujeres)",
               "Tasa de mortalidad adulta (hombres)"),
  Descripción = c("Probabilidad de morir entre los 15 y 60 años para mujeres.",
                  "Probabilidad de morir entre los 15 y 60 años para hombres."),
  Tipo_Variable = c("Cuantitativa continua", "Cuantitativa continua")
)

kable(mortalidad_adulta,
      caption = "Tabla 5. Dimensión: Mortalidad adulta",
      align = "l",
      col.names = c("Variable", "Descripción", "Tipo de Variable")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = TRUE,
                position = "center",
                font_size = 14,
                html_font = "Segoe UI") %>%
  row_spec(0, background = "#488B49", color = "white", bold = TRUE) %>%
  column_spec(1, bold = FALSE, width = "30%") %>%
  column_spec(2, width = "50%") %>%
  column_spec(3, width = "20%") %>%
  footnote(general = "Fuente: Elaboración propia con base en indicadores de mortalidad adulta (2019).")
Tabla 5. Dimensión: Mortalidad adulta
Variable Descripción Tipo de Variable
Tasa de mortalidad adulta (mujeres) Probabilidad de morir entre los 15 y 60 años para mujeres. Cuantitativa continua
Tasa de mortalidad adulta (hombres) Probabilidad de morir entre los 15 y 60 años para hombres. Cuantitativa continua
Note:
Fuente: Elaboración propia con base en indicadores de mortalidad adulta (2019).

Dimensión: Mortalidad infantil, neonatal e infantil temprana

Incluye tasas de mortalidad específicas para estas etapas (por 1,000 nacidos vivos), desagregadas por sexo, además de números absolutos de muertes neonatales e infantiles. Estos indicadores actúan como trazadores de la calidad de servicios de salud materno-infantil, acceso a atención obstétrica y condiciones de vida en la primera infancia. La mortalidad infantil y neonatal son altamente sensibles a intervenciones de salud pública y constituyen metas prioritarias de los Objetivos de Desarrollo Sostenible.

mortalidad_infantil <- data.frame(
  Variable = c("Tasa de mortalidad infantil (niñas)",
               "Tasa de mortalidad infantil (niños)",
               "Tasa de mortalidad neonatal",
               "Tasa de mortalidad infantil temprana (niñas)",
               "Tasa de mortalidad infantil temprana (niños)",
               "Número de muertes infantiles",
               "Número de muertes neonatales"),
  Descripción = c("Número de muertes de niñas menores de 1 año por cada 1,000 nacidos vivos.",
                  "Número de muertes de niños menores de 1 año por cada 1,000 nacidos vivos.",
                  "Número de muertes ocurridas en los primeros 28 días de vida por cada 1,000 nacidos vivos.",
                  "Tasa de mortalidad de niñas menores de 5 años por cada 1,000 nacidos vivos.",
                  "Tasa de mortalidad de niños menores de 5 años por cada 1,000 nacidos vivos.",
                  "Número absoluto de muertes infantiles (menores de 1 año).",
                  "Número absoluto de muertes neonatales (primer mes de vida)."),
  Tipo_Variable = c("Cuantitativa continua", "Cuantitativa continua",
                    "Cuantitativa continua", "Cuantitativa continua",
                    "Cuantitativa continua", "Cuantitativa discreta", "Cuantitativa discreta")
)

kable(mortalidad_infantil,
      caption = "Tabla 6. Dimensión: Mortalidad infantil, neonatal e infantil temprana",
      align = "l",
      col.names = c("Variable", "Descripción", "Tipo de Variable")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = TRUE,
                position = "center",
                font_size = 14,
                html_font = "Segoe UI") %>%
  row_spec(0, background = "#488B49", color = "white", bold = TRUE) %>%
  column_spec(1, bold = FALSE, width = "30%") %>%
  column_spec(2, width = "50%") %>%
  column_spec(3, width = "20%") %>%
  footnote(general = "Fuente: Elaboración propia con base en indicadores de mortalidad infantil (2019).")
Tabla 6. Dimensión: Mortalidad infantil, neonatal e infantil temprana
Variable Descripción Tipo de Variable
Tasa de mortalidad infantil (niñas) Número de muertes de niñas menores de 1 año por cada 1,000 nacidos vivos. Cuantitativa continua
Tasa de mortalidad infantil (niños) Número de muertes de niños menores de 1 año por cada 1,000 nacidos vivos. Cuantitativa continua
Tasa de mortalidad neonatal Número de muertes ocurridas en los primeros 28 días de vida por cada 1,000 nacidos vivos. Cuantitativa continua
Tasa de mortalidad infantil temprana (niñas) Tasa de mortalidad de niñas menores de 5 años por cada 1,000 nacidos vivos. Cuantitativa continua
Tasa de mortalidad infantil temprana (niños) Tasa de mortalidad de niños menores de 5 años por cada 1,000 nacidos vivos. Cuantitativa continua
Número de muertes infantiles Número absoluto de muertes infantiles (menores de 1 año). Cuantitativa discreta
Número de muertes neonatales Número absoluto de muertes neonatales (primer mes de vida). Cuantitativa discreta
Note:
Fuente: Elaboración propia con base en indicadores de mortalidad infantil (2019).

La desagregación por sexo en la mayoría de variables responde a evidencia documentada de diferencias sistemáticas de género en patrones de mortalidad, incluyendo mayor vulnerabilidad masculina en mortalidad infantil, mayor mortalidad masculina por causas externas y suicidios, y mayor longevidad femenina en prácticamente todas las sociedades. Esta desagregación permite identificar inequidades de género específicas dentro de cada cluster identificado.

3.2 Preparación y Procesamiento de Datos

El protocolo de procesamiento de datos fue diseñado para asegurar la integridad, comparabilidad y validez estadística del análisis subsecuente. La base original contenía 245 entidades, de las cuales se procedió a la eliminación sistemática de agregados regionales (observaciones 182 a 245), garantizando la homogeneidad conceptual de la unidad de análisis. Posteriormente se aplicó la función na.omit() para eliminar cualquier observación que presentara valores faltantes en alguna de las 22 variables incluidas, asegurando que el análisis multivariado posterior no esté comprometido por suposiciones implícitas sobre datos faltantes.​

Este procedimiento de limpieza resultó en una muestra final de 182 países con información completa para las 22 indicadores de mortalidad, garantizando la robustez estadística del análisis posterior.

library(readr)
library(tidyverse)
library(FactoMineR)
library(factoextra)

# Leer la base
Muertes_ans <- read_csv("Muertes ans.csv", locale = locale(encoding = "UTF-8"))
Muertes <- data.frame(Muertes_ans)

# Limpieza y selección de variables
Muertes <- Muertes[-(218:245), ]
Muertes <- na.omit(Muertes)

# Renombrar columnas - CORREGIDO
colnames(Muertes) <- c("Pais", "Expectativa_de_vida_mujer", "Expectativa_de_vida_hombres", "Accidentes_de_transito",
                       "Enfermedades_cardiacas_cancer_diabetes_mujeres", "Enfermedades_cardiacas_cancer_diabetes_hombres", 
                       "Polucion_del_aire_mujeres", "Polucion_del_aire_hombres", "Envenenamiento_accidental_mujeres", 
                       "Envenenamiento_accidental_hombres", "Tasa_de_mortalidad_mujeres_adultas","Tasa_de_mortalidad_hombres_adultos",
                       "Tasa_de_mortalidad_infantil_mujeres", "Tasa_de_mortalidad_infantil_varones", "Tasa_de_mortalidad_neonatal",
                       "Tasa_de_mortalidad_infantil_temprana_mujeres", "Tasa_de_mortalidad_infantil_temprana_hombres","Numero_de_muertes_infantiles",
                       "Numero_de_muertes_neonatales","Tasa_de_suicidios_mujeres","Tasa_de_suicidios_hombres","Supervivencia_hasta_los_65_anos_mujeres",
                       "Supervivencia_hasta_los_65_anos_hombres")

# Eliminar filas con valores NA en cualquier columna
Muertes <- Muertes %>%
  filter(complete.cases(.))

# Traducir nombres de países al español - USANDO "Pais" EN VEZ DE "País"
Muertes <- Muertes %>%
  mutate(Pais = case_when(
    Pais == "Faroe Islands" ~ "Islas Feroe",
    Pais == "Fiji" ~ "Fiyi",
    Pais == "Finland" ~ "Finlandia",
    Pais == "France" ~ "Francia",
    Pais == "French Polynesia" ~ "Polinesia Francesa",
    Pais == "Gabon" ~ "Gabon",
    Pais == "Gambia, The" ~ "Gambia",
    Pais == "Georgia" ~ "Georgia",
    Pais == "Germany" ~ "Alemania",
    Pais == "Ghana" ~ "Ghana",
    Pais == "Gibraltar" ~ "Gibraltar",
    Pais == "Greece" ~ "Grecia",
    Pais == "Greenland" ~ "Groenlandia",
    Pais == "Grenada" ~ "Granada",
    Pais == "Guam" ~ "Guam",
    Pais == "Guatemala" ~ "Guatemala",
    Pais == "Guinea" ~ "Guinea",
    Pais == "Guinea-Bissau" ~ "Guinea-Bisau",
    Pais == "Guyana" ~ "Guyana",
    Pais == "Haiti" ~ "Haiti",
    Pais == "Honduras" ~ "Honduras",
    Pais == "Hong Kong SAR, China" ~ "Hong Kong",
    Pais == "Hungary" ~ "Hungria",
    Pais == "Iceland" ~ "Islandia",
    Pais == "India" ~ "India",
    Pais == "Indonesia" ~ "Indonesia",
    Pais == "Iran, Islamic Rep." ~ "Iran",
    Pais == "Iraq" ~ "Irak",
    Pais == "Ireland" ~ "Irlanda",
    Pais == "Isle of Man" ~ "Isla de Man",
    Pais == "Israel" ~ "Israel",
    Pais == "Italy" ~ "Italia",
    Pais == "Jamaica" ~ "Jamaica",
    Pais == "Japan" ~ "Japon",
    Pais == "Jordan" ~ "Jordania",
    Pais == "Kazakhstan" ~ "Kazajistan",
    Pais == "Kenya" ~ "Kenia",
    Pais == "Kiribati" ~ "Kiribati",
    Pais == "Korea, Dem. People's Rep." ~ "Corea del Norte",
    Pais == "Korea, Rep." ~ "Corea del Sur",
    Pais == "Kosovo" ~ "Kosovo",
    Pais == "Kuwait" ~ "Kuwait",
    Pais == "Kyrgyz Republic" ~ "Kirguistan",
    Pais == "Lao PDR" ~ "Laos",
    Pais == "Latvia" ~ "Letonia",
    Pais == "Lebanon" ~ "Libano",
    Pais == "Lesotho" ~ "Lesoto",
    Pais == "Liberia" ~ "Liberia",
    Pais == "Libya" ~ "Libia",
    Pais == "Liechtenstein" ~ "Liechtenstein",
    Pais == "Lithuania" ~ "Lituania",
    Pais == "Luxembourg" ~ "Luxemburgo",
    Pais == "Macao SAR, China" ~ "Macao",
    Pais == "Madagascar" ~ "Madagascar",
    Pais == "Malawi" ~ "Malaui",
    Pais == "Malaysia" ~ "Malasia",
    Pais == "Maldives" ~ "Maldivas",
    Pais == "Mali" ~ "Mali",
    Pais == "Malta" ~ "Malta",
    Pais == "Marshall Islands" ~ "Islas Marshall",
    Pais == "Mauritania" ~ "Mauritania",
    Pais == "Mauritius" ~ "Mauricio",
    Pais == "Mexico" ~ "Mexico",
    Pais == "Micronesia, Fed. Sts." ~ "Micronesia",
    Pais == "Moldova" ~ "Moldavia",
    Pais == "Monaco" ~ "Monaco",
    Pais == "Mongolia" ~ "Mongolia",
    Pais == "Montenegro" ~ "Montenegro",
    Pais == "Morocco" ~ "Marruecos",
    Pais == "Mozambique" ~ "Mozambique",
    Pais == "Myanmar" ~ "Myanmar",
    Pais == "Namibia" ~ "Namibia",
    Pais == "Nauru" ~ "Nauru",
    Pais == "Nepal" ~ "Nepal",
    Pais == "Netherlands" ~ "Paises Bajos",
    Pais == "New Caledonia" ~ "Nueva Caledonia",
    Pais == "New Zealand" ~ "Nueva Zelanda",
    Pais == "Nicaragua" ~ "Nicaragua",
    Pais == "Niger" ~ "Niger",
    Pais == "Nigeria" ~ "Nigeria",
    Pais == "North Macedonia" ~ "Macedonia del Norte",
    Pais == "Northern Mariana Islands" ~ "Islas Marianas del Norte",
    Pais == "Norway" ~ "Noruega",
    Pais == "Oman" ~ "Oman",
    Pais == "Pakistan" ~ "Pakistan",
    Pais == "Palau" ~ "Palaos",
    Pais == "Panama" ~ "Panama",
    Pais == "Papua New Guinea" ~ "Papua Nueva Guinea",
    Pais == "Paraguay" ~ "Paraguay",
    Pais == "Peru" ~ "Peru",
    Pais == "Philippines" ~ "Filipinas",
    Pais == "Poland" ~ "Polonia",
    Pais == "Portugal" ~ "Portugal",
    Pais == "Puerto Rico (US)" ~ "Puerto Rico",
    Pais == "Qatar" ~ "Catar",
    Pais == "Romania" ~ "Rumania",
    Pais == "Russian Federation" ~ "Rusia",
    Pais == "Rwanda" ~ "Ruanda",
    Pais == "Samoa" ~ "Samoa",
    Pais == "San Marino" ~ "San Marino",
    Pais == "Sao Tome and Principe" ~ "Santo Tome y Principe",
    Pais == "Saudi Arabia" ~ "Arabia Saudita",
    Pais == "Senegal" ~ "Senegal",
    Pais == "Serbia" ~ "Serbia",
    Pais == "Seychelles" ~ "Seychelles",
    Pais == "Sierra Leone" ~ "Sierra Leona",
    Pais == "Singapore" ~ "Singapur",
    Pais == "Sint Maarten (Dutch part)" ~ "Sint Maarten",
    Pais == "Slovak Republic" ~ "Eslovaquia",
    Pais == "Slovenia" ~ "Eslovenia",
    Pais == "Solomon Islands" ~ "Islas Salomon",
    Pais == "Somalia, Fed. Rep." ~ "Somalia",
    Pais == "South Africa" ~ "Sudafrica",
    Pais == "South Sudan" ~ "Sudan del Sur",
    Pais == "Spain" ~ "Espana",
    Pais == "Sri Lanka" ~ "Sri Lanka",
    Pais == "St. Kitts and Nevis" ~ "San Cristobal y Nieves",
    Pais == "St. Lucia" ~ "Santa Lucia",
    Pais == "St. Martin (French part)" ~ "San Martin",
    Pais == "St. Vincent and the Grenadines" ~ "San Vicente y las Granadinas",
    Pais == "Sudan" ~ "Sudan",
    Pais == "Suriname" ~ "Surinam",
    Pais == "Sweden" ~ "Suecia",
    Pais == "Switzerland" ~ "Suiza",
    Pais == "Syrian Arab Republic" ~ "Siria",
    Pais == "Tajikistan" ~ "Tayikistan",
    Pais == "Tanzania" ~ "Tanzania",
    Pais == "Thailand" ~ "Tailandia",
    Pais == "Timor-Leste" ~ "Timor Oriental",
    Pais == "Togo" ~ "Togo",
    Pais == "Tonga" ~ "Tonga",
    Pais == "Trinidad and Tobago" ~ "Trinidad y Tobago",
    Pais == "Tunisia" ~ "Tunez",
    Pais == "Turkiye" ~ "Turquia",
    Pais == "Turkmenistan" ~ "Turkmenistan",
    Pais == "Turks and Caicos Islands" ~ "Islas Turcas y Caicos",
    Pais == "Tuvalu" ~ "Tuvalu",
    Pais == "Uganda" ~ "Uganda",
    Pais == "Ukraine" ~ "Ucrania",
    Pais == "United Arab Emirates" ~ "Emiratos Arabes Unidos",
    Pais == "United Kingdom" ~ "Reino Unido",
    Pais == "United States" ~ "Estados Unidos",
    Pais == "Uruguay" ~ "Uruguay",
    Pais == "Uzbekistan" ~ "Uzbekistan",
    Pais == "Vanuatu" ~ "Vanuatu",
    Pais == "Venezuela, RB" ~ "Venezuela",
    Pais == "Viet Nam" ~ "Vietnam",
    Pais == "Virgin Islands (U.S.)" ~ "Islas Virgenes Americanas",
    Pais == "West Bank and Gaza" ~ "Palestina",
    Pais == "Yemen, Rep." ~ "Yemen",
    Pais == "Zambia" ~ "Zambia",
    Pais == "Zimbabwe" ~ "Zimbabue",
    TRUE ~ as.character(Pais)
  ))
# Verificar la base final
View(Muertes)

library(reactable)
library(htmltools)

reactable(
  Muertes,
  defaultPageSize = 15,
  showPageSizeOptions = TRUE,
  pageSizeOptions = c(10, 15, 25, 50, 100),
  filterable = TRUE,
  searchable = TRUE,
  sortable = TRUE,
  resizable = TRUE,
  striped = TRUE,
  highlight = TRUE,
  bordered = FALSE,
  wrap = FALSE,
  showSortable = TRUE,
  defaultColDef = colDef(
    header = function(value) {
      name <- gsub("_", " ", value)
      name <- gsub("([a-z])([A-Z])", "\\1 \\2", name)
      tools::toTitleCase(tolower(name))
    },
    cell = function(value) {
      if (is.numeric(value)) {
        if (value == round(value)) {
          format(value, big.mark = ",", scientific = FALSE)
        } else {
          format(round(value, 2), nsmall = 2, big.mark = ",", scientific = FALSE)
        }
      } else {
        as.character(value)
      }
    },
    align = "center",
    minWidth = 120,
    headerStyle = list(
      background = "#488B49",  # Cambiado a tu color verde
      color = "white",
      fontWeight = "600",
      borderBottom = "2px solid #dee2e6",
      fontSize = "12px"
    ),
    style = list(
      fontSize = "11px",
      fontFamily = "Segoe UI, Arial, sans-serif"  # Usar tu fuente
    )
  ),
  style = list(
    fontFamily = "Segoe UI, Arial, sans-serif",
    fontSize = "12px"
  ),
  theme = reactableTheme(
    stripedColor = "#f8f9fa",
    highlightColor = "#e9ecef",
    cellPadding = "6px 10px",
    backgroundColor = "#ffffff",
    borderColor = "#dee2e6",
    style = list(
      fontFamily = "Segoe UI, Arial, -apple-system, BlinkMacSystemFont, sans-serif"
    ),
    searchInputStyle = list(
      width = "100%",
      padding = "8px 12px",
      border = "1px solid #ced4da",
      borderRadius = "4px",
      fontSize = "14px",
      marginBottom = "10px"
    ),
    headerStyle = list(
      borderBottom = "2px solid #2d5534",  # Color más oscuro de tu tema
      fontSize = "13px",
      backgroundColor = "#488B49",  # Tu color verde principal
      color = "white"
    )
  ),
  columns = list(
    Pais = colDef(
      name = "País",
      minWidth = 180,
      filterable = TRUE,
      align = "left",
      style = list(fontWeight = "bold")
    ),
    Expectativa_de_vida_mujer = colDef(
      name = "Expectativa Vida Mujer",
      format = colFormat(digits = 1)
      # ELIMINADO: estilo condicional de colores
    ),
    Expectativa_de_vida_hombres = colDef(
      name = "Expectativa Vida Hombres", 
      format = colFormat(digits = 1)
      # ELIMINADO: estilo condicional de colores
    ),
    Tasa_de_mortalidad_infantil_mujeres = colDef(
      name = "Mortalidad Infantil (Niñas)",
      format = colFormat(digits = 1)
      # ELIMINADO: estilo condicional de colores
    ),
    Tasa_de_mortalidad_infantil_varones = colDef(
      name = "Mortalidad Infantil (Niños)",
      format = colFormat(digits = 1)
      # ELIMINADO: estilo condicional de colores
    ),
    Tasa_de_suicidios_mujeres = colDef(
      name = "Suicidios (Mujeres)",
      format = colFormat(digits = 1)
      # ELIMINADO: estilo condicional de colores
    ),
    Tasa_de_suicidios_hombres = colDef(
      name = "Suicidios (Hombres)",
      format = colFormat(digits = 1)
      # ELIMINADO: estilo condicional de colores
    )
  )
)

Estandarización de variables:

El paso crítico siguiente corresponde a la estandarización de variables mediante transformación Z-score. Dada la heterogeneidad en escalas de medición, que incluye tasas de mortalidad expresadas por 1,000 o 100,000 habitantes, años de expectativa de vida, porcentajes de supervivencia y números absolutos; la estandarización es metodológicamente esencial:

\[ z_i = \frac{x_i - \mu}{\sigma} \]

donde cada variable \(x_i\) es transformada a una distribución con media \(\mu = 0\) y desviación estándar \(\sigma = 1\). Esta normalización garantiza que todas las variables contribuyan equitativamente al análisis, independientemente de sus magnitudes originales; que las estructuras de covarianza reflejen relaciones genuinas entre variables sin sesgos por diferencias de escala; y que las distancias euclidianas capturen similitudes reales entre países.

3.3 Análisis de Componentes Principales (ACP)

El Análisis de Componentes Principales es una técnica de reducción de dimensionalidad que transforma un conjunto de variables correlacionadas en un conjunto menor de variables ortogonales no correlacionadas llamadas componentes principales. El objetivo fundamental del ACP es capturar la mayor cantidad de varianza presente en los datos originales utilizando el menor número posible de dimensiones, facilitando así la interpretación y visualización de estructuras complejas en datos de alta dimensionalidad.​

En el contexto de este estudio, el ACP permite reducir las 22 variables de mortalidad a un número más manejable de componentes que capturan las dimensiones subyacentes más importantes de los perfiles de mortalidad globales. Esta reducción dimensional facilita tanto la interpretación de patrones como la posterior aplicación de algoritmos de clusterización al eliminar redundancia y ruido en los datos.​

Fundamento matemático:

Sea X una matriz de datos de dimensión n × p, donde \(n = 182\) países y \(p = 22\) variables. El Análisis de Componentes Principales (ACP) busca identificar vectores propios \(v_1, v_2, \dots, v_p\) y valores propios asociados \(\lambda_1 \geq \lambda_2 \geq \dots \geq \lambda_p\) tales que:

\[ \text{Cov}(X) \cdot v_j = \lambda_j \cdot v_j \]

Cada componente principal se define como:

\[ PC_j = w_{j1} X_1 + w_{j2} X_2 + \dots + w_{j22} X_{22} \]

donde \(w_{ji}\) son los pesos (loadings) del eigenvector \(v_j\). Los componentes están ordenados según la varianza explicada. La proporción de varianza explicada por cada componente corresponde a su valor propio:

\[ \text{Proporción de varianza explicada por } PC_j = \frac{\lambda_j}{\sum_{k=1}^{22} \lambda_k} \]

Criterios de retención e interpretación:

La determinación del número óptimo de componentes se basó en dos criterios complementarios. En primer lugar, el gráfico de sedimentación (Scree plot), que representa los valores propios ordenados y permite identificar el punto de inflexión o “codo” a partir del cual los componentes adicionales aportan incrementos marginales mínimos en la varianza explicada. En segundo lugar, el criterio de varianza acumulada, mediante el cual se retuvieron los componentes necesarios para alcanzar entre un 70% y 80% de la varianza total. Este enfoque combinado garantiza un equilibrio adecuado entre la simplificación del modelo y la conservación de la información esencial contenida en los datos originales.

La interpretación de los componentes principales se fundamenta en el análisis de las cargas factoriales asociadas a cada variable. Aquellas con valores absolutos elevados (típicamente \(|w| > 0.3\)) se consideran las de mayor contribución a la definición del componente, reflejando su peso estructural dentro del patrón multivariado. Por ejemplo, un componente con cargas altas en mortalidad infantil y neonatal puede interpretarse como un “factor de salud materno-infantil”, mientras que otro con cargas elevadas en expectativa de vida y supervivencia puede representar un “factor de longevidad y desarrollo”.

3.4 Clusterización Jerárquica: Método de Ward

La clusterización jerárquica es un método de aprendizaje no supervisado que agrupa observaciones en una estructura de árbol (dendrograma) basándose en medidas de similitud o disimilitud entre ellas. A diferencia de métodos de partición como k-means, que requieren especificar a priori el número de clusters, la clusterización jerárquica produce una jerarquía completa de agrupaciones que permite explorar soluciones con diferentes números de clusters.​

Entre los diversos métodos de clusterización jerárquica aglomerativa, el método de Ward se destaca por su capacidad para crear clusters compactos y bien separados, minimizando la varianza intra-cluster. Este criterio resulta particularmente apropiado para el análisis de perfiles de mortalidad, donde se busca identificar grupos de países homogéneos en sus patrones de muerte.​

Fundamento Matemático:

El método de Ward define la distancia entre dos clusters \(C_i\) y \(C_j\) como:

\[ d(C_i, C_j) = \frac{n_i n_j}{n_i + n_j} \, \lVert \bar{x}_i - \bar{x}_j \rVert^2 \]

donde \(n_i\) y \(n_j\) representan los tamaños de los clusters, \(\bar{x}_i\) y \(\bar{x}_j\) son sus respectivos centroides, y \(\lVert \cdot \rVert\) denota la distancia euclidiana. Este criterio minimiza el incremento de la suma de cuadrados dentro de los grupos en cada etapa de fusión, favoreciendo la formación de clusters compactos y homogéneos.

Procedimiento:

El proceso de agrupamiento se llevó a cabo mediante un algoritmo aglomerativo ascendente, donde inicialmente cada país se considera un cluster individual. En cada iteración, se fusionan los dos clusters con la menor distancia de Ward, y este proceso se repite hasta que todos los países se integran en un único conglomerado jerárquico. El dendrograma resultante permite visualizar las relaciones de similitud entre países y establecer puntos de corte adecuados para determinar el número óptimo de clusters.

Para optimizar la calidad del agrupamiento, las puntuaciones de los países en los componentes principales retenidos fueron utilizadas como insumo en lugar de las variables originales. Esta estrategia combinada (ACP + método de Ward) presenta ventajas sustanciales: reduce la multicolinealidad al emplear componentes ortogonales por construcción, elimina el ruido al descartar variables redundantes o de baja variabilidad, mejora la estabilidad y reproducibilidad de los resultados, y aumenta la eficiencia computacional del procedimiento.

3.5 Determinación del Número Óptimo de Clusters

El número óptimo de clusters se determinó mediante inspección visual del dendrograma resultante del método de Ward. Las alturas de fusión consecutivas en el dendrograma revelan puntos de inflexión pronunciados que identifican cortes naturales en la jerarquía, indicando números de clusters potencialmente óptimos. Se examinaron visualmente aquellas alturas donde ocurrían cambios significativos de magnitud, seleccionando el número de clusters que capturaba de forma más equilibrada la estructura subyacente en los datos de mortalidad global.

Resultados Descriptivos

Estadísticas descriptivas y visualización…

Resultados del Modelo

La etapa de resultados integra y aplica las técnicas de aprendizaje no supervisado descritas en la metodología, enfocándose primero en la reducción dimensional a través del Análisis de Componentes Principales (ACP) y posteriormente en la agrupación de países según perfiles de mortalidad con el método de clusterización jerárquica. Se presentan los principales hallazgos obtenidos a partir de estas técnicas, detallando la estructura interna de los datos y las segmentaciones epidemiológicas reveladas.

5.1 Análisis de Componentes Principales (ACP)

# Preparar base para ACP
Muertes_df <- Muertes %>% 
  select(-Pais) %>%
  mutate(across(everything(), as.numeric)) %>%
  scale()
rownames(Muertes_df) <- Muertes$Pais

# Ver las primeras filas y columnas
head(Muertes_df[, 1:6])

# Realizar el ACP con datos ya escalados
res.pca <- prcomp(Muertes_df, scale = FALSE)
res.pca

El ACP constituye la primera fase de análisis, orientada a sintetizar la complejidad de los 22 indicadores de mortalidad en un conjunto reducido de componentes principales que explican la mayor parte de la variabilidad observada entre países. Este procedimiento permite identificar los factores latentes que estructuran los distintos perfiles epidemiológicos, facilitando la interpretación de las relaciones entre variables y preparando el terreno para la clusterización posterior.

Matriz de correlaciones

La matriz de correlaciones es una herramienta estadística fundamental para analizar la intensidad y dirección de la relación lineal entre diferentes variables cuantitativas incluidas en el estudio. La matriz realizada se presenta en la grafica figura 1.

library(ggplot2)
library(reshape2)

# Vector de nombres cortos con los nombres correctos del dataframe:
nombres_cortos <- c(
  "Expectativa_de_vida_mujer" = "Exp Vida Mujer",
  "Expectativa_de_vida_hombres" = "Exp Vida Hombre",
  "Accidentes_de_transito" = "Accidentes Tránsito",
  "Enfermedades_cardiacas_cancer_diabetes_mujeres" = "Enf Crónicas Mujer",
  "Enfermedades_cardiacas_cancer_diabetes_hombres" = "Enf Crónicas Hombre",
  "Polucion_del_aire_mujeres" = "Polución Aire Mujer", 
  "Polucion_del_aire_hombres" = "Polución Aire Hombre",
  "Envenenamiento_accidental_mujeres" = "Envenenamiento Mujer",
  "Envenenamiento_accidental_hombres" = "Envenenamiento Hombre",
  "Tasa_de_mortalidad_mujeres_adultas" = "Mort Adulta Mujer",
  "Tasa_de_mortalidad_hombres_adultos" = "Mort Adulta Hombre",
  "Tasa_de_mortalidad_infantil_mujeres" = "Mort Infantil Mujer",
  "Tasa_de_mortalidad_infantil_varones" = "Mort Infantil Hombre",
  "Tasa_de_mortalidad_neonatal" = "Mort Neonatal",
  "Tasa_de_mortalidad_infantil_temprana_mujeres" = "Mort Temprana Mujer",
  "Tasa_de_mortalidad_infantil_temprana_hombres" = "Mort Temprana Hombre",
  "Numero_de_muertes_infantiles" = "Muertes Infantiles",
  "Numero_de_muertes_neonatales" = "Muertes Neonatales",
  "Tasa_de_suicidios_mujeres" = "Suicidios Mujer",
  "Tasa_de_suicidios_hombres" = "Suicidios Hombre",
  "Supervivencia_hasta_los_65_anos_mujeres" = "Superv 65 Mujer",
  "Supervivencia_hasta_los_65_anos_hombres" = "Superv 65 Hombre"
)

# 1. Selecciona las 22 variables (excluye País)
variables_requeridas <- names(nombres_cortos)
Muertes_filtradas <- Muertes[, variables_requeridas]
Muertes_filtradas[] <- lapply(Muertes_filtradas, as.numeric)

# 2. Renombra columnas a los cortos
colnames(Muertes_filtradas) <- nombres_cortos

# 3. Elimina filas con NA
Muertes_filtradas <- na.omit(Muertes_filtradas)

# 4. Calcula la matriz de correlación
cor_matrix <- cor(Muertes_filtradas, use = "pairwise.complete.obs")

# 5. Prepara datos para graficar sin NA
library(reshape2)
cor_melted <- melt(cor_matrix)
names(cor_melted) <- c("Var1", "Var2", "value")

# 6. Gráfica
library(ggplot2)
p1 <- ggplot(cor_melted, aes(Var1, Var2, fill = value)) +
  geom_tile(color = "grey90") +
  scale_fill_gradient2(
  low = "#2d5534",    # Verde oscuro para correlaciones negativas
  high = "#b1cf5f",   # Verde claro para correlaciones positivas  
  mid = "#f0f0f0",    # Gris muy claro para correlación cero
  midpoint = 0,
  limits = c(-1, 1),
  name = "Correlación"
) +
  theme_minimal(base_size = 14) +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1),
    axis.text.y = element_text(size = 12), 
    panel.grid = element_blank()
  ) +
  labs(
    title = "Figura 1.Matriz de Correlaciones",
    x = "",
    y = ""
  )

print(p1)

Se observa que variables como la expectativa de vida y la supervivencia hasta los 65 años muestran correlaciones negativas elevadas con las tasas de mortalidad (general, infantil, neonatal) y las tasas de mortalidad por causas específicas (por ejemplo, enfermedades cardiovasculares, accidentes de tráfico y suicidios). Esto indica que, en los países donde la esperanza de vida y la supervivencia a edades avanzadas son más altas, las tasas de mortalidad, tanto general como por causas específicas, tienden a ser menores.

Por otra parte, los datos muestran que los lugares con más contaminación del aire suelen tener también tasas más altas de muertes por distintas enfermedades. Es decir, vivir en ambientes más contaminados suele estar asociado a una mayor probabilidad de fallecer a causa de problemas de salud diversos, como enfermedades respiratorias y cardiovasculares.

Asimismo, las diferentes tasas de mortalidad por causas prevenibles (como accidentes, suicidios y envenenamientos accidentales) presentan correlaciones positivas entre sí. Esto sugiere la existencia de factores sociales que tengan relación en estas causas de muerte y que podrían estar reflejando una dimensión de mortalidad evitable.

Scree Plot

El scree plot es un gráfico fundamental en el análisis de componentes principales (ACP), cuya función principal es mostrar la proporción de varianza total explicada por cada componente extraído a partir de los datos originales.

p2 <- fviz_eig(res.pca, 
         addlabels = TRUE,
         barfill = "#488B49",
         barcolor = "#488B49",
         linecolor = "#FF6B35",
         choice = "variance",  # Mostrar varianza en lugar de eigenvalues
         geom = "bar",         # Usar barras en lugar de líneas
         main = "Figura 2.Análisis de componentes principales - Scree Plot",
         xlab = "Número de Componente Principal",
         ylab = "Porcentaje de Varianza Explicada",
         ggtheme = theme_minimal())
print(p2)

A medida que se incorporan más componentes principales, el porcentaje adicional de varianza explicada disminuye notablemente, observándose el clásico “codo” del scree plot después de los primeros componentes. Por ejemplo, el primer componente puede explicar alrededor del 62% de la variabilidad de los datos; el segundo y el tercero suman una proporción mucho menor pero aún relevante, y a partir del cuarto componente la ganancia marginal es reducida.

Esto respalda la decisión metodológica de conservar únicamente los tres primeros componentes, ya que juntos encapsulan la mayor parte de la estructura y los patrones subyacentes de los datos. representando un 82,3% de la varianza.

Grafico de Individuos

A continuación se presenta el plano factorial del Análisis de Componentes Principales que resume los patrones de mortalidad de 182 países en sus dos dimensiones más significativas. Los resultados se presentan en la figura 3.

nombres_cortos_var <- c(
  "Expectativa_de_vida_mujer" = "Exp Vida Mujer",
  "Expectativa_de_vida_hombres" = "Exp Vida Hombre",
  "Accidentes_de_transito" = "Accidentes Tránsito",
  "Enfermedades_cardiacas_cancer_diabetes_mujeres" = "Enf Crónicas Mujer",
  "Enfermedades_cardiacas_cancer_diabetes_hombres" = "Enf Crónicas Hombre",
  "Polucion_del_aire_mujeres" = "Polución Aire Mujer", 
  "Polucion_del_aire_hombres" = "Polución Aire Hombre",
  "Envenenamiento_accidental_mujeres" = "Envenenamiento Mujer",
  "Envenenamiento_accidental_hombres" = "Envenenamiento Hombre",
  "Tasa_de_mortalidad_mujeres_adultas" = "Mort Adulta Mujer",
  "Tasa_de_mortalidad_hombres_adultos" = "Mort Adulta Hombre",
  "Tasa_de_mortalidad_infantil_mujeres" = "Mort Infantil Mujer",
  "Tasa_de_mortalidad_infantil_varones" = "Mort Infantil Hombre",
  "Tasa_de_mortalidad_neonatal" = "Mort Neonatal",
  "Tasa_de_mortalidad_infantil_temprana_mujeres" = "Mort Temprana Mujer",
  "Tasa_de_mortalidad_infantil_temprana_hombres" = "Mort Temprana Hombre",
  "Numero_de_muertes_infantiles" = "Muertes Infantiles",
  "Numero_de_muertes_neonatales" = "Muertes Neonatales",
  "Tasa_de_suicidios_mujeres" = "Suicidios Mujer",
  "Tasa_de_suicidios_hombres" = "Suicidios Hombre",
  "Supervivencia_hasta_los_65_anos_mujeres" = "Superv 65 Mujer",
  "Supervivencia_hasta_los_65_anos_hombres" = "Superv 65 Hombre"
)
var_coord <- res.pca$rotation
# Calcular eigenvalues y porcentajes de varianza
eigenvalues <- res.pca$sdev^2
total_variance <- sum(eigenvalues)
percent_pc1 <- round((eigenvalues[1] / total_variance) * 100, 1)
percent_pc2 <- round((eigenvalues[2] / total_variance) * 100, 1)
percent_pc3 <- round((eigenvalues[3] / total_variance) * 100, 1)

# Contribución para el gráfico PC1 vs PC2
contrib_12_PC1 <- (var_coord[,1]^2 * eigenvalues[1]) / (eigenvalues[1] + eigenvalues[2]) * 100
contrib_12_PC2 <- (var_coord[,2]^2 * eigenvalues[2]) / (eigenvalues[1] + eigenvalues[2]) * 100
contrib_12_total <- contrib_12_PC1 + contrib_12_PC2

# Contribución para el gráfico PC1 vs PC3
contrib_13_PC1 <- (var_coord[,1]^2 * eigenvalues[1]) / (eigenvalues[1] + eigenvalues[3]) * 100
contrib_13_PC3 <- (var_coord[,3]^2 * eigenvalues[3]) / (eigenvalues[1] + eigenvalues[3]) * 100
contrib_13_total <- contrib_13_PC1 + contrib_13_PC3

# Calcular cos2 (calidad de representación)
cos2_total <- rowSums(var_coord^2)
cos2_PC1_PC2 <- (var_coord[,1]^2 + var_coord[,2]^2) / cos2_total
cos2_PC1_PC3 <- (var_coord[,1]^2 + var_coord[,3]^2) / cos2_total

# Preparar dataframe con los datos CORRECTOS
df_var_plot <- data.frame(
  Variable = rownames(var_coord),
  PC1 = var_coord[,1],
  PC2 = var_coord[,2],
  PC3 = var_coord[,3],
  Contrib_12 = contrib_12_total,  # Contribución para gráfico PC1-PC2
  Contrib_13 = contrib_13_total,  # Contribución para gráfico PC1-PC3
  Cos2_PC1_PC2 = cos2_PC1_PC2,
  Cos2_PC1_PC3 = cos2_PC1_PC3
)

# Aplicar nombres cortos
df_var_plot$Variable_corto <- nombres_cortos_var[df_var_plot$Variable]

# Si no hay nombres cortos, usar los originales
df_var_plot$Variable_corto[is.na(df_var_plot$Variable_corto)] <- 
  df_var_plot$Variable[is.na(df_var_plot$Variable_corto)]
library(factoextra)
library(plotly)

pca_data <- get_pca_ind(res.pca)

df <- data.frame(
  País = rownames(pca_data$coord),
  PC1 = pca_data$coord[,1],
  PC2 = pca_data$coord[,2]
)

if(!is.null(pca_data$cos2)) {
  df$Cos2 <- rowSums(pca_data$cos2[,1:2])
} else {

  df$Cos2 <- (df$PC1^2 + df$PC2^2) / rowSums(pca_data$coord^2)
}


if(inherits(res.pca, "PCA")) {
 
  percent_pc1 <- round(res.pca$eig[1,2], 1)
  percent_pc2 <- round(res.pca$eig[2,2], 1)
} else {
 
  eigenvalues <- res.pca$sdev^2
  total_variance <- sum(eigenvalues)
  percent_pc1 <- round((eigenvalues[1] / total_variance) * 100, 1)
  percent_pc2 <- round((eigenvalues[2] / total_variance) * 100, 1)
}

# Gráfico 2D interactivo
p3 <- plot_ly(df, x = ~PC1, y = ~PC2,
              type = 'scatter',
              mode = 'markers',
              marker = list(
                size = 8,
                color = ~Cos2,
                colorscale = list(
                  c(0, "#00AFBB"),
                  c(0.5, "#E7B800"),
                  c(1, "#FC4E07")
                ),
                showscale = TRUE,
                colorbar = list(title = "cos2"),
                opacity = 0.8,
                line = list(
                  width = 1,
                  color = 'darkgray'
                )
              ),
              text = ~paste('<b>País:</b>', País,
                            '<br><b>PC1:</b>', round(PC1, 3),
                            '<br><b>PC2:</b>', round(PC2, 3),
                            '<br><b>Calidad:</b>', round(Cos2, 3)),
              hoverinfo = 'text',
              hoverlabel = list(
                bgcolor = "white",
                bordercolor = "black",
                font = list(color = "black", size = 12)
              )
) %>%
  layout(
    title = list(
      text = "Análisis PCA - 182 Países (PC1 vs PC2)",
      font = list(size = 16)
    ),
    xaxis = list(
      title = paste0("PC1 (", percent_pc1, "%)"),
      gridcolor = "lightgray",
      zeroline = TRUE,
      zerolinecolor = "black",
      zerolinewidth = 1
    ),
    yaxis = list(
      title = paste0("PC2 (", percent_pc2, "%)"),
      gridcolor = "lightgray",
      zeroline = TRUE,
      zerolinecolor = "black",
      zerolinewidth = 1
    ),
    plot_bgcolor = "white",
    paper_bgcolor = "white",
    margin = list(l = 50, r = 50, b = 50, t = 50),
    showlegend = FALSE
  )
p3

La gráfica biplot del PCA resume, en dos ejes principales, cómo se distribuyen y comparan 182 países según sus perfiles de salud y mortalidad. El eje horizontal distingue países con buena calidad sanitaria y baja mortalidad de aquellos con problemas graves de salud pública y altas muertes prevenibles. El eje vertical separa países según si la mortalidad afecta más a jóvenes o a adultos por enfermedades crónicas. Los colores muestran qué tan bien queda representado cada país en esta proyección.

plot_var_12_interactive <- plot_ly() %>%
  # Círculo de correlación
  add_trace(
    type = "scatter",
    x = cos(seq(0, 2*pi, length.out = 100)),
    y = sin(seq(0, 2*pi, length.out = 100)),
    mode = "lines",
    line = list(color = "#2E7D32", dash = "dash", width = 2),
    hoverinfo = "none",
    showlegend = FALSE,
    name = "Círculo unidad"
  ) %>%
  # Flechas de variables
  add_annotations(
    data = df_var_plot,
    x = ~PC1,
    y = ~PC2,
    ax = 0,
    ay = 0,
    text = "",
    showarrow = TRUE,
    arrowhead = 2,
    arrowsize = 1,
    arrowwidth = 2.5,
    arrowcolor = ~ifelse(Contrib_12 > 8, "#FC4E07", 
                         ifelse(Contrib_12 > 5, "#E7B800", "#00AFBB")),
    opacity = 0.85
  ) %>%
  # Puntos de las variables
  add_trace(
    data = df_var_plot,
    x = ~PC1,
    y = ~PC2,
    type = "scatter",
    mode = "markers+text",
    marker = list(
      size = 12,
      color = ~Contrib_12,
      colorscale = list(
        c(0, "#00AFBB"),
        c(0.5, "#E7B800"),
        c(1, "#FC4E07")
      ),
      showscale = TRUE,
      colorbar = list(
        title = "Contribución<br>(%)",
        thickness = 15,
        len = 0.6,
        x = 1.02
      ),
      line = list(color = "white", width = 2)
    ),
    text = ~Variable_corto,
    textposition = "top center",
    textfont = list(size = 10, color = "black", family = "Arial"),
    hovertext = ~paste(
      "<b>Variable:</b>", Variable_corto,
      "<br><b>PC1:</b>", round(PC1, 3),
      "<br><b>PC2:</b>", round(PC2, 3),
      "<br><b>Contribución Total:</b>", round(Contrib_12, 2), "%",
      "<br><b>Calidad (cos²):</b>", round(Cos2_PC1_PC2, 3)
    ),
    hoverinfo = "text",
    showlegend = FALSE
  ) %>%
  layout(
    title = list(
      text = "<b>Círculo de Correlaciones - Variables PCA</b><br><sup>Dimensión 1 vs Dimensión 2</sup>",
      x = 0.5,
      font = list(size = 18, family = "Arial", color = "#2E7D32")
    ),
    xaxis = list(
      title = paste0("<b>Dim 1 (", percent_pc1, "%)</b>"),
      range = c(-1.15, 1.15),
      gridcolor = "lightgray",
      zeroline = TRUE,
      zerolinecolor = "gray50",
      zerolinewidth = 1.5,
      titlefont = list(size = 14)
    ),
    yaxis = list(
      title = paste0("<b>Dim 2 (", percent_pc2, "%)</b>"),
      range = c(-1.15, 1.15),
      gridcolor = "lightgray",
      zeroline = TRUE,
      zerolinecolor = "gray50",
      zerolinewidth = 1.5,
      scaleanchor = "x",
      titlefont = list(size = 14)
    ),
    plot_bgcolor = "white",
    paper_bgcolor = "white",
    font = list(family = "Arial"),
    hoverlabel = list(
      bgcolor = "white",
      bordercolor = "black",
      font = list(family = "Arial", size = 12)
    ),
    margin = list(l = 80, r = 120, b = 80, t = 100)
  )

plot_var_12_interactive

Este gráfico visualiza la correlación de cada variable original con las dos primeras dimensiones principales. Cada punto representa una variable y su posición indica qué tanto contribuye a la separación de países en función de Dim1 (62.3%) y Dim2 (11.6%).

Cuadrante 1:

Este cuadrante concentra las variables de longevidad. Los países que puntúan alto en Dim1 y Dim2 positivas tienen excelentes indicadores de esperanza de vida y supervivencia hasta edades avanzadas. Estas variables están fuertemente correlacionadas entre sí (vectores muy cercanos).

Cuadrante 2:

Este cuadrante agrupa factores de mortalidad infantil, neonatal y temprana, junto con riesgos ambientales (polución) y accidentes de tránsito. Representa países con alta carga de mortalidad prevenible, especialmente en etapas tempranas de la vida y por factores externos. La presencia de polución del aire sugiere que los problemas ambientales contribuyen significativamente a estos perfiles de mortalidad.

Cuadrante 3:

Este cuadrante captura un perfil de mortalidad adulta por enfermedades crónicas no transmisibles, suicidios y envenenamientos. Representa países con alta carga de enfermedades del desarrollo (cardiovasculares, cáncer, diabetes) y problemas de salud mental. Es interesante que los suicidios y las enfermedades crónicas compartan este espacio, sugiriendo una posible relación entre desarrollo económico, transición epidemiológica y salud mental.

Cuadrante 4:

Este cuadrante permanece prácticamente vacío, lo que indica que no existe un perfil de países con alta longevidad (Dim1+) que simultáneamente presentan valores negativos en Dim2. La proximidad de expectativa de vida mujer al borde sugiere que las mujeres pueden tener ligeras ventajas en longevidad incluso en contextos con ciertas presiones de mortalidad específicas.

Correlaciones clave:

Relaciones muy positivas:

La expectativa de vida, tanto en hombres como en mujeres, se mueve casi en la misma dirección que la supervivencia a los 65 años; sus vectores quedan prácticamente juntos en el mismo cuadrante. También pasa algo similar con las tasas de suicidio en hombres y mujeres: están muy cerca, aunque no totalmente superpuestas.

Relaciones muy negativas:

La expectativa de vida va en dirección contraria a las enfermedades crónicas, ubicándose en cuadrantes opuestos (1 y 3). Lo mismo ocurre con la mortalidad infantil y neonatal, que queda del lado contrario a la expectativa de vida (cuadrantes 1 y 2). Y por último, la supervivencia a los 65 años también se opone a la mortalidad adulta y a las enfermedades crónicas.

plot_var_13_interactive <- plot_ly() %>%
  add_trace(
    type = "scatter",
    x = cos(seq(0, 2*pi, length.out = 100)),
    y = sin(seq(0, 2*pi, length.out = 100)),
    mode = "lines",
    line = list(color = "#1565C0", dash = "dash", width = 2),
    hoverinfo = "none",
    showlegend = FALSE,
    name = "Círculo unidad"
  ) %>%
  add_annotations(
    data = df_var_plot,
    x = ~PC1,
    y = ~PC3,
    ax = 0,
    ay = 0,
    text = "",
    showarrow = TRUE,
    arrowhead = 2,
    arrowsize = 1,
    arrowwidth = 2.5,
    arrowcolor = ~ifelse(Contrib_13 > 8, "#FC4E07", 
                         ifelse(Contrib_13 > 5, "#E7B800", "#00AFBB")),
    opacity = 0.85
  ) %>%
  add_trace(
    data = df_var_plot,
    x = ~PC1,
    y = ~PC3,
    type = "scatter",
    mode = "markers+text",
    marker = list(
      size = 12,
      color = ~Contrib_13,
      colorscale = list(
        c(0, "#00AFBB"),
        c(0.5, "#E7B800"),
        c(1, "#FC4E07")
      ),
      showscale = TRUE,
      colorbar = list(
        title = "Contribución<br>(%)",
        thickness = 15,
        len = 0.6,
        x = 1.02
      ),
      line = list(color = "white", width = 2)
    ),
    text = ~Variable_corto,
    textposition = "top center",
    textfont = list(size = 10, color = "black", family = "Arial"),
    hovertext = ~paste(
      "<b>Variable:</b>", Variable_corto,
      "<br><b>PC1:</b>", round(PC1, 3),
      "<br><b>PC3:</b>", round(PC3, 3),
      "<br><b>Contribución Total:</b>", round(Contrib_13, 2), "%",
      "<br><b>Calidad (cos²):</b>", round(Cos2_PC1_PC3, 3)
    ),
    hoverinfo = "text",
    showlegend = FALSE
  ) %>%
  layout(
    title = list(
      text = "<b>Círculo de Correlaciones - Variables PCA</b><br><sup>Dimensión 1 vs Dimensión 3</sup>",
      x = 0.5,
      font = list(size = 18, family = "Arial", color = "#1565C0")
    ),
    xaxis = list(
      title = paste0("<b>Dim 1 (", percent_pc1, "%)</b>"),
      range = c(-1.15, 1.15),
      gridcolor = "lightgray",
      zeroline = TRUE,
      zerolinecolor = "gray50",
      zerolinewidth = 1.5,
      titlefont = list(size = 14)
    ),
    yaxis = list(
      title = paste0("<b>Dim 3 (", percent_pc3, "%)</b>"),
      range = c(-1.15, 1.15),
      gridcolor = "lightgray",
      zeroline = TRUE,
      zerolinecolor = "gray50",
      zerolinewidth = 1.5,
      scaleanchor = "x",
      titlefont = list(size = 14)
    ),
    plot_bgcolor = "white",
    paper_bgcolor = "white",
    font = list(family = "Arial"),
    hoverlabel = list(
      bgcolor = "white",
      bordercolor = "black",
      font = list(family = "Arial", size = 12)
    ),
    margin = list(l = 80, r = 120, b = 80, t = 100)
  )

plot_var_13_interactive

Cuadrante 1: Este cuadrante mantiene las variables de longevidad, pero con coordenadas muy bajas en Dim3 (cerca del eje horizontal), lo que indica que Dim3 no diferencia significativamente entre países con alta o baja expectativa de vida. La presencia de suicidios masculinos aquí, también cercana a cero en Dim1, sugiere que esta variable no está fuertemente asociada con la primera dimensión, sino principalmente con Dim1 solo que en esta comparación es positiva.

Cuadrante 2: En este cuadrante las variables se separan en dos bloques muy visibles: por un lado, mortalidad infantil y muertes neonatales en números absolutos, que se alinean con Dim1 positivo y dependen del tamaño poblacional; y, por el otro, mortalidad neonatal en tasas, polución en hombres, enfermedades crónicas en hombres y envenenamientos, que caen hacia Dim1 negativo y Dim3 más bajo, mostrando problemas ligados a pobreza y ambiente más que al número de habitantes.

Cuadrante 3: Las variables de enfermedades crónicas en mujeres, polución del aire en mujeres, mortalidad adulta y mortalidad temprana aparecen agrupadas porque comparten valores negativos en Dim1 y casi nulos en Dim3, lo que indica que están relacionadas con condiciones sanitarias deficientes, sin depender del tamaño poblacional. La única que se separa un poco es accidentes de tránsito, que cae más hacia Dim3 negativo, pero aun así su contribución es menor frente al grupo principal.

Cuadrante 4: La ausencia de variables aquí confirma que no existe un perfil de países con alta longevidad (Dim1+) que simultáneamente presentan valores negativos en Dim3.

Definición de las Dimensiones del Análisis PCA en Indicadores de Mortalidad

eig.val <- get_eigenvalue(res.pca)
eig.val
res.var <- get_pca_var(res.pca)

head(res.var$coord)
head(res.var$contrib)
head(res.var$cos2)

colSums(res.var$contrib[,1:2])
res.ind <- get_pca_ind(res.pca)

head(res.ind$coord)
head(res.ind$contrib[,1:3])
head(res.ind$cos2)

Buscamos consolidar las interpretaciones de las tres primeras dimensiones principales del Análisis de Componentes Principales (ACP) realizado sobre los 22 indicadores de salud y mortalidad de países. Cada dimensión captura un aspecto diferente de la estructura de la mortalidad global, revelando los principales gradientes que diferencian a los países según sus perfiles epidemiológicos y demográficos:

Dimensión 1 (Dim1): Calidad de Salud - 62.3% de Varianza Explicada:

Representa el principal gradiente de desarrollo sanitario e indicadores de esperanza de vida de los países. Esta dimensión opone de manera continua los países con excelentes indicadores de longevidad y baja mortalidad prevenible (valores positivos altos en Dim1) en contraste con países con sistemas de salud frágiles, alta mortalidad infantil y múltiples causas de muerte evitable (valores negativos en Dim1).

top5_pc1 <- res.ind$contrib[,1, drop = FALSE] %>%
  as.data.frame() %>%
  arrange(desc(.[,1])) %>%
  head(5) %>%
  rename("Contribución (%)" = 1) %>%
  mutate(País = rownames(.)) %>%
  select(País, "Contribución (%)") %>%
  mutate("Contribución (%)" = round(`Contribución (%)`, 3))

top5_pc1 %>%
  kbl(align = c('l', 'c'),
      caption = "Top 5 Países por Contribución al Componente Principal 1 (PC1)") %>%
  kable_classic(full_width = FALSE, 
                html_font = "Cambria",
                font_size = 14) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#488B49") %>%
  row_spec(1:5, background = "#F8F9FA") %>%
  column_spec(1, bold = TRUE) %>%
  column_spec(2, width = "3cm") %>%
  footnote(general = "La contribución representa el porcentaje de varianza explicado por cada país en el primer componente principal.",
           general_title = "Nota:")
Top 5 Países por Contribución al Componente Principal 1 (PC1)
País Contribución (%)
Central African Republic Central African Republic 11.470
Lesoto Lesoto 3.671
Somalia Somalia 2.742
Chad Chad 2.504
Nigeria Nigeria 2.492
Nota:
La contribución representa el porcentaje de varianza explicado por cada país en el primer componente principal.

Esto se puede confirmar mirando los países con mayor contribución a esta dimensión; República Centroafricana (11.470%) lidera las contribuciones a PC1, seguida por Lesoto (3.671%), Somalia (3.742%), Chad (2.504%) y Nigeria (2.492%). Este patrón confirma plenamente la interpretación de PC1 como gradiente de desarrollo sanitario.

Estos países representan algunos de los sistemas de salud más frágiles del mundo y enfrentan crisis humanitarias prolongadas, conflictos armados, infraestructura sanitaria precaria y altas tasas de mortalidad evitable. La República Centroafricana, con más del 11% de contribución, ejemplifica el extremo de vulnerabilidad sanitaria: esperanza de vida extremadamente baja, mortalidad infantil y neonatal elevadas, y alta prevalencia de enfermedades infecciosas y parasitarias. La presencia de estos países en el extremo negativo de PC1 contrasta con naciones desarrolladas (valores positivos) que tienen sistemas universales de salud, baja mortalidad prevenible y alta esperanza de vida.

Dimensión 2 (Dim2): Edad de Mortalidad - 11.6% de Varianza Explicada

En la segunda dimensión se representa el principal gradiente epidemiológico el cual distingue entre diferentes perfiles de mortalidad prematura. Contrasta dos etapas características de la transición epidemiológica: la mortalidad temprana y por factores ambientales (característica de países en desarrollo temprano) versus la mortalidad adulta por enfermedades crónicas no transmisibles y problemas de salud mental (característica de países con mayor desarrollo).

top5_pc2 <- res.ind$contrib[,2, drop = FALSE] %>%
  as.data.frame() %>%
  arrange(desc(.[,1])) %>%
  head(5) %>%
  rename("Contribución (%)" = 1) %>%
  mutate(País = rownames(.)) %>%
  select(País, "Contribución (%)") %>%
  mutate("Contribución (%)" = round(`Contribución (%)`, 3))

top5_pc2 %>%
  kbl(align = c('l', 'c'),
      caption = "Top 5 Países por Contribución al Componente Principal 2 (PC2)") %>%
  kable_classic(full_width = FALSE, 
                html_font = "Cambria",
                font_size = 14) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#488B49") %>%
  row_spec(1:5, background = "#F8F9FA") %>%
  column_spec(1, bold = TRUE) %>%
  column_spec(2, width = "3cm") %>%
  footnote(general = "La contribución representa el porcentaje de varianza explicado por cada país en el segundo componente principal.",
           general_title = "Nota:")
Top 5 Países por Contribución al Componente Principal 2 (PC2)
País Contribución (%)
Lesoto Lesoto 7.398
Rusia Rusia 5.661
Nigeria Nigeria 5.621
Eswatini Eswatini 4.978
India India 4.747
Nota:
La contribución representa el porcentaje de varianza explicado por cada país en el segundo componente principal.

Lesoto (7.398%) domina la contribución a PC2, seguido por Rusia (5.661%), Nigeria (5.621%), Eswatini (4.978%) e India (4.747%). Esta combinación de países es particularmente reveladora de la dualidad epidemiológica que captura esta dimensión.

Por un lado, Lesotho y Eswatini (países del sur de África) presentan perfiles de mortalidad temprana dominados por VIH/SIDA, tuberculosis y mortalidad materno-infantil elevada, característicos de sistemas sanitarios con recursos limitados y alta carga de enfermedades infecciosas. Por otro lado, Rusia representa un perfil epidemiológico radicalmente diferente: mortalidad adulta prematura por enfermedades cardiovasculares, alcoholismo, suicidios y violencia.

Dimensión 3 (Dim3): Escala Poblacional - Varianza Menor peso Estructural

La Dim3 captura cómo el hecho de tener una población grande o pequeña afecta la interpretación de ciertos indicadores dando mayor peso a variables absolutas como muertes neonatales y señala la necesidad de considerar el tipo de medida (total versus tasa) al comparar diferentes países. La contribución principal la tienen los números absolutos (especialmente “Muertes Neonatales”), mientras que los valores negativos marcan dinámicas contrarias, como en accidentes de tránsito.

top5_pc3 <- res.ind$contrib[,3, drop = FALSE] %>%
  as.data.frame() %>%
  arrange(desc(.[,1])) %>%
  head(5) %>%
  rename("Contribución (%)" = 1) %>%
  mutate(País = rownames(.)) %>%
  select(País, "Contribución (%)") %>%
  mutate("Contribución (%)" = round(`Contribución (%)`, 3))


top5_pc3 %>%
  kbl(align = c('l', 'c'),
      caption = "Top 5 Países por Contribución al Componente Principal 3 (PC3)") %>%
  kable_classic(full_width = FALSE, 
                html_font = "Cambria",
                font_size = 14) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#488B49") %>%
  row_spec(1:5, background = "#F8F9FA") %>%
  column_spec(1, bold = TRUE) %>%
  column_spec(2, width = "3cm") %>%
  footnote(general = "La contribución representa el porcentaje de varianza explicado por cada país en el tercer componente principal.",
           general_title = "Nota:")
Top 5 Países por Contribución al Componente Principal 3 (PC3)
País Contribución (%)
India India 51.160
Pakistan Pakistan 10.416
Nigeria Nigeria 9.727
Corea del Sur Corea del Sur 1.512
Congo, Dem. Rep.  Congo, Dem. Rep.  1.143
Nota:
La contribución representa el porcentaje de varianza explicado por cada país en el tercer componente principal.

India (51.160%) domina abrumadoramente PC3, seguida a considerable distancia por Pakistán (10.416%), Nigeria (9.727%), Corea del Sur (1.512%) y República Democrática del Congo (1.143%). Esta distribución confirma de manera contundente la interpretación de PC3 como dimensión de escala poblacional.

India, con más del 51% de contribución y una población superior a 1,400 millones de habitantes, naturalmente registra números absolutos masivos en indicadores como muertes neonatales, muertes por enfermedades respiratorias, cardiovasculares y otras causas, independientemente de sus tasas per cápita. Pakistán y Nigeria, también países de gran población (220+ millones y 220+ millones respectivamente), contribuyen significativamente por la misma razón.

Análisis de Dimensiones en Indicadores de Salud Pública
Dimensión Nombre Simplificado Lo que Mide Varianza Variable Más Importante
Dim1 Calidad de Salud Desarrollo sanitario: esperanza de vida y mortalidad prevenible 62.3% Esperanza de vida (+) Mortalidad infantil (-)
Dim2 Edad de Mortalidad Mortalidad temprana versus adulta 11.6% Mortalidad temprana (+) Enfermedades crónicas (-)
Dim3 Escala Poblacional Efecto del tamaño poblacional en números absolutos de muertes Pequeña Muertes Neonatales (números absolutos)
Nota:
Análisis de componentes principales aplicado a indicadores de salud global. Los signos (+) y (-) indican la dirección de la correlación.

5.2

:::

Conclusiones

Resumen de los hallazgos y recomendaciones…

Bibliografía

Banco Mundial. (2023). World Development Indicators 2023. Recuperado de https://databank.worldbank.org/source/world-development-indicators

Bloom, D. E., Canning, D., & Sevilla, J. (2004). The effect of health on economic growth: A production function approach. World Development, 32(1), 1–13.

Everitt, B. S., Landau, S., Leese, M., & Stahl, D. (2011). Cluster analysis (5th ed.). Wiley-Blackwell.

GBD 2019 Diseases and Injuries Collaborators. (2020). Global burden of 369 diseases and injuries in 204 countries and territories, 1990–2019: A systematic analysis for the Global Burden of Disease Study 2019. The Lancet, 396(10258), 1204–1222.

Hair, J. F., Black, W. C., Babin, B. J., & Anderson, R. E. (2010). Multivariate data analysis (7th ed.). Pearson.

Hastie, T., Tibshirani, R., & Friedman, J. (2009). The elements of statistical learning: Data mining, inference, and prediction (2nd ed.). Springer-Verlag.

Jolliffe, I. T. (2002). Principal component analysis (2nd ed.). Springer-Verlag.

Kaufman, L., & Rousseeuw, P. J. (1990). Finding groups in data: An introduction to cluster analysis. Wiley.

Lozano, R., Naghavi, M., Foreman, K., Lim, S., Shibuya, K., Aboyans, V., … & Murray, C. J. (2012). Global and regional mortality from 235 causes of death for 20 age groups in 1990 and 2010: A systematic analysis for the Global Burden of Disease Study 2010. The Lancet, 380(9859), 2095–2128.

Omran, A. R. (1971). The epidemiologic transition: A theory of the epidemiology of population change. The Milbank Quarterly, 49(4), 509–538.

Organización Mundial de la Salud. (2021). World health statistics 2021: Monitoring health for the SDGs, sustainable development goals. WHO.

Provost, F., & Fawcett, T. (2013). Data science for business: What you need to know about data mining and data-analytic thinking. O’Reilly Media.

Rajaratnam, J. K., Marcus, J. R., Flaxman, A. D., Wang, H., Levin-Rector, A., Dwyer, L., … & Murray, C. J. (2010). Neonatal, postneonatal, childhood, and under-5 mortality for 187 countries, 1970–2010: A systematic analysis of progress towards Millennium Development Goal 4. The Lancet, 375(9730), 1988–2008.

Rousseeuw, P. J. (1987). Silhouettes: A graphical aid to the interpretation and validation of cluster analysis. Journal of Computational and Applied Mathematics, 20, 53–65.

Ward, J. H. (1963). Hierarchical grouping to optimize an objective function. Journal of the American Statistical Association, 58(301), 236–244.

Wold, S., Esbensen, K., & Geladi, P. (1987). Principal component analysis. Chemometrics and Intelligent Laboratory Systems, 2(1-3), 37–52.

::::::::::::::

::::::::::::::::::

:::::::::::::::::

:::::::::::::::::: :::::::: ::::::::::::: ::::::::::::::::