COVID19, the disease caused by the 2019 novel corona virus, entered world conscious towards the end of 2020. By March, as infection rates were rising in the US, concerns about covid19 reached a crescendo and led to significant “shelter-in-place” (SIP) policies cross the country. Over the next 2 months, this lockdown was able to control the growth rate of covid19, and as other costs started to dominate, various states began easing the lockdown during May-June.

How are we faring since then?

June 15, 2020: If you define success as “we crushed it” (new cases > 90% down from peak, as in China, Italy, Spain, France) then some US states have (e.g., NY and NJ), but not, say, California (even after accounting for increased testing and low peak). If “success” is simply that we “flattened the curve” then yes for US as a whole and for many states. But then there are truly the bad guys - AL, AZ, FL, TX, FL, AZ, AL, SC, NC - where infections are rising in recent days.

Oct 15, 2020: The period from early August on saw a new effort to control spread of covid in California, which seems to have been effective. August was also good for most of the country, but by mid-October most states are showing an uptrend (and even hitting record highs for daily cases - mid-West and great plains states), while even states like NY and NJ that had done a solid job through the summer are showing an uptick.

Nov 16, 2020: We’re a month into a massive Fall surge, precursor of bad Winter (unless there’s a major change in behavior and rules). In the first surge in March/April, a useful metric was “# days to double cumulative cases” – that would be silly now because the cumulative represents a long time. Instead, look at the weekly or daily growth rate.

Data and Metrics

Daily vs Weekly vs Monthly Data

How to look at the data? If you want rapid reaction, you have to be current, look at daily data. However, daily numbers have a lot of noise due to reporting problems, delays and bunching. Looking at weekly numbers addresses most of that. Also, note that hospitalizations lag cases by a week or two, and deaths lag cases by about 4 weeks.

Data Sources

Using covidtracking.com for main covid.data, and a data set from Kaggle for 2018 state population numbers.

Fetch and Setup US level data

The original data set has date, n.states, n.cases, n.neg, n.pend, in.hosp, n.hosp, in.ICU, n.ICU, on.vent, n.vent, n.recov, n.death, n.result, new.result, new.cases, new.hosp, new.death, pct.inf, s.daily.result, s.daily.cases, s.daily.death, s.in.ICU, s.daily.hosp fields. Extended to add daily incremental metrics (new.result, new.cases, etc.) and also rolling means (7 days, 5 days depending on metric); however the latter is not needed if we look at the data on a weekly (rather than daily) basis.

Fetch and Setup State level data

We have varying quality of data regarding different metrics at the state level.

because of the size variation among states, and the intensity of covid infection (both absolute and per capita) it is useful to break states into a few groups, so that inter-state comparisons become more meaningful.

How to look at the Data

We’ll look at weekly tests (how many) and daily cases (how many of these yielded positive results). Since states vary widely on these metrics (and on population size), we’ll break the entire group into 3 parts: those with most cases, those in the middle, and those with fewest. Then we’ll want to look at multiple metrics: total tests, total cases (tests with covid-positive results), and deaths. For each metric, we can look at absolute numbers (daily, smoothed daily, or say weekly) and relative (to total populations, total tests done etc.).

The point is there are lots of ways of looking at the data, and each approach fits certain aspects of inquiry. Finally, note that there is a 2-3 week delay from actions – such as implementation and easing of lockdown – to effects (cases, hospitalizations, deaths).

A Quick look at California

## Note: Using an external vector in selections is ambiguous.
## ℹ Use `all_of(measure1)` instead of `measure1` to silence this message.
## ℹ See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
## This message is displayed once per session.
## Note: Using an external vector in selections is ambiguous.
## ℹ Use `all_of(measure2)` instead of `measure2` to silence this message.
## ℹ See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
## This message is displayed once per session.
## Note: Using an external vector in selections is ambiguous.
## ℹ Use `all_of(measure3)` instead of `measure3` to silence this message.
## ℹ See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
## This message is displayed once per session.

A Quick look at New York

