Skip to contents

Builds country-specific Beta priors for prop_V1_initial and prop_V2_initial by reading the raw GTFCC OCV request log, classifying doses by regimen (single-dose Euvichol-S vs. two-dose Shanchol/Euvichol/Euvichol+), pairing rounds within each campaign, converting doses to effective immunisations with phi_1 / phi_2, applying omega_1 / omega_2 waning from administration date to simulation start, and moment-matching the resulting country-level proportions to Beta distributions.

Usage

est_initial_V1_V2(
  PATHS,
  config,
  date_start = NULL,
  cv = 0.4,
  omega_1 = NULL,
  omega_2 = NULL,
  phi_1 = NULL,
  phi_2 = NULL,
  t_lag = 14,
  vacc_ceiling_frac = 0.7,
  fallback_shape1_V1 = 0.5,
  fallback_shape2_V1 = 49.5,
  fallback_shape1_V2 = 0.5,
  fallback_shape2_V2 = 99.5,
  verbose = TRUE
)

Arguments

PATHS

A list of paths (as returned by get_paths). Used to locate ees-cholera-mapping/data/cholera/epicentre/gtfcc/cholera_vacc_requests.csv via PATHS$ROOT.

config

A MOSAIC config list (e.g. config_default). Used for location_name, N_j_initial, and date_start.

date_start

Simulation start date (Date or character "YYYY-MM-DD"). Defaults to config$date_start. Only campaigns delivered strictly before this date contribute to V1/V2 initial conditions.

cv

Coefficient of variation for the Beta prior (natural scale). Default 0.40. Tighter values produce narrower priors; looser values permit more data-driven posterior movement.

omega_1

One-dose waning rate (per day). Defaults to the natural-scale mean of priors_default$parameters_global$omega_1.

omega_2

Two-dose waning rate (per day). Defaults to the natural-scale mean of priors_default$parameters_global$omega_2.

phi_1

One-dose vaccine effectiveness at delivery. Defaults to the mean of priors_default$parameters_global$phi_1.

phi_2

Two-dose vaccine effectiveness at delivery. Defaults to the mean of priors_default$parameters_global$phi_2.

t_lag

Protection onset lag (days). Waning starts at event_date + t_lag. Default 14.

vacc_ceiling_frac

Hard ceiling on combined V1+V2 dose coverage (fraction of population). Default 0.70 (v0.28.7; was 0.60 in v0.28.6). If the waned dose-recipient sum exceeds this, V1 and V2 are scaled proportionally. The ceiling applies to recipients (published coverage), before phi_1/phi_2 are applied. Rationale for 0.70: published OCV campaigns routinely reach 65-80% coverage (Abubakar et al. 2018 DRC 65%; Qadri et al. 2015 BGD 75%; Luquero et al. 2014 Haiti 80%+). A lower ceiling under-captures real emergency responses.

fallback_shape1_V1, fallback_shape2_V1, fallback_shape1_V2, fallback_shape2_V2

Beta shape parameters used as a fallback when a country has no OCV history in the CSV. Defaults match the pre-v0.22.11 uninformative priors (Beta(0.5, 49.5) for V1, Beta(0.5, 99.5) for V2).

verbose

Logical; emit per-country diagnostics. Default TRUE.

Value

A list with the same nested structure as priors_default$parameters_location: $prop_V1_initial$location[[iso]] and $prop_V2_initial$location[[iso]] each carry list(distribution = "beta", parameters = list(shape1, shape2)).

Details

Biological notes:

  • V1/V2 in the engine are effectively-vaccinated compartments: there is no vaccinated-but-unprotected substate, V1/V2 are not exposed to the force of infection, and only the effective fraction of each delivered dose enters them (V1 += phi_1 * nu_1 - phi_2 * nu_2, V2 += phi_2 * nu_2; sim_components.R vaccination step and MOSAIC-docs 04-model-description "Table of vaccination model terms"). The initial conditions use the same convention ("cumulative effective coverage", 04-model-description "Vaccinated initial conditions"), so pre-t0 doses are multiplied by phi_1/phi_2. (Before v0.100.0 this function counted raw doses on the premise that the engine split V into immune and susceptible substates; that split was removed in laser-cholera 0.12 and never existed in the R engine, so raw counts overstated the protected mass by 1/phi.)

  • For two-dose regimens, as in the engine, second doses go to the effective first-dose recipients: with R01 and R02 dose counts \(d_1, d_2\) and \(d_2' = \min(d_2, \phi_1 d_1)\), V2 receives \(\phi_2 d_2'\) (waning with omega_2 from R02) and V1 keeps \(\phi_1 d_1 - \phi_2 d_2'\) (waning with omega_1 from R01).

  • Single-dose Euvichol-S campaigns contribute only to V1.

  • Blank/unknown vaccine products are treated conservatively as two-dose (most pre-2022 campaigns were two-dose Shanchol).

  • Waning model: single exponential. Real OCV waning is biphasic (fast decay in months 0-12, slower thereafter; see Xu et al. 2024, Bi et al. 2017). Single exponential biases V1/V2 counts upward by roughly 10-20% for campaigns 2-3 years pre-date_start relative to a biphasic model. This is considered acceptable for initial-condition purposes; implement biphasic separately if needed.

  • Coverage ceiling: vacc_ceiling_frac = 0.70 reflects observed peak OCV coverage in published campaigns: DRC Katanga 65% (Abubakar et al. 2018), Bangladesh 75% (Qadri et al. 2015), Haiti 80%+ (Luquero et al. 2014). A lower ceiling under-captures real high-coverage emergency responses.