segunda-feira, 13 de abril de 2020

Modelagem matemática para predição de casos da Covid-19 no Brasil com e sem a adesão da população à Quarentena.

Mathematical modeling for the prediction of Covid-19 cases in Brazil with and without population adhesion to Quarantine.

Wenderson Rodrigues F. da Silva - Viçosa, 13 de abril de 2020.


OBJETIVO         
         Estudar um modelo matemático de uso epidemiológico para propagação de doenças infecciosas denominado SIR, afim de reforçar a importância da quarentena, bem como prever o número de casos de Covid-19 no Brasil para os próximos 10 dias, por meio do ajuste de uma curva aos dados de pessoas infectadas no país e pelo modelo SIR.

INTRODUÇÃO           
      Modelos matemáticos são primordiais para se estudar a evolução de sistemas. As ciências da natureza, como a  Física, Química, Meteorologia e Biologia, assim como todos os ramos de estudos que se deseje modelar, ou seja, desenvolver um conjunto de regras que ordene a forma como a dinâmica de um sistema evolui no tempo e/ou no espaço, se fundamenta no ferramental matemático para tal. E a teoria que serve de base para se investigar comportamentos de casos onde se observa a mudança de algo no tempo é a descrito pelas Equações Diferenciais, sejam elas ordinárias (EDOs) quando o sistema evoluí apenas temporalmente, ou as Equação Diferencias Parciais (EDPs) quando se observa evolução no tempo e no espaço.
      A epidemiologia é a ciência que lida com a propagação de doenças infecciosas e faz uso das Equações Diferencias para conhecer e prever o estágio de evolução da disseminação de um dado agente infeccioso, afim de possibilitar o controle da doença bem como nortear a respeito das melhores tomadas de decisões para conter seu avanço. Aqui abordaremos um modelo para propagação de doenças infecciosas chamado SIR que faz uso de um sistema de EDOs para modelagem dos casos, para prever a evolução de casos confirmados da Covid-19 no Brasil, bem como prever qual será esse número dentro de 10 dias.
      Um modelo epidêmico simples e bem conhecido no meio dos epidemiologistas é o chamado Modelo SIR (susceptible, infectious, recovered), o qual classifica os integrantes de uma população como indivíduo susceptível (S) ao contágio com patógeno, indivíduo infectado (I) pelo patógeno e aqueles recuperados (R) com êxito.
Figura 1- Fluxo epidêmico adotado no modelo SIR para propagação de uma doença infecciosa. Um indivíduo S interage com um indivíduo I e entra no grupo dos infectados. Por fim, o indivíduo do grupo I passa para o grupo R.
Tal modelo é descrito pelo sistema de Equações Diferencias Ordinárias abaixo.²
$$ \frac{dS}{dt}=-\frac{{\beta}SI}{N} \qquad (1)$$
$$ \frac{dI}{dt}=\frac{{\beta}SI}{N}-{\gamma}I \qquad (2)$$
$$ \frac{dR}{dt}={\gamma}I \qquad (3)$$
Nas expressões (1), (2) e (3), $dS/dt$, $dI/dt$ e $dR/dt$ indicam como (com que velocidade) o número de pessoas susceptíveis, infectadas e recuperadas estão mudando no tempo, respectivamente. O sinal de negativo (-) na equação (1) indica que essa quantidade de indivíduos susceptíveis diminuí ao longo do tempo. Portanto, o primeiro termo da equação (2) representa o crescimento do número de infectados. O segundo termo dessa mesma equação está relacionado com o número de indivíduos recuperados, por isso tem um peso negativo sobre os indivíduos infectados. Já a equação (3) descreve o aumento de indivíduos recuperados.
No caso mais simples do modelo SIR (ignorando a demografia da população, nascimentos, mortes e migrações e assumimos uma mistura homogênea), temos apenas as transições S → I e I → R. Tal modelo assume uma taxa de remoção do patógeno ou recuperação do indivíduo infectado $\gamma$, que depende, dentre outras coisas, de como o sistema de saúde está comportando a demanda de pacientes. Para o modelo SIR, usa-se $\frac{1}{{\gamma}}$, que determina o período médio de infecção (ou tempo de incubação do vírus, que no caso do Sars-Cov-2 é algo entorno de 12 dias)³, que é o período médio durante o qual um indivíduo infectado pode transmitir o patógeno. Tal valor é estimado a partir de dados epidemiológicos.
Outro fator que o modelo leva em consideração é a taxa de contato efetiva entre indivíduos infectados (I) com susceptíveis (S), denominada $\beta$. Tal fator está correlacionado com o número de indivíduos (I) e (S) interagindo uns com os outros em um dado intervalor de tempo (por dia, por exemplo). $N$ é o número de indivíduos de uma dada população (N = S + I + R). É fácil perceber que, se essa taxa aumenta, o número de infectados também aumenta. Medidas como a QUARENTENA são extremamente importantes para contenção de epidemias e estão relacionadas com o fator $\beta$ do modelo SIR. Verifica-se na simulação abaixo que, modificando o valor desse fator, muda-se toda a dinâmica da epidemia e, consequentemente, os cenários nos quais teríamos que lidar com a doença.

