Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a time-heterogeneous SIR model #2517

Merged
merged 22 commits into from
Jun 5, 2020
Merged

Add a time-heterogeneous SIR model #2517

merged 22 commits into from
Jun 5, 2020

Conversation

fritzo
Copy link
Member

@fritzo fritzo commented Jun 3, 2020

Addresses #2426

This adds an SIR model with time-varying response rate rho and reproductive number Re. The response rate is assumed to be piecewise constant, say depending on known testing capacity. The reproductive number undergoes Brownian motion in log space. The motivation is to handle real-world datasets where policy changes can effect reproductive number over time. Existing homogeneous models are a very poor fit.

Mechanically this introduces a new autovectorization strategy, which we might eventually generalize into a strategy for poutine.markov contexts. The strategy is to sample a time-batch of curr values as an dist.IndependentUniform(...), then truncate and pad to get a time-batch of prev values, and finally replay the model with a time-batch of (prev,curr) pairs (this only works for Markov window of 1; longer windows would require more states). I.e. this implements the common inference motif of converting a sequential directed Markov chain model to a batched factor graph model.

The new strategy supports a wide range of time-varying variables, both time-independent and Markov with window size 1. I see this as the last major feature of contrib.epidemiology before release.

Tested

  • smoke tests
  • added to examples/.../sir.py

@fritzo fritzo changed the base branch from dev to sir-simplify-transition June 3, 2020 18:24
@fritzo fritzo changed the title Sir heterogeneous Add a teim-heterogeneous SIR model Jun 4, 2020
@fritzo fritzo changed the title Add a teim-heterogeneous SIR model Add a time-heterogeneous SIR model Jun 4, 2020
@fritzo fritzo changed the base branch from sir-simplify-transition to dev June 4, 2020 17:58
@fritzo fritzo marked this pull request as ready for review June 4, 2020 17:59
martinjankowiak
martinjankowiak previously approved these changes Jun 4, 2020
Copy link
Collaborator

@martinjankowiak martinjankowiak left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

great that this works!

it really is getting quite complicated though so it's probably good that the current phase of feature addition is coming to an end.

pyro/contrib/epidemiology/models.py Outdated Show resolved Hide resolved
@martinjankowiak martinjankowiak merged commit 739d7a0 into dev Jun 5, 2020
@fritzo fritzo deleted the sir-heterogeneous branch June 5, 2020 15:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants