Table of Contents

COVID-19 Data Dashboard

Note: The Canadian Covid Open Data Working Group (CCODWG) has updated their data format, and the previous format stopped being updated on May 4, 2022. This affects my data products at the Canadian Public Health Region level (i.e. sub-province but larger than city neighborhoods; equivalent to US counties). I am working on updating my code to use the new data source; since I have a full-time job this may take some time. In the meantime up-to-date data products for health regions in Canada are not available past May 3, 2022. I apologize for the inconvenience.

Important Disclaimers

  • I am not an epidemiologist. I may get things wrong, and you should not use my analyses as predictive tools or for policy decisions.

  • I am providing access to data along with some basic mathematical and statistical manipulations of said data, packaged into visualizations I think are useful. I am not making predictions about where the pandemic is headed next.

  • Data on small populations are inherently more uncertain. Take any data product for local scales such as counties, neighborhoods, small states, etc with some hefty grains of salt.

  • These analyses are always retrospective. There is a known lag between when someone gets sick and when the databases find out about it, often several days to a week. When things are getting worse, assume they're worse than the data reveal. When they're getting better, however, assume you don't know what's actually going on, because there could be a growth in cases happening that hasn't shown up in the data yet. Additionally, many of my measures make use of rolling averages or running sums, which will also tend to increase the degree to which the analysis lags the real world. Where possible I use the center of the rolling window for the associated timestamp, which reduces the lag effect for historical data, but for recent data it absolutely still applies.

  • The data are always incomplete. Not everyone who gets covid gets recorded in the databases, because some people are asymptomatic and have no idea they're infected, some tested positive on an at-home rapid test and just immediately isolated and never went and got a PCR test, or they got sick and just never got tested at all.

  • Vaccination reduces the severity of infection. My analyses focus on case numbers, but there will come a point where that stops being a useful measure of the severity of an outbreak, because people won't get hospitalized or die from covid anymore.




My Data and Methodology Sources

For Toronto and Ontario data, I source my data directly from the respective public health authorities. Canadian public health region data is sourced from the COVID-19 Canada Open Data Working Group. For US and global data, I use the John's Hopkins COVID-19 Dashboard github repository.

Most data is synced twice a day at 10:30 am ET and 4:30pm ET, and plots are updated over the next 30 minutes. US counties for individual states are updated once a day over 12 hours starting at 1:30pm ET. During this time, individual plots for specific health regions may not be available. Refer to the timestamp at the bottom of the page for an individual county to see when it is likely to update. Note that data sources are updated by their respective public health authorities and data caretakers, and may not update at the same time or on a daily basis. In particular, weekends and statutory holidays may delay reporting. Also note that testing backlogs can also cause the data to lag real-world caseloads by significant margins.

