Dr. Arun Mitra Peddireddy JHAPSMCON 2026 4th Annual Jharkhand State Conference of IAPSM
The Counterfactual
What would have happened without lockdown / masks / vaccines?
We can never observe both as there is only one history.
Models are the only way to answer counterfactual questions.
Build a baseline. Build an alternative.
The comparison is the answer.
Three Intervention Types
A Hypothetical COVID-Like Wave
A pathogen seeds an age-structured population (POLYMOD survey: 0–20, 20–40, 40+). COVID-like timescales, with one-in-a-million initially infectious in each age band.
Parameter
Value
Meaning
transmission_rate
0.3
per-contact infection rate
infectiousness_rate
1/5
rate of E → I (5-day latent period)
recovery_rate
1/7
rate of I → R (7-day infectious period)
Population
POLYMOD demography (3 age groups)
from socialmixr::polymod
time_end
365 days
one-year horizon
The question: how do three interventions compare against doing nothing?
Building the Population
library(epidemics); library(socialmixr); library(tidyverse)contact_data <-contact_matrix( socialmixr::polymod,age_limits =c(0, 20, 40),symmetric =TRUE)contact_matrix <-t(contact_data[["matrix"]])demography_vector <- contact_data[["demography"]][["population"]]names(demography_vector) <-rownames(contact_matrix)initial_i <-1e-6init_row <-c(S =1- initial_i, E =0, I = initial_i, R =0, V =0)initial_conditions <-rbind(init_row, init_row, init_row)rownames(initial_conditions) <-rownames(contact_matrix)uk_population <-population(name ="Population",contact_matrix = contact_matrix,demography_vector = demography_vector,initial_conditions = initial_conditions)
1
POLYMOD survey of who-meets-whom — used to build a contact matrix per day, per age group.
2
Three age groups → a 3 × 3 contact matrix C, plus a demography vector with one population count per group.
3
Initial conditions as proportions per age group (epidemics expects rows summing to 1).
4
The population object bundles structure + demography + starting state.