Indiana COVID-19 update: 5 February 2021

On Wednesday, the Indianapolis Star reported that a state audit discovered just over 1,500 “missing” COVID-19 deaths. These deaths were added to the Indiana State Department of Health’s dashboard on Thursday. The state “snuck” them in, not including them in the “newly reported” deaths for that day’s update. Fortunately, I had the data before and after and was able to produce some information on my dashboard.

It wasn’t as good as we thought

“Missing” COVID-19 deaths by day

The missing deaths stretch as far back as early April, but the bulk came in November through January. This is also when the overall death rate was the highest. On the whole, approximately 15% of COVID-19 deaths were not included on the state’s dashboard prior to February 4. But on 48 days, the missing deaths exceeded 20%. On December 18, 31 deaths (29% of the total) were missing. Instead of having a peak death count of 97, we’ve instead exceeded 100 deaths on several days with a peak of 118.

COVID-19 deaths per day before and after the “missing” deaths were included

I wrote in the last update that I thought deaths were missing, particularly given the abrupt drop in December. It turns out that I was more right than I could have imagined. “I’m not trying to sound like a conspiracy theorist,” I wrote. “I don’t think there was any malfeasance.” I’m trying very hard to continue believing that.

At the very least, this represents appalling incompetence. This isn’t just a problem for making graphs. The death toll of this pandemic is serious. Losing 15% of the deaths is not only disrespectful to the dead and their families, but it robs decision-makers of reliable data. What decisions would have been made differently if we knew the true death toll.

Of course, we may never be sure of the true death toll, particularly early in the pandemic. At the time, testing was scarce. I’ve heard anecdotes from several reliable friends of loved ones not getting testing after death. We can compare 2020’s overall death to previous years, but that will not be definitive.

The future

The good news is that the overall numbers continue to trend in the right direction. Yesterday, hospitalizations were below 1500 for the first time since October 20. Deaths, new cases, hospitalization, and positivity all continue to drop. Mask usage is up and mobility remains 20% below the baseline, per the Institute of Health Metrics and Evaluation (IHME). Perversely, the corrected death totals represent a positive of sorts: the recent model runs have proven more accurate than it appeared.

Observed and forecast COVID-19 deaths in Indiana by day

As best I can tell, IHME’s most recent model run did not include the adjusted death totals, so it will be interesting to see how much changes in the next update. The observed death trend is dropping at a faster rate than the models would suggest, but that may flatten a bit over the coming days. Still, the trends are encouraging.

Causes for concern

But all is not well. Although IHME’s latest model run does not show an increase in deaths through the end of May, they say some states will see that. But even more worrying, it appears some of the new variants may lead to reinfection in people who already have immunity.

The Novavax Phase III trial in South Africa placebo arm found that prior infection
provided no protection from variant B.1.351. The implication of this finding is that herd
immunity is only variant-specific; if this finding is confirmed in the Johnson & Johnson
placebo arm data, our worse scenario is likely too optimistic.

IHME COVID-19 Policy Brief for the United States, 3 February 2021

With the next update, IHME will incorporate cross-variant reinfection into the model. I’ll continue to update my dashboard with the new model runs as they’re available.

Other writing: January 2021

What have I been writing when I haven’t been writing here?

Stuff I wrote

Fedora

Stuff I curated

Fedora

Indiana COVID-19 update: 23 January 2021

It has been over a month since I’ve written one of these. Part of that was because I had other things to do. Part of that was a lack of updated projections from the Institute of Health Metrics and Evaluation (IHME). And part of it was that I didn’t believe the state’s numbers. I kept updating my dashboard regularly, but it seemed like something was missing: deaths.

I’m not trying to sound like a conspiracy theorist. I don’t think there was any malfeasance. But the data doesn’t always come in right away. I’m not sure what the reporting chain is like, but there are probably a few steps before it gets to the Indiana State Department of Health. The latency increased in December, so I figured any day the numbers would catch up. The drop from 90 deaths a day to 45 was so rapid that it couldn’t be real.

Daily COVID-19 deaths in Indiana

