O Modelo SEIR

Atenção: Este artigo tem o propósito de apresentar o modelo SEIR de forma didática, para auxiliar no entendimento dos princípios fundamentais deste modelo que empregamos em nossas análises. Entretanto, há de se compreender que este tipo de modelo, da forma simplificada aqui apresentada, oferece algumas limitações.

Introdução

Para avaliar o avanço da pandemia de COVID-19, não basta acompanhar apenas superficialmente o comportamento da série de dados de casos confirmados, buscando estimar funções por meio de regressões polinomiais ou exponenciais. Uma análise perspicaz e aprofundada requer um entendimento da natureza do fenômeno por trás daquela série de dados.

Computadores modernos permitem simulações detalhadas e complexas por meio de agentes, que modelam o comportamento de uma população ao nível de cada indivíduo. Recentemente, Chang et al., por exemplo, utilizaram simulações por agentes para avaliar o impacto de medidas restritivas no entrentamento ao COVID-19 na Austrália ​[1]​. Infelizmente, a pandemia de COVID-19 avança muito rapidamente, impossibilitando implementar e parametrizar simulações deste tipo. Os autores do trabalho citado já possuíam dados, levantados em anos anteriores, que permitiram que realizassem suas análises.

Figura 1: Modelos baseados em agentes simulam cada indivíduo separadamente, não muito diferente do conceito de uma espécie rudimentar da Matrix dos cinemas.

Os modelos fenomenológicos mais frequentemente utilizados em epidemiologia matemática para estimar o avanço de doenças infecciosas em grandes populações são os chamados modelos compartimentais ​[2]​. A origem dos modelos SIR, SEIR e suas variações remete ao início do século XX ​[3]​. Nesse tipo de modelo, ao invés de simular indivíduos de forma independente, a população é dividida em compartimentos que representam a quantidade de indivíduos em cada estágio clínico da doença. É um processo que lembra a modelagem de um sistema de reações químicas entre diferentes reagentes, no qual não interessa a característica específica de cada partícula. São modeladas apenas quantidades totais em cada compartimento e as respectivas taxas de transição. Várias entidades governamentais, incluindo a Organização Mundial da Saúde (OMS), utilizam implementações de modelos compartimentais SEIR no acompanhamento da pandemia de COVID-19 ​[4]​.

Como funciona?

O modelo SEIR ​[5]​ descreve, através de um sistema de equações diferenciais, a transição da população entre quatro compartimentos: Suscetíveis (S), Expostos (E), Infecciosos (I) e Removidos (R). O compartimento de Suscetíveis (S) contém indivíduos que podem contrair a doença. Os Expostos (E) são aqueles que contraíram a doença, mas ainda não são capazes de contagiar outros indivíduos. Os Infecciosos (I) são aqueles que podem transmitir a doença a outros indivíduos com quem estão em contato. Por fim, os Removidos (ou Recuperados, R) são aqueles que não são mais capazes de contrair a doença, seja por estarem imunes, isolados ou mortos. As taxas de transição da população entre esses compartimentos são parametrizadas de acordo com o quadro clínico de avanço da doença no tempo.

Figura 2: Evolução do quadro clínico da doença (adaptado de ​[2]​)

As transições entre os compartimentos S, E, I, R, a partir de uma população inicial de tamanho N, são modeladas de acordo com as seguintes equações diferenciais:

(1)   \begin{align*}\dot{S} & = -\beta \frac{SI}{N} \\\dot{E} & = \beta \frac{SI}{N} - \sigma E \\\dot{I} & = \sigma E - \gamma I \\\dot{R} & = \gamma I\end{align*}

onde \frac{1}{\sigma} representa o período de latência, \frac{1}{\gamma} representa o período de infecciosidade, e \beta representa a taxa de contato entre os indivíduos.

O parâmetro \beta depende das políticas de distanciamento ou isolamento social e do comportamento da população quanto à higiene. Na ausência de uma vacina, esse é o principal fator usado para regular, controlar ou mitigar o avanço de uma epidemia.

