Session timetable
The course runs from Monday 7 to Thursday 10 September 2026 at the London School of Hygiene & Tropical Medicine. Each day runs 09:30–12:30 and 13:30–17:00, with a half-hour break in each block. Thursday is a half day.
The afternoon break is a chance to get outside — Russell Square and the surrounding gardens are a few minutes’ walk away, and there is no shortage of coffee on the way. Sitting in front of a screen debugging a sampler for seven hours is not good for anyone.
Day 1: Inference and fitting deterministic models
Monday 7 September
Monday 7 September: 09.00-09.30
- Registration
Monday 7 September: 09.30-09.45
- Welcome and introduction to the course and the instructors (15 mins)
Getting set up
Monday 7 September: 09.45-10.30
- Getting set up for the course: installing Julia and the
MFIIDDpackage, and checking everyone’s environment runs (45 mins)
Please install everything before you arrive. Package installation downloads around 1 GB and precompiles it, which takes 15–30 minutes on a good connection and considerably longer on a room full of laptops at once. This slot is for fixing what has gone wrong, not for starting from scratch.
Session 1: Introduction to model fitting
Monday 7 September: 10.30-11.00, 11.30-12.30 and 13.30-14.00
- Introduction: what model fitting and inference mean, likelihoods, and Bayes’ rule (20 mins)
- Practice:
- simulating an SIR model and exploring what the priors imply (35 mins)
- evaluating a Poisson likelihood against observed data (30 mins)
- combining them into a posterior and exploring it by grid search (25 mins)
- Wrap up (10 mins)
Session 2: Markov chain Monte Carlo
Monday 7 September: 14.00-15.15 and 15.45-17.00
- Introduction: why we sample, rejection sampling, Metropolis-Hastings and gradient-based methods (25 mins)
- Practice:
- implementing Metropolis-Hastings for a one-dimensional target (40 mins)
- tuning a proposal distribution by hand, and finding out how hard that is (35 mins)
- handing the same job to Turing.jl, and comparing MH, RAM and NUTS (40 mins)
- Wrap up (10 mins)
Day 2: Diagnostics, model checking and stochastic models
Tuesday 8 September
Tuesday 8 September: 09.30-09.45
- Day 1 review (15 mins)
Session 3: MCMC diagnostics
Tuesday 8 September: 09.45-11.00 and 11.30-12.00
- Introduction: trace plots, R̂, effective sample size and common failure modes (20 mins)
- Practice:
- generating good and bad chains and comparing their trace plots (40 mins)
- computing R̂, ESS and MCSE, and diagnosing a badly specified model (35 mins)
- Wrap up (10 mins)
Session 4: Model checking and validation
Tuesday 8 September: 12.00-12.30 and 13.30-14.30
- Introduction: the Bayesian workflow, prior and posterior predictive checks (25 mins)
- Practice:
- prior predictive checks, and what vague priors actually imply (30 mins)
- posterior predictive distributions, predictive p-values and residuals (25 mins)
- Wrap up (10 mins)
Session 5: Modelling interlude — Tristan da Cunha and the SEITL model
Tuesday 8 September: 14.30-15.15 and 15.45-17.00
- Introduction: the state-space view, and why stochastic models need different machinery (20 mins)
- Practice:
- meeting the Tristan da Cunha outbreak and building the SEITL model (45 mins)
- simulating it deterministically and stochastically, and comparing (45 mins)
- Wrap up (10 mins)
Day 3: Particle-based methods
Wednesday 9 September
Wednesday 9 September: 09.30-09.45
- Day 2 review (15 mins)
Session 6: Particle filters
Wednesday 9 September: 09.45-11.00 and 11.30-12.30
- Introduction: the marginal likelihood, and sequential Monte Carlo (20 mins)
- Practice:
- seeing why a deterministic likelihood fails for a stochastic model (30 mins)
- watching particles propagate, get weighted and be resampled (40 mins)
- calibrating the number of particles (35 mins)
- Wrap up (10 mins)
Session 7: Particle MCMC
Wednesday 9 September: 13.30-15.15
- Introduction: why a noisy likelihood estimate still targets the right posterior (20 mins)
- Practice:
- assembling the particle filter and Metropolis-Hastings into PMMH (35 mins)
- running a short chain and seeing the mixing problem first hand (25 mins)
- working with a pre-computed long chain, and comparing against the deterministic fit (15 mins)
- Wrap up (10 mins)
Open session and review
Wednesday 9 September: 15.45-17.00
- Time to catch up on anything unfinished, revisit earlier sessions, or discuss your own work with the instructors (75 mins)
Wednesday 9 September: 19.00
- Course dinner
Day 4: Observation models and Approximate Bayesian Computation
Thursday 10 September
Thursday 10 September: 09.30-09.45
- Day 3 review: where the week has got to, from deterministic fitting to particle MCMC (15 mins)
Session 8: Observation models and ABC
Thursday 10 September: 09.45-11.00 and 11.30-12.15
- Introduction: what a Poisson likelihood assumes, overdispersion, and likelihood as a distance (15 mins)
- Practice:
- fitting with Poisson, and checking whether its variance assumption holds for the data (30 mins)
- the negative binomial, and seeing a likelihood as a distance function (25 mins)
- ABC rejection sampling, and finding a workable acceptance threshold (35 mins)
- ABC-SMC, and comparing it against rejection ABC (10 mins)
- Wrap up (5 mins)
If time allows, the closing section asks how much a single outlying observation moves each approach — a good discussion to finish on.
Close
Thursday 10 September: 12.15-12.30
- Summary, further reading and closing discussion (15 mins)
Further material
Two sessions are provided for self-study rather than taught in the room. Both build on the taught sessions and can be worked through afterwards at your own pace.
- Variational inference: fast approximate inference for real-time applications
- Universal differential equations: combining mechanistic models with neural networks
- Beyond Turing: the wider Julia ecosystem — alternative samplers, automatic differentiation backends, and what sits underneath