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

Model description #2

Merged
merged 2 commits into from
Nov 25, 2024
Merged

Model description #2

merged 2 commits into from
Nov 25, 2024

Conversation

swo
Copy link
Contributor

@swo swo commented Nov 22, 2024

General framework for stochastic realizations of ring vaccination scenarios, and assumptions that make it relevant for the modeling exercises we have at hand

Compare the analytical approach in https://github.com/cdcent/ring-vax-model; it might be nice for a widget to have both stochastic realizations and the expected value (of whatever outcomes we want to show)

@swo swo requested review from afmagee42 and paigemiller November 22, 2024 19:28
@afmagee42
Copy link
Contributor

This needs a rebase? I'm seeing template files deleted that I could have sworn we deleted in #1

README.md Outdated
- Contact tracing
- Contact tracing can detect infections among contacts, contacts of
contacts, etc.
- Contact tracing has different performance characteristics for each “ring.”
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Performance characteristics are:

  • Time required to find contact: Delay from detection of index case to finding contact
  • Test performance: Sensitivity/specificity of test used to determine if contact is infected, which could vary over the time since the contact's exposure
  • If the test is negative, potentially affect that contact's probability/timing of self-detection? Like, if my contact is positive for a disease, and I test negative, I might be more vigilant for symptoms.

(in this model we'll probably assume perfect test sens/spec)

Copy link
Collaborator

Choose a reason for hiding this comment

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

This seems like a model complexity that one merges in after MVP.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Agree; I want to have a place in the model architecture to allow for this, but set the parameters to the simplest ones for now

@swo swo requested a review from pearsonca November 23, 2024 14:01
README.md Outdated
- Disease progression: susceptible, exposed (i.e., will go onto infection),
infectious, recovered
- Individuals make contacts on some network, with some contact rate. Some
contacts are effective (i.e., can transmit infection).
Copy link
Collaborator

Choose a reason for hiding this comment

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

What do you foresee the modeling point being of distinguishing contacts & % of them effective, vs just an effective contact rate?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Fair, this distinction should live "outside" the model, even if the two things are separated in a UI for easier pedagogy

number of expected secondary infections.
- Some distribution of number of secondary infections around $R_0$ (e.g.,
Poisson)
- Assume that the number of secondary infections is uncorrelated across
Copy link
Collaborator

Choose a reason for hiding this comment

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

What are you saying with this assumption? The homogeneiety bit seems counter-intuitive. The "natural" outcome for most networks is that people with higher degree will tend to be connected to others with higher degree - is the plan to use a lattice like structure so as to avoid that?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I don't know about the network implications of this; curious if you can help!

For this very first pass model, I'd like to be able to not explicitly model the network, and treat each index case as statistically independent of the others

But maybe this is unrealistic and there should be some factor by which undetected contacts have a lower number of onward transmissions than the index case, and contacts of contacts have a further reduced number, etc. to account for the network structure

Although by at this point it feels like I should just explicitly model the network...

README.md Outdated
- Per-infection detection (aka "passive" detection, in which individuals
identify their own symptoms)
- % of infections identified in this way (in the absence of contact tracing)
- Distribution of times from exposure to detection
Copy link
Collaborator

Choose a reason for hiding this comment

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

Is this the likely distribution to have empirically justified times for? Could be, or could be time from symptom onset, or etc - something to think about.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

True: we're more likely to have exposure -> symptom onset, and symptom onset -> detection

I suppose this is another thing to live "outside" the model, in a sense: if the UI allows someone to input these two periods, we'd combine them into a single distribution on the backend somehow

README.md Outdated
- Contact tracing
- % of first ring (contacts) identified
- Distribution of times from index exposure to contact identification (and
what to do if this is unphysically short, i.e. before the contact would
Copy link
Collaborator

Choose a reason for hiding this comment

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

Wouldn't call this unphysical - it's not, say, a negative time. But I think I get the point here.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I guess, better to say: this is the distribution of times it takes to do the contact tracing, and then we need some separate model logic about what happens when the contact tracing discovers a contact at different stages of their disease progression.

In our simple first-pass model, with perfect intervention efficacy, we say they won't transmit any more, even if we trace them before the onset of symptoms

README.md Outdated
test positive)
- % of second ring (contacts of contacts) identified
- Distribution of times for second ring
- No third ring infections (i.e., contacts of contacts of contacts) can be
Copy link
Collaborator

Choose a reason for hiding this comment

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

This is the one place I think warrants more complexity. Typical contact tracing interventions expand whenever they identify a new case at the time of tracing. So if I find an actively infectious individual as a contact, I'd treat them as a new index case.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Cf. my note about about the network. I can see why this is an advantage of your approach (computing probability of extinction). It's starting to feel flimsy to me to assume that the originally seeded infection and any further undetected infections are statistically independent.

@afmagee42 afmagee42 mentioned this pull request Nov 25, 2024
@swo swo force-pushed the swo_model_description branch from 610e268 to 83a7713 Compare November 25, 2024 20:30
@swo
Copy link
Contributor Author

swo commented Nov 25, 2024

Thanks @pearsonca for comments. I got a number of these incorporated.

@afmagee42 @paigemiller I think the trick now is deciding what to do about undetected secondary (or tertiary, etc.) infections. Treating them as new index cases, with the same distribution of secondary cases, makes (I'm suspecting) some strong and implausible assumption about the network structure.

@swo swo merged commit d16d1e5 into main Nov 25, 2024
1 check passed
@swo swo deleted the swo_model_description branch November 25, 2024 20:31
@afmagee42
Copy link
Contributor

I don't think, and I haven't setup #3 in such a way, that we need to imagine re-starting the whole simulation for cases in rings around detected individuals.

I think we need to decide when to stop simulating, but otherwise I think we can plunk down one index infection and just let the simulation run and see what happens.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants