Basic SIR model
Proposed model
A transmission model consists of 3 compartments: susceptible (S), infected (I), recovered (R)
With the following assumptions:
Individuals are born into susceptible group (exposure time is age of the individual) then transfer to infected class and recovered class
Recovered individuals gained lifelong immunity
Age homogeneity
And described by a system of 3 differential equations
\[ \begin{cases} \frac{dS(t)}{dt} = B(t) (1-p) - \lambda(t)S(t) - \mu S(t) \\ \frac{dI(t)}{dt} = \lambda(t)S(t) - \nu I(t) - \mu I(t) - \alpha I(t) \\ \frac{dR(t)}{dt} = B(t) p + \nu I(t) - \mu R(t) \end{cases} \]
Where:
- \(B(t) = \mu N(t)\)
- \(\lambda(t) = \beta I(t)\) with \(\beta\) is the transmission rate
- \(\mu\) is the natural death rate
- \(\nu\) is the recovery rate
- \(\alpha\) is the disease related death rate
- \(p\) is the proportion of newborn vaccinated and moved directly to the recovered compartment
Fitting data
To fit a basic SIR model, use sir_basic_model()
and
specify the following parameters
state
- initial population of each compartmenttimes
- a time sequenceparameters
- parameters for SIR model
state <- c(S=4999, I=1, R=0)
parameters <- c(
mu=1/75, # 1 divided by life expectancy (75 years old)
alpha=0, # no disease-related death
beta=0.0005, # transmission rate
nu=1, # 1 year for infected to recover
p=0 # no vaccination at birth
)
times <- seq(0, 250, by=0.1)
model <- sir_basic_model(times, state, parameters)
model$parameters
#> mu alpha beta nu p
#> 0.01333333 0.00000000 0.00050000 1.00000000 0.00000000
plot(model)
SIR model with constant Force of Infection at Endemic state
Proposed model
A transmission model consists of 3 compartments: susceptible (S), infected (I), recovered (R)
With the following assumptions:
Time homogeneity
Age heterogeneity
Described by a system of 3 differential equations
\[ \begin{cases} \frac{ds(a)}{da} = -\lambda s(a) \\ \frac{di(a)}{da} = \lambda s(a) - \nu i(a) \\ \frac{dr(a)}{da} = \nu i(a) \end{cases} \]
Where:
- \(s(a), i(a), r(a)\) are proportion of susceptible, infected, recovered population of age group \(a\) respectively
- \(\lambda\) is the force of infection
- \(\nu\) is the recovery rate
FItting data
To fit an SIR model with constant FOI, use
sir_static_model()
and specify the following parameters
state
- initial proportion of each compartmentages
- an age sequenceparameters
- parameters for the model
state <- c(s=0.99,i=0.01,r=0)
parameters <- c(
lambda = 0.05,
nu=1/(14/365) # 2 weeks to recover
)
ages<-seq(0, 90, by=0.01)
model <- sir_static_model(ages, state, parameters)
model$parameters
#> lambda nu
#> 0.05000 26.07143
plot(model)
SIR model with sub populations
Proposed model
Extends on the SIR model by having interacting sub-populations (different age groups)
With K subpopulations, the WAIFW matrix or mixing matrix is given by
\[ C = \begin{bmatrix} \beta_{11} & \beta_{12} & ... & \beta_{1K} \\ \beta_{21} & \beta_{22} & ... & \beta_{2K} \\ \vdots & \vdots & ... & \vdots \\ \beta_{K1} & \beta_{K2} & ... & \beta_{KK} \\ \end{bmatrix} \]
The system of differential equations for the i\(th\) subpopulation is given by
\[ \begin{cases} \frac{dS_i(t)}{dt} = -(\sum^K_{j=1}\beta_{ij}I_j(t)) S_i(t) + N_i\mu_i - \mu_i S_i(t) \\ \frac{dI_i(t)}{dt} = (\sum^K_{j=1}\beta_{ij}I_j(t)) S_i(t) - (\nu_i + \mu_i) I_i(t) \\ \frac{dR_i(t)}{dt} = \nu_i I_i(t) - \mu_i R_i(t) \end{cases} \]
FItting data
To fit a SIR model with subpopulations, use
sir_subpops_model()
and specify the following
parameters
state
- initial proportion of each compartment for each populationbeta_matrix
- the WAIFW matrixtimes
- a time sequenceparameters
- parameters for the model
k <- 2 # number of population
state <- c(
# proportion of each compartment for each population
s = c(0.8, 0.6),
i = c(0.2, 0.4),
r = c( 0, 0)
)
beta_matrix <- c(
c(0.05, 0.00),
c(0.00, 0.05)
)
parameters <- list(
beta = matrix(beta_matrix, nrow=k, ncol=k, byrow=TRUE),
nu = c(1/30, 1/30),
mu = 0.001,
k = k
)
times<-seq(0,10000,by=0.5)
model <- sir_subpops_model(times, state, parameters)
model$parameters
#> $beta
#> [,1] [,2]
#> [1,] 0.05 0.00
#> [2,] 0.00 0.05
#>
#> $nu
#> [1] 0.03333333 0.03333333
#>
#> $mu
#> [1] 0.001
#>
#> $k
#> [1] 2
plot(model) # returns plot for each population
#> $subpop_1
#>
#> $subpop_2
MSEIR model
Proposed model
Extends on SIR model with 2 additional compartments: maternal antibody (M) and exposed period (E)
And described by the following system of ordinary differential equation
\[ \begin{cases} \frac{dM(a)}{da} = -(\gamma + \mu(a))M(a) \\ \frac{dS(a)}{da} = \gamma M(a) - (\lambda(a) + \mu(a)) S(a) \\ \frac{dE(a)}{da} = \lambda(a) S(a) - (\sigma + \mu(a)) E(a) \\ \frac{dI(a)}{da} = \sigma(a) E(a) - (\nu + \mu(a)) I(a) \\ \frac{dR(a)}{da} = \nu I(a) - \mu(a) R(a) \end{cases} \]
Where
\(M(0)\) = B, the number of births in the population
\(\gamma\) is the rate of antibody decaying
\(\lambda(a)\) is the force of infection at age \(a\)
\(\mu(a)\) is the natural death rate at age \(a\)
\(\sigma\) is the rate of becoming infected after being exposed
\(\nu\) is the recovery rate
Fitting data
To fit a MSEIR, use mseir_model()
and specify the
following parameters
a
- age sequenceAnd model parameters including
gamma
,lambda
,sigma
,nu
model <- mseir_model(
a=seq(from=1,to=20,length=500), # age range from 0 -> 20 yo
gamma=1/0.5, # 6 months in the maternal antibodies
lambda=0.2, # 5 years in the susceptible class
sigma=26.07, # 14 days in the latent class
nu=36.5 # 10 days in the infected class
)
model$parameters
#> $gamma
#> [1] 2
#>
#> $lambda
#> [1] 0.2
#>
#> $sigma
#> [1] 26.07
#>
#> $nu
#> [1] 36.5
plot(model)