Skip to content

Instantly share code, notes, and snippets.

@dwhswenson
Created March 24, 2020 13:33
Show Gist options
  • Save dwhswenson/080235fd9179d0a4305d279cd07804c1 to your computer and use it in GitHub Desktop.
Save dwhswenson/080235fd9179d0a4305d279cd07804c1 to your computer and use it in GitHub Desktop.
Analysis of expert predictions of COVID-19 cases and fatalities in the US
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Analysis of expert estimates COVID-19 deaths in the USA\n",
"\n",
"It's time for the USA to get very serious about the threat that COVID-19 poses to the country.\n",
"\n",
"Fivethirtyeight [recently reported](https://fivethirtyeight.com/features/infectious-disease-experts-dont-know-how-bad-the-coronavirus-is-going-to-get-either/) on a [survey](https://works.bepress.com/mcandrew/2/) of experts who were asked several questions on 16-17 March. Among those questions (paraphrased):\n",
"\n",
"1. How many cases of COVID-19 do you expect will be reported in the US by March 23, 2020? (a week from the survey date)\n",
"2. How many Americans will die of COVID-19 in 2020?\n",
"\n",
"It is now after March 23. The methodology I will follow below is to use the error in the answer to the first question as an estimate of the error in the answer to the second question. Now, this approach is far from perfect. There are plenty of reasons that the error in the estimate of the number of cases might not be correlated with the error in the death estimates. But I want to call attention to the threat this poses.\n",
"\n",
"Furthermore, let me be very clear that I do not in any way mean any sort of attack or disrespect to the experts who participated in that survey. Indeed, I recommend reading the Fivethirtyeight article, which eloquently explains that even experts are dealing with a great deal of uncertainty and working with imperfect information. I have nothing but respect and appreciation for these experts, who are kind enough to share their informed opinions with us at a time when we're all pretty concerned.\n",
"\n",
"The stuff below will include the entire process I use (full transparency, down to the details of the code I write). For those of you only interested in the headline numbers:\n",
"\n",
"* One would hope that actual results would be around the 50th percentile of expert estimates. In this case, it was at the 98th percentile (far above the typical expert prediction). That means that only 2 out of 100 experts would have expected the number of cases today or more.\n",
"* Extrapolating that to number of COVID-19 deaths in the USA in 2020, that would imply that around 2.3 million Americans will die from this. But that's based on assuming these experts are equally wrong about this number, and there's still plenty we can do to reduce that number. Strict adherence to physical distancing is one of the best things you can do to help accomplish that.\n",
"\n",
"Caveats: As stated previously, there's no specific reason to assume that the error in death estimates is correlated to the error in estimated cases. Furthermore, because the experts so strongly underestimated the number of cases, the death estimates come from extrapolating from the tails of distributions, which means that the numbers are extremely sensitive. If the values were around 95th percentile instead of 98th, that would shift the number of deaths by over half a million."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Baseline: Estimates of the number of US cases on 23 March"
]
},
{
"cell_type": "code",
"execution_count": 159,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{(5000, 7500): 0.13,\n",
" (7500, 10000): 0.29,\n",
" (10000, 12500): 0.24,\n",
" (12500, 15000): 0.1,\n",
" (15000, 17500): 0.05,\n",
" (17500, 20000): 0.04,\n",
" (20000, inf): 0.15000000000000002}"
]
},
"execution_count": 159,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%matplotlib inline\n",
"from matplotlib import pyplot as plt\n",
"import numpy as np\n",
"\n",
"predictions = [0.13, 0.29, 0.24, 0.10, 0.05, 0.04]\n",
"bins = [(5000 + i*2500, 5000 + (i+1)*2500) for i in range(len(predictions))]\n",
"\n",
"extra_bins = bins + [(20000,float('inf'))]\n",
"extra_pred = predictions + [1-sum(predictions)]\n",
"{b: d for b, d in zip(extra_bins, extra_pred)}"
]
},
{
"cell_type": "code",
"execution_count": 160,
"metadata": {},
"outputs": [],
"source": [
"# Actual US cases through 24 March. Data from: https://covidtracking.com/us-daily/\n",
"actual_cases = 42164"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Implementation details: "
]
},
{
"cell_type": "code",
"execution_count": 202,
"metadata": {},
"outputs": [],
"source": [
"class PercentileExtrapolator:\n",
" \"\"\"\n",
" \n",
" Extrapolation works like this: for the ranges where we have an actual probability\n",
" associated, we assume a constant probability density. Outside that range, we assume\n",
" an exponential tail which we determine by ... \n",
" \n",
" Parameters\n",
" ----------\n",
" bins : List[Tuple[Int, Int]]\n",
" probabilities : List[Float]\n",
" \"\"\"\n",
" def __init__(self, bins, probabilities):\n",
" self.probabilities = probabilities\n",
" self.bins = bins\n",
" self.extra_probability = 1 - sum(self.probabilities)\n",
" \n",
" def _triangle_rule(self, xval):\n",
" cumulative_prob = 0\n",
" for (bin_min, bin_max), prob in zip(self.bins, self.probabilities):\n",
" if xval > bin_max:\n",
" cumulative_prob += prob\n",
" elif bin_min < xval <= bin_max:\n",
" fraction = (xval - bin_min) / (bin_max - bin_min)\n",
" cumulative_prob += fraction * prob\n",
" else:\n",
" break\n",
" return cumulative_prob\n",
" \n",
" def _exponential_tail(self, xval):\n",
" bin_min, bin_max = self.bins[-1]\n",
" match_prob_dens = self.probabilities[-1] / (bin_max - bin_min)\n",
" if xval <= bin_max:\n",
" return 0.0\n",
" \n",
" N = self.extra_probability\n",
" alpha = match_prob_dens / N\n",
" \n",
" # pdf = lambda x: N * alpha * np.exp(alpha * (x - bin_max))\n",
" return N * (1 - np.exp(-alpha * (xval - bin_max)))\n",
" \n",
" def invert(self, percentile, resolution=1000):\n",
" # note: an exact version can probably be done, not needing resolution\n",
" xval = 0\n",
" while self(xval) < percentile:\n",
" xval += resolution\n",
" return xval\n",
" \n",
" def __call__(self, count):\n",
" return self._triangle_rule(count) + self._exponential_tail(count)"
]
},
{
"cell_type": "code",
"execution_count": 203,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.9858957623596923"
]
},
"execution_count": 203,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cases = PercentileExtrapolator(bins, predictions)\n",
"percentile = cases(actual_cases)\n",
"percentile"
]
},
{
"cell_type": "code",
"execution_count": 204,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"xvals = np.arange(5000, 50000, 500)\n",
"plt.plot(xvals, [cases(x) for x in xvals], label=\"Expert prediction\");\n",
"plt.xlabel(\"US COVID-19 Cases\")\n",
"plt.ylabel(\"Cumulative probability\")\n",
"plt.axvline(actual_cases, color='r', linestyle='--', label=\"Actual cases\")\n",
"plt.legend();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let me explain how to read that chart. The x-axis gives the number of COVID-19 cases predicted for March 23. The y-value at a given x-value gives the fraction of experts who expected fewer cases than that. For example, 15000 cases corresponds to a cumulative probability of around 0.75. That means that 75% of experts thought we'd have fewer that 15000 cases in the US; only 25% of experts thought we'd have more.\n",
"\n",
"The actual number of cases corresponds to a value of over 0.98. This means that over 98% of experts thought we'd see fewer cases than we actually did, and fewer than 2% that we'd see this many or more."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Extrapolation: What if the experts are equally wrong about deaths?"
]
},
{
"cell_type": "code",
"execution_count": 205,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{(0, 100000): 0.36,\n",
" (100000, 300000): 0.25,\n",
" (300000, 500000): 0.12,\n",
" (500000, 1000000): 0.13,\n",
" (1000000, 1500000): 0.07,\n",
" (1500000, inf): 0.06}"
]
},
"execution_count": 205,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"death_prob = [0.36, 0.25, 0.12, 0.13, 0.07, 0.06]\n",
"death_count = [0, 100000, 300000, 500000, 1000000, 1500000, float('inf')]\n",
"death_bins = [(death_count[i], death_count[i+1]) for i in range(len(death_count)-1)]\n",
"\n",
"{b: p for b, p in zip(death_bins, death_prob)}"
]
},
{
"cell_type": "code",
"execution_count": 215,
"metadata": {},
"outputs": [],
"source": [
"deaths = PercentileExtrapolator(death_bins[:-1], death_prob[:-1])"
]
},
{
"cell_type": "code",
"execution_count": 208,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"xvals = np.arange(0, 2500000, 10000)\n",
"plt.plot(xvals, [deaths(x) for x in xvals], label='Expert Prediction')\n",
"plt.xlabel(\"US COVID-19 Deaths in 2020\")\n",
"plt.axhline(percentile, color='r', linestyle='--', label='Extrapolated prediction')\n",
"plt.ylabel(\"Cumulative probability\")\n",
"plt.legend();"
]
},
{
"cell_type": "code",
"execution_count": 216,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2302000"
]
},
"execution_count": 216,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"deaths.invert(percentile) # this is the key number"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": true,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": true
},
"varInspector": {
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"delete_cmd_postfix": "",
"delete_cmd_prefix": "del ",
"library": "var_list.py",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"delete_cmd_postfix": ") ",
"delete_cmd_prefix": "rm(",
"library": "var_list.r",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
],
"window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment