Cuantos tienen que contagiarse para terminar con el COVID-19

Bueno dado que al parecer la gente no se enferma dos veces, la respuesta fácil debería ser TODOS, pero no es tan así…

Me explico… cada persona enferma contagia a personas sanas, actualmente hay 30.000 enfermos y 4.000 contagiados el ultimo día (aproximadamente), por lo que podemos decir que a diario tenemos una tasa de contagio de $ \frac{4000}{30000} \simeq 13,3 \% $ el cual llamaremos $ \lambda $ .

Entonces podemos platear un simple modelo de la forma:
$ \Delta e_t = \lambda e_{t-1} – r_{t-1} $, donde los enfermos durarán 14 dias enfermos.
donde:
– $e_t$ enfermos en t.
– $r_t$ recuperados en t.
– $t$ algun dia.
Notemos que si $ (1+\lambda)^d – 1 < 1 $, donde $d$ es la cantidad de dias que dura la enfermedad, la cantidad de enfermos comienza a disminuir en vez de aumentar (pueden modificar el codigo para probar).

El anterior es un proceso el cual si simulamos con el siguiente codigo en python (si, en python) para un periodo de 365 días:

import pandas as pd
import seaborn as sns

pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 100)

e_t0 = 100.0
l = 0.133
dias_sim = 365
dias_enf = 14

sim = [[e_t0]]
for t in range(1,dias_sim):
    #print(t)
    sim_t = sim[t-1].copy()
    sim_t.insert(0,l*sum(sim_t))
    sim_t = sim_t[0:dias_enf]
    sim.append(sim_t)

sim = [sum(x) for x in sim]
sim = pd.DataFrame({'dia':range(1,dias_sim+1),'enfermos':sim})

sns.set(style="darkgrid")
sns.lineplot(x="dia", y="enfermos",data=sim)

el cual nos da una curva de enfermos de la siguiente forma:

llega a 40.000.000.000.000.000 enfermos en solo un año, eso es por que no considera que hay un limite de población, para considerar eso, modificaremosel modelo para que considere que hay una población limite y supondremos que nadie se enferma 2 veces, hay casos, pero son pocos…
El supuesto de este modelo nuevo es que la probabilidad de contagiar a otra perona decrece linealmente a medida que van quedando menos personas inmunizadas.

$ \Delta e_t = \frac{ps_{t-1}}{p} \lambda * e_{t-1} – r_{t-1} $ donde:
– $ps_t$ es la población sana que nunca se ha enfermado
– $p$ es la población total

simularemos con el siguiente codigo una población de 10.000.000 de habitantes:

import pandas as pd
import seaborn as sns

pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 100)

e_t0 = 100.0 #enfermos iniciales
p = 10000000.0 #poblacion
l = 0.133 # lambda
dias_sim = 365 #dias a simular
dias_enf = 14 # dias enfermo

ps = [p - e_t0] # poblacion sana
sim = [[e_t0]]
for t in range(1,dias_sim):
    #print(t)
    sim_t = sim[t-1].copy()
    sim_t.insert(0,ps[t-1]/p*l*sum(sim_t))
    ps.append(ps[t-1] - sim_t[0])
    sim_t = sim_t[0:dias_enf]
    sim.append(sim_t)

sim = [sum(x) for x in sim]
sim = pd.DataFrame({'dia':range(1,dias_sim+1),
                    'enfermos':sim,
                    'sanos':ps})

sns.set(style="darkgrid")
sns.lineplot(x="dia", y="enfermos",data=sim)

lo cual nos da una curva de enfermos de la siguiente forma:

podemos ver de inmediato que se parece más a las curvas que vemos en los medios de comunicación, esto se debe a que si llamamos $ \hat{\lambda} = \frac{ps}{p} \lambda$ es un termino que va disminuyendo en el tiempo, entonces en algun dia $ (1+\hat{\lambda})^d – 1< 1 $, disminuyendo la cantidad de enfermos.

Pero aun no respondemos cuantos tienen que enfermarse para detener la pandemia, eso es cosa de graficar la evolución de ps

Vemos que aproximadamente el 75% de la gente tiene que enfermarse para que la población quede inmunizada.
Ahora, no podemos cambiar la cantidad de días que dura la enfermedad, pero si podemos con el aislamiento social cambiar la tasa de contagios $\lambda$, veamos como es la curva para distintastasas de contagio.

import pandas as pd
import seaborn as sns

pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 100)

e_t0 = 100.0 #enfermos iniciales
p = 10000000.0 #poblacion
lambdas = [0.07, 0.085, 0.1 , 0.133,0.15] # lambdas
dias_sim = 365*2 #dias a simular
dias_enf = 14 # dias enfermo

simulaciones = pd.DataFrame()

for l in lambdas:
    ps = [p - e_t0] # poblacion sana
    sim = [[e_t0]]
    for t in range(1,dias_sim):
        #print(t)
        sim_t = sim[t-1].copy()
        sim_t.insert(0,ps[t-1]/p*l*sum(sim_t))
        ps.append(ps[t-1] - sim_t[0])
        sim_t = sim_t[0:dias_enf]
        sim.append(sim_t)

    sim = [sum(x) for x in sim]
    sim = pd.DataFrame({'dia':range(1,dias_sim+1),
                        'enfermos':sim,
                        'sanos':ps,
                        'lambda': l})

    simulaciones = simulaciones.append(sim)

sns.set(style="darkgrid")
sns.lineplot(x="dia", y="sanos",data=simulaciones,style='lambda')
sns.lineplot(x="dia", y="enfermos",data=simulaciones,style='lambda')


Con bajar de $\lambda = 0.133$ a la un poco menos de la mitad $0.085$ logramos bajar de que el 75% tenga que enfermarse a solo el 30%, considerando que las mascarillas ayudan a bajar los contagios por interacción de un 50% a un 5%, podemos concluir que con la colaboración de todos, podemos controlar pa enfermedad.

Por otro lado, el no saturar el sistema de salud es clave, en el siguiente grafico vemos la cantidad de enfermos, si bajamos a la mitad la tasa de contagios, bajamos el peak de enfermos de 2,5 millones a 0,25 millones, es un decimo.

Si que mientras estemos con crisis, quedate en casa y cuando te dejen salir USA MASCARILLA nos haras un favor a todos.

Print Friendly, PDF & Email