library(leaflet)
library(tidyverse)
library(lubridate)
library(broom)
library(plotly)
library(DT)
  1. Here is a map of the shootings data.
shootings %>% 
  leaflet() %>% 
  addTiles() %>%
  addCircleMarkers(stroke = F, fillOpacity = .6, radius = ~log(total_victims))
Assuming "longitude" and "latitude" are longitude and latitude, respectively

I find it interesting that most of the area around Montana and the Dakotas is dot free.

  1. Additional statistics A. Here is a median number of total victims.
shootings %>% 
  drop_na(total_victims) %>% 
  summarize(median_total_victims = median(total_victims))

Median total victims is 10.

A. Here is median fatalities

shootings %>% 
  drop_na(fatalities) %>% 
  summarize(median_fatalities = median(fatalities))

Median fatalities were 6.

B.This is a histogram of the number of shootings per year.

shootings %>% 
  drop_na(year) %>%
  plot_ly(x = ~year) %>%
  add_histogram(nbinsx = 40)
NA

2018-2019 had the most shootings with 22.

C. This is a heatmap with gender and race of the shooter.

shootings %>% 
  mutate(race = as_factor(race)) %>% 
    mutate(race = fct_collapse(race,
                             White = c( "white", "White"),
                             Black = c("black", "Black"),
                             Other = c ("unclear", "Other"))) %>%
  mutate(gender = as_factor(gender)) %>% 
    mutate(gender = fct_collapse(gender,
                             Female = c( "F", "Female"),
                             Male = c("M", "Male"))) %>%
    plot_ly(x = ~gender, y = ~race) %>%
  add_histogram2dcontour() 
NA
NA

Most shooters where white males.

C. This is a heatmap with gender and age of shooter

shootings %>% 
   mutate(gender = as_factor(gender)) %>% 
    mutate(gender = fct_collapse(gender,
                             Female = c( "F", "Female"),
                             Male = c("M", "Male"))) %>%
  plot_ly(x = ~gender, y = ~age_of_shooter) %>%
  add_histogram2dcontour() 
NA
NA
NA
NA

Most shooters were males around the age of 25.

D. Here is a scatterplot with the number injured by the number of fatalities in the shooting.

shootings %>% 
  plot_ly(x = ~injured, 
          y = ~fatalities,
          hoverinfo = "text", text = ~paste("Fatalities per shooting: ", fatalities, "<br>", "Year: ", year)) %>% 
  add_markers(showlegend = F) %>%
  layout(title = "Number of fatalities per shooting by year",
   xaxis = list(title = "Year"),
   yaxis = list(title = "Number of fatalities per shooting")) 
NA

There is a cluster with 2 extreme out lairs.

  1. This is a regression analysis testing the hypothesis that the number of shootings has increased over the years.
num_per_year <- shootings %>% 
  filter(fatalities > 3) %>% 
  count(year)

num_per_year

Based on our data from the regression analysis and the graph, I would say within the past 2 year shootings have increased.

