Last updated: 2020-12-02-06:19 UTC
Updates daily at 06:00 UTC
New: The road to a COVID-free Victoria
Click here for US per-state plots
On this page are per-country plots sorted by per capita cumulative deaths, from highest to lowest.
Note that official data on recoveries is not used and recoveries are instead estimated. Active cases are then inferred from this estimate. See the bottom of this page for details.
Larger plots for individual countries are at the following links:
Caveats and explanations
- Daily cases and daily deaths are plotted with 5-day exponential smoothing
- Recoveries are estimated based on the assumption that 85% of surviving cases are mild and recover after 17±4 days, and 15% are severe and recover after 32±12 days.
For the mathematically inclined:
Recoveries Restimated(t) are computed as the convolution of living cases (confirmed cases C(t) minus deaths D(t)) with a probability distribution for the time to recovery, equal to the weighted sum of two normal distributions, one for severe cases and one for mild cases:
Restimated(t) = (C(t) - D(t)) ∗
The mean and standard deviation in severe cases comes from the WHO's Report of the WHO-China Joint Mission on Coronavirus Disease 2019 (COVID-19) (page 14) which states that: "the median time from onset to clinical recovery [...] is 3-6 weeks for patients with severe or critical disease", and for mild cases from a study of 21 Chinese COVID-19 patients, who were discharged "after a mean hospitalized period of 17±4 days".
- Pm = 0.85 is the proportion of cases that are mild
- Ps = 0.15 is the proportion of cases that are severe
- Nμσ(t) is the probability density function for a normal distribution with mean μ and standard deviation σ
- μm = 17 days is the mean recovery time for a mild case
- σm = 4 days is the standard deviation of recovery time for a mild case
- μs = 32 days is the mean recovery time for a severe case
- σs = 12 days is the standard deviation of recovery time for a severe case
- ∗ is the convolution operation
- Doubling time of active cases on each day is computed from an exponential fit to the previous 5 days of data. Projections are based on the most recent such exponential fit. This is a rough answer to the question "What will happen if nothing changes about testing rates or control measures?" This can model both growth and decline in active cases, both of which should be approximately exponential while conditions remain fixed (and whilst most of the population has not been infected yet).
- Shaded region in the growth rate plot represents 1σ uncertainty range of the growth rate computed from the fit parameters. Additional labels on the right side of the growth rate plot show the doubling times corresponding to the growth rates (negative doubling times are halving times)
- The "ICU beds ≈ critical cases" line is based on the figure that 5% of diagnosed cases are critical. This is a measure of when each country's healthcare system is completely overwhelmed. Healthcare systems will be overwhelmed to a great extent much before this point is reached, however, since ICU beds are also required for non-COVID-19 cases, are not geographically distributed identically to infections, and medical staff and ventilator availability limits healthcare capacity before beds actually run out. For example, some regions in Italy were already triaging patients for critical care when the national figures were a factor of ten below running out of beds. Countries increasing their ICU capacity during the pandemic is not accounted for, this is only based on pre-pandemic ICU bed numbers. For soome countries as well as the 'World' plot, this line is absent, as I have not found a data source for ICU beds per capita.
- The "Δ doubling/halving in" statistic for deaths is number of days it takes for the daily number of deaths to double, not the total number of deaths, since the latter is less meaningful. It is calculated from the ratio of deaths over the last 5 days to that of the preceding 5 days - this is less fraught than attempting a fit of the data when it is very noisy. The uncertainty in the doubling/halving time is based on assuming sqrt(N) uncertainty in the number of deaths in a any time interval.
- Data quality is limited by testing and reporting within each country, and the fact that these conditions are changing in time.
- 2020-11-07: Add Croatia and Slovakia. Reduce number of plots per column to give more space
- 2020-10-26: Add Vietnam
- 2020-09-13: Add Hungary
- 2020-06-22: Plots are now sorted by per-capita cumulative deaths instead of per-capita cumulative confirmed cases. This is a more reliable measure of the severity of each country's outbreak
- 2020-06-22: Switched back to Johns Hopkins as the data source, as ulklc/covid19-timeseries is no longer updating.
- 2020-06-04: Added Egypt, Colombia, Qatar, Bangladesh, Belarus, Kuwait, Ukraine, Philippines, Argentina
- 2020-05-30: Added daily cases and daily deaths curves.
- 2020-04-23: Added Greece.
- 2020-04-22: Added Peru, Ecuador, Romania, Saudi Arabia, Pakistan, and United Arab Emirates.
- 2020-04-15: Add Hong Kong
- 2020-04-12: Switch to estimating recoveries instead of using official data. Add Poland
- 2020-04-07: Added Finland.
- 2020-04-05: Added US per-state plots, and Chile, Turkey, Portugal, Israel, Sweden, Ireland, and Denmark.
- 2020-03-30: Added separate plots for individual countries.
- 2020-03-26: I got feedback that the doubling/halving times plots were confusing - so now am plotting growth rate instead, on a separate plot for each country. Also added Thailand, New Zealand, and 'World' plots.
- 2020-03-25: Began showing doubling/halving times instead of growth rates. Added plot of doubling/halving times over time
- 2020-03-23: Data source changed from Johns Hopkins to ulklc/covid19-timeseries, as Johns Hopkins is dropping recoveries from its datasets (among other issues).
Source for case numbers: Johns Hopkins COVID data on github.
Plots by Chris Billington. Contact: email@example.com
Python script for producing the plots can be found at https://github.com/chrisjbillington/chrisjbillington.github.io/blob/master/covid.py. The script is messy, as things are in a state of flux and I've been experimenting and switching data sources. It will likely be cleaner once it becomes clear which data source is best.