Skip to Content

MCmanage {amei}

Monte Carlo Epidemic Simulation with Adaptive Vaccination


This function performs a Monte Carlo simulation of epidemic trajectories under an adaptive vaccination strategy as implemented by the manage function. Statistics are tallied for a collection of characteristics including the state of the epidemic (evolution of susceptibles (S), infecteds (I), recovereds (R), and deads) and the cost of the vaccination strategy employed


MCmanage(init, epistep, vacgrid, costs, 
     pinit = list(b = 0.1, k = 0.02, nu = 0.2, mu = 0.1), 
     hyper = list(bh = c(1,3), kh = c(1,3), nuh = c(1,1), muh = c(1,1)), 
     vac0 = list(frac = 0, stop = 0), T = 40, MCreps = 30, 
     MCvits = 50, MCMCpits = 1000, bkrate = 1, vacsamps = 50,
     quant = c(0.025, 0.975), start = 7, ...)


a list containing scalar entries $S0, $I0, $R0, $D0 depicting the initial number of susceptibles, infecteds, recovereds, and deads in the outbreak
a function which moves the epidemic ahead one time-step; see epistep
a list containing vector entries $fracs, $stops indicating the permissible fractions (in [0,1]) of the population to be vaccinated and the (positive integer) of stopping thresholds having a maximum of init$S0
a list containing scalar entries $vac, $death, and $infect, depicting the costs associated with a single vaccination, death, or the daily cost of maintaining an infected individual, respectively
a list containing scalar entries $b, $k, $nu, and $mu depicting the initial values of parameters of the SIR model representing the transmission probability, clumpiness parameter, the recovery probability, and the mortality probability, respectively, which are subsequently sampled by MCMC from the posterior
a list containing 2-vector entries describing parameters to the prior distribution of the parameters listed in the pinit argument. The prior for b follows a gamma distribution with parameters $$bh$ where the shape is given by bh[1] and scale by bh[2]. The prior for k specified by parameters $kh is similar. The prior(s) for nu and mu are specified through p_r and p_d, respectively, which follow Beta distributions and the default specification is uniform. See vignette("amei") for more details
the initial (static) vaccination policy to be used before estimation of parameters begins (at start). This is a list with scalar entries $frac and $stop depicting the fraction to be vaccinated at each time step, and the vaccination (stopping) threshold, respectively
the maximum number of time steps during which the epidemic is allowed to evolve
number of times to repeat the Monte Carlo experiment, each time starting with the state in init and collecting characteristics of the epidemic trajectory and (vaccination/death) costs
scalar number of Monte Carlo iterations of forward epidemic evolution used at each time step in manage to determine the optimal vaccination policy
scalar number of Markov chain Monte Carlo iterations used at each step to estimate the SIR model parameters in manage
number of samples of b and k, relative to mu and nu before a sample of all four parameters is saved in manage
used to thin the MCMC samples of the parameters sampled from the posterior that are used to calculate optimal vaccination policies; this should be an integer scalar such that 0 < vacsamps <= MCMCpits
a 2-vector of quantiles to use in order to capture the spread in the density of characteristics of the epidemic trajectory and costs
at what time, after time 1 where the state is given by init, should vaccinations be allowed to start
additional arguments passed to a user-defined epistep function


This function simulates many (MCreps) trajectories of an epidemic starting out in a particular state (init) and evolving according the dynamics encoded in epistep (or some other user-defined function) under an adaptive vaccination strategy as implemented by manage. Many of the arguments to this function are simply passed to manage.

It returns a summary of characteristics of the state trajector(y/ies) and the associated costs. The output can be visualized with the generic plot.MCepi method and costs can be extracted with getcost.

For more details on the parameterization and simulation of the SIR model, etc., and the calculation of the optimal vaccination strategy, please see vignette("amei")


MCmanage returns an object of class "MCepi", which is a list containing the following components.

These quantities can be visually inspected using the plot.MCepi method

a data.frame containing 8 columns (S, I, R, D, V, C, frac, stop) depicting the first quantile (quant[1]) of the distribution of the evolution of the state of the epidemic (SIRD), the number of vaccinations (V), the cost (C), the fraction vaccinated (F), and the stopping threshold (S) at each time point
same as Q1 except the mean rather than a quantile
same as Median except the median rather than mean
same as Q1 except the third quantile (quant[2])


D. Merl, L.R. Johnson, R.B. Gramacy, and M.S. Mangel (2010). “amei: An R Package for the Adaptive Management of Epidemiological Interventions”. Journal of Statistical Software 36(6), 1-32. D. Merl, L.R. Johnson, R.B. Gramacy, M.S. Mangel (2009). “A Statistical Framework for the Adaptive Management of Epidemiological Interventions”. PLoS ONE, 4(6), e5807.

See Also

manage, MCepi, plot.MCepi


## adaptively manage the epidemic with the following
## initial population
init <- list(S0=762, I0=1, R0=0, D0=0) 
## construct a grid of valid vaccination strategies
## and specify costs
## using a smaller grid for faster check times; try the commented out
## setting for higher fidelity
vacgrid <- list(fracs=seq(0,1.0,0.25), stops=seq(2,init$S0-75,150))
## vacgrid <- list(fracs=seq(0,1.0,0.1), stops=seq(2,init$S0-75,75))
costs <- list(vac=2, death=4, infect=1)
## run the Monte Carlo management experiment, reducing MCMCpits
## for faster check times; try default (commented out) version
out.MCmanage <- MCmanage(init, epistep, vacgrid, costs, 
                         MCMCpits=100, MCreps=5)
## out.MCmanage <- MCmanage(init, epistep, vacgrid, costs)
## plot the trajectories of SIR and the associated costs
plot(out.MCmanage, main="optimal adaptive vaccination")
plot(out.MCmanage, type="costs")
## extract the distribution of the number of
## cumulative vaccinations via median and quantiles
## plot the distribution fractions vaccinated and
## stopping times
plot(out.MCmanage, type="fracs")
plot(out.MCmanage, type="stops")
## get the final median cost and quantiles --
## these can be compared with the static ones
## calculated by MCepi


Daniel Merl
Leah R. Johnson
Robert B. Gramacy
and Mark S. Mangel

Documentation reproduced from package amei, version 1.0-7. License: GPL