library(leaflet)
library(tidyverse)
library(lubridate)
library(broom)
library(plotly)
library(DT)
- 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.
- 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.
- 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=