RESULTADOS E DISCUSSÕES
Com base nos dados fornecidos pelo ministério da saúde1, até o dia 12/04/2020, o número total de casos da doença no país era de 20.727 infectados, e a evolução desses casos se deu como mostrado no gráfico da Figura (2) abaixo.























Figura 2 - Evolução temporal do número de casos da COVID-19 no Brasil. Os pontos representam os dados do Ministério da Saúde. A curva em azul é um ajuste com uma função SLogistica (sigmoide) para predição de casos futuros.
O ajuste gerou a seguinte curva regida pela Equação (4) abaixo, cujo coeficiente de correlação r2 =  0,998.
$$Nº{\quad}de{\quad}infectados=\frac{37583,25}{1+ e^{-0,17(Dia-45,74)}}\qquad(4)$$
Com base na equação (4), pode-se fazer previsões a respeito do número de casos da doença. A tabela (1) abaixo mostra a previsão para os próximos 10 dias com o modelo e com os dados reais a partir da data de hoje, 13/04/2020.1
Tabela 1 - Dados do Ministério da Saúde sobre os infectados e previsão teórica para o modelo matemático (Equação (4)) e o modelo SIR, em função dos dias desde do primeiro contágio. Os valores em vermelho são os divulgados pelo governo após essa publicação.
################################
Atualização 12/05/2020.
Estudo publicado pela Universidade de São Paulo (USP) mostra que o numero de casos pode ser até 15 vezes maior do que aquele divulgado pelo Ministério da Saúde.
Nesse site da USP, pode-se acompanhar o número de casos nacionais e estaduais: https://ciis.fmrp.usp.br/covid19-subnotificacao/
################################
     O modelo SIR representado pelas EDOs (equações (1), (2) e (3)) não pode ser resolvido explicitamente, ou seja, não podemos obter uma expressão analítica exata para a dinâmica de S e I no tempo, portanto, o modelo deve ser resolvido numericamente. Preparou-se uma simulação computacional utilizando a linguagem de programação Python, cujo código será disponibilizado no final desse artigo.
       Fixando os valores de $\frac{1}{{\gamma}}=$ 12 dias e N = 210 milhões de habitantes, verifica-se como a taxa de contato efetiva entre indivíduos infectados (I) com susceptíveis (S) $\beta$ influenciará no número de casos de infectados e no tempo no qual esses irão ocorrer. No gráfico da Figura (2) abaixo pode-se verificar que para $\beta=$1 (que ocorreria caso o país não estivesse aderido a quarentena) teríamos um pico da doença em menos que 30 dias, atingindo mais que metade da população, o que seria catastrófico para qualquer sistema de saúde mundial e acarretaria em milhões de mortes.
Figura 3 - Cenário do contágio da Covid-19 no Brasil sem adesão à quarentena.

Já o gráfico da Figura (4) trata-se do caso em que estamos vivenciando atualmente, no estado de quarentena. O valor de $\beta=$0,290 foi ajustado aos dados do Ministério da Saúde do Brasil e estão de acordo com o número de infectados, que no dia 12/04/2020, 48 dias após o início da pandemia no Brasil, era de 22.169 infectados. Os valores para os próximos 10 dias estão apresentados na tabela (1) acima. O aumento de casos de pessoas infectadas é distribuído num intervalo de tempo maior, quanto menor for o valor de $\beta$, o que torna possível uma organização para enfrentar a pandemia. Observa-se também que, se a quarentena for mantida, o pico dos números de casos será por volta de 100 dias do início da transmissão comunitária (25/02/2020) e ocorrerá no início do mês de junho totalizando um número de casos de superior a 74 milhões de pessoas. Tal modelo, comparado com os dados do Ministério da saúde, parece estar superestimando esse número, entretanto, há cientistas que confirmam essa previsão4, alegando que o número de casos confirmados no Brasil é muito maior que o divulgado pelo ministério, principalmente pela falta de testes massivos na população não estarem ocorrendo.

