Esperanza de Vida por Grupo
Media período · selección vs global
Evolución Esperanza de Vida
Tendencia temporal · selección vs global (gris)
Correlaciones con LE
Pearson · selección activa
Preston Curve · LE vs log(GDP)
Log-lineal · selección destacada vs global gris
Brecha de Eficiencia
Años sobre/bajo predicción por GDP
Esperanza de Vida
GDP per Cápita
Tasa Pobreza (%)
Gasto Salud % GDP
Vacunación (%)
HIV/AIDS (por 100k)
Tasa Suicidio
Tasa Homicidio
Cáncer (por 100k)
Correlaciones con LE por Nivel de Desarrollo
Pearson · panel TFM · cada grupo por separado
Evolución de la Brecha 2000–2019
Diferencia LE media Desarrollados vs En Desarrollo
Distribución LE por Grupo (promedios por país)
Dispersión interna · cada punto = un país
Preston Curve: 2000 vs 2019
Desplazamiento de la curva en 20 años · log(GDP)
Desarrollados
Emergentes
En Desarrollo
Global
LE vs GDP · Preston Curve · log-lineal
LE vs Gasto Salud % GDP
LE vs Pobreza
LE vs Vacunación
LE vs VIH/SIDA
LE vs Homicidio
LE vs Cáncer
LE vs Mortalidad Neonatal
LE vs Suicidio
Desviación vs Potencial por GDP
Verde = por encima · Rojo = por debajo de predicción
Ranking Eficiencia
Indicador:
Tendencia por Región
Recalculado desde datos de países · + media global (gris)
Comparativa Regional
Media del período · línea global de referencia
Mejora LE 2000→2019 por Región
Años ganados · datos filtrados vs mejora global
Ficha país:
independiente de filtros · vs global (gris) · vs grupo (punteado color)
Esperanza de Vida
GDP per Cápita
Gasto Salud % GDP
Vacunación
Tasa Suicidio
Perfil normalizado
0 = mín global · 1 = máx global · punteado = media grupo · gris = global
Posición relativa · Percentil vs todos los países
Ranking en cada métrica — 100 = mejor posición posible
Nota: Datos embebidos en
const D={...}. Una sola línea conecta a API: const D = await fetch('/api/health').then(r=>r.json()). Frontend sin cambios.Pipeline de Datos — Arquitectura Empresarial
Fuentes
Our World in Data
WHO · World Bank
UNODC · Penn Tables
WHO · World Bank
UNODC · Penn Tables
→
ETL · Python
pandas · numpy
scikit-learn
jupyter
scikit-learn
jupyter
→
Data Store
BigQuery · Postgres
Parquet · dbt
scheduled refresh
Parquet · dbt
scheduled refresh
→
API
FastAPI · Flask
REST endpoints
/api/health?filters
REST endpoints
/api/health?filters
→
Dashboard
Chart.js · HTML5
filtros contextuales
sin dependencias
filtros contextuales
sin dependencias
Capa de datos
Actualmente:
En producción:
Todo el frontend — filtros, recálculos, visualizaciones — funciona igual sin refactorizar.
const D = {...} embebido.En producción:
const D = await fetch('/api/health?y0=2000&y1=2019').then(r=>r.json())Todo el frontend — filtros, recálculos, visualizaciones — funciona igual sin refactorizar.
Decisiones técnicas
Chart.js 4.4 — Ligero, sin dependencias.
Recálculo en cliente — Pearson, medias y tendencias en tiempo real desde
Escalabilidad — Con >10k filas el recálculo migra al backend. El contrato JSON no cambia.
Recálculo en cliente — Pearson, medias y tendencias en tiempo real desde
country_ts (800 rows). Latencia <10ms.Escalabilidad — Con >10k filas el recálculo migra al backend. El contrato JSON no cambia.
Modelos aplicados · TFM
Preston Curve
Log-lineal LE ~ log(GDP). R² = 0.674. Base para efficiency_gap.
Gradient Boosting
R² = 0.987 en test. Variables: GDP, gasto, vacunación, pobreza.
DiD · Thailand
Diferencia en diferencias: Universal Coverage Scheme 2002. +1.6 años LE.
Manuel García Molledo · TFM · Nuclio Digital School · 2026 · Datos: Our World in Data · WHO · World Bank · UNODC · Penn World Tables