Hate Crimes in NYC: Barriers to Reporting
The focus of this study is to visualize and understand what hate
crimes are being reported the most and what is preventing people from
reporting these crimes. We use reporting data from different hate crime
biases to understand when report spikes happened and what factors could
have prevented certain groups from reporting at those times.
Specifically, this study has three research questions we aim to answer:
what hate crimes are the most prevalent, what barriers are keeping
certain groups from reporting, and how the uptick in certain crimes
correlates with the events of the time. By analyzing these questions,
this study seeks to provide a better understanding of the factors that
contribute to the reporting and committing of hate crimes in New
York.
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
setwd("C:/Users/gswah/OneDrive/Documents/DIDA 325")
#file.choose()
data <- read.csv("C:\\Users\\gswah\\OneDrive\\Documents\\DIDA 325\\Hate_Crimes_by_County_and_Bias_Type__Beginning_2010 (1).csv")
To address these questions using the dataset provided, we
manipulated the variables above to analyze trends between the variables.
To understand what the most prevalent hate crimes in New York were, we
created a descriptive statistics table featuring every bias type and the
total reports of crimes made against each community. This provides us
with a clear framework of what groups are reporting crimes made against
them the most and the least.
variables <- data %>%
select(c(Anti.Male, Anti.Female, Anti.Transgender, Anti.Gender.Non.Conforming, Anti.Age., Anti.White, Anti.Black, Anti.American.Indian.Alaskan.Native, Anti.Asian, Anti.Native.Hawaiian.Pacific.Islander, Anti.Multi.Racial.Groups, Anti.Other.Race, Anti.Jewish, Anti.Catholic, Anti.Protestant, Anti.Islamic..Muslim., Anti.Multi.Religious.Groups, Anti.Atheism.Agnosticism, Anti.Religious.Practice.Generally, Anti.Other.Religion, Anti.Buddhist, Anti.Eastern.Orthodox..Greek..Russian..etc.., Anti.Hindu, Anti.Jehovahs.Witness, Anti.Mormon, Anti.Other.Christian, Anti.Sikh, Anti.Hispanic, Anti.Arab, Anti.Other.Ethnicity.National.Origin, Anti.Non.Hispanic., Anti.Gay..Male.and.Female., Anti.Heterosexual, Anti.Bisexual, Anti.Physical.Disability, Anti.Mental.Disability))
mean1 <- variables %>% summarise(across(everything(), mean, na.rm=TRUE))
## Warning: There was 1 warning in `summarise()`.
## ℹ In argument: `across(everything(), mean, na.rm = TRUE)`.
## Caused by warning:
## ! The `...` argument of `across()` is deprecated as of dplyr 1.1.0.
## Supply arguments directly to `.fns` through an anonymous function instead.
##
## # Previously
## across(a:b, mean, na.rm = TRUE)
##
## # Now
## across(a:b, \(x) mean(x, na.rm = TRUE))
sd1 <- variables %>% summarise(across(everything(), sd, na.rm=TRUE))
min1 <- variables %>% summarise(across(everything(), min, na.rm=TRUE))
max1 <- variables %>% summarise(across(everything(), max, na.rm=TRUE))
sum1 <- colSums(variables, na.rm=TRUE)
table <- rbind(mean1, sd1, min1, max1, sum1)
rownames(table) <- c("Mean", "Standard Deviation", "Minimum", "Maximum", "Sum")
table <- t(table)
options(scipen = 999)
table <- table %>%
as.data.frame %>%
mutate_if(is.numeric, round, digits=2)
head(table)
## Mean Standard Deviation Minimum Maximum Sum
## Anti.Male 0.01 0.08 0 1 5
## Anti.Female 0.02 0.26 0 6 18
## Anti.Transgender 0.14 0.67 0 8 118
## Anti.Gender.Non.Conforming 0.04 0.23 0 3 32
## Anti.Age. 0.04 0.39 0 9 30
## Anti.White 0.36 1.13 0 16 300
library(kableExtra)
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
table %>%
kbl() %>%
kable_styling()
|
|
Mean
|
Standard Deviation
|
Minimum
|
Maximum
|
Sum
|
|
Anti.Male
|
0.01
|
0.08
|
0
|
1
|
5
|
|
Anti.Female
|
0.02
|
0.26
|
0
|
6
|
18
|
|
Anti.Transgender
|
0.14
|
0.67
|
0
|
8
|
118
|
|
Anti.Gender.Non.Conforming
|
0.04
|
0.23
|
0
|
3
|
32
|
|
Anti.Age.
|
0.04
|
0.39
|
0
|
9
|
30
|
|
Anti.White
|
0.36
|
1.13
|
0
|
16
|
300
|
|
Anti.Black
|
1.77
|
2.42
|
0
|
18
|
1451
|
|
Anti.American.Indian.Alaskan.Native
|
0.01
|
0.08
|
0
|
1
|
5
|
|
Anti.Asian
|
0.45
|
3.27
|
0
|
68
|
370
|
|
Anti.Native.Hawaiian.Pacific.Islander
|
0.00
|
0.00
|
0
|
0
|
0
|
|
Anti.Multi.Racial.Groups
|
0.08
|
0.32
|
0
|
4
|
65
|
|
Anti.Other.Race
|
0.00
|
0.00
|
0
|
0
|
0
|
|
Anti.Jewish
|
4.06
|
10.29
|
0
|
90
|
3339
|
|
Anti.Catholic
|
0.21
|
0.88
|
0
|
12
|
172
|
|
Anti.Protestant
|
0.02
|
0.12
|
0
|
1
|
13
|
|
Anti.Islamic..Muslim.
|
0.38
|
1.09
|
0
|
10
|
314
|
|
Anti.Multi.Religious.Groups
|
0.05
|
0.43
|
0
|
10
|
45
|
|
Anti.Atheism.Agnosticism
|
0.00
|
0.00
|
0
|
0
|
0
|
|
Anti.Religious.Practice.Generally
|
0.01
|
0.11
|
0
|
2
|
8
|
|
Anti.Other.Religion
|
0.07
|
0.34
|
0
|
4
|
58
|
|
Anti.Buddhist
|
0.00
|
0.06
|
0
|
1
|
3
|
|
Anti.Eastern.Orthodox..Greek..Russian..etc..
|
0.00
|
0.06
|
0
|
1
|
3
|
|
Anti.Hindu
|
0.01
|
0.13
|
0
|
3
|
9
|
|
Anti.Jehovahs.Witness
|
0.00
|
0.06
|
0
|
1
|
3
|
|
Anti.Mormon
|
0.00
|
0.03
|
0
|
1
|
1
|
|
Anti.Other.Christian
|
0.02
|
0.23
|
0
|
4
|
20
|
|
Anti.Sikh
|
0.01
|
0.12
|
0
|
3
|
5
|
|
Anti.Hispanic
|
0.32
|
1.04
|
0
|
17
|
259
|
|
Anti.Arab
|
0.08
|
0.37
|
0
|
4
|
67
|
|
Anti.Other.Ethnicity.National.Origin
|
0.31
|
1.27
|
0
|
21
|
253
|
|
Anti.Non.Hispanic.
|
0.00
|
0.00
|
0
|
0
|
0
|
|
Anti.Gay..Male.and.Female.
|
0.11
|
0.43
|
0
|
6
|
90
|
|
Anti.Heterosexual
|
0.00
|
0.03
|
0
|
1
|
1
|
|
Anti.Bisexual
|
0.00
|
0.09
|
0
|
2
|
4
|
|
Anti.Physical.Disability
|
0.01
|
0.11
|
0
|
1
|
10
|
|
Anti.Mental.Disability
|
0.01
|
0.08
|
0
|
1
|
5
|
table %>%
kbl() %>%
kable_classic_2("striped", full_width = F)
|
|
Mean
|
Standard Deviation
|
Minimum
|
Maximum
|
Sum
|
|
Anti.Male
|
0.01
|
0.08
|
0
|
1
|
5
|
|
Anti.Female
|
0.02
|
0.26
|
0
|
6
|
18
|
|
Anti.Transgender
|
0.14
|
0.67
|
0
|
8
|
118
|
|
Anti.Gender.Non.Conforming
|
0.04
|
0.23
|
0
|
3
|
32
|
|
Anti.Age.
|
0.04
|
0.39
|
0
|
9
|
30
|
|
Anti.White
|
0.36
|
1.13
|
0
|
16
|
300
|
|
Anti.Black
|
1.77
|
2.42
|
0
|
18
|
1451
|
|
Anti.American.Indian.Alaskan.Native
|
0.01
|
0.08
|
0
|
1
|
5
|
|
Anti.Asian
|
0.45
|
3.27
|
0
|
68
|
370
|
|
Anti.Native.Hawaiian.Pacific.Islander
|
0.00
|
0.00
|
0
|
0
|
0
|
|
Anti.Multi.Racial.Groups
|
0.08
|
0.32
|
0
|
4
|
65
|
|
Anti.Other.Race
|
0.00
|
0.00
|
0
|
0
|
0
|
|
Anti.Jewish
|
4.06
|
10.29
|
0
|
90
|
3339
|
|
Anti.Catholic
|
0.21
|
0.88
|
0
|
12
|
172
|
|
Anti.Protestant
|
0.02
|
0.12
|
0
|
1
|
13
|
|
Anti.Islamic..Muslim.
|
0.38
|
1.09
|
0
|
10
|
314
|
|
Anti.Multi.Religious.Groups
|
0.05
|
0.43
|
0
|
10
|
45
|
|
Anti.Atheism.Agnosticism
|
0.00
|
0.00
|
0
|
0
|
0
|
|
Anti.Religious.Practice.Generally
|
0.01
|
0.11
|
0
|
2
|
8
|
|
Anti.Other.Religion
|
0.07
|
0.34
|
0
|
4
|
58
|
|
Anti.Buddhist
|
0.00
|
0.06
|
0
|
1
|
3
|
|
Anti.Eastern.Orthodox..Greek..Russian..etc..
|
0.00
|
0.06
|
0
|
1
|
3
|
|
Anti.Hindu
|
0.01
|
0.13
|
0
|
3
|
9
|
|
Anti.Jehovahs.Witness
|
0.00
|
0.06
|
0
|
1
|
3
|
|
Anti.Mormon
|
0.00
|
0.03
|
0
|
1
|
1
|
|
Anti.Other.Christian
|
0.02
|
0.23
|
0
|
4
|
20
|
|
Anti.Sikh
|
0.01
|
0.12
|
0
|
3
|
5
|
|
Anti.Hispanic
|
0.32
|
1.04
|
0
|
17
|
259
|
|
Anti.Arab
|
0.08
|
0.37
|
0
|
4
|
67
|
|
Anti.Other.Ethnicity.National.Origin
|
0.31
|
1.27
|
0
|
21
|
253
|
|
Anti.Non.Hispanic.
|
0.00
|
0.00
|
0
|
0
|
0
|
|
Anti.Gay..Male.and.Female.
|
0.11
|
0.43
|
0
|
6
|
90
|
|
Anti.Heterosexual
|
0.00
|
0.03
|
0
|
1
|
1
|
|
Anti.Bisexual
|
0.00
|
0.09
|
0
|
2
|
4
|
|
Anti.Physical.Disability
|
0.01
|
0.11
|
0
|
1
|
10
|
|
Anti.Mental.Disability
|
0.01
|
0.08
|
0
|
1
|
5
|
table %>%
kbl(caption = "<center><strong>Figure 1: Hate Crime Data in NYS</strong></center>",
format = "html") %>%
kable_classic_2("striped", full_width = F) %>%
row_spec(c(3,13), bold = T, color = "white", background = "cornflowerblue")
Figure 1: Hate Crime Data in NYS
|
|
Mean
|
Standard Deviation
|
Minimum
|
Maximum
|
Sum
|
|
Anti.Male
|
0.01
|
0.08
|
0
|
1
|
5
|
|
Anti.Female
|
0.02
|
0.26
|
0
|
6
|
18
|
|
Anti.Transgender
|
0.14
|
0.67
|
0
|
8
|
118
|
|
Anti.Gender.Non.Conforming
|
0.04
|
0.23
|
0
|
3
|
32
|
|
Anti.Age.
|
0.04
|
0.39
|
0
|
9
|
30
|
|
Anti.White
|
0.36
|
1.13
|
0
|
16
|
300
|
|
Anti.Black
|
1.77
|
2.42
|
0
|
18
|
1451
|
|
Anti.American.Indian.Alaskan.Native
|
0.01
|
0.08
|
0
|
1
|
5
|
|
Anti.Asian
|
0.45
|
3.27
|
0
|
68
|
370
|
|
Anti.Native.Hawaiian.Pacific.Islander
|
0.00
|
0.00
|
0
|
0
|
0
|
|
Anti.Multi.Racial.Groups
|
0.08
|
0.32
|
0
|
4
|
65
|
|
Anti.Other.Race
|
0.00
|
0.00
|
0
|
0
|
0
|
|
Anti.Jewish
|
4.06
|
10.29
|
0
|
90
|
3339
|
|
Anti.Catholic
|
0.21
|
0.88
|
0
|
12
|
172
|
|
Anti.Protestant
|
0.02
|
0.12
|
0
|
1
|
13
|
|
Anti.Islamic..Muslim.
|
0.38
|
1.09
|
0
|
10
|
314
|
|
Anti.Multi.Religious.Groups
|
0.05
|
0.43
|
0
|
10
|
45
|
|
Anti.Atheism.Agnosticism
|
0.00
|
0.00
|
0
|
0
|
0
|
|
Anti.Religious.Practice.Generally
|
0.01
|
0.11
|
0
|
2
|
8
|
|
Anti.Other.Religion
|
0.07
|
0.34
|
0
|
4
|
58
|
|
Anti.Buddhist
|
0.00
|
0.06
|
0
|
1
|
3
|
|
Anti.Eastern.Orthodox..Greek..Russian..etc..
|
0.00
|
0.06
|
0
|
1
|
3
|
|
Anti.Hindu
|
0.01
|
0.13
|
0
|
3
|
9
|
|
Anti.Jehovahs.Witness
|
0.00
|
0.06
|
0
|
1
|
3
|
|
Anti.Mormon
|
0.00
|
0.03
|
0
|
1
|
1
|
|
Anti.Other.Christian
|
0.02
|
0.23
|
0
|
4
|
20
|
|
Anti.Sikh
|
0.01
|
0.12
|
0
|
3
|
5
|
|
Anti.Hispanic
|
0.32
|
1.04
|
0
|
17
|
259
|
|
Anti.Arab
|
0.08
|
0.37
|
0
|
4
|
67
|
|
Anti.Other.Ethnicity.National.Origin
|
0.31
|
1.27
|
0
|
21
|
253
|
|
Anti.Non.Hispanic.
|
0.00
|
0.00
|
0
|
0
|
0
|
|
Anti.Gay..Male.and.Female.
|
0.11
|
0.43
|
0
|
6
|
90
|
|
Anti.Heterosexual
|
0.00
|
0.03
|
0
|
1
|
1
|
|
Anti.Bisexual
|
0.00
|
0.09
|
0
|
2
|
4
|
|
Anti.Physical.Disability
|
0.01
|
0.11
|
0
|
1
|
10
|
|
Anti.Mental.Disability
|
0.01
|
0.08
|
0
|
1
|
5
|
To view the upticks in crimes over time in certain groups, we
created line graphs of the total reported crimes each year against
Jewish and transgender individuals. These two groups were chosen for
analysis as anti-Jewish crimes were the most reported and
anti-transgender crimes had one of the least reportings. Taking into
consideration their history with police, analyzing anti-transgender
crime reportings seemed essential in answering what barriers are keeping
certain groups from reporting. These graphs tell us when reports were at
their highest and lowest, helping us create a clearer picture of what
was going on at the time.
library(ggplot2)
library(ggthemes)
anti_jewish_years <- data %>%
group_by(Year) %>%
summarise(sum_anti.jewish = sum(Anti.Jewish, na.rm = T)) %>%
ggplot(aes(x=Year, y=sum_anti.jewish)) +
geom_line(show.legend = FALSE, color = "blue") +
geom_point(color = "black") +
labs(y = "Reported Hate Crimes", x = "Year",
title = "Reported Anti-Jewish Hate Crimes Since 2010") +
theme(plot.title = element_text(hjust = 0.5),
legend.position="none")+
theme_grey()
anti_jewish_years