LS0tDQp0aXRsZTogIkRvdCBNYXAiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7cn0NCmxpYnJhcnkobGVhZmxldCkNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShsdWJyaWRhdGUpDQpsaWJyYXJ5KGJyb29tKQ0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KERUKQ0KDQpgYGANCg0KMS4gSGVyZSBpcyBhIG1hcCBvZiB0aGUgc2hvb3RpbmdzIGRhdGEuDQpgYGB7cn0NCnNob290aW5ncyAlPiUgDQogIGxlYWZsZXQoKSAlPiUgDQogIGFkZFRpbGVzKCkgJT4lDQogIGFkZENpcmNsZU1hcmtlcnMoc3Ryb2tlID0gRiwgZmlsbE9wYWNpdHkgPSAuNiwgcmFkaXVzID0gfmxvZyh0b3RhbF92aWN0aW1zKSkNCmBgYA0KSSBmaW5kIGl0IGludGVyZXN0aW5nIHRoYXQgbW9zdCBvZiB0aGUgYXJlYSBhcm91bmQgTW9udGFuYSBhbmQgdGhlIERha290YXMgaXMgZG90IGZyZWUuDQoNCg0KDQoyLiBBZGRpdGlvbmFsIHN0YXRpc3RpY3MgDQpBLiBIZXJlIGlzIGEgbWVkaWFuIG51bWJlciBvZiB0b3RhbCB2aWN0aW1zLiANCmBgYHtyfQ0Kc2hvb3RpbmdzICU+JSANCiAgZHJvcF9uYSh0b3RhbF92aWN0aW1zKSAlPiUgDQogIHN1bW1hcml6ZShtZWRpYW5fdG90YWxfdmljdGltcyA9IG1lZGlhbih0b3RhbF92aWN0aW1zKSkNCmBgYA0KTWVkaWFuIHRvdGFsIHZpY3RpbXMgaXMgMTAuDQoNCkEuIEhlcmUgaXMgbWVkaWFuIGZhdGFsaXRpZXMNCmBgYHtyfQ0Kc2hvb3RpbmdzICU+JSANCiAgZHJvcF9uYShmYXRhbGl0aWVzKSAlPiUgDQogIHN1bW1hcml6ZShtZWRpYW5fZmF0YWxpdGllcyA9IG1lZGlhbihmYXRhbGl0aWVzKSkNCmBgYA0KTWVkaWFuIGZhdGFsaXRpZXMgd2VyZSA2Lg0KDQpCLlRoaXMgaXMgYSBoaXN0b2dyYW0gb2YgdGhlIG51bWJlciBvZiBzaG9vdGluZ3MgcGVyIHllYXIuDQpgYGB7cn0NCnNob290aW5ncyAlPiUgDQogIGRyb3BfbmEoeWVhcikgJT4lDQogIHBsb3RfbHkoeCA9IH55ZWFyKSAlPiUNCiAgYWRkX2hpc3RvZ3JhbShuYmluc3ggPSA0MCkNCg0KYGBgDQoyMDE4LTIwMTkgaGFkIHRoZSBtb3N0IHNob290aW5ncyB3aXRoIDIyLg0KDQpDLiBUaGlzIGlzIGEgaGVhdG1hcCB3aXRoIGdlbmRlciBhbmQgcmFjZSBvZiB0aGUgc2hvb3Rlci4gIA0KYGBge3J9DQpzaG9vdGluZ3MgJT4lIA0KICBtdXRhdGUocmFjZSA9IGFzX2ZhY3RvcihyYWNlKSkgJT4lIA0KICAgIG11dGF0ZShyYWNlID0gZmN0X2NvbGxhcHNlKHJhY2UsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaXRlID0gYyggIndoaXRlIiwgIldoaXRlIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsYWNrID0gYygiYmxhY2siLCAiQmxhY2siKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3RoZXIgPSBjICgidW5jbGVhciIsICJPdGhlciIpKSkgJT4lDQogIG11dGF0ZShnZW5kZXIgPSBhc19mYWN0b3IoZ2VuZGVyKSkgJT4lIA0KICAgIG11dGF0ZShnZW5kZXIgPSBmY3RfY29sbGFwc2UoZ2VuZGVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZW1hbGUgPSBjKCAiRiIsICJGZW1hbGUiKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFsZSA9IGMoIk0iLCAiTWFsZSIpKSkgJT4lDQogICAgcGxvdF9seSh4ID0gfmdlbmRlciwgeSA9IH5yYWNlKSAlPiUNCiAgYWRkX2hpc3RvZ3JhbTJkY29udG91cigpIA0KICANCiAgDQpgYGANCk1vc3Qgc2hvb3RlcnMgd2hlcmUgd2hpdGUgbWFsZXMuDQoNCkMuIFRoaXMgaXMgYSBoZWF0bWFwIHdpdGggZ2VuZGVyIGFuZCBhZ2Ugb2Ygc2hvb3Rlcg0KYGBge3J9DQpzaG9vdGluZ3MgJT4lIA0KICAgbXV0YXRlKGdlbmRlciA9IGFzX2ZhY3RvcihnZW5kZXIpKSAlPiUgDQogICAgbXV0YXRlKGdlbmRlciA9IGZjdF9jb2xsYXBzZShnZW5kZXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZlbWFsZSA9IGMoICJGIiwgIkZlbWFsZSIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWxlID0gYygiTSIsICJNYWxlIikpKSAlPiUNCiAgcGxvdF9seSh4ID0gfmdlbmRlciwgeSA9IH5hZ2Vfb2Zfc2hvb3RlcikgJT4lDQogIGFkZF9oaXN0b2dyYW0yZGNvbnRvdXIoKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogDQogIA0KICANCmBgYA0KTW9zdCBzaG9vdGVycyB3ZXJlIG1hbGVzIGFyb3VuZCB0aGUgYWdlIG9mIDI1Lg0KDQpELiBIZXJlIGlzIGEgc2NhdHRlcnBsb3Qgd2l0aCB0aGUgbnVtYmVyIGluanVyZWQgYnkgdGhlIG51bWJlciBvZiBmYXRhbGl0aWVzIGluIHRoZSBzaG9vdGluZy4gDQpgYGB7cn0NCnNob290aW5ncyAlPiUgDQogIHBsb3RfbHkoeCA9IH5pbmp1cmVkLCANCiAgICAgICAgICB5ID0gfmZhdGFsaXRpZXMsDQogICAgICAgICAgaG92ZXJpbmZvID0gInRleHQiLCB0ZXh0ID0gfnBhc3RlKCJGYXRhbGl0aWVzIHBlciBzaG9vdGluZzogIiwgZmF0YWxpdGllcywgIjxicj4iLCAiWWVhcjogIiwgeWVhcikpICU+JSANCiAgYWRkX21hcmtlcnMoc2hvd2xlZ2VuZCA9IEYpICU+JQ0KICBsYXlvdXQodGl0bGUgPSAiTnVtYmVyIG9mIGZhdGFsaXRpZXMgcGVyIHNob290aW5nIGJ5IHllYXIiLA0KICAgeGF4aXMgPSBsaXN0KHRpdGxlID0gIlllYXIiKSwNCiAgIHlheGlzID0gbGlzdCh0aXRsZSA9ICJOdW1iZXIgb2YgZmF0YWxpdGllcyBwZXIgc2hvb3RpbmciKSkgDQogIA0KYGBgDQpUaGVyZSBpcyBhIGNsdXN0ZXIgd2l0aCAyIGV4dHJlbWUgb3V0IGxhaXJzLg0KDQozLiBUaGlzIGlzIGEgcmVncmVzc2lvbiBhbmFseXNpcyB0ZXN0aW5nIHRoZSBoeXBvdGhlc2lzIHRoYXQgdGhlIG51bWJlciBvZiBzaG9vdGluZ3MgaGFzIGluY3JlYXNlZCBvdmVyIHRoZSB5ZWFycy4NCmBgYHtyfQ0KbnVtX3Blcl95ZWFyIDwtIHNob290aW5ncyAlPiUgDQogIGZpbHRlcihmYXRhbGl0aWVzID4gMykgJT4lIA0KICBjb3VudCh5ZWFyKQ0KDQpudW1fcGVyX3llYXINCmBgYA0KQmFzZWQgb24gb3VyIGRhdGEgZnJvbSB0aGUgcmVncmVzc2lvbiBhbmFseXNpcyBhbmQgdGhlIGdyYXBoLCBJIHdvdWxkIHNheSB3aXRoaW4gdGhlIHBhc3QgMiB5ZWFyIHNob290aW5ncyBoYXZlIGluY3JlYXNlZC4=