library(data.table)
# install.packages("kableExtra")
library(knitr)
library(kableExtra)

Estimating COVID-19 Case Severity in each US County

Goal: Estimate what proportion of COVID-19 infections would require hospitalization in each US county based on reported COVID-19 severity by demographics and data on US county demographics.


1. Load Data

Conditional Fatality Rates by Age

These numbers are based on data from the Chinese CDC (http://weekly.chinacdc.cn/en/article/id/e53946e2-c6c4-41e9-9a9b-fea8db1a8f51).

I assume we can use these rates to estimate a lower bound of US hospitalizations by comorbidity and an upper bound for the number of fatalities.

cond_fatality_rates = fread('data/ccdc_rates_v5.csv')
cond_fatality_rates  %>% kable() %>% kable_styling()
age_decade case_fatality_rate
0-9 0.000
10-19 0.002
20-29 0.002
30-39 0.002
40-49 0.004
50-59 0.013
60-69 0.036
70-79 0.080
80+ 0.148

Conversion Factors between Fatalities to Severe, Critical, and Overall Cases

Using conversion factors from CCDC data for now. We do not have them conditional on age or comorbidities.

ccdc_ratios = fread('data/ccdc_ratios.csv')
ccdc_ratios
##              variable    value
## 1:   severe_per_death 6.029326
## 2: critical_per_death 2.040078

County Age Distribution

Data source:

Census County Population by Characteristics: 2010-2018 (https://www.census.gov/data/datasets/time-series/demo/popest/2010s-counties-detail.html?)

Using 2018 population estimates.

age_buckets_by_county = fread('data/county_age_populations_v5.csv')
age_buckets_by_county[CTYNAME == "Santa Clara County"]  %>% kable() %>% kable_styling()
FIPS STNAME CTYNAME age_decade pop
6085 California Santa Clara County 0-9 231605
6085 California Santa Clara County 10-19 237135
6085 California Santa Clara County 20-29 278072
6085 California Santa Clara County 30-39 302185
6085 California Santa Clara County 40-49 270163
6085 California Santa Clara County 50-59 252777
6085 California Santa Clara County 60-69 186657
6085 California Santa Clara County 70-79 109920
6085 California Santa Clara County 80+ 69056

2. Estimating COVID-19 Case Severity in each County


Steps to get simple estimate of severe cases:

  1. Join the county population numbers with CCDC conditional fatality rates by age bucket.
  2. Multiply the fatality rate by the CCDC ratios to get severe and critical case rates by county and age bracket.
  3. Report the aggregated severity rates for each county.

Step 1: Join the county population numbers with CCDC conditional fatality rates by age bucket.

merged_pop_fat_rate = merge(
  age_buckets_by_county[, .(FIPS, State = STNAME, County = CTYNAME, age_decade, population_in_age_group = pop)],
  cond_fatality_rates,
  by = 'age_decade')

merged_pop_fat_rate[County == "Santa Clara County"]  %>% kable(digits=4) %>% kable_styling()
age_decade FIPS State County population_in_age_group case_fatality_rate
0-9 6085 California Santa Clara County 231605 0.000
10-19 6085 California Santa Clara County 237135 0.002
20-29 6085 California Santa Clara County 278072 0.002
30-39 6085 California Santa Clara County 302185 0.002
40-49 6085 California Santa Clara County 270163 0.004
50-59 6085 California Santa Clara County 252777 0.013
60-69 6085 California Santa Clara County 186657 0.036
70-79 6085 California Santa Clara County 109920 0.080
80+ 6085 California Santa Clara County 69056 0.148

Step 2: Multiply the fatality rate by the CCDC ratios to get severe and critical case rates.

severe_per_death = ccdc_ratios[variable == 'severe_per_death', value][1]
critical_per_death = ccdc_ratios[variable == 'critical_per_death', value][1]

merged_pop_fat_rate[,`:=`(
  severe_cases_rate = severe_per_death*case_fatality_rate,
  critical_case_rate = critical_per_death*case_fatality_rate,
  hospitalizations_per_case = (severe_per_death+critical_per_death)*case_fatality_rate
)]

case_severity_rates = merged_pop_fat_rate[, 
  .(FIPS, State, County, age_decade, population_in_age_group, hospitalizations_per_case, severe_cases_rate, critical_case_rate, case_fatality_rate)]

case_severity_rates[County == "Santa Clara County"]  %>% kable(digits=3) %>% kable_styling()
FIPS State County age_decade population_in_age_group hospitalizations_per_case severe_cases_rate critical_case_rate case_fatality_rate
6085 California Santa Clara County 0-9 231605 0.000 0.000 0.000 0.000
6085 California Santa Clara County 10-19 237135 0.016 0.012 0.004 0.002
6085 California Santa Clara County 20-29 278072 0.016 0.012 0.004 0.002
6085 California Santa Clara County 30-39 302185 0.016 0.012 0.004 0.002
6085 California Santa Clara County 40-49 270163 0.032 0.024 0.008 0.004
6085 California Santa Clara County 50-59 252777 0.105 0.078 0.027 0.013
6085 California Santa Clara County 60-69 186657 0.290 0.217 0.073 0.036
6085 California Santa Clara County 70-79 109920 0.646 0.482 0.163 0.080
6085 California Santa Clara County 80+ 69056 1.194 0.892 0.302 0.148

Step 3: Report the aggregated severity rates for each county.

county_case_severity_rates = case_severity_rates[,.(
  hospitalizations_per_case = weighted.mean(hospitalizations_per_case, population_in_age_group),
  severe_cases_rate = weighted.mean(severe_cases_rate, population_in_age_group),
  critical_case_rate = weighted.mean(critical_case_rate, population_in_age_group),
  case_fatality_rate = weighted.mean(case_fatality_rate, population_in_age_group)
  ), by = c('FIPS', 'State', 'County')]

county_case_severity_rates[County == "Santa Clara County"] %>% kable(digits=3) %>% kable_styling()
FIPS State County hospitalizations_per_case severe_cases_rate critical_case_rate case_fatality_rate
6085 California Santa Clara County 0.132 0.099 0.033 0.016
fwrite(county_case_severity_rates, 'data/county_case_severity_rates_v5.csv')

county_case_severity_rates[order(hospitalizations_per_case, decreasing = TRUE)][1:100] %>%
   kable(digits=3) %>% kable_styling()
FIPS State County hospitalizations_per_case severe_cases_rate critical_case_rate case_fatality_rate
15005 Hawaii Kalawao County 0.421 0.315 0.107 0.052
12119 Florida Sumter County 0.418 0.313 0.106 0.052
35021 New Mexico Harding County 0.332 0.248 0.084 0.041
12015 Florida Charlotte County 0.327 0.244 0.083 0.041
4012 Arizona La Paz County 0.324 0.242 0.082 0.040
35003 New Mexico Catron County 0.319 0.238 0.081 0.040
12115 Florida Sarasota County 0.308 0.230 0.078 0.038
51103 Virginia Lancaster County 0.304 0.227 0.077 0.038
12055 Florida Highlands County 0.299 0.223 0.076 0.037
35051 New Mexico Sierra County 0.296 0.221 0.075 0.037
51133 Virginia Northumberland County 0.296 0.221 0.075 0.037
48299 Texas Llano County 0.296 0.221 0.075 0.037
38051 North Dakota McIntosh County 0.296 0.221 0.075 0.037
12017 Florida Citrus County 0.296 0.221 0.075 0.037
38083 North Dakota Sheridan County 0.295 0.220 0.075 0.037
26001 Michigan Alcona County 0.295 0.220 0.074 0.037
26131 Michigan Ontonagon County 0.294 0.219 0.074 0.036
32009 Nevada Esmeralda County 0.291 0.218 0.074 0.036
41069 Oregon Wheeler County 0.288 0.215 0.073 0.036
31103 Nebraska Keya Paha County 0.287 0.215 0.073 0.036
26083 Michigan Keweenaw County 0.287 0.214 0.072 0.036
53031 Washington Jefferson County 0.284 0.212 0.072 0.035
48243 Texas Jeff Davis County 0.282 0.210 0.071 0.035
51091 Virginia Highland County 0.281 0.210 0.071 0.035
13281 Georgia Towns County 0.280 0.209 0.071 0.035
12061 Florida Indian River County 0.278 0.208 0.070 0.034
46021 South Dakota Campbell County 0.275 0.205 0.069 0.034
12021 Florida Collier County 0.274 0.204 0.069 0.034
41015 Oregon Curry County 0.272 0.204 0.069 0.034
48327 Texas Menard County 0.272 0.203 0.069 0.034
31091 Nebraska Hooker County 0.270 0.202 0.068 0.034
45065 South Carolina McCormick County 0.270 0.202 0.068 0.033
12085 Florida Martin County 0.270 0.202 0.068 0.033
27001 Minnesota Aitkin County 0.269 0.201 0.068 0.033
26143 Michigan Roscommon County 0.266 0.199 0.067 0.033
55051 Wisconsin Iron County 0.266 0.199 0.067 0.033
53055 Washington San Juan County 0.266 0.198 0.067 0.033
29085 Missouri Hickory County 0.265 0.198 0.067 0.033
13291 Georgia Union County 0.265 0.198 0.067 0.033
37149 North Carolina Polk County 0.265 0.198 0.067 0.033
31071 Nebraska Garfield County 0.265 0.198 0.067 0.033
26119 Michigan Montmorency County 0.265 0.198 0.067 0.033
20089 Kansas Jewell County 0.264 0.197 0.067 0.033
26071 Michigan Iron County 0.262 0.196 0.066 0.033
30079 Montana Prairie County 0.262 0.196 0.066 0.032
51115 Virginia Mathews County 0.262 0.196 0.066 0.032
26141 Michigan Presque Isle County 0.261 0.195 0.066 0.032
20039 Kansas Decatur County 0.261 0.195 0.066 0.032
31015 Nebraska Boyd County 0.261 0.195 0.066 0.032
51119 Virginia Middlesex County 0.260 0.194 0.066 0.032
5005 Arkansas Baxter County 0.260 0.194 0.066 0.032
13239 Georgia Quitman County 0.259 0.194 0.066 0.032
8055 Colorado Huerfano County 0.258 0.193 0.065 0.032
53069 Washington Wahkiakum County 0.257 0.192 0.065 0.032
46089 South Dakota McPherson County 0.257 0.192 0.065 0.032
38039 North Dakota Griggs County 0.257 0.192 0.065 0.032
25001 Massachusetts Barnstable County 0.257 0.192 0.065 0.032
37175 North Carolina Transylvania County 0.257 0.192 0.065 0.032
55125 Wisconsin Vilas County 0.256 0.192 0.065 0.032
31133 Nebraska Pawnee County 0.256 0.191 0.065 0.032
20065 Kansas Graham County 0.256 0.191 0.065 0.032
26089 Michigan Leelanau County 0.255 0.191 0.065 0.032
36041 New York Hamilton County 0.255 0.190 0.064 0.032
4025 Arizona Yavapai County 0.254 0.190 0.064 0.032
38029 North Dakota Emmons County 0.254 0.190 0.064 0.032
20049 Kansas Elk County 0.254 0.190 0.064 0.031
38001 North Dakota Adams County 0.254 0.190 0.064 0.031
31165 Nebraska Sioux County 0.253 0.189 0.064 0.031
41023 Oregon Grant County 0.253 0.189 0.064 0.031
48263 Texas Kent County 0.253 0.189 0.064 0.031
31085 Nebraska Hayes County 0.253 0.189 0.064 0.031
20157 Kansas Republic County 0.252 0.189 0.064 0.031
38103 North Dakota Wells County 0.252 0.188 0.064 0.031
48403 Texas Sabine County 0.252 0.188 0.064 0.031
46107 South Dakota Potter County 0.252 0.188 0.064 0.031
29015 Missouri Benton County 0.252 0.188 0.064 0.031
48171 Texas Gillespie County 0.252 0.188 0.064 0.031
20183 Kansas Smith County 0.251 0.188 0.064 0.031
30103 Montana Treasure County 0.251 0.188 0.063 0.031
38037 North Dakota Grant County 0.251 0.188 0.063 0.031
27073 Minnesota Lac qui Parle County 0.250 0.187 0.063 0.031
24041 Maryland Talbot County 0.250 0.187 0.063 0.031
12035 Florida Flagler County 0.250 0.187 0.063 0.031
32029 Nevada Storey County 0.249 0.186 0.063 0.031
4015 Arizona Mohave County 0.249 0.186 0.063 0.031
29209 Missouri Stone County 0.249 0.186 0.063 0.031
38045 North Dakota LaMoure County 0.248 0.186 0.063 0.031
31069 Nebraska Garden County 0.248 0.186 0.063 0.031
26069 Michigan Iosco County 0.248 0.186 0.063 0.031
47035 Tennessee Cumberland County 0.248 0.186 0.063 0.031
42113 Pennsylvania Sullivan County 0.248 0.185 0.063 0.031
16059 Idaho Lemhi County 0.248 0.185 0.063 0.031
30039 Montana Granite County 0.248 0.185 0.063 0.031
30089 Montana Sanders County 0.247 0.185 0.063 0.031
37043 North Carolina Clay County 0.247 0.185 0.063 0.031
6091 California Sierra County 0.247 0.185 0.062 0.031
48267 Texas Kimble County 0.247 0.185 0.062 0.031
48385 Texas Real County 0.246 0.184 0.062 0.031
41021 Oregon Gilliam County 0.246 0.184 0.062 0.030
46069 South Dakota Hyde County 0.246 0.184 0.062 0.030