knitr::opts_chunk$set( collapse = TRUE, comment = "#>", dpi=300, fig.width=7 )
# Load the requisite packages: library(malariasimulation) # Set colour palette: cols <- c("#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7")
Long-lasting insecticide-treated bed nets are a highly effective intervention to prevent malaria. The effects of insecticide-treated bed net distribution campaigns can be simulated using malariasimulation
. The model provides the user with the flexibility to specify parameters that describe the net distribution campaign (e.g. timing, coverage, and target population) and the bed nets distributed (e.g. efficacy, longevity). We will illustrate this through an example with two bed net distributions, once per year.
We can create a few plotting functions to visualise the output.
# Plotting functions plot_prev <- function() { plot(x = output$timestep, y = output$n_detect_lm_730_3650 / output$n_age_730_3650, type = "l", col = cols[3], lwd = 1, xlab = "Time (days)", ylab = expression(paste(italic(Pf),"PR"[2-10])), xaxs = "i", yaxs = "i", ylim = c(0, 1)) lines(x = output_control$timestep, y = output_control$n_detect_lm_730_3650 / output_control$n_age_730_3650, col = cols[5], lwd = 1) abline(v = bednetstimesteps, col = "black", lty = 2, lwd = 1) text(x = bednetstimesteps + 10, y = 0.95, labels = "Bed net int.", adj = 0, cex = 0.8) grid(lty = 2, col = "grey80", lwd = 0.5) legend("bottomleft", box.lty = 0, bg = "white", legend = c("Prevalence for bed net scenario","Prevalence for control scenario"), col = c(cols[3], cols[5]), lty = c(1,1), lwd = 2, cex = 0.8, y.intersp = 1.3) }
Use the get_parameters()
function to generate the list of parameters for a perennial profile, accepting the default values to run the simulation from an equilibrium starting point.
year <- 365 sim_length <- 6 * year human_population <- 1000 starting_EIR <- 50 simparams <- get_parameters( list(human_population = human_population) ) simparams <- set_equilibrium(parameters = simparams, init_EIR = starting_EIR) output_control <- run_simulation(timesteps = sim_length, parameters = simparams)
It is also possible to use the set_species()
function to account for 3 different mosquito species in the simulation. In this case, the matrices would need to have additional column corresponding to each mosquito species. For example, if we specified that there were 3 species of mosquitoes in the model and nets were distributed at two timesteps, then the matrices would have 2 rows and 3 columns. If you are not already familiar with the set_species()
function, see the Mosquito Species vignette.
The default parameters are set to model Anopheles gambiae.
simparams$species simparams$species_proportions
Having established a base set of parameters, we can now create a copy of this parameter list and update it to specify a net distribution campaign. In the example below, we distribute bed nets to a random 50% of the population every three years. It is possible to change the characteristics of the bed nets for each distribution timestep if different types of bed nets are distributed that have different insecticides, different levels of insecticide resistance, etc. This can be done by modifying the matrices for dn0
, rn
, rnm
, and gamman
. Because we are using the default proportions of mosquito species and there are two timesteps when nets are distributed, the matrices for dn0
, rn
, and rnm
have 1 column and 2 rows.
The parameter values for pyrethroid-only and pyrethroid-PBO nets at various resistance levels can be found in Table S1.3 in the Supplementary Appendix 2 of Sherrard-Smith, et al., 2022.
bednetstimesteps <- c(1, 4) * year # The bed nets will be distributed at the end of the first and the 4th year. bednetparams <- set_bednets( simparams, timesteps = bednetstimesteps, coverages = c(.5, .5), # Each round is distributed to 50% of the population. retention = 5 * year, # Nets are kept on average 5 years dn0 = matrix(c(.533, .533), nrow = 2, ncol = 1), # Matrix of death probabilities for each mosquito species over time rn = matrix(c(.56, .56), nrow = 2, ncol = 1), # Matrix of repelling probabilities for each mosquito species over time rnm = matrix(c(.24, .24), nrow = 2, ncol = 1), # Matrix of minimum repelling probabilities for each mosquito species over time gamman = rep(2.64 * 365, 2) # Vector of bed net half-lives for each distribution timestep ) output <- run_simulation(timesteps = sim_length, parameters = bednetparams)
# Plot prevalence plot_prev()
It is important to understand the difference between the input coverages
argument of set_bednets()
and the resulting population bed net usage over time in the model. When we set coverages in the above example to 0.5, we are telling the model to distribute bed nets to a random 50% of the population at year one and to a random 50% of the population at year 4. However, the level of average bed net usage is not necessarily equal to 50%. Between these time points, bed net use will slowly decline over time (in reality this decline stems from things like disuse, holes in nets, lost nets, etc.).
The average population bed net usage will be influenced by:
set_bednets()
gamman
)The output from malariasimulation::run_simulation()
has a variable n_use_net
that shows the number of people using bed nets at any given timestep. We can visualise the proportion of the population using bed nets over time to understand how bed net usage changes.
output$prop_use_net <- output$n_use_net / human_population plot(x = output$timestep, y = output$prop_use_net, type = "l", col = cols[3], lwd = 2.5, ylim = c(0,1), xlab = "Timestep (days)", ylab = "Proportion of population using bed nets", xaxs = "i", yaxs = "i") grid(lty = 2, col = "grey80", lwd = 0.5) axis(side = 1, lty = 1, col = "black", pos = 0); axis(side = 2, lty = 1, col = "black")
netz
packageThe netz
package is a useful tool to help set up bed nets in malariasimulation
. malariasimulation
takes as an input the proportion of the population who were distributed a bed net at specific time points, but net distribution or use data are now always available for a specific region or country. netz
has functionality to estimate modelled population usage over time in the simulation for a given set of input distributions. It can also help to fit the input coverages to usage data.
See this vignette from the netz
package that demonstrates how to estimate population bed net usage from an input distribution.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.