Análise do Modelo SIR com Dinâmica Vital e Estabilidade

Modelagem Matemática em Epidemiologia

Pedro Cid • Angelo Serafini

Ideia Geral

Na epidemiologia matemática, usamos modelos dinâmicos para descrever como as doenças evoluem. De forma simplificada, entendemos um modelo dinâmico como um sistema que muda com o tempo, onde a situação atual define o que vai acontecer em seguida. Em vez de olhar para um momento parado, observamos o fluxo contínuo de pessoas entre diferentes estados.

O modelo SIR aplica isso dividindo a população em três grupos: Suscetíveis, Infectados e Recuperados. As equações que apresentamos definem justamente como as pessoas passam de um grupo para o outro.

O Modelo SIR com Dinâmica Vital

Consideramos uma população total \(N\). Assumimos que as taxas de natalidade e mortalidade são iguais (\(\mu\)), o que mantém o número total de pessoas constante. As equações diferenciais que regem o sistema são:

$$ \frac{dS}{dt} = \mu N - \beta \frac{S I}{N} - \mu S $$ $$ \frac{dI}{dt} = \beta \frac{S I}{N} - \gamma I - \mu I $$ $$ \frac{dR}{dt} = \gamma I - \mu R $$

Número Básico de Reprodução (\(R_0\))

O parâmetro \(R_0\) define a média de infecções produzidas por um único indivíduo infectado em uma população suscetível. Para o nosso modelo:

$$ R_0 = \frac{\beta}{\gamma + \mu} $$

Se \(R_0 > 1\), a doença pode invadir a população (epidemia). Se \(R_0 < 1\), a doença tende a desaparecer.

Por que Precisamos de Métodos Numéricos?

O sistema SIR não possui solução analítica fechada devido à não-linearidade do termo \(\beta \frac{SI}{N}\). Para obter as curvas \(S(t), I(t), R(t)\), usamos o método Runge-Kutta disponível na biblioteca SciPy.

Definições

O método trabalha com os seguintes elementos:

O Método Runge-Kutta

O RK4 calcula o próximo estado \(y_{n+1}\) avaliando a derivada em 4 pontos: no início, duas vezes no meio, e no fim do intervalo.

$$ k_1 = f(y_n) $$ $$ k_2 = f\left(y_n + \frac{h}{2} k_1\right) $$ $$ k_3 = f\left(y_n + \frac{h}{2} k_2\right) $$ $$ k_4 = f(y_n + h \cdot k_3) $$

O novo estado é uma média ponderada dessas estimativas:

$$ y_{n+1} = y_n + \frac{h}{6}\left(k_1 + 2k_2 + 2k_3 + k_4\right) $$

Não nos aprofundamos na teoria por trás do método. Escolhemos o Runge-Kutta de 4ª ordem por ter uma boa precisão para sistemas de EDOs e ser bastante utilizado. Na prática, utilizamos a implementação pronta da biblioteca SciPy em Python.

População Fechada vs. Aberta

Uma diferença importante na modelagem é entre modelos de população fechada (\(\mu = 0\)) e aberta (\(\mu > 0\)).

Modelo Fechado (\(\mu = 0\))

Não entra ninguém novo. A doença consome a população suscetível até não conseguir mais se sustentar. A infecção some (\(I \to 0\)) e não há estado endêmico.

Modelo Aberto (\(\mu > 0\))

Nascimentos trazem novos suscetíveis ("combustível"). Se \(R_0 > 1\), a doença não some, mas oscila até um equilíbrio endêmico (\(I^* > 0\)).

Gráfico comparando SIR Fechado vs Aberto
Esquerda: População Fechada (surto único). Direita: População Aberta (oscilação até endemia).

Análise de Estabilidade

Para entender o longo prazo, buscamos os pontos de equilíbrio (\(\dot{S} = \dot{I} = \dot{R} = 0\)). Encontramos dois principais:

  1. Equilíbrio Livre de Doença: \(I^* = 0, S^* = N\).
  2. Equilíbrio Endêmico: (Só se \(R_0 > 1\)) $$ S^* = \frac{N}{R_0}, \quad I^* = \frac{\mu N}{\beta} (R_0 - 1) $$

Dedução Analítica dos Equilíbrios

Partimos das condições onde as derivadas são nulas: \(\dot{S} = 0, \dot{I} = 0, \dot{R} = 0\).

Obtendo \(S^*\)

Da equação \(\dot{I} = 0\):

$$ \beta \frac{S^* I^*}{N} - (\gamma + \mu) I^* = 0 $$ $$ I^* \left( \frac{\beta S^*}{N} - (\gamma + \mu) \right) = 0 $$

Isso gera duas possibilidades:

Para o caso endêmico:

$$ S^* = \frac{N (\gamma + \mu)}{\beta} = \frac{N}{R_0} $$

Obtendo \(I^*\)

Da equação \(\dot{S} = 0\):

$$ \mu N - \beta \frac{S^* I^*}{N} - \mu S^* = 0 $$ $$ I^* = \frac{\mu N (N - S^*)}{\beta S^*} $$

Substituindo \(S^* = N/R_0\):

$$ I^* = \frac{\mu N}{\beta} (R_0 - 1) $$

Obtendo \(R^*\)

Como a população é constante: \( R^* = N - S^* - I^* \).

Estabilidade Local

Analisamos a matriz Jacobiana \(J\) nos pontos de equilíbrio. Para o equilíbrio endêmico, a Jacobiana é:

$$ J = \begin{pmatrix} -\beta \frac{I}{N} - \mu & -\beta \frac{S}{N} \\ \beta \frac{I}{N} & \beta \frac{S}{N} - (\gamma + \mu) \end{pmatrix} $$

Os autovalores podem ter parte real negativa e parte imaginária, indicando um foco estável. Isso significa que o sistema retorna ao equilíbrio através de oscilações amortecidas.

Periodicidade e Oscilações

Verificamos que há oscilações quando \( 4\det(J) - \operatorname{tr}(J)^2 > 0 \). Nesse caso, o período das oscilações \(T\) é dado por:

$$ T \approx \frac{4\pi}{\sqrt{4\det(J) - \operatorname{tr}(J)^2}} $$

Substituindo os termos do nosso modelo:

$$ T \approx \frac{4\pi}{\sqrt{4\mu(\beta - \gamma - \mu) - \frac{\beta^{2}\mu^{2}}{(\gamma + \mu)^{2}}}} $$

Após uma perturbação, as soluções retornam ao equilíbrio com esse período e uma taxa de decaimento \(\tau\).

Conclusão

As simulações confirmaram nossa teoria. Concluímos que o modelo SIR com dinâmica vital mostra que doenças com \(R_0 > 1\) tendem a persistir na população de forma estável, mas não sem antes passar por ciclos de surtos (oscilações).

O código Python que usamos para gerar as animações está disponível para download:

Ver Código Python →

Contribuições do grupo

Pedro Cid

  • Desenvolvimento do código em Python
  • Elaboração do relatório escrito

Angelo Serafini

  • Criação dos slides da apresentação
  • Análise de oscilações e periodicidade

Referência

Bjørnstad, O. N. (2018). Epidemics: Models and Data using R. Springer International Publishing. Link pelo site da springer: https://doi.org/10.1007/978-3-319-97487-3