Figura 4 – Cenário atual do contágio da Covid-19 no Brasil com adesão à quarentena.


     Existem outros modelos matemático mais abrangente, que leva em consideração mais fatores a partir dos quais pode-se obter mais precisão nas estimativas. O modelo SEIR é um deles, considerando o número de indivíduos expostos a doença denominado. Tal modelo pode ser simulado online na plataforma da USP "Epcalc", pelo link: https://bit.ly/3aaPMF1. Modelo SIR também pode ser simulado online, nesse link: https://bit.ly/3cwgutB. Todavia, não se consegue salvar os dados da simulação em ambos os sites citados acima. 

           CONCLUSÃO 
Com base nos dados e nos modelos (regressão e SIR) apresentados, pode-se concluir que a matemática é uma importante aliada para descrição de dinâmicas de sistemas como aqueles encontrados na propagação de doenças na sociedade. Com base em modelos matemáticos os agentes públicos podem nortear suas decisões a respeito de como conter o avanço da doença. No Brasil, tais previsões reforçam a necessidade das políticas de quarentena, como ressaltado pelo Ministro da Saúde no programa Fantástico da Rede Globo, exibido no dia 12/04/2020. Com base no ajuste dos dados do Ministério pode-se prever o número de casos no país nos próximos dias. Com o modelo SIR pode-se verificar a importância da quarentena, sem a qual qualquer país do mundo exposto ao vírus colapsaria seu sistema de saúde em poucos dias.

REFERÊNCIAS

1.      Painel Coronavírus - Ministério da Saúde. Acessado: 13/04/2020. Disponível em: https://covid.saude.gov.br/.
2.      M. J. Keeling and P. Rohani, Modeling Infectious Diseases in Humans and Animals, Princeton (2007).
3.      Saude de A a Z. Novo Coronavírus - Ministério da Saúde. Acessado: 13/04/2020. Disponível em: https://www.saude.gov.br/o-ministro/746-saude-de-a-a-z/46490-novo-coronavirus-o-que-e-causas-sintomas-tratamento-e-prevencao-3.

4.      Covid-19 Brasil - estimativa de população infectada.  Acessado: 15/04/2020. Disponível em: https://ciis.fmrp.usp.br/covid19/estimativa-de-populacao-infectada/.


CÓDIGO PYTHON DA SIMULAÇÃO DO MODELO SIR

"""
Created on Fri Apr 10 20:27:17 2020

@author: Wenderson Rodrigues F. da Silva
"""

import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
import csv
import pandas as pd

# População total, N.
N = 210000000
time = 70
# Número inicial de indivíduos infectados e recuperados, I0 e R0.
I0, R0 = 1, 0
# Todos os outros, S0, são suscetíveis à infecção inicialmente.
S0 = N - I0 - R0
# Taxa de contato, beta e taxa de recuperação média, gama, (em 1 / dias).
beta, gamma = 0.290, 1./12
# intervalo de pontos no tempo (em dias).
t = np.linspace(0, time, time)

# As equações diferenciais do modelo SIR.
def deriv(y, t, N, beta, gamma):
    S, I, R = y
    dSdt = -beta * S * I / N
    dIdt = beta * S * I / N - gamma * I
    dRdt = gamma * I
    return dSdt, dIdt, dRdt

# Condições iniciais.
y0 = S0, I0, R0
# Integração das equações do modelo SIR ao longo da série de tempo, t.
ret = odeint(deriv, y0, t, args=(N, beta, gamma))
S, I, R = ret.T

###################################################################
t = t.astype(int)
S = S.astype(int)
I = I.astype(int)
R = R.astype(int)

#criando o dataframe
df = pd.DataFrame({'tempo (dias)': t, 'Susceptveis': S, 'Infectados': I, 'Recuperados': R})

# salvando a tabela
df.to_csv('test.csv', sep=',')

###################################################################

# Plotagem os dados em três curvas separadas para S (t), I (t) e R (t).
fig = plt.figure(facecolor='w')
ax = fig.add_subplot(111,axisbelow=True)
ax.plot(t, S/N, 'b', alpha=0.6, lw=2, label='Susceptveis')
ax.plot(t, I/N, 'r', alpha=0.6, lw=2, label='Infectados')
ax.plot(t, R/N, 'g', alpha=0.6, lw=2, label='Recuperado')
ax.set_xlabel('tempo (dias)')
ax.set_ylabel('Fração da população em cada classe')
ax.set_ylim(0,0.000009)
ax.yaxis.set_tick_params(length=0)
ax.xaxis.set_tick_params(length=0)
ax.grid(b=True, which='major', c='w', lw=2, ls='-')
legend = ax.legend()
legend.get_frame().set_alpha(0.5)
for spine in ('top', 'right', 'bottom', 'left'):
    ax.spines[spine].set_visible(False)
plt.savefig('teste.png',dpi=300, format='png')

plt.show()

Outras publicações