| Title: | Measles Epidemiological Models |
|---|---|
| Description: | A specialized collection of measles epidemiological models built on the 'epiworldR' framework. This package is a spinoff from 'epiworldR' focusing specifically on measles transmission dynamics. It includes models for school settings with quarantine and isolation policies, mixing models with population groups, and risk-based quarantine strategies. The models use Agent-Based Models (ABM) with a fast 'C++' backend from the 'epiworld' library. Ideal for studying measles outbreaks, vaccination strategies, and intervention policies. |
| Authors: | George Vega Yon [aut, cre] (ORCID: <https://orcid.org/0000-0002-3171-0844>), Damon Toth [ctb] (ORCID: <https://orcid.org/0000-0001-7393-4814>), Jake Wagoner [ctb] (ORCID: <https://orcid.org/0009-0000-5053-2281>), Olivia Banks [ctb] (ORCID: <https://orcid.org/0009-0008-7611-6030>), Centers for Disease Control and Prevention [fnd] (Award number 1U01CK000585; 75D30121F00003) |
| Maintainer: | George Vega Yon <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 0.3.2-0 |
| Built: | 2026-07-17 07:46:03 UTC |
| Source: | https://github.com/UofUEpiBio/measles |
Uses the epiworldR::compute_reproduction_number() function to
optimize the scaling factor of the contact matrix to match a target
reproduction number.
calibrate_mixing_model( contact_matrix, target_rep_number, infectious_period_days, transmission_prob, ... )calibrate_mixing_model( contact_matrix, target_rep_number, infectious_period_days, transmission_prob, ... )
contact_matrix |
A contact matrix to be calibrated. |
target_rep_number |
The target reproduction number to calibrate to. |
infectious_period_days |
The average number of days an individual is infectious. |
transmission_prob |
The probability of transmission per contact. |
... |
Additional arguments to pass to |
In the case of the ModelMeaslesMixing(), if agents with rash are assumed
to not be fully isolated, the calibration process needs to incorporate this
information into the function. In practice, this means that the infectious
period should include the days with rash, scaled by
(1 - rash_reduction_contact_rate). For instance, if the prodromal period is
4 days, the rash period is 3 days, and the rash_reduction_contact_rate is
0.8, the effective infectious period would be 4 + 3 * (1 - 0.8) = 4.6 days.
The scaling factor for the contact matrix that achieves the target reproduction number.
data(short_creek_matrix, package = "measles") # Calibrating for a measles model with R0 of 10 # assuming agents are infectious during prodomal stage # (isolated during rash stage) calibrate_mixing_model( contact_matrix = short_creek_matrix, target_rep_number = 10, infectious_period_days = 4, transmission_prob = 0.2 ) # You can then use the scaling factor in a mixing # model. Instead of using the original contact matrix, # you would use: # contact_matrix * scaling_factordata(short_creek_matrix, package = "measles") # Calibrating for a measles model with R0 of 10 # assuming agents are infectious during prodomal stage # (isolated during rash stage) calibrate_mixing_model( contact_matrix = short_creek_matrix, target_rep_number = 10, infectious_period_days = 4, transmission_prob = 0.2 ) # You can then use the scaling factor in a mixing # model. Instead of using the original contact matrix, # you would use: # contact_matrix * scaling_factor
Create a measles post-exposure prophylaxis (PEP) intervention
InterventionMeaslesPEP( name, mmr_efficacy, ig_efficacy, ig_half_life_mean, ig_half_life_sd, mmr_willingness, ig_willingness, mmr_window, ig_window, target_states, states_if_pep_effective, states_if_pep_ineffective )InterventionMeaslesPEP( name, mmr_efficacy, ig_efficacy, ig_half_life_mean, ig_half_life_sd, mmr_willingness, ig_willingness, mmr_window, ig_window, target_states, states_if_pep_effective, states_if_pep_ineffective )
name |
Name of the intervention. |
mmr_efficacy |
Probability of MMR vaccine efficacy. |
ig_efficacy |
Probability of immunoglobulin (IG) efficacy. |
ig_half_life_mean |
Mean of the half-life of immunoglobulin (IG) in days. |
ig_half_life_sd |
Standard deviation of the half-life of immunoglobulin (IG) in days. |
mmr_willingness |
Probability that an individual will accept MMR vaccine. |
ig_willingness |
Probability that an individual will accept immunoglobulin (IG). |
mmr_window |
Time window for MMR vaccine administration. |
ig_window |
Time window for immunoglobulin (IG) administration. |
target_states, states_if_pep_effective, states_if_pep_ineffective
|
Integer vectors of target and destination states (see details). |
This functions creates a global event that represents a post-exposure prophylaxis (PEP) intervention for measles. The intervention includes the administration of MMR vaccine and immunoglobulin (IG) to individuals after exposure to the virus, with the goal of reducing the probability of infection and preventing the spread of the disease.
The process involves both PEP Measles-Mumps-Rubella (MMR) vaccine and immunoglobulin (IG). The system decides which agent gets MMR or IG based on the time since exposure and the willingness to accept PEP. The flow is the following:
Agents in target_states are eligible for PEP if they are
willing to accept it (based on pep_willingness).
If the agent is already infected (for example, in a latent state)
for at most mmr_window days, they are offered MMR vaccine.
Otherwise, they are offered IG.
Susceptible agents are offered the MMR vaccine, and if they accept, they are automatically moved out of the quarantine process.
Agents who were already infected and got either MMR or IG may move
out of the quarantine process if the PEP is effective (based on
mmr_efficacy or ig_efficacy). The destination state depends
on whether the PEP was effective or not, and is determined by
states_if_pep_effective and states_if_pep_ineffective,
respectively.
Since IG winds down over time, the IG "tool" may be removed from
the agent as a function of the half-life of IG (based on
ig_half_life_mean and ig_half_life_sd). Particularly, after
applied, the IG "tool" will have a random duration based on a normal
distribution with mean ig_half_life_mean and standard deviation
ig_half_life_sd. Once the duration is over, the IG "tool" is removed
from the agent, and they are again eligible for PEP if they
are exposed again.
An object of class epiworld_globalevent representing the measles PEP
intervention.
The symmetry is achieved to ensure that n(i) * c(i, j) == n(j) * c(j, i)
where n(i) is the population size of age group i and c(i, j) is the
contact rate from age group i to age group j.
make_cmat_symmetric(cmat, pop)make_cmat_symmetric(cmat, pop)
cmat |
A contact matrix. |
pop |
A vector of population sizes for each age group. |
This function was adapted from that described in socialmixr::symmetrise()
to work with a simple matrix and population vector. The process is
implemented as described in the original function, replacing the ij-th
entries with (c_ij * N_i + c_ji * N_j) / 2 and divided by the population
size of the respective age group to ensure that the resulting matrix is
symmetric with respect to the population sizes.
The resulting matrix will satisfy the condition that
n(i) * c(i, j) == n(j) * c(j, i) for all age groups i and j, ensuring
that the total number of contacts from age group i to age group j is
equal to the total number of contacts from age group j to age group i.
The operation will change the row and column sums of the contact matrix.
cmat <- c(4, 2, 1, 3, 5, 6, 4, 5, 2) |> matrix(nrow = 3, byrow = TRUE) pop <- c(100, 200, 300) cmat_symm <- make_cmat_symmetric(cmat, pop) # Checking symmetry cmat_symm * pop == t(cmat_symm * pop)cmat <- c(4, 2, 1, 3, 5, 6, 4, 5, 2) |> matrix(nrow = 3, byrow = TRUE) pop <- c(100, 200, 300) cmat_symm <- make_cmat_symmetric(cmat, pop) # Checking symmetry cmat_symm * pop == t(cmat_symm * pop)
ModelMeaslesMixing creates a measles epidemiological model with mixing
between different population groups. The model includes vaccination,
quarantine, isolation, and contact tracing mechanisms.
ModelMeaslesMixing( n, prevalence, contact_matrix, vax_reduction_recovery_rate = 0.5, transmission_rate = 0.9, prop_vaccinated, vax_efficacy = 0.97, quarantine_period = 21, quarantine_willingness = 1, isolation_willingness = 1, isolation_period = 4, incubation_period = 12, prodromal_period = 4, rash_period = 3, hospitalization_rate = 0.2, hospitalization_period = 7, days_undetected = 2, contact_tracing_success_rate = 1, contact_tracing_days_window = 4, rash_reduction_contact_rate = 1 )ModelMeaslesMixing( n, prevalence, contact_matrix, vax_reduction_recovery_rate = 0.5, transmission_rate = 0.9, prop_vaccinated, vax_efficacy = 0.97, quarantine_period = 21, quarantine_willingness = 1, isolation_willingness = 1, isolation_period = 4, incubation_period = 12, prodromal_period = 4, rash_period = 3, hospitalization_rate = 0.2, hospitalization_period = 7, days_undetected = 2, contact_tracing_success_rate = 1, contact_tracing_days_window = 4, rash_reduction_contact_rate = 1 )
n |
Number of individuals in the population. |
prevalence |
Double. Initial proportion of individuals with the virus. |
contact_matrix |
A numeric square matrix with the expected number of contacts per time step between population groups. |
vax_reduction_recovery_rate |
Double. Vaccine reduction in recovery rate (default: 0.5). |
transmission_rate |
Numeric scalar between 0 and 1. Probability of transmission (default: 0.9). |
prop_vaccinated |
Double. Proportion of population that is vaccinated. |
vax_efficacy |
Double. Vaccine efficacy rate (default: 0.99). |
quarantine_period |
Integer. Number of days for quarantine (default: 21). |
quarantine_willingness |
Double. Proportion of agents willing to quarantine (default: 1). |
isolation_willingness |
Double. Proportion of agents willing to isolate (default: 1). |
isolation_period |
Integer. Number of days for isolation (default: 4). |
incubation_period |
Double. Duration of incubation period (default: 12). |
prodromal_period |
Double. Duration of prodromal period (default: 4). |
rash_period |
Double. Duration of rash period (default: 3). |
hospitalization_rate |
Double. Rate of hospitalization (default: 0.2). |
hospitalization_period |
Double. Period of hospitalization (default: 7). |
days_undetected |
Double. Number of days an infection goes undetected (default: 2). |
contact_tracing_success_rate |
Double. Probability of successful contact tracing (default: 1.0). |
contact_tracing_days_window |
Integer. Number of days before rash onset that will be considered for contact tracing (default: 4). |
rash_reduction_contact_rate |
Double. Reduction in contact rate during rash period (default: 1.0, full reduction). (see details) |
The contact_matrix is a square matrix of contact rates between entities.
Entry [i, j] gives the expected number of contacts that an agent in entity
i has with agents in entity j during a time step. The matrix should have
one row and one column per entity in the model.
The model includes three distinct phases of measles infection: incubation, prodromal, and rash periods. Vaccination provides protection against infection and may reduce recovery time.
The epiworldR::initial_states function allows the user to set the initial state of the model. In particular, the user can specify how many of the non-infected agents have been removed at the beginning of the simulation.
The ModelMeaslesMixing function returns a model of classes
epiworldR::epiworld_model and epiworld_measlesmixing.
The default behavior of the model is that agents in the rash period
are self-isolated. Nonetheless, since version 0.3.2-0, the user can
set the rash_reduction_contact_rate parameter to a value between 0 and 1 to
allow agents with Rash to still contact other agents, albeit at a reduced
rate. For example, if the user sets rash_reduction_contact_rate to 0.8,
agents in the rash period will have 20% of the contact rates specified in
the contact_matrix instead of 0%.
The basic reproduction number (R0) of the model can be computed as
Where is the transmission_rate, is the average number of
contacts per time step (given by the contact_matrix), is
the duration of the prodromal period, is the duration of the rash
period, and is the rash_reduction_contact_rate. Therefore, when
calibrating the model, the effective infectious period should be considered
as the sum of the prodromal period and the rash period scaled by
(1 - rash_reduction_contact_rate).
Instead of hospitalization probability, the model uses hospitalization rate. The following equation describes the hospitalization probability as a function of the hospitalization rate and recovery rate (from rash):
Where the is given by the rash period
(1/duration of it). In other words, to match a desired hospitalization
probability, the user needs to use the following:
h_rate <- p_hosp * (1/rash_days) / (1 - p_hosp)
epiworld-methods
Other Models:
ModelMeaslesMixingRiskQuarantine(),
ModelMeaslesSchool()
Other measles models:
ModelMeaslesMixingRiskQuarantine(),
ModelMeaslesSchool()
# Start off creating three entities. # Individuals will be distributed randomly between the three. e1 <- entity("Population 1", 3e3, as_proportion = FALSE) e2 <- entity("Population 2", 3e3, as_proportion = FALSE) e3 <- entity("Population 3", 3e3, as_proportion = FALSE) # Contact matrix including within- and between-group contact rates cmatrix <- (c( c(0.9, 0.05, 0.05), c(0.1, 0.8, 0.1), c(0.1, 0.2, 0.7) ) * 15) |> matrix(byrow = TRUE, nrow = 3) N <- 9e3 measles_model <- ModelMeaslesMixing( n = N, prevalence = 1 / N, transmission_rate = 0.9, vax_efficacy = 0.97, vax_reduction_recovery_rate = 0.8, incubation_period = 10, prodromal_period = 3, rash_period = 7, contact_matrix = cmatrix, hospitalization_rate = 0.1, hospitalization_period = 10, days_undetected = 2, quarantine_period = 14, quarantine_willingness = 0.9, isolation_willingness = 0.8, isolation_period = 10, prop_vaccinated = 0.95, contact_tracing_success_rate = 0.8, contact_tracing_days_window = 4 ) # Adding the entities to the model measles_model |> add_entity(e1) |> add_entity(e2) |> add_entity(e3) set.seed(331) run(measles_model, ndays = 100) summary(measles_model)# Start off creating three entities. # Individuals will be distributed randomly between the three. e1 <- entity("Population 1", 3e3, as_proportion = FALSE) e2 <- entity("Population 2", 3e3, as_proportion = FALSE) e3 <- entity("Population 3", 3e3, as_proportion = FALSE) # Contact matrix including within- and between-group contact rates cmatrix <- (c( c(0.9, 0.05, 0.05), c(0.1, 0.8, 0.1), c(0.1, 0.2, 0.7) ) * 15) |> matrix(byrow = TRUE, nrow = 3) N <- 9e3 measles_model <- ModelMeaslesMixing( n = N, prevalence = 1 / N, transmission_rate = 0.9, vax_efficacy = 0.97, vax_reduction_recovery_rate = 0.8, incubation_period = 10, prodromal_period = 3, rash_period = 7, contact_matrix = cmatrix, hospitalization_rate = 0.1, hospitalization_period = 10, days_undetected = 2, quarantine_period = 14, quarantine_willingness = 0.9, isolation_willingness = 0.8, isolation_period = 10, prop_vaccinated = 0.95, contact_tracing_success_rate = 0.8, contact_tracing_days_window = 4 ) # Adding the entities to the model measles_model |> add_entity(e1) |> add_entity(e2) |> add_entity(e3) set.seed(331) run(measles_model, ndays = 100) summary(measles_model)
ModelMeaslesMixingRiskQuarantine creates a measles epidemiological model with mixing
between different population groups and risk-based quarantine strategies. The model
includes vaccination, quarantine with three risk levels (high, medium, low), isolation,
and contact tracing mechanisms.
ModelMeaslesMixingRiskQuarantine( n, prevalence, contact_matrix, transmission_rate = 0.9, prop_vaccinated, vax_efficacy = 0.97, quarantine_period_high = 21, quarantine_period_medium = 14, quarantine_period_low = 7, quarantine_willingness = 1, isolation_willingness = 1, isolation_period = 4, incubation_period = 12, prodromal_period = 4, rash_period = 3, hospitalization_rate = 0.2, hospitalization_period = 7, days_undetected = 2, detection_rate_quarantine = 0.5, contact_tracing_success_rate = 1, contact_tracing_days_window = 4 )ModelMeaslesMixingRiskQuarantine( n, prevalence, contact_matrix, transmission_rate = 0.9, prop_vaccinated, vax_efficacy = 0.97, quarantine_period_high = 21, quarantine_period_medium = 14, quarantine_period_low = 7, quarantine_willingness = 1, isolation_willingness = 1, isolation_period = 4, incubation_period = 12, prodromal_period = 4, rash_period = 3, hospitalization_rate = 0.2, hospitalization_period = 7, days_undetected = 2, detection_rate_quarantine = 0.5, contact_tracing_success_rate = 1, contact_tracing_days_window = 4 )
n |
Number of individuals in the population. |
prevalence |
Double. Initial proportion of individuals with the virus. |
contact_matrix |
A numeric square matrix with the expected number of contacts per time step between population groups. |
transmission_rate |
Numeric scalar between 0 and 1. Probability of transmission (default: 0.9). |
prop_vaccinated |
Double. Proportion of population that is vaccinated. |
vax_efficacy |
Double. Vaccine efficacy rate (default: 0.99). |
quarantine_period_high |
Integer. Number of days for quarantine for high-risk contacts (default: 21). |
quarantine_period_medium |
Integer. Number of days for quarantine for medium-risk contacts (default: 14). |
quarantine_period_low |
Integer. Number of days for quarantine for low-risk contacts (default: 7). |
quarantine_willingness |
Double. Proportion of agents willing to quarantine (default: 1). |
isolation_willingness |
Double. Proportion of agents willing to isolate (default: 1). |
isolation_period |
Integer. Number of days for isolation (default: 4). |
incubation_period |
Double. Duration of incubation period (default: 12). |
prodromal_period |
Double. Duration of prodromal period (default: 4). |
rash_period |
Double. Duration of rash period (default: 3). |
hospitalization_rate |
Double. Rate of hospitalization (default: 0.2). |
hospitalization_period |
Double. Period of hospitalization (default: 7). |
days_undetected |
Double. Number of days rash goes undetected (default: 2). |
detection_rate_quarantine |
Double. Detection rate of prodromal agents during active quarantine periods (default: 0.5). |
contact_tracing_success_rate |
Double. Probability of successful contact tracing (default: 1.0). |
contact_tracing_days_window |
Integer. Number of days before and after the onset of symptoms for which contact tracing is effective (default: 4). |
The contact_matrix is a square matrix of contact rates between entities.
Entry [i, j] gives the expected number of contacts that an agent in entity
i has with agents in entity j during a time step. The matrix should have
one row and one column per entity in the model.
The model includes three distinct phases of measles infection: latent (incubation), prodromal, and rash periods. Vaccination provides protection against transmission.
Risk-based quarantine strategies assign different quarantine durations based on exposure risk:
High Risk: Unvaccinated agents who share entity membership with the case
Medium Risk: Unvaccinated agents who contacted an infected individual but don't share entity membership
Low Risk: Other unvaccinated agents
The epiworldR::initial_states function allows the user to set the initial state of the model. In particular, the user can specify how many of the non-infected agents have been removed at the beginning of the simulation.
The model uses hospitalization rates instead of probabilities. To learn
more about this, see the documentation in ModelMeaslesMixing().
The ModelMeaslesMixingRiskQuarantine function returns a model of classes
epiworldR::epiworld_model and epiworld_measlesmixingriskquarantine.
epiworld-methods
Other Models:
ModelMeaslesMixing(),
ModelMeaslesSchool()
Other measles models:
ModelMeaslesMixing(),
ModelMeaslesSchool()
# Start off creating three entities. # Individuals will be distributed randomly between the three. e1 <- entity("Population 1", 3e3, as_proportion = FALSE) e2 <- entity("Population 2", 3e3, as_proportion = FALSE) e3 <- entity("Population 3", 3e3, as_proportion = FALSE) # Contact matrix including within- and between-group contact rates cmatrix <- c( c(0.9, 0.05, 0.05), c(0.1, 0.8, 0.1), c(0.1, 0.2, 0.7) ) |> matrix(byrow = TRUE, nrow = 3) * 15 N <- 9e3 measles_model <- ModelMeaslesMixingRiskQuarantine( n = N, prevalence = 1 / N, transmission_rate = 0.9, vax_efficacy = 0.97, incubation_period = 10, prodromal_period = 3, rash_period = 7, contact_matrix = cmatrix, hospitalization_rate = 0.1, hospitalization_period = 10, days_undetected = 2, quarantine_period_high = 21, quarantine_period_medium = 14, quarantine_period_low = 7, quarantine_willingness = 0.9, isolation_willingness = 0.8, isolation_period = 10, prop_vaccinated = 0.95, detection_rate_quarantine = 0.5, contact_tracing_success_rate = 0.8, contact_tracing_days_window = 4 ) # Adding the entities to the model measles_model |> add_entity(e1) |> add_entity(e2) |> add_entity(e3) set.seed(331) run(measles_model, ndays = 100) summary(measles_model)# Start off creating three entities. # Individuals will be distributed randomly between the three. e1 <- entity("Population 1", 3e3, as_proportion = FALSE) e2 <- entity("Population 2", 3e3, as_proportion = FALSE) e3 <- entity("Population 3", 3e3, as_proportion = FALSE) # Contact matrix including within- and between-group contact rates cmatrix <- c( c(0.9, 0.05, 0.05), c(0.1, 0.8, 0.1), c(0.1, 0.2, 0.7) ) |> matrix(byrow = TRUE, nrow = 3) * 15 N <- 9e3 measles_model <- ModelMeaslesMixingRiskQuarantine( n = N, prevalence = 1 / N, transmission_rate = 0.9, vax_efficacy = 0.97, incubation_period = 10, prodromal_period = 3, rash_period = 7, contact_matrix = cmatrix, hospitalization_rate = 0.1, hospitalization_period = 10, days_undetected = 2, quarantine_period_high = 21, quarantine_period_medium = 14, quarantine_period_low = 7, quarantine_willingness = 0.9, isolation_willingness = 0.8, isolation_period = 10, prop_vaccinated = 0.95, detection_rate_quarantine = 0.5, contact_tracing_success_rate = 0.8, contact_tracing_days_window = 4 ) # Adding the entities to the model measles_model |> add_entity(e1) |> add_entity(e2) |> add_entity(e3) set.seed(331) run(measles_model, ndays = 100) summary(measles_model)
Implements a Susceptible-Latent-Infectious-Hospitalized-Recovered (SLIHR) model for Measles within a school. The model includes isolation of detected cases and optional quarantine of unvaccinated individuals.
ModelMeaslesSchool( n, prevalence = 1, contact_rate = 15/transmission_rate/prodromal_period, transmission_rate = 0.9, vax_efficacy = 0.97, incubation_period = 12, prodromal_period = 4, rash_period = 3, days_undetected = 2, hospitalization_rate = 0.2, hospitalization_period = 7, prop_vaccinated = 1 - 1/15, quarantine_period = 21, quarantine_willingness = 1, isolation_period = 4, ... ) ModelMeaslesQuarantine(...)ModelMeaslesSchool( n, prevalence = 1, contact_rate = 15/transmission_rate/prodromal_period, transmission_rate = 0.9, vax_efficacy = 0.97, incubation_period = 12, prodromal_period = 4, rash_period = 3, days_undetected = 2, hospitalization_rate = 0.2, hospitalization_period = 7, prop_vaccinated = 1 - 1/15, quarantine_period = 21, quarantine_willingness = 1, isolation_period = 4, ... ) ModelMeaslesQuarantine(...)
n |
Number of agents in the model. |
prevalence |
Initial number of agents with the virus. |
contact_rate |
Average number of contacts per step. Default is set to match the basic reproductive number (R0) of 15 (see details). |
transmission_rate |
Probability of transmission. |
vax_efficacy |
Probability of vaccine efficacy. |
incubation_period |
Average number of incubation days. |
prodromal_period |
Average number of prodromal days. |
rash_period |
Average number of rash days. |
days_undetected |
Average number of days undetected. Detected cases are moved to isolation and trigger the quarantine process. |
hospitalization_rate |
Probability of hospitalization. |
hospitalization_period |
Average number of days in hospital. |
prop_vaccinated |
Proportion of the population vaccinated. |
quarantine_period |
Number of days an agent is in quarantine. |
quarantine_willingness |
Probability of accepting quarantine ( see details). |
isolation_period |
Number of days an agent is in isolation. |
... |
Further arguments (not used). |
This model can be described as a SLIHR model with isolation and quarantine. The infectious state is divided into prodromal and rash phases. Furthermore, the quarantine state includes latent, susceptible, prodromal, and recovered states.
The model is a perfect mixing model, meaning that all agents are in contact with each other. The model is designed to simulate the spread of Measles within a school setting, where the population is assumed to be homogeneous.
The quarantine process is triggered any time that an agent with rash is
detected. The agent is then isolated and all agents who are unvaccinated are
quarantined (if willing). Isolated agents then may be moved out of the
isolation in isolation_period days. The quarantine willingness parameter
sets the probability of accepting quarantine. If a quarantined agent develops
rash, they are moved to isolation, which triggers a new quarantine process.
The basic reproductive number in Measles is estimated to be about 15. By default, the contact rate of the model is set so that the R0 matches 15.
When quarantine_period is set to -1, the model assumes
there is no quarantine process. The same happens with isolation_period.
Since the quarantine process is triggered by an isolation, then
isolation_period = -1 automatically sets quarantine_period = -1.
The model uses hospitalization rates instead of probabilities. To learn
more about this, see the documentation in ModelMeaslesMixing().
The ModelMeaslesSchool function returns a model of classes epiworldR::epiworld_model and epiworld_measlesschool.
As of version 0.10.0, the parameter vax_improved_recovery has been removed
and is no longer used (it never had a side effect). Future versions may not
accept it.
This model was built as a response to the US Measles outbreak in 2025. This is a collaboration between the University of Utah (ForeSITE center grant) and the Utah Department of Health and Human Services.
Jones, Trahern W, and Katherine Baranowski. 2019. "Measles and Mumps: Old Diseases, New Outbreaks."
Liu, Fengchen, Wayne T A Enanoria, Jennifer Zipprich, Seth Blumberg, Kathleen Harriman, Sarah F Ackley, William D Wheaton, Justine L Allpress, and Travis C Porco. 2015. "The Role of Vaccination Coverage, Individual Behaviors, and the Public Health Response in the Control of Measles Epidemics: An Agent-Based Simulation for California." BMC Public Health 15 (1): 447. doi:10.1186/s12889-015-1766-6.
"Measles Disease Plan." 2019. Utah Department of Health and Human Services. https://epi.utah.gov/wp-content/uploads/Measles-disease-plan.pdf.
epiworld-methods
Other Models:
ModelMeaslesMixing(),
ModelMeaslesMixingRiskQuarantine()
Other measles models:
ModelMeaslesMixing(),
ModelMeaslesMixingRiskQuarantine()
# An in a school with low vaccination model_measles <- ModelMeaslesSchool( n = 500, prevalence = 1, prop_vaccinated = 0.70 ) # Running and printing run(model_measles, ndays = 100, seed = 1912) model_measles plot(model_measles)# An in a school with low vaccination model_measles <- ModelMeaslesSchool( n = 500, prevalence = 1, prop_vaccinated = 0.70 ) # Running and printing run(model_measles, ndays = 100, seed = 1912) model_measles plot(model_measles)
A dataset containing population information for the Short Creek area (Hildale city, Utah, Colorado City town, Arizona, and Centennial Park, Arizona) organized by age groups.
short_creekshort_creek
A data frame with 15 rows and 4 columns:
character. Labels describing the age groups.
numeric. Population counts for each age group.
numeric. Age limit boundaries for each group.
numeric. Vaccination rate for each age group.
This dataset provides demographic information for the Short Creek area (Hildale city, Utah, Colorado City town, Arizona, and Centenial Park, Arizona), with population data disaggregated by 15 age categories. This dataset matches the short_creek_matrix matrix.
This data uses real vaccination rates from publicly available school records, and population age structure and composition from the latest US census. Vaccination rates for the non-school-aged population were imputed based on assumptions and do not reflect the actual vaccination information for those age groups.
The data was generated using the multigroup.vaccine R package:
Toth D (2025). multigroup.vaccine: Multigroup Vaccine Model. R
package version 0.1.0, commit 3047ebf568c9b2028336dc14af587a282de9e225,
https://github.com/EpiForeSITE/multigroup-vaccine. The source code
is available at https://github.com/UofUEpiBio/measles
data(short_creek) head(short_creek)data(short_creek) head(short_creek)
A matrix containing spatial data for the Short Creek area (Hildale city, Utah, Colorado City town, Arizona, and Centenial Park, Arizona). The matrix provides an estimate of the mixing rates between schools and the rest of the population in the area.
short_creek_matrixshort_creek_matrix
A row-stochastic matrix (rows add up to one) with 15 rows and 15 columns with the
The data was generated using the multigroup.vaccine R package:
Toth D (2025). multigroup.vaccine: Multigroup Vaccine Model. R
package version 0.1.0, commit 3047ebf568c9b2028336dc14af587a282de9e225,
https://github.com/EpiForeSITE/multigroup-vaccine. The source code
is available at https://github.com/UofUEpiBio/measles