Well I’ve been waiting for weeks and the trend has held. I’m not sure what happened, but about the second week of December the COVID deaths and hospitalizations plummeted. This is a very good thing, even if the explanation isn’t obvious.

The experts at the IHME model run from November 23 just about nailed it in retrospect. Subsequent runs seemed to over correct based on the state’s run of higher-than-forecast fatalities. The model run published yesterday comes closer to reality, but it is still running a bit hot.

Observed and IHME forecasted COVID-19 deaths in Indiana from March 1, 2020 to April 1, 2021.

The good news is that IHME’s U.S. policy briefing says the peak is behind us (although the model does not account for the recently-discovered strains that are more transmissible).The briefing isn’t all good news, though. Looking forward to teh end of the year, IHME has this to say:

We do not expect the US to reach a level of herd immunity that would prevent a third wave next winter. This is because a quarter of Americans state they will not take the vaccine and a further quarter state they are unsure. In addition, we do not have clear evidence on how much vaccination stops transmission as opposed to preventing severe disease and death. Scale-up of vaccination does mean, however, that the number of deaths in a third wave, if it occurs, would be greatly reduced.

Take the damn vaccine when it’s available!

Other writing: December 2020

What have I been writing when I haven’t been writing here?

Stuff I wrote

Open Organization

Fedora

Stuff I curated

Fedora

Indiana COVID-19 update: 18 December 2020

It’s been a while since I’ve written one of these posts. Partly due to being busy, partly due to being burnt out, partly due to “how can I write ‘yep, everything is still terrible’ each week without repeating myself?”. And honestly, it’s been weird to realize that even though the situation in Indiana is worse than it has been at any point in the pandemic, it doesn’t feel that much worse to me. I realize how incredibly fortunate I am to be able to say that.

Since my last update, vaccines have received emergency use authorization and are in the early stages of being distributed. It will be months before we have widespread vaccination, but at least there’s hope. Of all the jobs I’m glad I don’t have, “decider of who gets vaccinated first” is one that I’m most glad about.

I haven’t made any major structural changes to my dashboard. The main difference is some tweaks to the model forecast graph to make it easier to read (I hope).

Deaths

Anyway, the Institutes for Health Metrics and Evaluation (IHME) model runs keep nudging the total fatalities up. This is a reflection of how rapidly deaths have risen in the last month. The latest model run brings us to a peak of ~102 daily deaths in Indiana on January 5. It seems to track the general trend in the reported data pretty well, if you ignore the last few days. As the number of deaths has risen, it seems that the counts now frequently go up significantly for two or three days after, instead of just the day after. If anything, the model may be too optimistic.

Observed and forecast death counts for Indiana.

Hospitalizations

There is good news, though. While October and November featured a rapid rise in hospitalizations, with new records set almost every day, that trend has largely reversed. Even with the Thanksgiving holiday, we’re starting to see declines in hospitalizations most days. If that holds for a few more days, we might get below the 3,000 mark for the first time in over a month. As it stands, yesterday’s hospital census had about 13% fewer patients than the peak on November 30.

Day-over-day (blue) and week-over-week (red) changes in Indiana COVID hospitalizations.

Despite the downward trend in hospitalizations, the available ICU bed capacity continues to hold steady near 20%. Interestingly, non-COVID cases are driving this, according to the state’s dashboard. COVID ICU bed and ventilator usage, while still much higher than over the summer, is trending downward.

What I’m watching

In the coming week, I’ll be watching to see if the lower death tolls the last few days hold. It seems unlikely that there’s such a sudden drop in deaths. Tuesday and Wednesday of this week had a bunch of backdated deaths added to the report. I would expect the same next week.

With the coming Christmas and New Year holidays, the testing and new case data is about to get unreliable. But I’m interested to see if the apparent uptick in positivity holds or if we return to the general downward trend of the last two weeks. As of today’s update, we’re at 12.4% for all tests (24.4% individuals) statewide. This is very bad.

Indiana COVID-19 update: 14 November 2020

