Putting the Pandemic into Perspective
By: Anne Bode
Tags: Python, Data Science, Covid 19, Data Visualization, Fake News

3. “COVID-19 is just like the flu”

Mortality Rates

Just as more and more people are questioning whether COVID-19 is a credible threat (see part 1), or whether the costs of containing it outweigh the benefits (see part 2), there is a growing population that asserts that COVID-19 is “just like the flu.”

The chart above already illustrates that COVID-19 deaths year-to-date vastly exceed the combined number of deaths caused by both Influenza AND Pneumonia in the full year of 2018. But let’s dive deeper, focusing specifically on the flu. We’ll use data from the 2019–2020 flu season for this exercise.

Per the CDC, during the 2019–2020 flu season in the U.S., about 38 million people had the flu and about 22,000 people died of the flu. We’ll compare that stat against the latest year-to-date COVID-19 numbers (13,999,300 people infected; 273,518 people dead as of 12/3/20)

Tool #3: Mortality Rates — Flu vs. COVID-19 Charts

Known Infections

Known Deaths

Observed Mortality Rate (Known Deaths / Known Infections)

From the charts above, we can see that although 2.7x more people were infected with the flu, 12.4x more people have died from COVID-19 YTD 2020 than died from the flu in the 2019–2020 season. Why? Because the current observed mortality rate (number of people who have died / number of people who have a confirmed case) is 32x greater for COVID-19 than the 2019–2020 flu mortality rate in the US.

Now of course the mortality rate was at its worst at the beginning of the pandemic, before major strides in treatment were made by our incredible healthcare workers and scientific community. AND we weren’t (and still aren’t) catching every case. Still, with testing increasing and daily cases of ~180k preceding ~1.5–2k daily deaths three weeks later, the mortality rate for COVID-19 still appears to be meaningfully higher than the flu.

Perhaps you fall in the camp of people who believe the mortality rate is actually MUCH lower than it seems, because we’re missing a LOT of asymptomatic cases. In the final chart below, we display the COVID-19 infections needed to result in the number of deaths we have observed, at various mortality rates. We display these mortality rates as multiples of the mortality rate of the 2019–2020 US flu season (.06%). So, for instance, if COVID-19 is “just like the flu” with a 0.06% mortality rate, we would need to have 455,863,333 cases of COVID in the US to result in the 12/3/20 death total: 273,518. Clearly that isn’t possible, as the U.S. population is approx. 328,200,000. You can continue with this thought experiment up to 20x the mortality rate of the flu.

Hypothetical COVID-19 Total Cases at Various Mortality Rates

From this table and chart, we can see that even if we have missed 50% of all cases, and the true number is ~28M cases, COVID-19 would still be 16x deadlier than the flu during the 2019–2020 influenza season.

Disease Spread

Despite the fact that there have been fewer confirmed cases of COVID-19 YTD 2020 vs. cases of the flu during the 2019–2020 influenza season, there is also reason to believe that COVID-19 is more infectious than the flu when left unchecked. (Note that we also have annual flu shots that a good portion of the population receives, which reduces the spread of the flu right off the bat.)

So COVID-19 seems to be deadlier and more easily spread than the flu. It also seems that people are contagious for longer with COVID-19 than with the flu (from same source), even if they are asymptomatic. While people with the flu are contagious for up to 7 days, the scientific evidence currently suggests people with COVID-19 are contagious for at least 10.

How do these two factors (days infectious and mortality rate) contribute to the spread (or relative containment) of the two diseases?

Tool #4: Animated Disease Spread

We will use matplotlib animations to look at the theoretical spread of a disease within a population. Key features:

1000 People moving at “random walks” within a grid of a specified size

1 Person will be randomly infected with the disease (Patient Zero)

At each time step, the disease will be spread to any healthy person within 1 coordinate of an infected person who is actively contagious

At the end of each infected Person’s contagious time period, they will randomly die according to the mortality rate specified

We will run the simulation for 365 time steps

NOTE: This is for demonstration purposes only. It is not intended to produce accurate scientific projections.

