Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Malaria remains significant cause of morbidity and mortality,
particularly in children and in Africa.  A key strategy for reducing
the burden of malaria has been the mass distribution of Insecticide
Treated Nets (ITNs) and particularly Long Lasting Insecticide Treated
Nets (LLINs).  Roll Back Malaria has set a target goal of having at
least one ITN per household in 80% of households in malaria endemic
regions by 2010.  There are limited sources of data to monitor the
coverage scale-up: periodic but infrequent household surveys,
manufacturing/administrative data about total number of nets not
coverage, small scale studies of particular additional quantities of
interest, for example net retention over time.

Compartmental Model

For a particular country, c:

W[t] := number of nets in warehouses at time t
H1[t] := number of 1-year-old nets in households at time t
H2[t] := number of 2-year-old nets in households at time t
H3[t] := number of 3-year-old nets in households at time t
H4[t] := number of 4-year-old nets in households at time t

m[t] := number of nets manufactured during time period t
d[t] := number of nets distributed during time period t
l1[t] := number of 1-year-old nets lost or discarded during time period t
l2[t] := number of 2-year-old nets lost or discarded during time period t
l3[t] := number of 3-year-old nets lost or discarded during time period t

The compartments are connected as follows:

  m  +---+  d  +----+ 1-l1 +----+ 1-l2 +----+ 1-l3 +----+ 1
---->| W |---->| H1 |----->| H2 |----->| H3 |----->| H4 |--->
     +---+     +----+      +----+      +----+      +----+
                  |         |           |
                  | l1      | l2        | l3
                  +---->    +---->      +---->

The primary quantity of interest in this investigation is the fraction
of households with at least one net.  This is modeled as a two
parameter non-linear transformation of the LLINs per capita:

llin_coverage[t] = 1 - zeta - (1-zeta) * exp(-eta * H[t] / population[t])

To also quickly incorporate information about non-LLIN ITNs, there is
also a parameter for non-LLIN ITNs:

H'[t] = number of non-LLIN ITNs in households at time t

and the primary quantity of interest is then:

itn_coverage[t] = 1 - zeta - (1-zeta) * exp(-eta * (H[t] + H'[t]) / population)

Model parameters

p_l := the probability a net is lost during a time period
d[t] := the number of nets distributed during time period t (t = 0, ..., 9)
m[t] := the number of nets manufactured during time period t (t = 0, ..., 9)

Model Dynamics

W[t+1] = W[t] + m[t] - d[t];  W[0] = 0
H1[t+1] = d[t];               H1[0] = 0
H2[t+1] = H1[t] - l1[t];      H2[0] = 0
H3[t+1] = H2[t] - l2[t];      H3[0] = 0
H4[t+1] = H3[t] - l3[t];      H4[0] = 0
l1[t] = H1[t] * p_l**.5
l2[t] = H2[t] * p_l
l3[t] = H3[t] * p_l

Assumptions in Dynamics

The model dynamics make two major assumptions:

1. Every 0- to 3-year-old net is lost/discarded independently
   at random with the same probability during the year.

2. Every 4-year-old net is discarded during the year.

Statistical Model

There are 7 types of data that will drive parameter estimation:

Manufacturing Data - Information on the number of nets procured by
each country for distribution;  initial model::

    log(m_i) ~ log(m[t_i]) + N(0, s_m^2)

Administrative Distribution Data - Information on the number of nets
distributed through the public sector supply chain in each country;
initial model::

    log(d1_i) ~ log(d[t_i]) + e_d + N(0, s_d^2)

Household Survey Data - Information from DHS, MICS, and MIS where
head-of-household reports number of nets and time when each net was
obtained;  initial model for total number of nets::

    N_i ~ H[t_i] + N(0, s_{N_i}^2)
        (here t_i is the year of the survey used to compute N_i)

initial model for number of nets obtained during a particular year::

    d2_i ~ d(t^e_i) * (1 - p_l)^{t^s_i - t^e_i - .5} + N(0, s_{d2_i}^2)
        (here t^s_i is the year of the survey, and t^e_i is the year
        of the estimate)

Net Retention Data - Information from studies on how many nets were
still in households a certain amount of time after they were

    r_i ~ (1 - p_l)^{T_i} + N(0, s_r^2)

        (where r_i := fraction retained and T_i := follow up time for
        the study)

Household Size Data - Information from household studies on how many
people live in a household::

    household_size[i] ~ N(mu_household_size, s_{household_size[i]}^2
                          + s_household_size^2)

then household size for the country under consideration is modelled as
a latent variable that is constant over time, drawn from the same distribution::

    household_size ~ N(mu_household_size, s_household_size^2)

llin and itn coverage data is also incorporated::

    llin_coverage_i ~ llin_coverage[t_i] + N(0, s_{llin_coverage_i}^2)
    itn_coverage_i ~ itn_coverage[t_i] + N(0, s_{itn_coverage_i}^2)


logit(p_l) ~ Normal(logit(.05), tau=1)
s_r ~ Gamma(20, 20/.15)
s_m ~ Gamma(20, 20/.05)

s_d ~ Normal with mean and standard from empirical Bayes approach (described below)
e_d ~ Normal with mean and standard from empirical Bayes approach (described below) 

d[t] ~ Lognormal(log(.001*population), 1)
m[t] ~ Lognormal(log(.001*population), 1)

W_0 ~ Lognormal(log(.0001*population[0]), 11.)
H_0 ~ Lognormal(log(.0001*population[0]), 11.)

H'[t] ~ Lognormal(log(.001*population), .25^2)

mu_household_size ~ Gamma(1, 1/5)
s_household_size ~ Gamma(20, 20/.05)

log(W[t+1]/W[t]) ~ Normal(0, 1^2)
log(H[t+1]/H[t]) ~ Normal(0, 1^2)
log(H'[t+1]/H'[t]) ~ Normal(0, .5^2)
log(nd[t+1]/nd[t]) ~ Normal(0, 1.^2)

log(nd[t] / max_{t' < t} nd[t'])^- ~ Normal(0, .1^2)

W[t], H[t] >= 0

Empirical Bayes Priors

Instead of just making up priors for the systematic error and sampling
error in the administrative distribution data, we will use the
time-country data where both administrative and survey data are
available.  For this we use the same model as above, but taking the
survey data as "truth":

    log(d1_i) ~ log(d2_i) + e_d + N(0, s_d^2)

To complete this model, we use uninformative hyper-priors on e_d and s_d:
    s_d ~ Gamma(1., 1./.05)
    e_d ~ Normal(0., 1./.5**2)

Additional Information

Descriptions of the household surveys:

Different Survey Types:

Paper: Thomas P Eisele, Kate Macintyre, Josh Yukich, and Tewolde
Ghebremeskel, Interpreting household survey data intended to measure
insecticide-treated bednet coverage: results from two surveys in

ITN Manufacturers:
  * PermaNet -
  * Olyset Net -
  * Net Protect -
  * Interceptor -
  * Duranet -

ITN Info:

Supply Chain Software
  * Review of 4 free systems - - map of countries using software on page 47
  * RapidSMS -
  * RapidSMS Code -


Stock-and-flow Model of Bednet Distribution written in Python/PyMC



No packages published