Reported anti-Jewish based hate crimes showed an increase over the
12 year period. However, there were large increases from 2011 to 2012,
2018 to 2019, 2020 to 2022. Large decreases in reported crimes would
follow after 2012 and 2019. Fluctuations would happen from year to year
otherwise. The largest amount of reported anti-Jewish Crimes was in
2022, the lowest was 2020. It should be noted that this data includes
all of New York State. This might mean outliers in other counties might
be overwhelmed by the larger population of New York City.
anti_transgender_years <- data %>%
group_by(Year) %>%
summarise(sum_anti.transgender = sum(Anti.Transgender, na.rm = T)) %>%
ggplot(aes(x=Year, y=sum_anti.transgender)) +
geom_line(show.legend = FALSE, color = "blue") +
geom_point(color = "black") +
labs(y = "Reported Hate Crimes", x = "Year",
title = "Reported Anti-Transgender Hate Crimes Since 2010") +
theme(plot.title = element_text(hjust = 0.5),
legend.position="none")+
theme_grey()
anti_transgender_years

There is a large difference in the amount of crimes that were
committed in New York State over a 12 year period. Although almost zero
or zero anti-transgender hate crimes were reported from 2010 to 2016,
there was a large increase in reported anti-Trangender hate crimes in
2017. Important note is that anti-Trangender Hate Crimes were reported
at lower rates across New York City than other hate crimes, which means
anti-transgender data might be more volatile because of low sample data.
From there, hate crime counts by year fluctuated and had another large
increase into 2021.
This bar graph demonstrates the uptick in anti-asian crimes over 12
years.
anti_asian_years <- data %>%
group_by(Year) %>%
summarise(mean_anti.asian = mean(Anti.Asian, na.rm = T)) %>%
ggplot(aes(x=Year, y=mean_anti.asian)) +
geom_line(show.legend = FALSE, color = "blue") +
geom_point(color = "black") +
labs(y = "Mean Reported Hate Crimes", x = "Year",
title = "Reported Anti-Asian Hate Crimes Since 2010") +
theme(plot.title = element_text(hjust = 0.5),
legend.position="none")+
theme_grey()
anti_asian_years