To create this simulation, we need to first create a new Python class: “Person.” A Person will have: a location (x and y coordinates), infection status, alive status, number of people they have infected, number of infectious days remaining, disease mortality rate, and range of possible x and y coordinates (based on size of graph).

This new class, “Person” will also have a method associated with it, called “time_step().” During one time_step(), a Person will take a random step (within the confines of the graph) and if they are infected, their remaining days infectious will be reduced by one. If their number of infectious days remaining is exactly zero, we randomly decide whether the Person dies of the disease, using the specified mortality rate.

“Person” also has a method enabling each Person to infect another instance of a Person. You can infect someone if you are infected, alive, and still infectious. The other Person must not yet be infected, and must have a location within 1 coordinate point of you (both x + y). If you infect the other Person, the number of people you have infected increases by 1.

Now that we have created this new class, we can create a few helpful functions that will aid in our simulation. You can see the details of these functions in the Jupyter Notebook. They create a list of Person objects, pull the position and healthy/infected/dead stats from a list of Person objects, cycle all Person objects through one time_step, and pull healthy/infected/dead stats from a scatterplot.

Finally, we can animate two different scenarios. In one, a disease exhibits flu-like characteristics. In the other, a disease exhibits COVID-19-like characteristics. Note that each time the simulation is run, the results will differ. The results will depend on the location of Patient Zero, the location of all other Person objects, the random walk of the Person objects, the random chance of death based on mortality rate, etc. Think of it this way: sometimes we have bad flu seasons, and sometimes we have light ones. Therefore, the recordings below are just two versions of how the simulation might run. Feel free to run the simulations as many times as you’d like, by downloading the notebook!

Spread of Flu-like Disease

Days Infectious = 7; Mortality rate = 0.06%

Spread of COVID-19-like Disease

Days Infectious = 10; Mortality Rate = 0.6%

Taking stock

So, in our animations we are able to see the impact of changing days infectious and mortality rate. With three additional infectious days, in our COVID-19 simulation 47.4% of people were infected vs. 15.0% in our flu simulation. Similarly, the 0.6% COVID-19 mortality rate resulted in 4 deaths (0.4%) in the total population vs. 0 deaths in our flu simulation with a 0.06% mortality rate. Now, you might say to yourself “0.4% is nothing!” Well… if 0.4% of the US population died from COVID-19, that would be 1.3 million deaths. Now we’re back in millions like those original models…

Conclusion

Let’s see what we figured out using Python and some good old critical thinking. Did any of the misinformation hold its own against the sheer power of my data visualizations?!?!?!

The Misinformation

“COVID-19 is all hype…the scary models in the beginning were totally wrong.”

Not so fast! The worst case scenarios depended on ZERO precautions being taken. That clearly didn’t happen — hello masks! goodbye indoor dining! Plus, a simple Python function shows us that the unfettered spread of COVID-19 could very well result in >1 million deaths, even with all of the better information we know now.

“The cure is worse than the disease”

Without a doubt, the side effects of economic shutdowns will be devastating if we take no action. Spikes in poverty and drug overdoses demand our attention. However, government intervention CAN and SHOULD address the rise in poverty, while a simple chart showing the leading causes of death demonstrates that COVID-19 is already the #3 leading cause of death in 2020 (if 2018 trends hold). The cure is NOT worse than the unfettered spread of the disease.

“COVID-19 is just like the flu”

We’ve debunked this on two levels: mortality rate and disease spread.

On mortality rate, the number of COVID-19 deaths (>270k at the time of writing) and confirmed cases (~14M at the time of writing) demonstrate that the disease has a significantly higher mortality rate than the flu. Even if we have missed 50% of all cases, and the true number is ~28M cases, COVID-19 would still be 16x deadlier than the flu during the 2019–2020 influenza season.

As far as disease spread, a simple matplotlib animation helps us see how an additional 3 days of being contagious, plus a 10x greater mortality rate (0.6% vs. 0.06%), can impact both the spread of a disease in a population and total deaths.

Thank you for reading! Be smart, stay healthy, and wear a mask!