Agent based disease transmission benchmark

Overview

In this benchmark we run EMOD, a stochastic agent based disease transmission model, to look at how the reproductive number, \(R_0\), and the correlation between an individual’s acquisition and transmission correlation can affect the ultimate attack fraction and timing of the outbreak peak. It turns out that this correlation can affect that size and timing of the outbreak for a fixed reproductive number.

Authors

Run

docker run -it -p 4242:4242 linusseelinger/benchmark-abm-attack-fraction:latest

Properties

Model

Description

posterior

Posterior density

posterior

Mapping

Dimensions

Description

input

[3]

[ \(R_0\), variance of \(R_0\), correlation between acquisition and transmission]

output

[1]

Log posterior density

Feature

Supported

Evaluate

True

Gradient

True (via finite difference)

ApplyJacobian

False

ApplyHessian

False

Config

Type

Default

Description

refresh_seed

(bool, int)

True

Change random seed for each model call

daily_import_pressures

double

1.0

Number of average importations per day for the first 5 days of the simulation

log_level

string

ERROR

level of logging by the model

epsilon

list

[0.001, 0.001, 0.001]

increment used by scipy.optimize.approx_fprime to estimate the gradient

Mount directories

Mount directory

Purpose

None

Source code

Model sources here.

Description

Our simulation consists of 100,000 individuals who are susceptible to a disease that is introduced into the population with a probabilistic rate of 1 infections per day for the first 5 days. This disease has an incubation period that follows a Gaussian distribution with mean 3 days and standard deviation of 0.8 days. The infectious period \(P\) is assumed to also follow a Gaussian distribution with a mean of 8 days and a standard deviation of 0.8. The infectivity of the disease (\(I_t\); how likely it is for an infectious individual to infect another) is assumed to follow a log-normal distribution and is determined by the simulation’s \(R_0\) and its variance: \( \mu_{I_t} = \log\left(\frac{{R_0}}{\mu_{P}}\right) - 0.5\sigma_{I_t}^2 \) where \( \sigma_{I_t} = \log\left(\frac{\sigma_{R_0}^2}{2R_0^2} + 0.5\right). \)

One of the challenges associated with this benchmark is that it is stochastic. Even for the same parameters the total number of infections will differ between simulations. Furthermore, it is not guaranteed that there will always be an outbreak: sometimes, by chance, there are not enough initial infections to generate a large outbreak. You can reduce this challenge by increasing the number of initial infections via the daily_import_pressures configuration parameter (e.g., from 1 infections per day to 10 infections per day for the first 5 days).

Furthermore, the likelihood of an individual to acquire and then transmit the disease is correlated. There is no waning immunity. The benchmark is fitting to an attack fraction of 0.40 with a standard deviation of 0.05 and an outbreak peak at 175 days from the start of the simulation with standard deviation of 10 days. There are bounds on \(R_0\) > 0; the variance of \(R_0\) > 0; and the correlation between acquisition and transmission must lie between 0 and 1 (inclusive).

The simulation terminates when there are no longer any infected individuals (minimum run time of 50 days) and assesses the final attack fraction in the population (the fraction of people who were infected over the course of the disease outbreak).