Two weeks ago, I wrote “the news has been “good”-ish. More accurately: it’s getting less bad.” What an idiot. Since then, hospitalizations set a new record almost every day. Yesterday’s patient count was 52% higher than two weeks ago. We also set several new case records, including our first time above 5000, 6000, and 8000. We’re adding roughly twice as many new cases as we were a week ago, while only conducting about 35% more tests.

The Governor has finally given up on Stage 5 in favor of county-level restrictions based on weekly metrics updates. Doug Masson has a good discussion of it. It seems like where we should have been in September or earlier. I’m not sure how effective it will be, but it does seem to be relatively well-adapted to our current understanding, at least compared to previous plans.

The Institutes for Health Metrics and Evaluation (IHME) did not publish a new model run last week. I suppose there was other news that folks were paying attention to. Anyway, their new model run this week lowers Indiana’s peak death count slightly. It’s also earlier and with sharper ramp up and down times.

Observed and forecast death counts for Indiana.

The death count continues to exceed the October model forecasts, but it may be below the November runs. In the next few weeks, the increases in cases and hospitalizations will probably result in an increase in fatality.

Other than adding the hospitalization change graph below, I haven’t made any structural changes to my dashboard in the last few weeks.

Day-over-day (blue) and week-over-week (red) percent changes in hospitalization.

Indiana COVID-19 update: 1 November 2020

In the last few days, the news has been “good”-ish. More accurately: it’s getting less bad. Wednesday set a record for new cases with 3,626. That’s nearly 29% higher than the previous record and the first time above 3,000. The next two days were also above 3,000, but not record-breaking. Still, the rate of increase appears to be slowing.

The trends look better for hospitalizations, which seem to have plateaued just shy of this spring’s peak. Given the still-increasing positivity rate, I would expect this to be short-lived. It’s a welcome change, regardless. Statewide, Indiana is not showing the hospital capacity problems that some areas have seen recently. It’s not clear without digging into each county’s stats if there are areas within the state with that problem.

Similarly, the deaths have largely plateaued as well. We’re holding relatively steady at just above 30 deaths per day (although there still seems to be a gentle increase). This brings us closer to the Institute of Health Metrics and Evaluation’s (IHME) October 15 and October 22 forecasts. The October 29 forecast, while not dramatically different in methodology, shows a more rapid rise in deaths. The peak moves a little earlier in December, but is not much higher than the last two forecasts. It also has a longer tail. As of right now, it appears to over-forecast deaths compared to current observations. However, as more data rolls in over the coming days, that may change.

Apart from adding more data, the only change I made this week to my dashboard is to remove older forecasts from the comparison. This brings it in line with the forecast error graph and makes it a little easier to read.

Moving the website to Lektor

Years ago, I moved all of funnelfiasco.com (except the blog, which runs on WordPress) from artisinally hand-crafted HTML to using a static site generator. At the time, I chose a project called “blatter” which used jinja2 templates to generate a site. This gave me the opportunity to change basic information across the whole site at once. Not something I do often, but it’s a pain when I do.

Unfortunately, blatter was apparently quietly abandoned by the developer. This wasn’t really a problem until Python 2 reached end of life. Fedora (reasonably) retired much of the Python 2 ecosystem. I tried to port it to Python 3, but ran into a few problems. And frankly, the idea of taking on the maintenance burden for a project that hadn’t been updated in years was not at all appealing. So I went looking for something else.

I wanted to find something that used jinja2 in order to minimize the amount of work involved. I also wanted something focused on websites, not blogs specifically. It seems like so many platforms today are blog-first. That’s fine, it’s just not what I want. After some searching and a little bit of trial and error, I ended up selecting Lektor.

The good

Lektor is written in (primarily) Python 3 and uses jinja2 templates, so it hit my most important points. It has a command to run a local webserver for testing. In addition, you can set up multiple servers configurations for deployment. So I can have the content sync to my local web server to verify it and then deploy that to my “production” webserver. Builds are destructive, but the deploys are not, which means I don’t have to shoe-horn everything into Lektor.

Another great feature is the ability to programmatically generate thumbnails of images. I’ve made a little bit of use of that for the time being. In the future, especially if I ever go storm chasing again, I can see myself using that feature a lot more.