Breakdown of States

  • The hardest hit states are: WA, AZ, CA, CO, FL, IL, KS, KY, MI, MN, NE, NV, NY, OH, VA, WI, CT, IA, IN, LA, MO, NC, NJ, OK, PA, TN, UT, GA, MA, TX.
  • The moderately hit states are: MD, NM, OR, RI, SC, WV, AL, AR, ID, MS, MT, ND, SD.
  • The least hit states are: DC, NH, VT, DE, ME, AK, HI, PR, WY.

Within each group of states, we’ll organize the analysis like this:

  • Absolute numbers of daily cases (positive results) - how these are varying over time. These are the left panels below. Of course, positive results can vary due to more infections or due to greater testing. The panels on the right adjust for testing. Still, there are problems in the data due to inconsistencies in reporting of test results. In some locations, only positive results were reported during certain time periods; most others reported both positive and negative results.

  • Then we’ll look at deaths (absolute numbers) and death rates (deaths relative to known cases). “Cases” are often unobserved, deaths are harder to hide. Also, there is often a multi-day lag in reporting and accumulating case data from lower levels, deaths are reported more quickly and uniformly. However, if we want to, say, track the rate of spread of the virus, or the effects of different actions, then deaths are a substantially lagging indicator. Actions show up in the numbers after about 15-30 days.

  • Finally, it makes sense to look at everything on a per-capita rather than absolute basis.

State-Level Analysis

A Quick Look at Different States

Let’s get a quick peek at how states are doing, by looking at the daily reports of positive cases and tests. Each panel is a state, and we list the “positive rate” (cases/tests) and the # infections per 100,000 people. The start and easing of lockdown is marked on each panel - but this is only a rough approximation, with the same period for all states. Also, note that the count of cases (or tests) doesn’t mean exactly the number of people known to be infected (or tested) - this is because the same people might be tested numerous times (e.g., health care workers, grocery store workers, even those with positive results).

So, it seems that in the US, we have NOT decimated the virus (like some countries did - China, S. Korea, Taiwan). Some states have done it (NY, NJ, CT, MI, MA and a few others), but many are doing a bad jb especially while easing the lockdown - look at states like AL, AZ, AK, FL, NC, TX.

Hardest-Hit States

States with highest case loads (like NY, NJ, MA - see left panel) were able to bring cases drastically down, whereas daily case numbers in states like CA have not fallen over time. Some of this is the effect of increased testing, visible in the right panel where we normalize the case numbers by testing intensity. Similarly, the second row of charts normalizes deaths by the state’s total population.

Note that these charts are on the log scale.

Moderately Hit States

Least Hit States

State-Level Numbers

Let’s look at a few key states

The data below show daily numbers based on a weekly average.

California

week state wk.cases wk.results wk.deaths population
2020-03-01 CA 8 8 NA 37333601
2020-03-08 CA 30 106 NA 37333601
2020-03-15 CA 147 1623 2.7 37333601
2020-03-22 CA 481 1809 11.0 37333601
2020-03-29 CA 1055 12644 25.0 37333601
2020-04-05 CA 1227 8503 47.6 37333601
2020-04-12 CA 1193 12350 66.1 37333601
2020-04-19 CA 1739 35196 82.7 37333601
2020-04-26 CA 1580 25824 74.3 37333601
2020-05-03 CA 1766 32252 72.4 37333601
2020-05-10 CA 1747 38079 75.1 37333601
2020-05-17 CA 1977 48026 72.0 37333601
2020-05-24 CA 2321 53327 64.0 37333601
2020-05-31 CA 2734 59958 57.6 37333601
2020-06-07 CA 2804 59442 61.4 37333601
2020-06-14 CA 3381 72860 62.1 37333601
2020-06-21 CA 5303 89700 64.0 37333601
2020-06-28 CA 7279 98674 63.0 37333601
2020-07-05 CA 7851 103238 90.3 37333601
2020-07-12 CA 9003 127360 92.9 37333601
2020-07-19 CA 10005 125734 106.0 37333601
2020-07-26 CA 7819 119890 126.7 37333601
2020-08-02 CA 6522 117277 137.9 37333601
2020-08-09 CA 9700 139083 136.9 37333601
2020-08-16 CA 6172 107892 120.1 37333601
2020-08-23 CA 5278 96183 120.9 37333601
2020-08-30 CA 4771 115242 115.6 37333601
2020-09-06 CA 3294 91521 86.9 37333601
2020-09-13 CA 3405 112417 94.4 37333601
2020-09-20 CA 3443 119835 88.6 37333601
2020-09-27 CA 3028 116594 77.4 37333601
2020-10-04 CA 3334 125651 60.9 37333601
2020-10-11 CA 3097 125467 57.0 37333601
2020-10-18 CA 4051 121781 58.9 37333601
2020-10-25 CA 4171 141877 45.0 37333601
2020-11-01 CA 4993 137548 44.7 37333601
2020-11-08 CA 7346 158064 39.9 37333601
2020-11-15 CA 11334 185748 60.7 37333601
2020-11-22 CA 12662 256510 42.0 37333601

