EpiAware EpiAware EpiAware
  • Approaches
    • Overview
    • Composed distributions
    • Composable Turing models
  • Tutorials
  • Docs
  • News
  • Gallery
  • Guides
    • Resources
    • Using Julia
    • FAQ
    • Contributing
    • Developer docs
  • Community
    • Get involved
    • Team
    • Funding
    • epinowcast & the forum

Approaches

Why we think composition is worth the effort, what we want from it, and the routes we are exploring.

We are trying more than one way to compose infectious disease models, and keeping them interoperable. This page sets out why we think composition is worth the effort, what we want from any approach to it, and the routes we are exploring so far.

Why we need this

Building a model to inform a decision is rarely one step. You write down what you think is going on, simulate from it, fit it to data, criticise the result, change your mind, and go round again. That is far easier when a model is a single object that can be taken apart and put back together than when it is a chain of separate fits handing summaries along.

Passing results from one model to the next loses information. Each model hands on a summary rather than the underlying evidence, and inherits the assumptions made before it, so by the time an answer reaches a decision nobody can check what that cost.

Fitting everything together at once avoids that and keeps the statistics honest. The trouble is that a model built that way is usually built for one problem, by one team, and cannot be taken apart afterwards, so the next outbreak means starting again.

Composition is our attempt to keep the single joint fit while still being able to swap a part out. We set out the full argument in our announcement post.

What we want from any approach

Whatever shape composition takes, we want the same things from it. This is our first cut, and we would like to be told where it is wrong.

  • Carry uncertainty the whole way through. From the processes you cannot see to the data you can, fitting everything together rather than in stages.
  • Combine in a principled way. Where things genuinely must be fitted in stages, combine them properly rather than by passing point estimates along.
  • Keep the parts separate. Transmission, the priors that drive it, and observation should be separate things, so different people can own them.
  • Let models nest inside models. Adding a data source or a process should not mean rewriting the model.
  • Support more than one kind of model. These come as renewal processes, compartmental models, agent-based models, and more.
  • Make stratification close to free. Age, place, or risk group should not mean a rewrite and a lot of bookkeeping.
  • Let a component carry its own priors. Domain knowledge should travel with the component that encodes it.
  • Allow incremental adoption. Nobody should have to abandon a working model to try this.
  • Stay useful on its own. A component should earn its keep even outside the wider system.
  • Use standard interfaces. Parts written independently should still fit together and still propagate uncertainty correctly.
  • Specify once, then simulate and fit. The generative story and the fit should not be able to drift apart.
  • Be quick to change and easy to inspect. A decision is usually waiting.

The approaches

We are not sure yet which of these will work best, so we are trying more than one and keeping them interoperable. Both work with the same underlying packages, and they can be combined in a single analysis.

Composed distributions

Describe what happens to a case over time, from onset through to an outcome, by joining the delays between events into a single distribution. That one object can simulate a case or be fitted to observed ones, and it can stand in wherever a delay is needed inside a larger model.

Read the approach →

Composable Turing models

Build a whole model from three interchangeable pieces, one for what drives transmission over time, one for how that produces infections, and one for how infections become the data you actually see. Any piece can be swapped for another without rewriting the rest.

Read the approach →

More approaches may join these as the ecosystem grows.

EpiAware — a composable Julia ecosystem for infectious disease modelling.

  • Packages

  • Get involved

  • Funding

  • Edit this page
  • Report an issue