O chamado número básico de reprodução, ou R_0, é definido nesse modelo como \frac{\beta}{\gamma} e representa o número de infecções secundárias geradas por um indivíduo infeccioso ao longo do período de contágio. A taxa \gamma é melhor entendida na forma inversa, como o período \frac{1}{\gamma}. Essa fração \frac{\beta}{\gamma} pode ser vista como a multiplicação do número de contatos \beta vezes período de contágio \frac{1}{\gamma}. Quando R_0 > 1, há uma aceleração do espalhamento da doença na população, caracterizando um surto epidêmico. No início de uma pandemia, quando S \approx N, a solução do avanço do número de infectados no tempo pode ser aproximada por uma curva exponencial I(t) \approx I(0) e^{(\beta-\gamma)t}. Mesmo ao analisar efeitos de longo prazo, é comum, na literatura, a utilização do parâmetro R(t)=\frac{\beta(t)}{\gamma} como uma forma de medir, modelar e simular diferentes políticas de distanciamento social. Seth Flaxman, Swapnil Mishra e Neil Ferguson ​[6]​ exploram o papel de intervenções não-farmacológicas como forma de reduzir o R(t) com intuito de controlar a incidência de novas infecções. O melhor cenário corresponde ao R(t) < 1 resultando, dessa forma, no controle da epidemia em um dado momento no futuro. Cabe salientar que diversos países têm implementado combinações de medidas de controle e o nível de aderência a tais recomendações varia entre países ​[7]​.

Código de Exemplo

Figura 3: Exemplo de evolução dinâmica do modelo SEIR no tempo

O código que nós desenvolvemos, apresentado a seguir, implementa uma versão simples do modelo SEIR em Python (este código gerou a imagem da Figura 3).

import numpy as np
from scipy.integrate import odeint

class SEIR:

  ''' Classe que implementa o modelo SEIR.
  '''

  def __init__(self, **kwargs):

    '''Construtor

    Os parâmetros obrigatórios são:

      beta: taxa de infecção
      sigma: taxa de exposição
      gamma: taxa de recuperação
      N: tamanho da população
    '''

    # Copia parâmetros para variáveis membro
    self.__dict__.update(kwargs)

    # Se o parâmetro opcional I0 não foi informado,
    # então iniciamos com apenas um infectado
    if not hasattr(self,'I0'):
      self.I0 = 1.0

    # Inicializamos os grupos
    self.S = float(self.N) - self.I0
    self.E = 0.0
    self.I = self.I0
    self.R = 0.0
    self.C = self.I

  def deriv(self, y, t):
    ''' Esta função implementa a dinâmica
        do sistema. Ela segue um formato padrão
        para ser integrado numericamente pela
        função scipy.integrate.odeint

        Aqui y é um vetor que guarda a quantidade
        de indivíduos em cada compartimento, ou
        seja, y = [S, E, I, R, C]. A variável t
        é um vetor de números inteiros que
        representa o tempo em dias. São os
        dias para os quais queremos calcular
        os valores de y.

        O valor de retorno é a tupla com
        as derivadas dS, dE, dI, dR, dC para
        aquele ponto no tempo.
    '''

    # Começamos extraindo os valores atuais
    # do vetor de estados y
    S, E, I, R, C = y

    # Aqui calculamos as taxas principais
    # como variáveis intermediárias, para
    # evitar repetir as mesmas contas
    # desnecessariamente
    se = self.beta * S * I / self.N
    ei = self.sigma * E
    ir = self.gamma * I
    
    # Agora usando as variáveis auxiliares
    # definidas acima, calculamos as derivadas
    dS = -se
    dE = se - ei
    dI = ei - ir
    dR = ir
    dC = ei

    # Essas derivadas são a tupla de retorno
    return dS, dE, dI, dR, dC

  def sim(self, t_end):
    ''' Essa função executa a simulação
        pelo período especificado pelo
        parâmetro obrigatório days.

        Retorna uma tupla de quatro vetores
        representando a evolução nas
        quantidades S, E, I, R, C e do tempo
        t correspondente.
    '''

    # Inicializamos o vetor de tempo
    # com os dias t = [0, 1, 2, ..., D]
    t = np.linspace(0, t_end, t_end)

    # Define as condições iniciais
    y0 = self.S, self.E, self.I, self.R, self.C

    # Roda a simulação integrando as
    # equações diferenciais
    r = odeint(self.deriv, y0, t)

    # Coleta os resultados numa tupla
    S, E, I, R, C = r.T

    return S, E, I, R, C, t

