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:
- \(\beta\): Taxa de transmissão.
- \(\gamma\): Taxa de recuperação.
- \(\mu\): Taxa de natalidade/mortalidade.
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:
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:
- \(y_n = (S_n, I_n, R_n)\): vetor de estado no instante \(t_n\).
- \(f(y)\): função que retorna as derivadas \(\left(\frac{dS}{dt}, \frac{dI}{dt}, \frac{dR}{dt}\right)\) dado um estado \(y\).
- \(h\): tamanho do passo de tempo.
- \(k_1, k_2, k_3, k_4\): estimativas da derivada em diferentes pontos do intervalo \([t_n, t_{n+1}]\).
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.
O novo estado é uma média ponderada dessas estimativas:
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\)).
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:
- Equilíbrio Livre de Doença: \(I^* = 0, S^* = N\).
- 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\):
Isso gera duas possibilidades:
- \(I^* = 0\) (Livre de Doença)
- \(\frac{\beta S^*}{N} - (\gamma + \mu) = 0\) (Endêmico, \(I^* > 0\))
Para o caso endêmico:
Obtendo \(I^*\)
Da equação \(\dot{S} = 0\):
Substituindo \(S^* = N/R_0\):
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 é:
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:
Substituindo os termos do nosso modelo:
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:
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