Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download

Aulas do Curso de Modelagem matemática IV da FGV-EMAp

Views: 2412
License: GPL3
Image: default
Kernel: SageMath 9.5

Modelando a Transmissão

Até agora viemos modelando a transmissão, usando a lei de ação de massas, βSI\beta S I, onde a transmissão é proporcional ao produto das densidades de Suscetíveis e Infeciosos. Entretanto existem diversas outras formulações para a transmissão, propostas na literatura. McCallun et al. discutem as principais em um artigo muito interessante.

Segundo alguns autores, βSI\beta S I, não representa uma verdadeira lei de ação de massas, e que esta deveria ser escrita como βSI/N\beta S I/N, onde NN é a o tamanho da população, N=S+I+RN=S+I+R, no caso de um modelo SIRSIR. Por que este distinção é importante?

Segundo Anderson e May, em sua obra clássica, Quando modelamos a transmissão usando a expressão βSI\beta S I, existe um limiar no número de suscetíveis, que abaixo deste valor, impede que uma doença infecciosa se estabeleça em uma população de suscetíveis. Claramente, se R0=βS0γR_0=\frac{\beta S_0}{\gamma}, Para obtermos um valor de R0=1R_0=1, ponto de bifurcação transcrítica além do qual existe o equilíbrio endêmico, S0=γβS_0=\frac{\gamma}{\beta}. Contudo, quando formulamos a transmissão como βSI/N\beta S I/N, tal limiar populacional não existe, a invasibilidade depende apenas da razão entre γ\gamma e β\beta, esta forma de transmissão é denominada de dependente da frequência, ou independente da densidade.

Exercício 1:

Mostre que o limiar epidêmico não depende de N quando a transmissão é modelada como βSI/N\beta S I/N.

A lei de ação de massas, pela qual a taxa de contatos entre SS e II depende de suas respectivas densidades, implica em uma mistura perfeitamente aeatória das populações, denominada panmixia, entretanto podemos facilmente imaginar situações em que isto não é verdadeiro. Por exemplo, a probabilidade de um médico encontrar um infeccioso é muito maior do que a dada pelo produto das densidades de médicos e infecciosos na população, pois os infecciosos ativamente procuram os médicos. Formulações alternativas

na tabela 1 do artigo de McCallum et al., são listadas pelo menos 7 formulações para a transmissão:

  1. βSI\beta S I : dependente da densidade

  2. βSI/N\beta S I/N: dependente da frequência

  3. βSpIq\beta S^p I^q: relação de potência. Associada com heterogeneidades na susceptibilidade e Infecciosidade

  4. βI(NI/q)\beta I (N-I/q) quando I<qNI<q N ou 00 quando IqNI \geq qN: A constante 0<q<10<q<1, representa um efeito de refúgio, onde qq é a proporção da população potencialmente suscetível, devido a heterogeneidades espaciais.

  5. kSln(1+βIk)kS ln(1+\frac{\beta I}{k}): Binomial Negativa: Um kk pequeno corresponde a uma infecção altamente agregada. A medida em que kk \rightarrow \infty, a expressão se reduz à lei de ação de massas.

  6. N1ϵ+ϵNF(S,I)N\frac{N}{1-\epsilon+\epsilon N}\frac{F(S,I)}{N}:Função de contato assintótica, separada do termo de mistura F(S,I)F(S,I), pode ser qualquer um dos acima. Se ϵ=0\epsilon=0, os contatos são proporcionais a NN, se ϵ=1\epsilon=1, os contatos são independentes de NN

  7. βSIc+S+I\frac{\beta S I}{c+S+I}: transmissão assintótica, cc é uma constante.

Exercício 2:

Para cada uma das formulações da transmissão acima, faça um gráfico 3D da taxa de transmissão x SS x II.

var('beta S I') beta=1 plot3d(beta*S**0.7*I**0.4, (S,0.01,1),(I,0.01,1), mesh=True, alpha=0.5)

Exercício 3:

Analise um modelo SISI para cada tipo de transmissão listado acima, calcule o R0R_0, e identifique se existe um limiar epidêmico e qual a sua expressão.

def refuge(t,y, parms): I=y[0] N,beta,q, gammma = parms return [beta*I*(N-(I/q))-gamma*I]
T=ode_solver() T.function = refuge t_span = [0,1] ic = [1] N=100 beta=2 q=0.5 gamma = 0.1 T.ode_solve(t_span,ic,num_points=100, params=[N,beta,q,gamma])
T.plot_solution()
Image in a Jupyter notebook

Exercício 4:

Para cada umas das funções de transmissão f(S,I)f(S,I), acima, crie uma função interativa onde seja possível explorar os efeitos dos parâmetros sobre a dinâmica temporal da epidemia.

@interact def f3(p=(1,(0,1,.1)),q=(1,(0,1,.1))): P = plot3d(beta*S^p*I^q, (S,0,1),(I,0,1), mesh=True, alpha=0.5) show(P)

Incidência e Prevalência

Nos modelos epidemiológicos, O I(t)I(t) representa o que chamamos de prevalência, ou seja, quantas pessoas estão infectadas no tempo tt. Contudo, normalmente, os dados de vigilância, normalmente nos entrega a incidência, ou seja, quanto novos casos foram detectados no instante no dia tt. Por causa desta diferença na forma de representar os casos, precisamos ser capazes de converter entre estas duas quantidades para podermos comparar corretamente a saída de nossos modelos com os dados.

Vamos mostrar como fazer isso a partir de dados simulados de um modelo discreto para facilitar a geração da série de incidência.

!pip3 install epimodels
Defaulting to user installation because normal site-packages is not writeable Collecting epimodels Downloading epimodels-0.3.21.tar.gz (20 kB) Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... done Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from epimodels) (1.22.4) Requirement already satisfied: scipy in /usr/lib/python3/dist-packages (from epimodels) (1.8.0) Requirement already satisfied: cython in /usr/lib/python3/dist-packages (from epimodels) (0.29.28) Building wheels for collected packages: epimodels Building wheel for epimodels (pyproject.toml) ... done Created wheel for epimodels: filename=epimodels-0.3.21-py2.py3-none-any.whl size=11187 sha256=f541a92f99f0a373e26b3518ab26d76b6ef6d8808b2061fc4a6599ec0b823dbf Stored in directory: /home/fccoelho/.cache/pip/wheels/c1/dd/9b/0c17dd74b1069643d4824c007cd7ad4a6f7b66ab76dc39e690 Successfully built epimodels Installing collected packages: epimodels Successfully installed epimodels-0.3.21
import epimodels.discrete.models as DM
dsir = DM.SIR() dsir([1000,1,0],(0,40),1000,{'beta':1.2, 'gamma': 0.5})
dsir.plot_traces()
Image in a Jupyter notebook