I have repackaged the data from the various datasets into a hierarchical data format (HDF-5) that is available to download using the links on the right-hand side of the page. These datasets contain data all formatted the same way, with similar reference patterns, from national to local scales. The datasets also include my Rt values, along with the posterior probability distributions and likelihood functions (this accounts for the bulk of the dataset's size). A slim version that omits the posteriors and likelihoods is also available.

You can find a brief introduction to navigating the HDF5 datasets in Python here, and more-general information on accessing HDF5 datasets can be found in the h5py documentation and HDF specification.

A shapefile is also now available, which has identical naming conventions as the locations in the HDF5 file. No COVID-19 data is stored in the shapefile, only location names, shape data, and coordinates, but the HDF5 and shapefiles can be used together to map the data. A Python script is also provided which contains a routine for performing the merge using a GeoPandas GeoDataFrame. The script requires Pandas, GeoPandas, numpy, and h5py.

Toronto

Toronto cases per day

New COVID-19 cases per day in the City of Toronto. These data have not had a rolling average applied.
PNG | PDF


Toronto average cases per day

7-Day average of new COVID-19 cases per day in the City of Toronto. These data have had a rolling average applied.
PNG | PDF


Toronto case breakdown (linear)
Toronto case breakdown (logarithmic)

Breakdown of Toronto's daily cases by status--active, recovered, ever hospitalized, or dead. Note that 'hospitalized' is a status that applies to any of the other 3 categories. These data have not had a rolling average applied. The first plot gives the data on a linear vertical scale, while the second gives the data on a logarithmic vertical scale, which better shows different exponentials.
Left: PNG | PDF
Right: PNG | PDF


Toronto effective reproductive number

Raw and 2-week average of Toronto's effective reproductive number. This is the average number of people a sick person will infect. If this is increasing, then transmission is increasing, even if cases are still declining. If this is above 1, then cases are increasing. If it is decreasing, then transmission is declining, even if cases are still rising. Note that due to the existence of super-spreaders, this metric is not the same as the number of people the average sick person will infect (i.e. a person selected at random from the cohort of infected people will typically infect fewer people than would be implied by Rt, but a small fraction will infect many more.
PNG | PDF


3-week running sum of cases per day for all Toronto neighborhoods

3-week running sum of daily cases for all Toronto neighborhoods. This is analogous to the "Recent Cases" metric on the TPH dashboard.
PNG | PDF


Historical effective reproductive numbers for all Toronto neighborhoods, with opacity weighted by current active cases.

Effective reproductive numbers for all Toronto neighborhoods. The opacity of each line depends on the number of recent cases in that neighborhood (total in the last 3 weeks). This means that the darkest lines will determine the overall behavior of Toronto's overall effective reproductive number.
PNG | PDF


Current effective reproductive numbers for all Toronto neighborhoods, with opacity weighted by current active cases.

Current effective reproductive numbers for all Toronto neighborhoods. The opacity of each bar depends on the number of recent cases in that neighborhood (total in the last 3 weeks). This means that the darkest lines will determine the overall behavior of Toronto's overall effective reproductive number.
PNG | PDF

Current derivative of the effective reproductive numbers for all Toronto neighborhoods, with opacity weighted by current active cases.

Current time derivative of the effective reproductive number for all Toronto neighborhoods. The opacity of each bar depends on the number of recent cases in that neighborhood (total in the last 3 weeks). This metric indicates how fast transmission is increasing or decreasing. Note that transmission can increase while cases are decreasing, or decrease while cases are still increasing.
PNG | PDF

Ontario

Ontario cases per day
Ontario average cases per day

Ontario's daily cases, both raw (left) and the 7-day average (right).
Left: PNG | PDF
Right: PNG | PDF


Ontario cases per 100k per day (linear)
Ontario cases per 100k per day (logarithmic)

Ontario's raw daily cases per 100k, compared to Canada's daily cases per 100k. The first plot gives the data on a linear vertical scale, while the second gives the data on a logarithmic vertical scale, which better shows different exponentials.
Left: PNG | PDF
Right: PNG | PDF


Ontario average cases per 100k per day (linear)
Ontario average cases per 100k per day (logarithmic)

Ontario's 7-day average daily cases per 100k compared to Canada's daily cases per 100k. The first plot gives the data on a linear vertical scale, while the second gives the data on a logarithmic vertical scale, which better shows different exponentials.
Left: PNG | PDF
Right: PNG | PDF


Historical Ontario effective reproductive number.

Ontario overall effective reproductive number Rt.
PNG | PDF


Ontario covid-19 deaths per day.

Ontario daily deaths. These data have not had a rolling average applied.
PNG | PDF


Average daily cases for each Ontario PHU.

7-day average daily cases for all public health units in Ontario reporting COVID-19 outbreaks.
PNG | PDF


Active cases per day for each Ontario PHU.

Timeseries of each's day count of active cases in each Ontario PHU.
PNG | PDF


Ontario covid-19 deaths per day.

Average daily deaths for each Ontario PHU. These data have had a 7-day rolling average applied.
PNG | PDF


Historical Ontario effective reproductive numbers for all PHUs.

Historical effective reproductive numbers Rt for all public health units in Ontario.
PNG | PDF



Current Ontario effective reproductive numbers for all PHUs.

Current effective reproductive numbers Rt for all public health units in Ontario, with opacity weighted by the current number of active cases.
PNG | PDF


Canada


Cumulative confirmed cases for each Canadian province as a percent of population

Cumulative confirmed cases as a function of time as a percent of population for each Canadian province.
PNG | PDF


7-day average daily cases per 100k for each province
7-day average daily cases per 100k for each province

7-day average daily cases per 100k residents for each Canadian province. The left panel is on a linear scale, while the right panel is on a logarithmic scale.
Left: PNG | PDF
Right: PNG | PDF


3-week running sum of cases as a percent of population for each province

3-week running sum of COVID-19 cases per 100 residents for each Canadian province.
PNG | PDF


Historical effective reproductive number for each Canadian province

2-week average effective reproductive number Rt for each Canadian province.
PNG | PDF


Current Rt for each Canadian province

Current 2-week mean effective reproductive number Rt for each province, with opacity weighted by current active cases per capita.
PNG | PDF


Current time derivative of Rt for each Canadian province

Current 2-week mean time derivative of the effective reproductive number Rt for each province, with opacity weighted by current active cases per capita. This tracks whether transmission is increasing or decreasing, regardless of whether daily cases are increasing or decreasing (increasing transmission while cases are decreasing means that decline in cases is slowing, and could reverse).
PNG | PDF


7-day average daily deaths per 1M for each province (linear)
7-day average daily deaths per 1M for each province (log)

7-day average daily deaths per 1M residents for each Canadian province. The left panel is on a linear scale, while the right panel is on a logarithmic scale.
Left: PNG | PDF
Right: PNG | PDF


Total COVID-19 deaths per 1000 for each province

Total COVID-19 deaths per 1000 residents for each Canadian province.
PNG | PDF


USA


County-level data is also available. Please note that depending on county population and characteristics, county-level data may not be as reliable.




Cumulative confirmed cases for each US state as a percent of population

Cumulative confirmed cases as a function of time as a percent of population for each US state.
PNG | PDF


7-day average daily cases per 100k for each state
7-day average daily cases per 100k for each state

7-day average daily cases per 100k residents for each US state. The left panel is on a linear scale, while the right panel is on a logarithmic scale.
Left: PNG | PDF
Right: PNG | PDF


3-week running sum of cases as a percent of population for each state

3-week running sum of COVID-19 cases per 100 residents for each US state.
PNG | PDF


Historical effective reproductive number for each US state

2-week average effective reproductive number Rt for each US state.
PNG | PDF


Current Rt for each US state

Current 2-week mean effective reproductive number Rt for each state, with opacity weighted by current active cases per capita.
PNG | PDF


Current time derivative of Rt for each US state

Current 2-week mean time derivative of the effective reproductive number Rt for each state, with opacity weighted by current active cases per capita. This tracks whether transmission is increasing or decreasing, regardless of whether daily cases are increasing or decreasing (increasing transmission while cases are decreasing means that decline in cases is slowing, and could reverse).
PNG | PDF


7-day average daily deaths per 1M for each state (linear)
7-day average daily deaths per 1M for each state (log)

7-day average daily deaths per 1M residents for each US state. The left panel is on a linear scale, while the right panel is on a logarithmic scale.
Left: PNG | PDF
Right: PNG | PDF


Total COVID-19 deaths per 1000 for each state

Total COVID-19 deaths per 1000 residents for each US state.
PNG | PDF


Global


7-day average daily new cases for all countries.

7-day daily average of new cases for each country. These data are not normalized by population.
PNG | PDF


7-day average daily new cases per million for all countries.

7-day daily average of new cases per 1 million residents for each country. These data are normalized by population.
PNG | PDF


2-week mean effective reproductive number for all countries

Current 2-week mean effective reproductive numbers for all countries. Opacity is weighted by the relative prevalence of the virus in each country, with the countries with the highest prevalence appearing darker.
PNG | PDF


Cumulative COVID-19 deaths per 1000 residents for each country

Cumulative COVID-19 deaths per 1000 residents as a function of time.
PNG | PDF


Total death toll for each country given as 1 dead per X people

The current COVID-19 death toll for each country, given as the cohort size per death (i.e. 1 death per 1000 people). The US and Canada are marked with an asterisk. Note that countries with smaller values are harder-hit (1 death per 300 is worse than 1 death per 1000), and the y-axis is on a logarithmic scale.
PNG | PDF


Current 7-day average deaths per million per day for each country

The current 7-day average daily deaths per million for each country. The US and Canada are indicated with asterisks.
PNG | PDF


-