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: 08.30-09.30
- Registration at the Hub, LSHTM main building, Keppel Street
Monday 7 September: 09.30-09.45
- Introduction and course overview: the course, the instructors and the week ahead (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)
If you can, install everything before you arrive. The packages come to around 1 GB and Julia precompiles them on first use, which takes 15–30 minutes on a good connection. If you have not managed it, come anyway and we will get you running in this slot.
Session 1: Bayesian inference with mathematical models
Monday 7 September: 10.30-11.00, 11.30-12.30 and 13.30-14.00
- Slides: what model fitting and inference mean, likelihoods, and Bayes’ rule (25 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 (20 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:
- meeting the Tristan da Cunha outbreak, and what the attack totals already say (10 mins)
- prior predictive checks, and what vague priors actually imply (20 mins)
- posterior predictive distributions, predictive p-values and residuals (25 mins)
- Wrap up (10 mins)
Session 5: Modelling interlude — structure and stochasticity
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:
- building the SEITL model the failed checks call for (45 mins)
- simulating it deterministically and stochastically, and comparing (45 mins)
- Wrap up (10 mins)
Tuesday 8 September: 19.00
- Course dinner at Antalya, 103-105 Southampton Row, Holborn, WC1B 4HH
Day 3: Particle-based methods and observation models
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 and model comparison
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)
Session 8: Observation models
Wednesday 9 September: 15.45-17.00
- 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)
- Wrap up (5 mins)
Day 4: Likelihood-free inference and closing
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 9: Approximate Bayesian computation
Thursday 10 September: 09.45-11.00
- Introduction: likelihood-free inference, and choosing a distance instead (10 mins)
- Practice:
- ABC rejection sampling, and finding a workable acceptance threshold (20 mins)
- what a summary statistic and a distance give up (20 mins)
- ABC-SMC, and comparing it against rejection ABC and particle MCMC (20 mins)
- Wrap up (5 mins)
Session 10: Synthesis and next steps
Thursday 10 September: 11.30-12.15
- What we did, the bigger picture, and where to go next (45 mins, including the discussion and questions)
Bring a model you actually want to fit. The discussion works best when people argue about real problems rather than the worked examples.
Close
Thursday 10 September: 12.15-12.30
- Wrap-up and feedback (15 mins)
Further topics
Four sessions are provided for self-study rather than taught in the room. They 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
- Neural posterior estimation: amortised inference with normalising flows, for models that are simulated many times