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

Modelagem Matemática em Epidemiologia

Pedro CidAngelo 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