O código acima pode ser chamado, por exemplo, da seguinte forma:

s = SEIR(N=11400000.0, beta=2.5/14.0, sigma=0.5, gamma=1.0/14.0)
S, E, I, R, C, t = s.sim(500)

Além dos compartimentos S, E, I, R, o código acima também inclui o compartimento C que simula um número acumulado de infectados. O compartimento C é análogo à contagem de casos confirmados, exceto por alguns fatores:

  • Subnotificação: nem todos os infectados de SARS-CoV-2 são testados, muitos nem sequer apresentam sintomas. Estimativas indicam que apenas algo entre 6% e 8% dos infectados são confirmados ​[8], [9]​.
  • No Brasil, testamos quase que exclusivamente casos graves de COVID-19, já envolvendo internações hospitalares. Conforme ilustrado na Figura 2 acima, demora alguns dias para que a doença avance até esse quadro.

Limitações

O modelo SEIR apresentado acima é uma versão bastante básica, que serve de ponto de partida para versões mais específicas do modelo, que podem ser aplicadas na investigação do avanço da pandemia de COVID-19. Essa versão básica tem enorme valor, mas apresenta diversas limitações que discutimos a seguir.

Pressuposto da “Mistura Homogênea”

No modelo SEIR aqui apresentado, a taxa com que as infecções ocorre é função das quantidades de suscetíveis (S) e de infectados (I), de acordo com a expressão \beta S I (por simplicidade, aqui assumimos valor normalizado, onde S=1 significa toda a população). Fica implícito, nesse modelo, que os compartimentos representam “líquidos bem misturados”, ou seja, a chance de uma pessoa encontrar outra é idêntica para toda a população. Na prática, sabemos que isso é bem diferente da realidade. Dispersão geográfica da população e outros fatores socioculturais e geopolíticos fazem com que alguns indivíduos estejam mais propensos a encontrar com alguns outros indivíduos, e menos propensos a se encontrar com outros. No início da pandemia, considerando um único foco, o modelo SEIR oferece uma boa aproximação, mas esse tipo de modelo rapidamente começa a mostrar suas fraquezas à medida que a epidemia se espalha em regiões diferentes, principalmente num país tão imenso e diverso como o Brasil.

Uma forma de adaptar o modelo para considerar a dimensão espacial é aplicá-lo na forma de um grafo onde cada vértice representa uma região com seu próprio modelo SEIR, e as arestas representam o trânsito de pessoas entre localidades ​[8]​. Um exemplo é ilustrado na Figura 4.

Figura 4: Ilustração do conceito de modelo metapopulacional, semelhante ao utilizado por ​[10]​, onde a interação entre suscetíveis e infectados acontece em nós, modelando regiões na forma de um grafo, com trânsito entre indivíduos de subpopulações.

Modelo Determinístico vs Estocástico

Mostramos aqui como modelar a epidemia através de um sistema de equações diferenciais, representando o fluxo de indivíduos entre os compartimentos na forma de taxas, como uma espécie de escoamento. O modelo determinístico se presta muito bem para mostrar a tendência média e os princípios que governam o fenômeno, e o comportamento é bastante razoável para populações grandes. No mundo real, os contatos entre diferentes indivíduos são eventos discretos, contáveis. Os próprios indivíduos são enumeráveis. Não temos como ter uma fração de um indivíduo infectado. Na prática, essas taxas se tornam as próprias probabilidades de acontecerem eventos discretos, como infecções e recuperações.