Lektor optionally supports writing the page content in markdown. I haven’t done this much since I was migrating pre-written content. I expect new content will be much markdownier. Markdown isn’t flexible enough for a lot of web purposes, but it covers some use cases well. Why write HTML when it’s not needed?

Lektor uses databags to provide input data to templates. I do this using JSON files. Complex operations with that are a lot easier than the embedded Python data structures that Blatter supported.

If I were interested in translating my site into multiple languages, Lektor has good support for that (including changing URLs). It also has a built-in admin and editing console, which is not something I use, but I can see the appeal.

The bad

Unlike Blatter, Lektor puts contents and templates in separate files. This makes it a little more difficult to special-case a specific site.

It also has a “one directory, one file” paradigm. Directories can have “attachments”, which can include html files, but they won’t get processed, so they need to stand alone. This is not such an issue if you’re starting from scratch. Since I’m not, it was more of a headache. You can overwrite the page’s slug, but that also makes certain assumptions.

For the Forecast Discussion Hall of Fame, I wanted to keep URLs as-is. That site has been linked to from a lot of places, and I’d hate to break those inbound links. Writing an htaccess file to redirect to the new URLs didn’t sound ideal either. I ended up writing a one-line patch that passed the argument I need to the python-slugify library. I tried to do it the right way so that it would be configurable, but it was beyond my skill to do so.

The big down side is the fact that the development has ground to a halt. It’s not abandoned, but the development activity happens in spurts. Right now it’s doing what I need it to do, but I worry at some point I’ll have to make a switch again. I’d like to contribute more upstream, but my skills are not advanced enough for this.

Indiana COVID-19 update: 23 October 2020

I’m not going to sit here and try to come up with new ways to say “this is bad”. Not a lot has changed since the last update: the numbers are all chugging along on trend. There is a change to my dashboard, however.

I realized today that I had been pulling the wrong data from the IHME models. I had been entering the “best case” scenario that includes universal mask wearing and the like. What I should have been pulling from was the reference model. This results in higher predicted values.

The overall impact isn’t that great. The scenarios don’t really diverge for a while, so for the most part the model error graph is unchanged. The future, particularly late November and into December is where you notice a difference. The recent models still under-predict the deaths, but the general trend matches well.

IHME said in their latest update that they didn’t make many changes to the model for the latest run. It’s essentially the same as last week but with more recent data. Unsurprisingly, it’s pretty close to the previous run. Both of those have a lower peak than forecasts from September, but still 50% higher than the spring peak.

It’s worth noting that IHME’s model assumes that states will re-introduce restrictions at a certain point. I’m having a hard time seeing that happening in Indiana—at least not as quickly as IHME’s assumption would have it. I wonder how much of Governor Holcomb’s refusal to even entertain the idea of moving back a phase or several has to do with the election in a week and a half. After the election, he’ll either be a lame duck or he’ll be into his last term (sort of). That takes away much of the political risk.

Indiana COVID-19 update: 17 October 2020

I updated my Indiana COVID-19 dashboard with the latest numbers. It continues to look bad. Hospitalizations are up 15% in the past week. The new daily case record set yesterday is 30% higher than the record set a week ago. We had two days in the last four with 20+ deaths (and bear in mind that the recently daily numbers tend to rise rather significantly in the days that follow).

Most alarming is the latest forecast from the Institute for Health Metrics and Evaluation (IHME). Their 10/15 model forecast is now on the dashboard, and it continues to show a big upswing in fatalities through November and December. The models have been pretty consistent with underpredicting the death count lately, so the big increase in the last two runs is extra worrisome.

In order to get a better sense of the past and possible future, I plotted the observed deaths with each of the model runs I have in the spreadhseet.

Observed and forecast daily COVID-19 deaths in Indiana

While the early September runs were a little hot, none of them really captured the increase we’ve seen over the past few weeks. The last two runs (10/9 and 10/15) are the first two to fully consider the move to Stage 5, I believe. And it’s clear that the forecast is not looking kindly on that.

Indeed, the Governor’s move to Stage 5 looks worse and worse with each passing day. The state health commissioner announced earlier this week that she and her family tested positive.