New York

week state wk.cases wk.results wk.deaths population
2020-03-01 NY 8.8 47 NA 19398228
2020-03-08 NY 68.7 563 NA 19398228
2020-03-15 NY 1405.6 5943 NA 19398228
2020-03-22 NY 5994.6 15764 97.7 19398228
2020-03-29 NY 8769.4 18222 405.3 19398228
2020-04-05 NY 9536.3 22480 723.1 19398228
2020-04-12 NY 8039.1 22222 676.4 19398228
2020-04-19 NY 6487.3 25862 462.4 19398228
2020-04-26 NY 4404.9 25921 330.0 19398228
2020-05-03 NY 2877.9 27822 337.4 19398228
2020-05-10 NY 2158.6 32136 172.4 19398228
2020-05-17 NY 1670.6 39049 114.9 19398228
2020-05-24 NY 1390.6 50474 80.9 19398228
2020-05-31 NY 1093.7 61718 52.0 19398228
2020-06-07 NY 759.1 62119 45.0 19398228
2020-06-14 NY 663.1 65079 26.1 19398228
2020-06-21 NY 664.4 60969 17.1 19398228
2020-06-28 NY 667.9 59401 9.4 19398228
2020-07-05 NY 633.0 62913 11.1 19398228
2020-07-12 NY 753.7 65498 8.7 19398228
2020-07-19 NY 699.3 63864 9.7 19398228
2020-07-26 NY 652.4 65095 8.7 19398228
2020-08-02 NY 654.0 67408 4.4 19398228
2020-08-09 NY 650.9 78096 7.0 19398228
2020-08-16 NY 609.1 79516 5.4 19398228
2020-08-23 NY 605.3 78522 5.3 19398228
2020-08-30 NY 767.1 87692 4.4 19398228
2020-09-06 NY 695.4 76430 4.9 19398228
2020-09-13 NY 771.1 82352 5.9 19398228
2020-09-20 NY 817.4 85904 3.6 19398228
2020-09-27 NY 1228.6 98125 7.9 19398228
2020-10-04 NY 1397.6 115861 9.1 19398228
2020-10-11 NY 1392.6 121441 9.7 19398228
2020-10-18 NY 1563.0 122841 11.6 19398228
2020-10-25 NY 1949.7 128061 12.7 19398228
2020-11-01 NY 2589.7 141636 17.3 19398228
2020-11-08 NY 4420.4 157129 25.0 19398228
2020-11-15 NY 4895.9 168666 31.9 19398228
2020-11-22 NY 5393.0 184287 38.3 19398228

Florida

