COVID19BIOSTAT / covid19_prediction

Survival-Convolution Model for COVID-19 Prediction
Apache License 2.0
16 stars 3 forks source link

Survival-Convolution Model for COVID-19 Prediction

Study Status: Results Available

The coronavirus disease COVID-19 has created major health crisis around the world. It is imperative to predict the disease epidemic, investigate the impacts of containment and mitigation measures on infection rates, and compare between countries. Existing methods for infectious disease modeling are SEIR models that rely on many untestable prior assumptions (e.g., fitting past influenza data) and unreliable with wide prediction intervals.

We develop a robust survival-convolution model with few parameters that incorporates the date of unknown patient zero, latent incubation periods, and time-varying reproduction numbers.

Our model is also used by CDC for COVID-19 ensemble forecast.

Real Time Prediction

Note: Once the testing capacity is increased, the trend will change again. These are beyond what our model can predict. Since April 14 2020, CDC case counts include both confirmed and probable cases following new CDC guidelines.

Data source for US: JHU CSSE group

US Daily New Cases (with training data up to Mar 27, 2021):

Observed and predicted daily new cases, with a 95% prediction interval.

US Daily Inc Deaths:

The cumulative deaths by Mar 8, 2021 will be over 600k.

Data source for Italy: Worldmeters

Italy Daily New Cases (with training data up to April 29)::

Italy

Observed and predicted daily new cases and 95% prediction interval (shaded). First dashed line indicates the nation-wide lockdown (Mar 11). Second and third dashed line indicates two or four weeks after. Training data: Feb 20 to Apr 29; Testing data: Apr 30 to August 7.

Setup Requirements

Example

Input data

Suppose that we have an numpy.array train_data indicating observed daily confirmed/diagnosed cases starting from the first observed case. We will save it as "train_data.npy".

>>> train_data
array([    1.,    20.,     0.,     0.,    18.,     4.,     3.,     0.,
           3.,     5.,     7.,    25.,    24.,    34.,    63.,    98.,
         116.,   106.,   163.,   290.,   307.,   329.,   553.,   587.,
         843.,   983.,  1750.,  2950.,  4569.,  5632.,  4848.,  9400.,
       10311., 11166., 13451., 17388., 18743., 19452., 20065., 20732.,
       24914., 26655., 30107., 32454., 34196., 25400., 31240., 33502.,
       31997., 33606., 33752.], dtype=float32)

Command

Now we want to fit this training data into our model. We need to decide the following arguments.

Output

After running the above command, we should have the following output files in output_path.