apply_vacc.Rd
apply_vacc()
applies the vaccination activities listed in the
input object vacc
(a data.frame object of class
popim_vacc_activities
) to the popim_population
object pop
,
then returns the updated population object pop
.
apply_vacc(pop, vacc)
An object of class popim_population
such as
created by popim_population()
.
An object of class popim_vacc_activities
such as
created by popim_vacc_activities()
.
The input popim_population
class object pop
with
updated column immunity
to reflect the vaccination
activities supplied in vacc
.
Once objects holding data on the population and vaccination activities
have been set up, the primary functionality provided by popim
is to
apply the vaccination activities to the population to evaluate the
population immunity by age over time that results from the given
vaccination activities, which is done with the function
apply_vacc()
.
100% vaccine effectiveness
no wastage of doses
no waning immunity
mortality is independent of immunity status
While the first two are clearly unrealistic assumptions, if there is a constant vaccine effectiveness (<100%), or a constant wastage factor, the results can easily be scaled up by these constant factors to obtain more realistic values for vaccine demand.
For a potentially deadly disease one would expect that mortality due to the disease would be strongly correlated with immunity status, however, even the most devastating outbreaks typically only affect a small part of the population, and therefore all-cause mortality will be much less impacted by mortality due to the specific disease. This means that this assumption is closer to reality than it might appear at first.
Waning immunity is a potentially important factor to consider for many vaccines, particularly when looking at the long term benefits of vaccination. However, allowing for this is currently not implemented.
The vaccination activities object has columns for coverage
, the
proportion of the target population that will be vaccinated, and
doses
, the number of vaccine doses to be administered in the
activity. Given a target population size this is redundant (and
potentially conflicting) information. The function apply_vacc()
will
always use coverage
information in preference over doses
, if this
is non-missing. If coverage
is missing, the target population size
(based on the population size of the region and age groups targeted)
will be calculated and the corresponding coverage
calculated as
doses
/ target_population
.
While the function apply_vacc()
will calculate the coverage if it is
missing with respect to the target population size, without modifying
the input popim_vacc_activities
object, the function
complete_vacc_activities()
will fill in missing coverage and doses
information from the other, and check for inconsistencies in
activities that have both data on coverage
and doses
. This is done
with respect to a particular popim_population
object which contains
the relevant population sizes.
When vaccination is applied to a particular birth cohort that has no immunity, the result is simply that the proportion of the cohort receiving the vaccine will be immune from the time of the vaccination onwards, i.e., the immunity for this cohort will be set to equal the coverage of the vaccination activity in question. Due to the annual time step, vaccination is assumed to take effect at the end of the year in which it is implemented, so the immunity is updated from the next year onwards.
When a vaccination activity is applied to a cohort that has some
previous immunity, we need to make some assumptions about who will be
vaccinated in the new activity. There are 3 different options
implemented which are governed by the parameter targeting
, one of
the input parameters to the function apply_vacc()
. This parameter
can take the values "targeted"
, "random"
or "correlated"
.
"targeted"
targetingThe most effective way to implement a new vaccination activity is to
use "targeted"
targeting, meaning that the vaccine is targeted at
previously non-immunised individuals. This means that the new immunity
of after the vaccination activity is simply the sum of the previous
immunity and the coverage of the current vaccination activity (capped
by 1 which indicates complete immunity of the cohort in question):
immunity_new = min(immunity_prev + coverage, 1)
While this is not a realistic assumption in many settings, it can be
useful for instance in multi-year campaigns that target the same
region (but possibly proceed sub-region by sub-region) over several
years. This multi-year campaign would be coded as separate vaccination
activities for each year, using the option targeting
= "targeted"
.
"random"
targetingA reasonable first assumption might be to use targeting
=
"random"
, meaning that individuals will receive vaccination
irrespective of their previous immunity status. The immunity after the
new campaign is applied is calculated according to
immunity_new = coverage + immunity_prev - coverage * immunity_prev
"correlated"
targetingOn the opposite end of the spectrum is the most pessimistic assumption
that might apply in situations where there is unequal access to
vaccination: under "correlated"
targeting, people who have
previously been immunised get vaccinated first in the new vaccination
activity, and those previously not immune will only receive any
vaccine if the new coverage extends further:
immunity_new = max(immunity_prev, coverage)
Note that the order in which vaccination activities are applied to a
population does not matter under any of the targeting
assumptions.
## set up population and vaccination activities:
pop <- popim_population(region = "UK", year_min = 2000, year_max = 2005,
age_min = 0, age_max = 10)
vacc <- popim_vacc_activities(region = "UK", year = c(2001, 2002),
age_first = 0, age_last = 0,
coverage = 0.8, doses = NA,
targeting = "random")
## update the population immunity based on the vaccination activities:
pop <- apply_vacc(pop, vacc)