3.7.d Escenarios: dengue en un clima más cálido
Temperatura media proyectada (CMIP6) frente a la respuesta térmica de la transmisión
La relación entre temperatura y transmisión no es lineal: sube hasta un óptimo y cae cuando hace demasiado calor para el mosquito Mordecai et al., 2017. Por eso el calentamiento puede aumentar la aptitud para la transmisión en lugares frescos y reducirla en lugares que ya están cerca del óptimo. Esta página ubica a Leticia en esa curva con las proyecciones del ensamble CMIP6 del Banco Mundial.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from IPython.display import Markdown, display
from leticia import fuentes, salud, viz
from leticia.config import parametros
pdg = parametros()["dengue"]
semanal = fuentes.dengue_opendengue()
mensual = salud.casos_mensuales(semanal)1. Temperatura media mensual proyectada¶
tabla = fuentes.cckp_tabla(["tas"])
tas = tabla[tabla.variable == "tas"]
era = fuentes.clima_diario()
clim = era["temperature_2m_mean"].loc["1995":"2014"].groupby(lambda f: f.month).mean() # mismo periodo base que el CCKP
filas, meses_clase = [], {}
for (esc, per), g in tas.groupby(["escenario", "periodo"]):
d = g.set_index("percentil")["valor"]
futuro = clim + d["median"]
clase = salud.aptitud_termica(futuro, pdg["temperatura_limite_inferior"], tuple(pdg["rango_transmision_maxima"]), pdg["temperatura_limite_superior"])
filas.append({"escenario": viz.NOMBRE_ESC[esc], "periodo": per, "cambio (°C, mediana)": d["median"], "rango p10–p90": f"{d['p10']:+.1f} a {d['p90']:+.1f}",
"temperatura media anual (°C)": futuro.mean(), "meses en transmisión máxima": int((clase == "máxima transmisión").sum()),
"meses sobre el óptimo": int((clase == "sobre el óptimo").sum())})
meses_clase[(esc, per)] = futuro
base_clase = salud.aptitud_termica(clim, pdg["temperatura_limite_inferior"], tuple(pdg["rango_transmision_maxima"]), pdg["temperatura_limite_superior"])
filas.insert(0, {"escenario": "ERA5 1995–2014", "periodo": "base", "cambio (°C, mediana)": 0.0, "rango p10–p90": "",
"temperatura media anual (°C)": clim.mean(), "meses en transmisión máxima": int((base_clase == "máxima transmisión").sum()),
"meses sobre el óptimo": int((base_clase == "sobre el óptimo").sum())})
display(pd.DataFrame(filas).set_index(["escenario", "periodo"]).round(2))fig, ax = plt.subplots(figsize=(10.5, 3.8))
ax.axhspan(*pdg["rango_transmision_maxima"], color=viz.ROJO, alpha=0.12, label="transmisión máxima (26–29 °C)")
ax.axhline(pdg["temperatura_optima"], color=viz.ROJO, lw=1, ls="--", label="óptimo")
ax.plot(clim.index, clim, "k-o", lw=1.6, label="ERA5 1995–2014")
for esc in ("ssp126", "ssp245", "ssp585"):
ax.plot(clim.index, meses_clase[(esc, "2080-2099")], "-o", color=viz.ESCENARIOS[esc], lw=1.2, ms=3, label=f"{viz.NOMBRE_ESC[esc]} 2080–2099")
ax.set_xticks(range(1, 13)); ax.set_xticklabels(list("EFMAMJJASOND"))
ax.set_ylabel("temperatura media (°C)")
ax.set_title("Temperatura media mensual en Leticia: base y escenarios a fin de siglo")
ax.legend(fontsize=7.5, ncol=2)
fig.tight_layout()
Lectura. Con emisiones bajas o intermedias, la temperatura media de Leticia se mueve dentro del rango de transmisión máxima y se acerca al óptimo: más meses al año con condiciones térmicas muy favorables para el dengue. Con emisiones altas, hacia fin de siglo la temperatura media pasa por encima del óptimo todos los meses; según la curva de Mordecai et al., la transmisión dejaría de aumentar y empezaría a disminuir en los meses más cálidos, aunque seguiría lejos del límite superior de 34,6 °C. Es una lectura de aptitud térmica, no de casos: la urbanización, el almacenamiento de agua, la inmunidad y el control vectorial pesan tanto como el clima. El método delta aplica el cambio anual a todos los meses y no capta cambios en la estacionalidad.
- Mordecai, E. A., Cohen, J. M., Evans, M. V., Gudapati, P., Johnson, L. R., Lippi, C. A., & others. (2017). Detecting the impact of temperature on transmission of Zika, dengue, and chikungunya using mechanistic models. PLOS Neglected Tropical Diseases, 11(4), e0005568. 10.1371/journal.pntd.0005568