--- title: "SIR model" output: rmarkdown::html_vignette bibliography: references.bib nocite: "@Hens2012" link-citations: TRUE vignette: > %\VignetteIndexEntry{SIR model} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, output=FALSE} library(serosv) ``` ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ## 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 compartment - `times` - a time sequence - `parameters` - parameters for SIR model ```{r} 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 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 compartment - `ages` - an age sequence - `parameters` - parameters for the model ```{r} 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 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 population - `beta_matrix` - the WAIFW matrix - `times` - a time sequence - `parameters` - parameters for the model ```{r} 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 plot(model) # returns plot for each population ``` ## 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 sequence - And model parameters including `gamma`, `lambda`, `sigma`, `nu` ```{r} 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 plot(model) ```