This graph shows low reporting of anti-Asian crimes until 2019 to
where crime escalated rapidly. This could be due to world events
happening at this time.
We created bar graphs to understand what types of crimes were most
prevalent in these two communities.
ggplot(data, aes(x=Crime.Type, y=Anti.Jewish)) +
geom_bar(stat="identity", color = "darkmagenta", fill = "darkmagenta") +
labs(y = "Reported Anti-Jewish Crimes", x = "Crime Type",
title = "Types of Hate Crimes Against Jewish New Yorkers") +
theme_grey()

Anti-Jewish Crimes against Persons is much less in all 12 years than
Property based crimes (over 1000 reported crime count difference).
ggplot(data, aes(x=Crime.Type, y=Anti.Transgender)) +
geom_bar(stat="identity", color = "darkmagenta", fill = "darkmagenta") +
labs(y = "Reported Anti-Transgender Crimes", x = "Crime Type",
title = "Types of Hate Crimes Against Transgender New Yorkers") +
theme_grey()

This shows the amount of Crime Against Persons against Property
Crimes in a bar graph. Crimes Against Persons was higher than Property
Crimes. This difference when compared to the overall crime types, where
data was pulled from all reported Hate Crimes, did not have Crimes
against Persons at a higher count than Property Crimes.
To get a baseline of the overall trends of hate crimes since 2010,
we created a line graph of all reported hate crimes from 2010 to
2022.
crime_years <- data %>%
group_by(Year) %>%
summarise(mean_crime = sum(Total.Incidents, na.rm = T)) %>%
ggplot(aes(x=Year, y=mean_crime)) +
geom_line(show.legend = FALSE, color = "blue") +
geom_point(color = "black") +
labs(y = "Reported Hate Crimes", x = "Year",
title = "Reported Hate Crimes Since 2010") +
theme(plot.title = element_text(hjust = 0.5),
legend.position="none")+
theme_grey()
crime_years

Across all the data reports reached their lowest in 2020, and
skyrocketed to reach their highest reports in 2022. Due to the large
amount of anti-Jewish crimes, it can be inferred that these reports have
a great influence on the overall trends over the years.
This is a bar graph showing which type of crimes were most prevalent
over the years
ggplot(data, aes(x=Crime.Type, y=Total.Incidents)) +
geom_bar(stat="identity", color = "darkmagenta", fill = "darkmagenta") +
labs(y = "Reported Hate Crimes", x = "Crime Type",
title = "Types of Hate Crimes Committed Since 2010") +
theme_grey()
