date: 2020-04-20 20:04:55 PDT

METHOD

Data are retrieved from the NYTimes Github Repo. This plot is similar to the online chart published by the NYTimes with the addtion that points are encoded for daily estimated case doubling time (the inverse of the growth rate).

Growth is assumed to be exponential. \(t_{double}(t)\) is estimated by:

\[t_{double}(t) = \frac{\int_{0}^{t}cases(t')\; dt'}{cases(t)} \times \log(2)\]

where \(cases(t)\) is the daily reported cases of COVID-19 for a specific location.

Data are reticulated with a spline to reduce noise and derivatives are computed from this smoothed data.

The latest date recorded in the data is 2020-04-19.

HEAT MAP

The maps shows, for counties with > 10 cases, the location, number of current cases, and the calculated growth rate (expressed as doubling time). Shorter doubling times are obviously worse thaan longer doubling times.

As case growth goes to zero, doubling times will tend to infinity. Plots are currently capped at 25 days. Early in the crisis doubling times were on the order of ~ 3 days.

key_Wx <- read_file("key.txt")

register_google(key = key_Wx)


## cmpute bounding Box

map_cases <- function(data_x = final_plot_data){


  bbox <- make_bbox(lat = lat, lon = lon, data = data_x, f = .1)
  
  c_lat = bbox[2]
  
  
  plot_colors <- c(brewer.pal(n = 11, name = "RdYlGn")[1:9], "#3392B2")
  plot_colors <- plot_colors[-(6:7)]
  
  p <- ggmap(get_googlemap(location = bbox,
                      zoom = 3 ,scale = 2,
                      maptype ='terrain',
                      color = 'bw', region = "", style = c( 'feature:administrative.country|element:labels|visibility:off', 'feature:administrative.state|element:labels|visibility:off')))
  

  
  q <- p + geom_point(data = data_x %>% filter(date == max(date))%>%arrange(desc(cases))%>%filter(cases>10), aes(x = lon, y = lat,  size = cases, fill = double_time, group = fips), pch=21, alpha = 0.7, color = "grey20") + 
    theme(legend.position="top") +
    xlim(bbox[1], bbox[3]) +
    ylim(bbox[2], bbox[4])+
    scale_size_continuous( breaks=c(8, 64, 512, 4096, 32768), range = c(1, 40))+ theme_bw()+
    scale_fill_gradientn(colors =plot_colors, name = "t(days)") + 
    theme(axis.title.x=element_blank(),
          axis.text.x=element_blank(),
          axis.ticks.x=element_blank(),
          axis.title.y=element_blank(),
          axis.text.y=element_blank(),
          axis.ticks.y=element_blank()) +
    labs(title = str_c('UNITED STATES COVID-19 CASE HEAT MAP', ""), subtitle=str_c("Data from NYTimes COVID19 Database. Color indicates case-doubling time (in days).","")) +
    annotate(geom="text", x=max(data_x$lon[!is.na(data_x$lon)]), y=min(data_x$lat[!is.na(data_x$lat)]), label=str_c("ww44ss ", today() ), size = 2,
              color="Grey30") #+
  
    # transition_time(date)+
    # ease_aes('linear')
      
    return(q)
}

This results saved as heat_map2020_04_20_20_05_50.jpg

SEVERITY

We can use this data to compute expected new cases in the short term. This is a ranking of “severity.” based on both the number of current cases and also the grwowth rate.

From the model above we can forecast

\[{cases(t)} = {cases(t_0)} \times \ 2^{(t-t_0)/t_d}\]

where \(t_0\) is today and \(t\) is some date in the future. The severity \(S\) is the ranked extrapoloated number of new cases over the next \(t - t_0 = 14 \; days\). Fourteen days is roughly the time for social controls to be effective.

county state current cases double_time severity
New York City New York 137949.3 14.95 1
Cook Illinois 21781.5 11.21 2
Marion Ohio 1153.4 3.00 3
Nassau New York 30850.2 16.49 4
Suffolk New York 27337.6 16.12 5
Providence Rhode Island 3379.9 5.38 6
Westchester New York 24009.9 18.18 7
Middlesex Massachusetts 8992.1 9.28 8
Union New Jersey 9605.4 11.21 9
Suffolk Massachusetts 8265.6 10.21 10
Philadelphia Pennsylvania 9585.4 11.69 11
Hudson New Jersey 10699.5 12.87 12
Essex New Jersey 10568.7 13.16 13
Los Angeles California 12470.3 15.05 14
Essex Massachusetts 5303.8 8.94 15
Passaic New Jersey 8459.6 12.28 16
New Haven Connecticut 5197.5 8.96 17
Pickaway Ohio 411.7 3.00 18
Bergen New Jersey 12776.3 16.84 19
Minnehaha South Dakota 1573.7 4.90 20

The table generally follows the ranking of the number of cases, but there are some surprises.