This is an R Markdown Notebook.
shootings %>%
leaflet() %>%
addTiles() %>%
setView(lat = 40, lng = -98.5, zoom = 4) %>%
addCircleMarkers(stroke = F,
fillOpacity = .6,
radius = ~total_victims/10,
label = ~case)
Assuming "longitude" and "latitude" are longitude and latitude, respectively
Middle of the US is at the Kansas-Nebraska border. I heavily rounded. The biggest dot is the Las Vegas Shooting.
median_total_victims <- median(shootings$total_victims)
median_total_victims
[1] 10.5
Median number of victims since the 80’s.
median_fatalities <- median(shootings$fatalities)
median_fatalities
[1] 6
Median number of fatalities.
shootings %>%
plot_ly(x = ~year) %>%
add_histogram(nbinsx = 40) %>%
layout(title = "Shootings per Year",
xaxis = list(title = "Year"),
yaxis = list(title = "Number of Shootings"))
Wow, it’s almost like we have unprecedented gun crime in the last three years. Crazy.
shootings %>%
mutate(gender = as_factor(gender)) %>%
mutate(gender = fct_collapse(gender,
Female = c("Female", "F"),
Male = c("Male", "M"),
Unknown = c("unclear", "-"))) %>%
mutate(race = as_factor(race)) %>%
mutate(race = fct_collapse(race,
White = c("White", "White"),
Black = c("Black", "Black"),
Other = c("-", "unclear"))) %>%
plot_ly(x = ~gender, y = ~race) %>%
add_histogram2dcontour() %>%
layout(title = "Shootings by Gender and Race",
xaxis = list(title = "Gender"),
yaxis = list(title = "Race"))
Unknown levels in `f`: unclear
Can we collectively agree to keep guns away from white dudes, though?
shootings %>%
plot_ly(x = ~fatalities, y = ~injured,
hoverinfo = "text",
text = ~paste("Injuries:", injured , "<br>", "Fatalities:", fatalities)) %>%
add_markers() %>%
layout(title = "Shootings Injuries vs Fatalities",
xaxis = list(title = "Fatalities"),
yaxis = list(title = "Injuries"))
Scatterplot of injuries vs fatalities. The major outlier (again) is the Vegas shooting.
num_per_year <- shootings %>%
filter(fatalities > 3) %>%
count(year) %>%
filter(year < 2019)
num_per_year
NA
Mass shootings since ’82.
num_per_year_model <- lm(n ~ year, data = num_per_year)
tidy(num_per_year_model)
NA
glance(num_per_year_model)
NA
num_per_year %>%
plot_ly(x = ~year,
y = ~n,
hoverinfo = "text",
text = ~paste("Shootings by Year:", n, "<br>", "Year:", year)) %>%
add_markers(showlegend = F) %>%
add_lines(y = ~fitted(num_per_year_model)) %>%
layout(title = "Shootings by Year",
xaxis = list(title = "Year"),
yaxis = list(title = "Shootings"))
1982 to current with a regression line. 2018 was a bad year.
LS0tCnRpdGxlOiAiQVByYXR0IGRvdF9tYXBzIEFzc2lnbm1lbnQiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KClRoaXMgaXMgYW4gW1IgTWFya2Rvd25dKGh0dHA6Ly9ybWFya2Rvd24ucnN0dWRpby5jb20pIE5vdGVib29rLiAKCgpgYGB7cn0Kc2hvb3RpbmdzICU+JSAKICBsZWFmbGV0KCkgJT4lIAogIGFkZFRpbGVzKCkgJT4lIAogIHNldFZpZXcobGF0ID0gNDAsIGxuZyA9IC05OC41LCB6b29tID0gNCkgJT4lIAogIGFkZENpcmNsZU1hcmtlcnMoc3Ryb2tlID0gRiwgCiAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eSA9IC42LCAKICAgICAgICAgICAgICAgICAgIHJhZGl1cyA9IH50b3RhbF92aWN0aW1zLzEwLAogICAgICAgICAgICAgICAgICAgbGFiZWwgPSB+Y2FzZSkKYGBgCk1pZGRsZSBvZiB0aGUgVVMgaXMgYXQgdGhlIEthbnNhcy1OZWJyYXNrYSBib3JkZXIuIEkgaGVhdmlseSByb3VuZGVkLiBUaGUgYmlnZ2VzdCBkb3QgaXMgdGhlIExhcyBWZWdhcyBTaG9vdGluZy4gCgpgYGB7cn0KbWVkaWFuX3RvdGFsX3ZpY3RpbXMgPC0gbWVkaWFuKHNob290aW5ncyR0b3RhbF92aWN0aW1zKQoKbWVkaWFuX3RvdGFsX3ZpY3RpbXMKYGBgCk1lZGlhbiBudW1iZXIgb2YgdmljdGltcyBzaW5jZSB0aGUgODAncy4KCmBgYHtyfQptZWRpYW5fZmF0YWxpdGllcyA8LSBtZWRpYW4oc2hvb3RpbmdzJGZhdGFsaXRpZXMpCgptZWRpYW5fZmF0YWxpdGllcwpgYGAKTWVkaWFuIG51bWJlciBvZiBmYXRhbGl0aWVzLiAKCmBgYHtyfQpzaG9vdGluZ3MgJT4lIAogIHBsb3RfbHkoeCA9IH55ZWFyKSAlPiUgCiAgYWRkX2hpc3RvZ3JhbShuYmluc3ggPSA0MCkgJT4lIAogIGxheW91dCh0aXRsZSA9ICJTaG9vdGluZ3MgcGVyIFllYXIiLAogICAgICAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiWWVhciIpLAogICAgICAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiTnVtYmVyIG9mIFNob290aW5ncyIpKQpgYGAKV293LCBpdCdzIGFsbW9zdCBsaWtlIHdlIGhhdmUgdW5wcmVjZWRlbnRlZCBndW4gY3JpbWUgaW4gdGhlIGxhc3QgdGhyZWUgeWVhcnMuIENyYXp5LgoKYGBge3J9CnNob290aW5ncyAlPiUgCiAgbXV0YXRlKGdlbmRlciA9IGFzX2ZhY3RvcihnZW5kZXIpKSAlPiUgCiAgbXV0YXRlKGdlbmRlciA9IGZjdF9jb2xsYXBzZShnZW5kZXIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmVtYWxlID0gYygiRmVtYWxlIiwgIkYiKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWxlID0gYygiTWFsZSIsICJNIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmtub3duID0gYygidW5jbGVhciIsICItIikpKSAlPiUgCiAgbXV0YXRlKHJhY2UgPSBhc19mYWN0b3IocmFjZSkpICU+JSAKICBtdXRhdGUocmFjZSA9IGZjdF9jb2xsYXBzZShyYWNlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGl0ZSA9IGMoIldoaXRlIiwgIldoaXRlIiksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsYWNrID0gYygiQmxhY2siLCAiQmxhY2siKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdGhlciA9IGMoIi0iLCAidW5jbGVhciIpKSkgJT4lCiAgcGxvdF9seSh4ID0gfmdlbmRlciwgeSA9IH5yYWNlKSAlPiUgCiAgYWRkX2hpc3RvZ3JhbTJkY29udG91cigpICU+JSAKICBsYXlvdXQodGl0bGUgPSAiU2hvb3RpbmdzIGJ5IEdlbmRlciBhbmQgUmFjZSIsCiAgICAgICAgIHhheGlzID0gbGlzdCh0aXRsZSA9ICJHZW5kZXIiKSwKICAgICAgICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIlJhY2UiKSkKYGBgCkNhbiB3ZSBjb2xsZWN0aXZlbHkgYWdyZWUgdG8ga2VlcCBndW5zIGF3YXkgZnJvbSB3aGl0ZSBkdWRlcywgdGhvdWdoPwoKYGBge3J9CnNob290aW5ncyAlPiUgCiAgcGxvdF9seSh4ID0gfmZhdGFsaXRpZXMsIHkgPSB+aW5qdXJlZCwKICAgICAgICAgIGhvdmVyaW5mbyA9ICJ0ZXh0IiwKICAgICAgICAgIHRleHQgPSB+cGFzdGUoIkluanVyaWVzOiIsIGluanVyZWQgLCAiPGJyPiIsICJGYXRhbGl0aWVzOiIsIGZhdGFsaXRpZXMpKSAlPiUgCiAgYWRkX21hcmtlcnMoKSAlPiUgCiAgbGF5b3V0KHRpdGxlID0gIlNob290aW5ncyBJbmp1cmllcyB2cyBGYXRhbGl0aWVzIiwKICAgICAgICAgeGF4aXMgPSBsaXN0KHRpdGxlID0gIkZhdGFsaXRpZXMiKSwKICAgICAgICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIkluanVyaWVzIikpCmBgYApTY2F0dGVycGxvdCBvZiBpbmp1cmllcyB2cyBmYXRhbGl0aWVzLiBUaGUgbWFqb3Igb3V0bGllciAoYWdhaW4pIGlzIHRoZSBWZWdhcyBzaG9vdGluZy4gCmBgYHtyfQpudW1fcGVyX3llYXIgPC0gc2hvb3RpbmdzICU+JSAKICBmaWx0ZXIoZmF0YWxpdGllcyA+IDMpICU+JSAKICBjb3VudCh5ZWFyKSAlPiUgCiAgZmlsdGVyKHllYXIgPCAyMDE5KQoKbnVtX3Blcl95ZWFyCgpgYGAKTWFzcyBzaG9vdGluZ3Mgc2luY2UgJzgyLgoKYGBge3J9Cm51bV9wZXJfeWVhcl9tb2RlbCA8LSBsbShuIH4geWVhciwgZGF0YSA9IG51bV9wZXJfeWVhcikKCmBgYApgYGB7cn0KdGlkeShudW1fcGVyX3llYXJfbW9kZWwpCgpgYGAKCmBgYHtyfQpnbGFuY2UobnVtX3Blcl95ZWFyX21vZGVsKQoKYGBgCmBgYHtyfQpudW1fcGVyX3llYXIgJT4lIAogIHBsb3RfbHkoeCA9IH55ZWFyLAogICAgICAgICAgeSA9IH5uLAogICAgICAgICAgaG92ZXJpbmZvID0gInRleHQiLAogICAgICAgICAgdGV4dCA9IH5wYXN0ZSgiU2hvb3RpbmdzIGJ5IFllYXI6IiwgbiwgIjxicj4iLCAiWWVhcjoiLCB5ZWFyKSkgJT4lIAogIGFkZF9tYXJrZXJzKHNob3dsZWdlbmQgPSBGKSAlPiUgCiAgYWRkX2xpbmVzKHkgPSB+Zml0dGVkKG51bV9wZXJfeWVhcl9tb2RlbCkpICU+JSAKICBsYXlvdXQodGl0bGUgPSAiU2hvb3RpbmdzIGJ5IFllYXIiLAogICAgICAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiWWVhciIpLAogICAgICAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiU2hvb3RpbmdzIikpCmBgYAoxOTgyIHRvIGN1cnJlbnQgd2l0aCBhIHJlZ3Jlc3Npb24gbGluZS4gMjAxOCB3YXMgYSBiYWQgeWVhci4gCg==