"# Epidemiólogos por un dia: simulando un brote de COVID-19 en una población\n",
"# Epidemiólogos por un día: simulando la evolución de una epidemia infecciosa \n",
"\n",
"El propósito de esta práctica es demostrar cómo podemos modelar la evolución de una epidemia infecciosa utilizando datos disponibles para COVID-19 en una población susceptible utilizando modelos epidemiológicos estándar. Los parámetros del modelo se toman de una literatura científica en rápida evolución que documenta el brote mundial de COVID-19.\n",
"\n",
...
...
@@ -43,7 +43,7 @@
"* **Infectada** La subpoblación que se ha vuelto infecciosa.\n",
"* **Recuperada** La subpoblación que se ha recuperado de la infección y que se supone que ya no es susceptible de contraer la enfermedad.\n",
"\n",
"Sin tener en cuenta los procesos demográficos de nacimiento y muerte por otras causas, y suponiendo una tasa de mortalidad insignificante debida a la enfermedad infecciosa en cuestión, la progresión de una epidemia puede modelarse mediante procesos de tasal\n",
"Sin tener en cuenta los procesos demográficos de nacimiento y muerte por otras causas, y suponiendo una tasa de mortalidad insignificante debida a la enfermedad infecciosa en cuestión, la progresión de una epidemia puede modelarse mediante procesos de tasa\n",
"Los parámetros principales de nuestro modelo son el número básico de reproducción $R0$ y los dias en los cuales una persona es infecciosa $\\tau_{infectividad}$. En el mundo real estos valores tiene su incertidumbre y un modelo realista debe incorporarlas. \n"
"Los parámetros principales de nuestro modelo son el número básico de reproducción $R0$ y los días en los cuales una persona es infecciosa $\\tau_{infectividad}$. En el mundo real estos valores tienen su incertidumbre y en un modelo realista deben incorporarse. \n"
]
},
{
...
...
@@ -278,15 +257,12 @@
"source": [
"### Incertidumbre en número básico de reproducción $R0$\n",
"\n",
"Podemos usar una distribución log-normal como la PDF que modela nuestro $R0$*\n",
", en este caso usaremos los siguientes parametros escogidos ad-hoc para este ejercicio:\n",
"\n",
"* [un artículo al respecto](https://storage.googleapis.com/plos-corpus-prod/10.1371/journal.pone.0238090/1/pone.0238090.pdf?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=wombat-sa%40plos-prod.iam.gserviceaccount.com%2F20210312%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20210312T124607Z&X-Goog-Expires=3600&X-Goog-SignedHeaders=host&X-Goog-Signature=462a1c0824f481effcd20a16384ba40e09281fe08a0c7b8dac72b11b17a14767fdecb9802b3c6132cf2168e09cbcaff2043cf82a2693bcb589ad9d24c3c46176be55aaa2b7ad434d9a63d3fc85a6bfb055063ebd58243c4fc3a7cb63a7a02b75c0563dd1396837e6e9eecadd4d0362b28457e62fef02c91a5e5f4cffb82e60d1932a17d50c0948fba32d7728c3821a6fa3df9307a66852f75672a4300364982c0c67fdc1bab4be874df97f194af527fa98385fd9704a2c82aa7c8f1dcec16d7e41625cfc9be3fad3e9c138c7147096a2268572e687e834263b4f58b12a7b82b9236f5f8e6b75df62efe2b6e5ad90fa9198f295b41425e9f7499fceb4162227f1)"
"Podemos usar una distribución log-normal como la PDF que modela nuestro $R0$ ([leer aquí más al respecto](https://storage.googleapis.com/plos-corpus-prod/10.1371/journal.pone.0238090/1/pone.0238090.pdf?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=wombat-sa%40plos-prod.iam.gserviceaccount.com%2F20210312%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20210312T124607Z&X-Goog-Expires=3600&X-Goog-SignedHeaders=host&X-Goog-Signature=462a1c0824f481effcd20a16384ba40e09281fe08a0c7b8dac72b11b17a14767fdecb9802b3c6132cf2168e09cbcaff2043cf82a2693bcb589ad9d24c3c46176be55aaa2b7ad434d9a63d3fc85a6bfb055063ebd58243c4fc3a7cb63a7a02b75c0563dd1396837e6e9eecadd4d0362b28457e62fef02c91a5e5f4cffb82e60d1932a17d50c0948fba32d7728c3821a6fa3df9307a66852f75672a4300364982c0c67fdc1bab4be874df97f194af527fa98385fd9704a2c82aa7c8f1dcec16d7e41625cfc9be3fad3e9c138c7147096a2268572e687e834263b4f58b12a7b82b9236f5f8e6b75df62efe2b6e5ad90fa9198f295b41425e9f7499fceb4162227f1)), en este caso usaremos los siguientes parámetros escogidos ad-hoc para este ejercicio:"
"### Incertidumbre en los dias de infectividad.\n",
"### Incertidumbre en los días de infectividad.\n",
"\n",
"Supongamos que lo dias que un individuo es contagioso está en el orden de 8.7 +/- 3 dias. Mas detalles sobre estudios en este tema [aqui](https://www.bdi.ox.ac.uk/news/the-timing-of-covid-19-transmission).\n",
"Supongamos que lo días que un individuo es contagioso está en el orden de 8.7 +/- 3 días. Mas detalles sobre estudios en este tema [aquí](https://www.bdi.ox.ac.uk/news/the-timing-of-covid-19-transmission).\n",
"\n",
"Por simplicidad, modelaremos esta incertidumbre con una distribución normal que refleje el rango de 8.7 +/- 3 dias.\n"
"Por simplicidad, modelaremos esta incertidumbre con una distribución normal que refleje el rango de 8.7 +/- 3 días.\n"
"- Incluir incertidumbres en el modelo, simular 1000 escenarios. \n",
"- Según este modelo: ¿cuantas personas estiman que se hayan contagiado en el dia 120 de la epidemia? Incluir intervalos de confianza del 95% en el resultado.\n",
"- Producir una figura del numero de personas infectadas como funcion de tiempo, la figura debe incluir intervalos de confianza (ejemplo de la figura esperada:https://medium.com/data-for-science/epidemic-modeling-103-adding-confidence-intervals-and-stochastic-effects-to-your-covid-19-models-be618b995d6b)\n"
"- Producir una figura del numero de personas infectadas como funcion de tiempo, la figura debe incluir intervalos de confianza ([ejemplo de la figura esperada](https://medium.com/data-for-science/epidemic-modeling-103-adding-confidence-intervals-and-stochastic-effects-to-your-covid-19-models-be618b995d6b)).\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Ejericio 2.\n",
"# Ejercicio 2\n",
"\n",
"- Ustedes son asesores cientificos de un gobierno que esta manejando la crisis del Covid19. El gobierno está evaluando implementar uno de estos dos escenarios:\n",
"Ustedes son asesores científicos de un gobierno que está manejando la crisis del Covid19. El gobierno está evaluando implementar uno de estos dos escenarios:\n",
" \n",
" - Un confinamiento que reduzca R0 a cerca de 1 (el comportamiento del R0 resultante se puede modelar con la distribución np.random.lognormal(-0.1, 0.15, 1000)).\n",
" - Una campaña de seguimiento y localización de casos que reduzca los dias en los que un individuo está en la calle contagioso a 3 +/- 1 dias. \n",
" \n",
"Simular ambos escenarios con sus debidas incertidumbres y basado en los resultados aconsejar al gobierno qué hacer. "
"1. Un confinamiento que reduzca R0 a cerca de 1.\n",
" \n",
"2. Una campaña de seguimiento y localización de casos que reduzca los días en los que un individuo está en la calle contagioso a 3 +/- 1 días. \n",
" \n",
"\n",
"- Simular ambos escenarios con sus debidas incertidumbres y basado en los resultados hacer una recomendación.\n",
" - *Nota*: El comportamiento del R0 resultante del escenario 1. se puede modelar con la distribución ```np.random.lognormal(-0.1, 0.15, 1000)```)\n",
"\n",
"\n",
"- Discutir las limitaciones de sus modelos, y qué tanta confianza tienen en la recomendación que han dado al gobierno. "
]
},
{
...
...
%% Cell type:markdown id: tags:
# Epidemiólogos por un dia: simulando un brote de COVID-19 en una población
# Epidemiólogos por un día: simulando la evolución de una epidemia infecciosa
El propósito de esta práctica es demostrar cómo podemos modelar la evolución de una epidemia infecciosa utilizando datos disponibles para COVID-19 en una población susceptible utilizando modelos epidemiológicos estándar. Los parámetros del modelo se toman de una literatura científica en rápida evolución que documenta el brote mundial de COVID-19.
*Este notebook está basado en [CBE30338](https://jckantor.github.io/CBE30338);
que puede encontrarse en [Github](https://github.com/jckantor/CBE30338.git). El material ha sido traducido y adaptado para esta práctica*
%% Cell type:markdown id: tags:
## Modelo SIR para una enfermedad infecciosa
%% Cell type:markdown id: tags:
El modelo SIR es un modelo compartimentado determinista para la propagación de una enfermedad infecciosa que describe fenómenos clave encontrados en epidemiología. En el modelo SIR, una población se divide en tres grupos que no se solapan y que corresponden a las fases de la enfermedad:
***Susceptible.** La subpoblación susceptible de adquirir la enfermedad. En el caso del SARS-CoV-2, se supone que todas las personas que no han adquirido previamente la enfermedad son susceptibles de infectarse.
***Infectada** La subpoblación que se ha vuelto infecciosa.
***Recuperada** La subpoblación que se ha recuperado de la infección y que se supone que ya no es susceptible de contraer la enfermedad.
Sin tener en cuenta los procesos demográficos de nacimiento y muerte por otras causas, y suponiendo una tasa de mortalidad insignificante debida a la enfermedad infecciosa en cuestión, la progresión de una epidemia puede modelarse mediante procesos de tasal
Sin tener en cuenta los procesos demográficos de nacimiento y muerte por otras causas, y suponiendo una tasa de mortalidad insignificante debida a la enfermedad infecciosa en cuestión, la progresión de una epidemia puede modelarse mediante procesos de tasa
$$\text{Susceptible}
\xrightarrow{\frac{\beta S I}{N}}
\text{Infectada}
\xrightarrow{\gamma I}
\text{Recuperada}$$
Los procesos se modelan de la siguiente manera.
* $\frac{\beta S I}{N}$ es la velocidad con la que la población susceptible se encuentra con la población infectada, dando lugar a la transmisión de la enfermedad. $S$ es el tamaño de la población susceptible. $\beta$ es un parámetro del modelo con unidades de 1/día.
* $\gamma I$ es la velocidad a la que la población infectada se recupera y se hace resistente a nuevas infecciones. $I$ es el tamaño de la población infectada.
Un modelo de propagación de una enfermedad infecciosa en una población uniforme viene dado por las ecuaciones deterministas SIR
\begin{align*}
\frac{dS}{dt} & = -\frac{\beta S I}{N} \\
\frac{dI}{dt} & = \frac{\beta S I}{N} - \gamma I \\
\frac{dR}{dt} & = \gamma I
\end{align*}
El modelo se vuelve más genérico al trabajar con fracciones de población en lugar de con recuentos brutos de población. Para ello, definimos
\begin{align}
s = \frac{S}{N} \qquad
i = \frac{I}{N} \qquad
r = \frac{R}{N}
\end{align}
Tras la sustitución, se obtiene un sistema de cuatro ecuaciones.
\begin{align*}
\frac{ds}{dt} & = -\beta s i \\
\frac{di}{dt} & = \beta s i - \gamma i \\
\frac{dr}{dt} & = \gamma i
\end{align*}
donde $s + i + r = 1$ es invariante.
%% Cell type:markdown id: tags:
### Propiedades clave del modelo SIR
* Los parámetros $\beta$ y $\gamma$ tienen unidades de tiempo inverso.
* $\beta$ es la constante de velocidad asociada a la transmisión de la infección. La constante temporal correspondiente $\tau_{infect} = \frac{1}{\beta}$ corresponde al crecimiento exponencial de nuevas infecciones en una población inicialmente susceptible donde $s=1$.
* $\gamma$ es la tasa de recuperación de las infecciones. La constante de tiempo asociada $\tau_{recovery}=\frac{1}{\gamma}$ es el tiempo medio para recuperarse de una infección.
* La población infecciosa puede crecer sólo si $\beta s > \gamma$, es decir, la tasa de infección es mayor que la tasa de recuperación.
* La relación $R_0 = \frac{\beta}{\gamma}$ es el "Número Básico de Reproducción" que describe la transmisibilidad o contagio de una enfermedad infecciosa.
* $R_0$ es el número medio de personas infectadas por un caso de índice 0 en una población completamente susceptible.
* La población infecciosa sólo puede crecer si $R_0 s > 1$. Si $s=1$, entonces $R_0 > 1$ es suficiente para el crecimiento de la población infecciosa.
* La población infecciosa disminuye si $s R_0 < 1$ o, lo que es lo mismo, $s < \frac{1}{R_0}$.
* La población tiene "inmunidad de rebaño" cuando la fracción de susceptibles es inferior a $\frac{1}{R_0}$.
%% Cell type:markdown id: tags:
### Simulation
El siguiente código Python implementa una simulación del modelo SIR. Los valores de los parámetros se seleccionaron a partir del reciente estudio de Boldog, et al. (2020).
Los parámetros principales de nuestro modelo son el número básico de reproducción $R0$ y los dias en los cuales una persona es infecciosa $\tau_{infectividad}$. En el mundo real estos valores tiene su incertidumbre y un modelo realista debe incorporarlas.
Los parámetros principales de nuestro modelo son el número básico de reproducción $R0$ y los días en los cuales una persona es infecciosa $\tau_{infectividad}$. En el mundo real estos valores tienen su incertidumbre y en un modelo realista deben incorporarse.
%% Cell type:markdown id: tags:
### Incertidumbre en número básico de reproducción $R0$
Podemos usar una distribución log-normal como la PDF que modela nuestro $R0$*
, en este caso usaremos los siguientes parametros escogidos ad-hoc para este ejercicio:
*[un artículo al respecto](https://storage.googleapis.com/plos-corpus-prod/10.1371/journal.pone.0238090/1/pone.0238090.pdf?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=wombat-sa%40plos-prod.iam.gserviceaccount.com%2F20210312%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20210312T124607Z&X-Goog-Expires=3600&X-Goog-SignedHeaders=host&X-Goog-Signature=462a1c0824f481effcd20a16384ba40e09281fe08a0c7b8dac72b11b17a14767fdecb9802b3c6132cf2168e09cbcaff2043cf82a2693bcb589ad9d24c3c46176be55aaa2b7ad434d9a63d3fc85a6bfb055063ebd58243c4fc3a7cb63a7a02b75c0563dd1396837e6e9eecadd4d0362b28457e62fef02c91a5e5f4cffb82e60d1932a17d50c0948fba32d7728c3821a6fa3df9307a66852f75672a4300364982c0c67fdc1bab4be874df97f194af527fa98385fd9704a2c82aa7c8f1dcec16d7e41625cfc9be3fad3e9c138c7147096a2268572e687e834263b4f58b12a7b82b9236f5f8e6b75df62efe2b6e5ad90fa9198f295b41425e9f7499fceb4162227f1)
Podemos usar una distribución log-normal como la PDF que modela nuestro $R0$ ([leer aquí más al respecto](https://storage.googleapis.com/plos-corpus-prod/10.1371/journal.pone.0238090/1/pone.0238090.pdf?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=wombat-sa%40plos-prod.iam.gserviceaccount.com%2F20210312%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20210312T124607Z&X-Goog-Expires=3600&X-Goog-SignedHeaders=host&X-Goog-Signature=462a1c0824f481effcd20a16384ba40e09281fe08a0c7b8dac72b11b17a14767fdecb9802b3c6132cf2168e09cbcaff2043cf82a2693bcb589ad9d24c3c46176be55aaa2b7ad434d9a63d3fc85a6bfb055063ebd58243c4fc3a7cb63a7a02b75c0563dd1396837e6e9eecadd4d0362b28457e62fef02c91a5e5f4cffb82e60d1932a17d50c0948fba32d7728c3821a6fa3df9307a66852f75672a4300364982c0c67fdc1bab4be874df97f194af527fa98385fd9704a2c82aa7c8f1dcec16d7e41625cfc9be3fad3e9c138c7147096a2268572e687e834263b4f58b12a7b82b9236f5f8e6b75df62efe2b6e5ad90fa9198f295b41425e9f7499fceb4162227f1)), en este caso usaremos los siguientes parámetros escogidos ad-hoc para este ejercicio:
%% Cell type:code id: tags:
``` python
s=np.random.lognormal(1.1,0.21,1000)
plt.hist(s,density=True,bins=100)
plt.ylabel('Probabilidad')
plt.xlabel('R0');
```
%% Output
%% Cell type:markdown id: tags:
### Incertidumbre en los dias de infectividad.
### Incertidumbre en los días de infectividad.
Supongamos que lo dias que un individuo es contagioso está en el orden de 8.7 +/- 3 dias. Mas detalles sobre estudios en este tema [aqui](https://www.bdi.ox.ac.uk/news/the-timing-of-covid-19-transmission).
Supongamos que lo días que un individuo es contagioso está en el orden de 8.7 +/- 3 días. Mas detalles sobre estudios en este tema [aquí](https://www.bdi.ox.ac.uk/news/the-timing-of-covid-19-transmission).
Por simplicidad, modelaremos esta incertidumbre con una distribución normal que refleje el rango de 8.7 +/- 3 dias.
Por simplicidad, modelaremos esta incertidumbre con una distribución normal que refleje el rango de 8.7 +/- 3 días.
%% Cell type:code id: tags:
``` python
s=np.random.normal(8.7,3,1000)
plt.hist(s,density=True,bins=100)
plt.ylabel('Probabilidad')
plt.xlabel('Dias contagioso');
```
%% Output
%% Cell type:markdown id: tags:
# Ejercicio 1.
# Ejercicio 1
- Incluir incertidumbres en el modelo, simular 1000 escenarios.
- Según este modelo: ¿cuantas personas estiman que se hayan contagiado en el dia 120 de la epidemia? Incluir intervalos de confianza del 95% en el resultado.
- Producir una figura del numero de personas infectadas como funcion de tiempo, la figura debe incluir intervalos de confianza (ejemplo de la figura esperada:https://medium.com/data-for-science/epidemic-modeling-103-adding-confidence-intervals-and-stochastic-effects-to-your-covid-19-models-be618b995d6b)
- Producir una figura del numero de personas infectadas como funcion de tiempo, la figura debe incluir intervalos de confianza ([ejemplo de la figura esperada](https://medium.com/data-for-science/epidemic-modeling-103-adding-confidence-intervals-and-stochastic-effects-to-your-covid-19-models-be618b995d6b)).
%% Cell type:markdown id: tags:
# Ejericio 2.
# Ejercicio 2
Ustedes son asesores científicos de un gobierno que está manejando la crisis del Covid19. El gobierno está evaluando implementar uno de estos dos escenarios:
1. Un confinamiento que reduzca R0 a cerca de 1.
2. Una campaña de seguimiento y localización de casos que reduzca los días en los que un individuo está en la calle contagioso a 3 +/- 1 días.
- Ustedes son asesores cientificos de un gobierno que esta manejando la crisis del Covid19. El gobierno está evaluando implementar uno de estos dos escenarios:
- Simular ambos escenarios con sus debidas incertidumbres y basado en los resultados hacer una recomendación.
-*Nota*: El comportamiento del R0 resultante del escenario 1. se puede modelar con la distribución ```np.random.lognormal(-0.1, 0.15, 1000)```)
- Un confinamiento que reduzca R0 a cerca de 1 (el comportamiento del R0 resultante se puede modelar con la distribución np.random.lognormal(-0.1, 0.15, 1000)).
- Una campaña de seguimiento y localización de casos que reduzca los dias en los que un individuo está en la calle contagioso a 3 +/- 1 dias.
Simular ambos escenarios con sus debidas incertidumbres y basado en los resultados aconsejar al gobierno qué hacer.
- Discutir las limitaciones de sus modelos, y qué tanta confianza tienen en la recomendación que han dado al gobierno.