Essa natureza estocástica traz consigo fenômenos diversos que o modelo determinístico não é capaz de capturar. Por exemplo, no modelo determinístico podemos ter 0,25 infectados iniciando um novo surto. No mundo real, mesmo havendo um pequeno número de infectados, há uma probabilidade razoável de que nenhum deles faça nenhum contato com um suscetível, extinguindo a doença daquela população. A Figura 5 compara a versão determinística com duas instâncias da versão estocástica de um mesmo modelo.

Figura 5: Comparação de duas instâncias de um modelo estocástico com o modelo determinístico equivalente ​[11]​

Considerações Finais

Neste artigo, foi apresentada uma introdução ao modelo SEIR. Salientamos que o modelo, na forma como foi descrita aqui, serve como peça principal em um sistema complexo que envolve diversos outros mecanismos. É importante alertar que modelar uma epidemia é algo muito mais complexo do que simplesmente inserir a população de uma cidade ou estado no valor de N e rodar o algoritmo de pouco mais de 100 linhas de código acima. Além das limitações já mencionadas, na prática, políticas de distanciamento social alteram o valor de \beta ao longo do tempo, e no longo prazo, até fatores climáticos e mutações do próprio vírus causam influências significativas. Este artigo tem intenção de auxiliar na compreensão dos princípios de funcionamento do modelo SEIR. Ainda que possa ser usado como ponto de partida para alguém interessado em implementar seus próprios modelos, este texto não deve, de forma alguma, servir como única referência. Alertamos que a pandemia de COVID-19 é um tema delicado que provoca grande comoção pública, e deve ser tratado com imenso rigor e responsabilidade.

Referências

  1. [1]
    S. L. Chang, N. Harding, C. Zachreson, O. M. Cliff, and M. Prokopenko, “Modelling transmission and control of the COVID-19 pandemic in Australia.” 2020.
  2. [2]
    L. Sattenspiel and A. Lloyd, The geographic spread of infectious diseases: models and applications, vol. 5. Princeton University Press, 2009.
  3. [3]
    W. O. Kermack and A. G. McKendrick, “A contribution to the mathematical theory of epidemics,” Proceedings of the royal society of london. Series A, Containing papers of a mathematical and physical character, vol. 115. The Royal Society London, pp. 700–721, 1927.
  4. [4]
    F. Amira Binti Hamzah et al., “CoronaTracker: Worldwide COVID-19 Outbreak Data Analysis and Prediction,” Bulletin of the World Health Organization, Mar. 2020.
  5. [5]
    R. M. Anderson, B. Anderson, and R. M. May, Infectious diseases of humans: dynamics and control. Oxford university press, 1992.
  6. [6]
    S. Flaxman, S. Mishra, A. Gandy, and N. Ferguson et al, “Report 13: Estimating the number of infections and the impact of non- pharmaceutical interventions on COVID-19 in 11 European countries,” Imperial College London, Mar. 2020.
  7. [7]
    N. Ferguson, D. Laydon, and G. Nedjati-Gilani et al, “Report 9: Impact of non-pharmaceutical interventions (NPIs) to reduce COVID-19 mortality and healthcare demand,” Imperial College London, Mar. 2020.
  8. [8]
    M. Prado et al., “Análise de subnotificação do número de casos confirmados da COVID-19 no Brasil,” PUCRio, Apr. 2020.
  9. [9]
    P. Curi Hallal et al., “Evolução da prevalência de infecção por COVID-19 no Rio Grande do Sul: inquéritos sorológicos seriados,” Ciência e Saúde Coletiva. Apr. 2020.
  10. [10]
    H. Lund, L. Lizana, and I. Simonsen, “Effects of city-size heterogeneity on epidemic spreading in a metapopulation: a reaction-diffusion approach,” Journal of Statistical Physics, vol. 151. Springer, pp. 367–382, 2013.
  11. [11]
    L. J. Allen and A. M. Burgin, “Comparison of deterministic and stochastic SIS and SIR models,” Department of Mathematics and Statistics Technical Report Series. pp. 98–003, 1998.

Autores

, , ,