hackcollective / corona-calculator

📈 Understand the impact of social distancing measures upon Corona spread in your community
http://corona-calculator.herokuapp.com
MIT License
28 stars 15 forks source link

Feature: add controls for behaviour of asymptomatic individuals #75

Closed syltruong closed 4 years ago

syltruong commented 4 years ago

The current sidebar allows to choose the social exposure of an infected person.

However, someone who uses the tool is likely not to relate to this parameter, since he/she may not feel like an infected person.

The reasons for this feeling could be:

Thus, the current control may not be seen as reflective of the user's social behaviour.

--

In this PR, I suggest to make the controls more relatable by introducing 3 sliders instead of one:

Screenshot 2020-03-22 at 7 09 28 PM

This stresses that even a asymptomatic person can carry the virus and spread it to others.

The asymptomatic ratio is taken from this paper, which studied the population of the Diamond Princess cruise, which was subject to more extensive testing.

The epidemiological model is still an SIR, with different infection_rate for the 3 three populations (which depend on their average number of social interactions).

syltruong commented 4 years ago

thanks for the comment Pat and for the probability derivation. I confirm it is correct.

I am trying to understand how we could use this probability though, at least in the context of the SIR model, which uses raw population numbers of Susceptible, Infected, Recovered.

So far, we have been using raw numbers (eg. current number of reported cases) and ratios in the literature (eg. ratio of unreported cases / true cases) to obtain these raw numbers (==number of individuals in each and each infection state).

We could use P(I|A) to get the number of infected individuals among the asymptomatic people. To compute P(I|A) you would use raw figures (eg. number of true cases, population number). But if the goal is to compute again a raw number (eg. the number of infected individuals among the asymptomatic people), then we would be looping our derivations.

I do not know if I got your idea alright: I am more than happy to discuss.

==

A few more words about what I am suggesting.

With the sliders, we control how many people (on average):

It does not really matter what the chance of you being infected, conditionally on your absence of symptoms, is (it will probably be very [very] low, even over time). The real question is: 1) what if everybody in the same situation as me (\in{asymptomatic, symptomatic, diagnosed}) was doing the same thing as me (eg. meeting 15 people a day)? 2) Among the people in my situation, a number of them is infected: how does that affect the infection curve?

archydeberker commented 4 years ago

Hey @syltruong this is an awesome contribution!

We'd love to add something along these lines but we've got some qualms about overcomplicating the app. Currently we're thinking that perhaps just two sliders, corresponding to

Would be good. However I agree with Pat that we're going to need different transmission rates for the two groups - presumably somebody coughing and spluttering spreads much easier than somebody with no symptoms. We think we can probably derive these numbers from this Science paper, which really emphasizes the importance of including asymptomatic individuals in the simulations!

Thoughts?

archydeberker commented 4 years ago

In fact it was in the abstract!

Per person, the transmission rate of undocumented infections was 55% of documented infections ([46%–62%])
syltruong commented 4 years ago

I agree that using 2 sliders only can make the experience more intuitive.

What I was trying to address in particular were the cases of:

We can continue the discussion further on how this could be addressed, maybe with a different type of control

syltruong commented 4 years ago

at 647b011, the 3 controls are still here, but SIRModel and SIRModel2 are refactored

syltruong commented 4 years ago

At bb56d68, we have:

syltruong commented 4 years ago

At 48d2efc, we have:

Ready for review @archydeberker @psteeves

syltruong commented 4 years ago

addressed comments.

Ready for review by @psteeves