CodeForPhilly / chime

COVID-19 Hospital Impact Model for Epidemics
https://codeforphilly.github.io/chime/
MIT License
205 stars 151 forks source link

Improve Model #99

Open sam-writer opened 4 years ago

sam-writer commented 4 years ago

Overview

Currently, we use a deterministic SIR model (see sir and sim_sir in models.py) to predict everything. It does not have many parameters, which I think contributes to the ease of use and adoption of the tool... however, accuracy is also of paramount importance. There have been multiple proposed improvements.

Proposed Improvements

Concerns

Definition of Done

This ticket is complete when we have a plan for improving the model, which takes into account the concerns.

briglass commented 4 years ago

Regarding incoming infections, this simulator: http://covidsim.eu/ has an "Infections from outside of the population [per day]", which I am assuming to be accomplished via a monotonic daily increase to S, although I am not sure

hakocon commented 4 years ago

I really like the idea of social distancing (or I was also thinking population density as a proxy based on ZIP or something like that). Also, would it be valuable to bring in the age distribution of a location? This is specifically dangerous for older folks, so locations with a higher number of elderly might see different distributions of acute/critical care patients than those with lower numbers. Just my thoughts, thanks!

sam-writer commented 4 years ago

@hakocon demographics seem very important, I agree, and that is probably just an API call away.

Population distancing as a proxy for social distancing, however, I feel like that assumption could be very wrong - e.g. San Fransisco, with it's shelter in place order, vs somewhere in rural Alaska which, as of today, has a Representative who is saying that fears over "the beer virus" are "blown out of proportion" and that "it’s not nearly as deadly as the other viruses we have."

I don't think we should infer this... but if we were going to automatically infer social distancing for a location, I would rather do it by an algorithm like (pseudocode):

social_distancing_phrases = ["shelter in place", "social distancing", ...]
hoax_phrases = ["hoax", "overblown", ...]

sd_score = 0
hoax_score = 0

def infer_social_distancing(city_name):
    search_results = get_google_top_100_pages_for_term(city_name + " coronavirus")
    texts = get_text_from_pages(search_results)
    for sdp in social_distancing_phrases:
        if sdp in text:
            sd_score += 1
        if hoax_score in text:
            hoax_score += 1
    score = somehow_convert_these_to_a_score(sd_score, hoax_score)
    return score
selahlynch commented 4 years ago

Are daily counts of COVID related hospital/ICU bed usage at Penn Medicine or another hospital system available? If so we can use this to test some of the models.

cjbayesian commented 4 years ago

We need to have an improved way to estimate current # infected. I like the approach taken here: https://github.com/jwrichar/COVID19-mortality/blob/master/State-wise%20Unreported%20COVID-19%20Cases%20in%20the%20U.S..ipynb

quinn-dougherty commented 4 years ago

issue too broad, but has a lot of useful notes and discussion on it so i'm reticent to close it

sam-writer commented 4 years ago

@quinn-dougherty I agree, this is too broad, but the collection of ideas is valuable. Is there some way to make the output of this ticket: