library(tidyverse)
library(broom)
library(plotly)
library(tidycensus)      
library(sf)              
library(leaflet)         
library(trendyy)
library(usdata)          

states <- get_acs(geography = "state",               
                  variables = "B01003_001",          
                  geometry = TRUE,                   
                  shift_geo = T)                     
Getting data from the 2016-2020 5-year ACS
Warning: The `shift_geo` argument is deprecated and will be removed in a future release. We recommend using `tigris::shift_geometry()` instead.
Using feature geometry obtained from the albersusa package
Please note: Alaska and Hawaii are being shifted and are not to scale.
old-style crs object detected; please recreate object with a recent sf::st_crs()
states %>% 
  rename(location = NAME) %>% 
  inner_join(unemployment_states)
Joining, by = "location"
Simple feature collection with 51 features and 9 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: -2100000 ymin: -2500000 xmax: 2516374 ymax: 732103.3
CRS:           +proj=laea +lat_0=45 +lon_0=-100 +x_0=0 +y_0=0 +a=6370997 +b=6370997 +units=m +no_defs
First 10 features:
   GEOID             location   variable estimate moe hits      keyword geo gprop                       geometry
1     04              Arizona B01003_001  7174064  NA   48 unemployment  US   web MULTIPOLYGON (((-1111066 -8...
2     05             Arkansas B01003_001  3011873  NA   35 unemployment  US   web MULTIPOLYGON (((557903.1 -1...
3     06           California B01003_001 39346023  NA   41 unemployment  US   web MULTIPOLYGON (((-1853480 -9...
4     08             Colorado B01003_001  5684926  NA   38 unemployment  US   web MULTIPOLYGON (((-613452.9 -...
5     09          Connecticut B01003_001  3570549  NA   82 unemployment  US   web MULTIPOLYGON (((2226838 519...
6     11 District of Columbia B01003_001   701974  NA   46 unemployment  US   web MULTIPOLYGON (((1960720 -41...
7     13              Georgia B01003_001 10516579  NA   41 unemployment  US   web MULTIPOLYGON (((1379893 -98...
8     17             Illinois B01003_001 12716164  NA   52 unemployment  US   web MULTIPOLYGON (((868942.5 -2...
9     18              Indiana B01003_001  6696893  NA   62 unemployment  US   web MULTIPOLYGON (((1279733 -39...
10    22            Louisiana B01003_001  4664616  NA   35 unemployment  US   web MULTIPOLYGON (((1080885 -16...
unemployment_states %>% 
  mutate(State = state2abbr(location)) %>% 
  inner_join(fire)
Joining, by = "State"
depression_data <- depression_states %>% 
  mutate(State = state2abbr(location)) %>% 
  inner_join(fire)
Joining, by = "State"
unemployment_data <- unemployment_states %>% 
  mutate(State = state2abbr(location)) %>% 
  inner_join(fire)
Joining, by = "State"
states_leaflet <- get_acs(geography = "state",       
                  variables = "B19013_001",         
                  geometry = TRUE)                   
Getting data from the 2016-2020 5-year ACS
Downloading feature geometry from the Census website.  To cache shapefiles for use in future sessions, set `options(tigris_use_cache = TRUE)`.
                                  
fire <- read_csv("Firearm_death_rate.csv")
Rows: 150 Columns: 2
-- Column specification --------------------------------------------------------------------------------------------------------------
Delimiter: ","
chr (1): State
dbl (1): Rate

i Use `spec()` to retrieve the full column specification for this data.
i Specify the column types or set `show_col_types = FALSE` to quiet this message.
  1. Here is a choropleth map of firearm death rates.

unemployment_colors <- colorNumeric(palette = "viridis", domain = unemployment_data$Rate)

states_leaflet %>% 
  rename(location = NAME) %>% 
  inner_join(unemployment_data) %>% 
  leaflet() %>% 
  addTiles() %>%
  addPolygons(weight = 1,
              fillColor = ~unemployment_colors(Rate), 
              label = ~paste0(location, ", Firearm death rate = ", Rate),
              highlight = highlightOptions(weight = 2)) %>% 
  setView(-95, 40, zoom = 4) %>% 
  addLegend(pal = unemployment_colors, values = ~Rate)
Joining, by = "location"
Warning: sf layer has inconsistent datum (+proj=longlat +datum=NAD83 +no_defs).
Need '+proj=longlat +datum=WGS84'

Montana’s firearm death rate is 22.5

  1. This is a choropleth of the search term ‘unemployment’.
unemployment <- trendy("unemployment", 
                   geo = "US", 
                   from = "2019-01-01", to = "2020-01-01")


unemployment_states <- unemployment %>%
  get_interest_region()

unemployment_states
NA

unemployment_colors <- colorNumeric(palette = "viridis", domain = unemployment_states$hits)

states_leaflet %>% 
  rename(location = NAME) %>% 
  inner_join(unemployment_states) %>% 
  leaflet() %>% 
  addTiles() %>%
  addPolygons(weight = 1,
              fillColor = ~unemployment_colors(hits), 
              label = ~paste0(location, ", Search volume = ", hits),
              highlight = highlightOptions(weight = 2)) %>% 
  setView(-95, 40, zoom = 4) %>% 
  addLegend(pal = unemployment_colors, values = ~hits)
Joining, by = "location"
Warning: sf layer has inconsistent datum (+proj=longlat +datum=NAD83 +no_defs).
Need '+proj=longlat +datum=WGS84'

Montana’s search volume for the term ‘unemployment’ is 61.

  1. Here is a linear model relating Firearm death rate data to the search term ‘unemployment’, and a scatterplot of the relationship.
unemployment_data %>% 
  drop_na() %>% 
  plot_ly(x = ~hits, 
          y = ~Rate,
          hoverinfo = "text", 
          text = ~paste("State: ", location, "<br>", "'unemployment' search rate: ", hits, "<br>", "Rate: ", Rate)) %>% 
  add_markers(showlegend = F) %>% 
  add_lines(y = ~fitted(unemployment_model)) %>% 
  layout(title = "Relationship between google searches for 'unemployment' and Firearm death rates, by state",
   xaxis = list(title = "Google search volume for 'unemployment'"),
   yaxis = list(title = "State Firearm death rate, per capita"))
NA
NA

There appears to be no correlation between the two items.

  1. This is a choropleth of the search term ‘depression’.
depression <- trendy("depression", 
                   geo = "US", 
                   from = "2019-01-01", to = "2020-01-01")


depression_states <- depression %>%
  get_interest_region()

depression_states
NA

depression_colors <- colorNumeric(palette = "viridis", domain = depression_states$hits)

states_leaflet %>% 
  rename(location = NAME) %>% 
  inner_join(depression_states) %>% 
  leaflet() %>% 
  addTiles() %>%
  addPolygons(weight = 1,
              fillColor = ~depression_colors(hits), 
              label = ~paste0(location, ", Search volume = ", hits),
              highlight = highlightOptions(weight = 2)) %>% 
  setView(-95, 40, zoom = 4) %>% 
  addLegend(pal = depression_colors, values = ~hits)
Joining, by = "location"
Warning: sf layer has inconsistent datum (+proj=longlat +datum=NAD83 +no_defs).
Need '+proj=longlat +datum=WGS84'

Montana’s search volume for the term ‘depression’ is 74.

  1. Here is a linear model relating Firearm death rate data to the search term ‘depression’, and a scatterplot of the relationship.
depression_data %>% 
  drop_na() %>% 
  plot_ly(x = ~hits, 
          y = ~Rate,
          hoverinfo = "text", 
          text = ~paste("State: ", location, "<br>", "'depression' search rate: ", hits, "<br>", "Rate: ", Rate)) %>% 
  add_markers(showlegend = F) %>% 
  add_lines(y = ~fitted(depression_model)) %>% 
  layout(title = "Relationship between google searches for 'depression' and firearm death rates, by state",
   xaxis = list(title = "Google search volume for 'depression'"),
   yaxis = list(title = "State firearm death rate, per capita"))
NA
NA

There appears to be no correlation between the two.

LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7cn0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShicm9vbSkNCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeSh0aWR5Y2Vuc3VzKSAgICAgIA0KbGlicmFyeShzZikgICAgICAgICAgICAgIA0KbGlicmFyeShsZWFmbGV0KSAgICAgICAgIA0KbGlicmFyeSh0cmVuZHl5KQ0KbGlicmFyeSh1c2RhdGEpICAgICAgICAgIA0KYGBgDQoNCmBgYHtyfQ0KDQpzdGF0ZXMgPC0gZ2V0X2FjcyhnZW9ncmFwaHkgPSAic3RhdGUiLCAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgdmFyaWFibGVzID0gIkIwMTAwM18wMDEiLCAgICAgICAgICANCiAgICAgICAgICAgICAgICAgIGdlb21ldHJ5ID0gVFJVRSwgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICBzaGlmdF9nZW8gPSBUKSAgICAgICAgICAgICAgICAgICAgIA0KDQpgYGANCg0KYGBge3J9DQpzdGF0ZXMgJT4lIA0KICByZW5hbWUobG9jYXRpb24gPSBOQU1FKSAlPiUgDQogIGlubmVyX2pvaW4odW5lbXBsb3ltZW50X3N0YXRlcykNCmBgYA0KDQpgYGB7cn0NCnVuZW1wbG95bWVudF9zdGF0ZXMgJT4lIA0KICBtdXRhdGUoU3RhdGUgPSBzdGF0ZTJhYmJyKGxvY2F0aW9uKSkgJT4lIA0KICBpbm5lcl9qb2luKGZpcmUpDQpgYGANCg0KYGBge3J9DQpkZXByZXNzaW9uX2RhdGEgPC0gZGVwcmVzc2lvbl9zdGF0ZXMgJT4lIA0KICBtdXRhdGUoU3RhdGUgPSBzdGF0ZTJhYmJyKGxvY2F0aW9uKSkgJT4lIA0KICBpbm5lcl9qb2luKGZpcmUpDQpgYGANCg0KYGBge3J9DQp1bmVtcGxveW1lbnRfZGF0YSA8LSB1bmVtcGxveW1lbnRfc3RhdGVzICU+JSANCiAgbXV0YXRlKFN0YXRlID0gc3RhdGUyYWJicihsb2NhdGlvbikpICU+JSANCiAgaW5uZXJfam9pbihmaXJlKQ0KYGBgDQoNCmBgYHtyfQ0Kc3RhdGVzX2xlYWZsZXQgPC0gZ2V0X2FjcyhnZW9ncmFwaHkgPSAic3RhdGUiLCAgICAgICANCiAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9ICJCMTkwMTNfMDAxIiwgICAgICAgICANCiAgICAgICAgICAgICAgICAgIGdlb21ldHJ5ID0gVFJVRSkgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCmBgYA0KDQpgYGB7cn0NCmZpcmUgPC0gcmVhZF9jc3YoIkZpcmVhcm1fZGVhdGhfcmF0ZS5jc3YiKQ0KDQpgYGANCg0KMS4gSGVyZSBpcyBhIGNob3JvcGxldGggbWFwIG9mIGZpcmVhcm0gZGVhdGggcmF0ZXMuDQpgYGB7cn0NCg0KdW5lbXBsb3ltZW50X2NvbG9ycyA8LSBjb2xvck51bWVyaWMocGFsZXR0ZSA9ICJ2aXJpZGlzIiwgZG9tYWluID0gdW5lbXBsb3ltZW50X2RhdGEkUmF0ZSkNCg0Kc3RhdGVzX2xlYWZsZXQgJT4lIA0KICByZW5hbWUobG9jYXRpb24gPSBOQU1FKSAlPiUgDQogIGlubmVyX2pvaW4odW5lbXBsb3ltZW50X2RhdGEpICU+JSANCiAgbGVhZmxldCgpICU+JSANCiAgYWRkVGlsZXMoKSAlPiUNCiAgYWRkUG9seWdvbnMod2VpZ2h0ID0gMSwNCiAgICAgICAgICAgICAgZmlsbENvbG9yID0gfnVuZW1wbG95bWVudF9jb2xvcnMoUmF0ZSksIA0KICAgICAgICAgICAgICBsYWJlbCA9IH5wYXN0ZTAobG9jYXRpb24sICIsIEZpcmVhcm0gZGVhdGggcmF0ZSA9ICIsIFJhdGUpLA0KICAgICAgICAgICAgICBoaWdobGlnaHQgPSBoaWdobGlnaHRPcHRpb25zKHdlaWdodCA9IDIpKSAlPiUgDQogIHNldFZpZXcoLTk1LCA0MCwgem9vbSA9IDQpICU+JSANCiAgYWRkTGVnZW5kKHBhbCA9IHVuZW1wbG95bWVudF9jb2xvcnMsIHZhbHVlcyA9IH5SYXRlKQ0KYGBgDQpNb250YW5hJ3MgZmlyZWFybSBkZWF0aCByYXRlIGlzIDIyLjUNCg0KMi4gVGhpcyBpcyBhIGNob3JvcGxldGggb2YgdGhlIHNlYXJjaCB0ZXJtICd1bmVtcGxveW1lbnQnLiANCmBgYHtyfQ0KdW5lbXBsb3ltZW50IDwtIHRyZW5keSgidW5lbXBsb3ltZW50IiwgDQogICAgICAgICAgICAgICAgICAgZ2VvID0gIlVTIiwgDQogICAgICAgICAgICAgICAgICAgZnJvbSA9ICIyMDE5LTAxLTAxIiwgdG8gPSAiMjAyMC0wMS0wMSIpDQoNCg0KdW5lbXBsb3ltZW50X3N0YXRlcyA8LSB1bmVtcGxveW1lbnQgJT4lDQogIGdldF9pbnRlcmVzdF9yZWdpb24oKQ0KDQp1bmVtcGxveW1lbnRfc3RhdGVzDQoNCmBgYA0KDQpgYGB7cn0NCg0KdW5lbXBsb3ltZW50X2NvbG9ycyA8LSBjb2xvck51bWVyaWMocGFsZXR0ZSA9ICJ2aXJpZGlzIiwgZG9tYWluID0gdW5lbXBsb3ltZW50X3N0YXRlcyRoaXRzKQ0KDQpzdGF0ZXNfbGVhZmxldCAlPiUgDQogIHJlbmFtZShsb2NhdGlvbiA9IE5BTUUpICU+JSANCiAgaW5uZXJfam9pbih1bmVtcGxveW1lbnRfc3RhdGVzKSAlPiUgDQogIGxlYWZsZXQoKSAlPiUgDQogIGFkZFRpbGVzKCkgJT4lDQogIGFkZFBvbHlnb25zKHdlaWdodCA9IDEsDQogICAgICAgICAgICAgIGZpbGxDb2xvciA9IH51bmVtcGxveW1lbnRfY29sb3JzKGhpdHMpLCANCiAgICAgICAgICAgICAgbGFiZWwgPSB+cGFzdGUwKGxvY2F0aW9uLCAiLCBTZWFyY2ggdm9sdW1lID0gIiwgaGl0cyksDQogICAgICAgICAgICAgIGhpZ2hsaWdodCA9IGhpZ2hsaWdodE9wdGlvbnMod2VpZ2h0ID0gMikpICU+JSANCiAgc2V0VmlldygtOTUsIDQwLCB6b29tID0gNCkgJT4lIA0KICBhZGRMZWdlbmQocGFsID0gdW5lbXBsb3ltZW50X2NvbG9ycywgdmFsdWVzID0gfmhpdHMpDQpgYGANCk1vbnRhbmEncyBzZWFyY2ggdm9sdW1lIGZvciB0aGUgdGVybSAndW5lbXBsb3ltZW50JyBpcyA2MS4NCg0KMy4gSGVyZSBpcyBhIGxpbmVhciBtb2RlbCByZWxhdGluZyBGaXJlYXJtIGRlYXRoIHJhdGUgZGF0YSB0byB0aGUgc2VhcmNoIHRlcm0gJ3VuZW1wbG95bWVudCcsIGFuZCBhICBzY2F0dGVycGxvdCBvZiB0aGUgcmVsYXRpb25zaGlwLg0KYGBge3J9DQp1bmVtcGxveW1lbnRfZGF0YSAlPiUgDQogIGRyb3BfbmEoKSAlPiUgDQogIHBsb3RfbHkoeCA9IH5oaXRzLCANCiAgICAgICAgICB5ID0gflJhdGUsDQogICAgICAgICAgaG92ZXJpbmZvID0gInRleHQiLCANCiAgICAgICAgICB0ZXh0ID0gfnBhc3RlKCJTdGF0ZTogIiwgbG9jYXRpb24sICI8YnI+IiwgIid1bmVtcGxveW1lbnQnIHNlYXJjaCByYXRlOiAiLCBoaXRzLCAiPGJyPiIsICJSYXRlOiAiLCBSYXRlKSkgJT4lIA0KICBhZGRfbWFya2VycyhzaG93bGVnZW5kID0gRikgJT4lIA0KICBhZGRfbGluZXMoeSA9IH5maXR0ZWQodW5lbXBsb3ltZW50X21vZGVsKSkgJT4lIA0KICBsYXlvdXQodGl0bGUgPSAiUmVsYXRpb25zaGlwIGJldHdlZW4gZ29vZ2xlIHNlYXJjaGVzIGZvciAndW5lbXBsb3ltZW50JyBhbmQgRmlyZWFybSBkZWF0aCByYXRlcywgYnkgc3RhdGUiLA0KICAgeGF4aXMgPSBsaXN0KHRpdGxlID0gIkdvb2dsZSBzZWFyY2ggdm9sdW1lIGZvciAndW5lbXBsb3ltZW50JyIpLA0KICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIlN0YXRlIEZpcmVhcm0gZGVhdGggcmF0ZSwgcGVyIGNhcGl0YSIpKQ0KDQoNCmBgYA0KVGhlcmUgYXBwZWFycyB0byBiZSBubyBjb3JyZWxhdGlvbiBiZXR3ZWVuIHRoZSB0d28gaXRlbXMuDQoNCjQuIFRoaXMgaXMgYSBjaG9yb3BsZXRoIG9mIHRoZSBzZWFyY2ggdGVybSAnZGVwcmVzc2lvbicuDQpgYGB7cn0NCmRlcHJlc3Npb24gPC0gdHJlbmR5KCJkZXByZXNzaW9uIiwgDQogICAgICAgICAgICAgICAgICAgZ2VvID0gIlVTIiwgDQogICAgICAgICAgICAgICAgICAgZnJvbSA9ICIyMDE5LTAxLTAxIiwgdG8gPSAiMjAyMC0wMS0wMSIpDQoNCg0KZGVwcmVzc2lvbl9zdGF0ZXMgPC0gZGVwcmVzc2lvbiAlPiUNCiAgZ2V0X2ludGVyZXN0X3JlZ2lvbigpDQoNCmRlcHJlc3Npb25fc3RhdGVzDQoNCmBgYA0KDQpgYGB7cn0NCg0KZGVwcmVzc2lvbl9jb2xvcnMgPC0gY29sb3JOdW1lcmljKHBhbGV0dGUgPSAidmlyaWRpcyIsIGRvbWFpbiA9IGRlcHJlc3Npb25fc3RhdGVzJGhpdHMpDQoNCnN0YXRlc19sZWFmbGV0ICU+JSANCiAgcmVuYW1lKGxvY2F0aW9uID0gTkFNRSkgJT4lIA0KICBpbm5lcl9qb2luKGRlcHJlc3Npb25fc3RhdGVzKSAlPiUgDQogIGxlYWZsZXQoKSAlPiUgDQogIGFkZFRpbGVzKCkgJT4lDQogIGFkZFBvbHlnb25zKHdlaWdodCA9IDEsDQogICAgICAgICAgICAgIGZpbGxDb2xvciA9IH5kZXByZXNzaW9uX2NvbG9ycyhoaXRzKSwgDQogICAgICAgICAgICAgIGxhYmVsID0gfnBhc3RlMChsb2NhdGlvbiwgIiwgU2VhcmNoIHZvbHVtZSA9ICIsIGhpdHMpLA0KICAgICAgICAgICAgICBoaWdobGlnaHQgPSBoaWdobGlnaHRPcHRpb25zKHdlaWdodCA9IDIpKSAlPiUgDQogIHNldFZpZXcoLTk1LCA0MCwgem9vbSA9IDQpICU+JSANCiAgYWRkTGVnZW5kKHBhbCA9IGRlcHJlc3Npb25fY29sb3JzLCB2YWx1ZXMgPSB+aGl0cykNCmBgYA0KTW9udGFuYSdzIHNlYXJjaCB2b2x1bWUgZm9yIHRoZSB0ZXJtICdkZXByZXNzaW9uJyBpcyA3NC4NCg0KNS4gSGVyZSBpcyBhIGxpbmVhciBtb2RlbCByZWxhdGluZyBGaXJlYXJtIGRlYXRoIHJhdGUgZGF0YSB0byB0aGUgc2VhcmNoIHRlcm0gJ2RlcHJlc3Npb24nLCBhbmQgYSAgc2NhdHRlcnBsb3Qgb2YgdGhlIHJlbGF0aW9uc2hpcC4NCmBgYHtyfQ0KZGVwcmVzc2lvbl9kYXRhICU+JSANCiAgZHJvcF9uYSgpICU+JSANCiAgcGxvdF9seSh4ID0gfmhpdHMsIA0KICAgICAgICAgIHkgPSB+UmF0ZSwNCiAgICAgICAgICBob3ZlcmluZm8gPSAidGV4dCIsIA0KICAgICAgICAgIHRleHQgPSB+cGFzdGUoIlN0YXRlOiAiLCBsb2NhdGlvbiwgIjxicj4iLCAiJ2RlcHJlc3Npb24nIHNlYXJjaCByYXRlOiAiLCBoaXRzLCAiPGJyPiIsICJSYXRlOiAiLCBSYXRlKSkgJT4lIA0KICBhZGRfbWFya2VycyhzaG93bGVnZW5kID0gRikgJT4lIA0KICBhZGRfbGluZXMoeSA9IH5maXR0ZWQoZGVwcmVzc2lvbl9tb2RlbCkpICU+JSANCiAgbGF5b3V0KHRpdGxlID0gIlJlbGF0aW9uc2hpcCBiZXR3ZWVuIGdvb2dsZSBzZWFyY2hlcyBmb3IgJ2RlcHJlc3Npb24nIGFuZCBmaXJlYXJtIGRlYXRoIHJhdGVzLCBieSBzdGF0ZSIsDQogICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiR29vZ2xlIHNlYXJjaCB2b2x1bWUgZm9yICdkZXByZXNzaW9uJyIpLA0KICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIlN0YXRlIGZpcmVhcm0gZGVhdGggcmF0ZSwgcGVyIGNhcGl0YSIpKQ0KDQoNCmBgYA0KVGhlcmUgYXBwZWFycyB0byBiZSBubyBjb3JyZWxhdGlvbiBiZXR3ZWVuIHRoZSB0d28u