week state wk.cases wk.results wk.deaths population
2020-03-01 FL 1.7 27 NA 18846054
2020-03-08 FL 6.1 60 NA 18846054
2020-03-15 FL 68.1 940 1.3 18846054
2020-03-22 FL 378.7 4491 6.0 18846054
2020-03-29 FL 988.3 8930 19.6 18846054
2020-04-05 FL 1034.7 10104 35.3 18846054
2020-04-12 FL 938.0 10484 45.1 18846054
2020-04-19 FL 814.9 12387 45.9 18846054
2020-04-26 FL 657.0 11841 44.7 18846054
2020-05-03 FL 612.7 15924 56.7 18846054
2020-05-10 FL 646.7 14576 36.4 18846054
2020-05-17 FL 789.3 32371 38.9 18846054
2020-05-24 FL 727.1 19761 31.1 18846054
2020-05-31 FL 987.0 25542 34.7 18846054
2020-06-07 FL 1514.3 28005 34.7 18846054
2020-06-14 FL 2717.1 27091 31.6 18846054
2020-06-21 FL 5710.9 38497 36.0 18846054
2020-06-28 FL 8055.0 45121 44.9 18846054
2020-07-05 FL 9107.6 46871 71.1 18846054
2020-07-12 FL 11662.4 65038 100.1 18846054
2020-07-19 FL 10884.9 57663 127.4 18846054
2020-07-26 FL 9249.3 48899 178.6 18846054
2020-08-02 FL 6586.9 37998 156.3 18846054
2020-08-09 FL 6380.1 36922 177.4 18846054
2020-08-16 FL 3950.7 28402 133.0 18846054
2020-08-23 FL 2989.0 24697 119.7 18846054
2020-08-30 FL 3492.4 26883 102.0 18846054
2020-09-06 FL 2491.0 19658 113.3 18846054
2020-09-13 FL 2729.1 23759 99.1 18846054
2020-09-20 FL 2456.1 23742 105.7 18846054
2020-09-27 FL 2225.4 20160 87.6 18846054
2020-10-04 FL 2339.3 23568 94.8 18846054
2020-10-11 FL 3288.1 26485 106.6 18846054
2020-10-18 FL 3326.7 33354 71.7 18846054
2020-10-25 FL 3670.3 28382 49.9 18846054
2020-11-01 FL 4844.1 31177 48.9 18846054
2020-11-08 FL 5297.7 29989 56.1 18846054
2020-11-15 FL 7892.9 42175 64.0 18846054
2020-11-22 FL 6863.3 44084 77.0 18846054

Texas

week state wk.cases wk.results wk.deaths population
2020-03-15 TX 60 1314 1.0 25245178
2020-03-22 TX 250 2677 3.1 25245178
2020-03-29 TX 580 5499 11.1 25245178
2020-04-05 TX 922 8112 21.3 25245178
2020-04-12 TX 814 7958 28.4 25245178
2020-04-19 TX 788 12368 24.3 25245178
2020-04-26 TX 964 16833 32.0 25245178
2020-05-03 TX 1048 15521 28.9 25245178
2020-05-10 TX 1306 21349 36.6 25245178
2020-05-17 TX 1073 17710 28.7 25245178
2020-05-24 TX 1118 23687 17.1 25245178
2020-05-31 TX 1602 23537 27.6 25245178
2020-06-07 TX 1780 23863 19.7 25245178
2020-06-14 TX 3103 29011 29.7 25245178
2020-06-21 TX 5091 37061 28.7 25245178
2020-06-28 TX 6917 49855 34.6 25245178
2020-07-05 TX 8382 51116 72.0 25245178
2020-07-12 TX 9610 59009 107.6 25245178
2020-07-19 TX 8302 66194 145.7 25245178
2020-07-26 TX 7806 63105 278.9 25245178
2020-08-02 TX 8500 44146 251.0 25245178
2020-08-09 TX 6765 44146 213.9 25245178
2020-08-16 TX 6329 45598 203.7 25245178
2020-08-23 TX 4770 37159 164.9 25245178
2020-08-30 TX 4112 40425 141.1 25245178
2020-09-06 TX 3182 47956 105.0 25245178
2020-09-13 TX 4068 6219 100.7 25245178
2020-09-20 TX 6767 61662 91.0 25245178
2020-09-27 TX 4225 68304 72.4 25245178
2020-10-04 TX 3864 51099 76.3 25245178
2020-10-11 TX 4358 63372 65.4 25245178
2020-10-18 TX 5358 62280 67.4 25245178
2020-10-25 TX 6075 63434 81.1 25245178
2020-11-01 TX 7136 68680 96.6 25245178
2020-11-08 TX 9087 85770 110.0 25245178
2020-11-15 TX 10195 96107 142.4 25245178
2020-11-22 TX 9949 110758 94.3 25245178