Mini5

Kaiyu Zhou

2024-10-18

Library packages

Read data file

fatal_encounters <- read.csv("Fatal_encounters.csv")

head(fatal_encounters)
##   Unique.ID                    Name Age Gender                    Race
## 1     31495        Ashley McClendon  28 Female  African-American/Black
## 2     31496 Name withheld by police     Female        Race unspecified
## 3     31497 Name withheld by police       Male        Race unspecified
## 4     31491    Johnny C. Martin Jr.  36   Male        Race unspecified
## 5     31492           Dennis McHugh  44   Male European-American/White
## 6     31493      Ny'Darius McKinney  21   Male        Race unspecified
##    Race.with.imputations Imputation.probability
## 1 African-American/Black            Not imputed
## 2                   <NA>                   <NA>
## 3                   <NA>                   <NA>
## 4                   <NA>                   <NA>
## 5                   <NA>                   <NA>
## 6                   <NA>                   <NA>
##                                                URL.of.image..PLS.NO.HOTLINKS.
## 1 https://fatalencounters.org/wp-content/uploads/2022/01/Ashley-McClendon.jpg
## 2                                                                            
## 3                                                                            
## 4                                                                            
## 5                                                                            
## 6                                                                            
##   Date.of.injury.resulting.in.death..month.day.year.
## 1                                         12/31/2021
## 2                                         12/31/2021
## 3                                         12/31/2021
## 4                                         12/30/2021
## 5                                         12/30/2021
## 6                                         12/30/2021
##       Location.of.injury..address. Location.of.death..city. State
## 1 South Pearl Street and Tory Road                 Pageland    SC
## 2                 1500 21st Street                 Meridian    MS
## 3                 1500 21st Street                 Meridian    MS
## 4                    Martinez Lane                 Nicholls    GA
## 5                 435 E 4th Street                 Beaumont    CA
## 6    State Rd S-29-296 & Bethel Rd                Lancaster    SC
##   Location.of.death..zip.code. Location.of.death..county.
## 1                        29728               Chesterfield
## 2                        39301                 Lauderdale
## 3                        39301                 Lauderdale
## 4                        31554                     Coffee
## 5                        92223                  Riverside
## 6                        29720                  Lancaster
##                                                      Full.Address   Latitude
## 1 South Pearl Street and Tory Road Pageland SC 29728 Chesterfield 34.7452955
## 2                   1500 21st Street Meridian MS 39301 Lauderdale 32.3793294
## 3                   1500 21st Street Meridian MS 39301 Lauderdale 32.3793294
## 4                          Martinez Lane Nicholls GA 31554 Coffee 31.5307934
## 5                    400 E 4th Street Beaumont CA 92223 Riverside 33.9261462
## 6      State Rd S-29-296 & Bethel Rd Lancaster SC 29720 Lancaster 34.6608217
##    Longitude
## 1  -80.39306
## 2  -88.69397
## 3  -88.69397
## 4  -82.63782
## 5 -116.97715
## 6  -80.83714
##                                                                    Agency.or.agencies.involved
## 1                                                                   Pageland Police Department
## 2                                                                   Meridian Police Department
## 3                                                                   Meridian Police Department
## 4                                                               Coffee County Sheriff's Office
## 5 Riverside County Sheriff's Department, Beaumont Police Department, Banning Police Department
## 6                                                      South Carolina Law Enforcement Division
##   Highest.level.of.force UID.Temporary Name.Temporary Armed.Unarmed
## 1                Vehicle            NA                             
## 2                Gunshot            NA                             
## 3                Gunshot            NA                             
## 4                Gunshot            NA                             
## 5                Gunshot            NA                             
## 6                Vehicle            NA                             
##   Alleged.weapon Aggressive.physical.movement Fleeing.Not.fleeing
## 1                                                                
## 2                                                                
## 3                                                                
## 4                                                                
## 5                                                                
## 6                                                                
##   Description.Temp URL.Temp
## 1                          
## 2                          
## 3                          
## 4                          
## 5                          
## 6                          
##                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Brief.description
## 1                                                                                                                         Ashley McClendon's boyfriend, 33-year-old Marcus Allen Davis, allegedly was driving a 1996 Ford Coupe back to Pageland when an officer reportedly saw the car run a stop sign before midnight on Dec. 31. A traffic stop was attempted, but Davis refused to stop. As the car fled down South Pearl Street near Tory Road it left the road and struck a tree, killing passenger McClendon.
## 2                                                                                                                                                                                                                                                                          Police responded to a man causing a disturbance who was covered in blood. The man had a gun in each hand at a home. Once officers arrived, they were met with gunfire. Officers responded back with gunfire. A man and woman were killed.
## 3                                                                                                                                                                                                                                                                          Police responded to a man causing a disturbance who was covered in blood. The man had a gun in each hand at a home. Once officers arrived, they were met with gunfire. Officers responded back with gunfire. A man and woman were killed.
## 4                                                                   Johnny C. Martin, Jr. arrived at a gas station at 7:10 p.m. While at the gas station, Martin allegedly carjacked a woman, shooting at her while stealing her car. The Ware County Sheriff's Office and the Georgia State Patrol found the stolen car driven by Martin and pursued. Martin eventually went off the road into a field. When officers approached the car, they found Martin with a fatal gunshot to the head and a gun in his hand.
## 5 Deputies responded to a domestic violence call. When deputies arrived, the man was gone. The man reportedly had a felony warrant for a violation of an assault with a deadly weapon, domestic violence, kidnapping, vandalism, and a domestic violence restraining order violation. Deputies learned the suspect was in the city of Beaumont. A helicopter found the suspect's car. When officers located the man, he tried to flee by ramming his car into other cars. An officer and deputy shot and killed him.
## 6                                                                                                                                                                       About 5:35 p.m., Joseph Jemar Hinson was allegedly driving a car when police tried to pull him over, and he fled. Police pursued him until he ran off the left side of the roadway, struck a fence and wrecked, killing back seat passenger Ny'Darius McKinney. Hinson was charged with failure to stop for a blue light resulting in death.
##   Dispositions.Exclusions.INTERNAL.USE..NOT.FOR.ANALYSIS
## 1                                               Criminal
## 2                                  Pending investigation
## 3                                  Pending investigation
## 4                                                Suicide
## 5                                  Pending investigation
## 6                                               Criminal
##   Intended.use.of.force..Developing.
## 1                            Pursuit
## 2                       Deadly force
## 3                       Deadly force
## 4                            Suicide
## 5                       Deadly force
## 6                            Pursuit
##                                                                                            Supporting.document.link
## 1 https://www.wsoctv.com/news/1-person-dead-after-attempting-escape-police-troopers-say/QXA244QPUZGJ5GAGRADGDWBAEU/
## 2                                                        https://www.wtok.com/2022/01/01/officer-involved-shooting/
## 3                                                        https://www.wtok.com/2022/01/01/officer-involved-shooting/
## 4   https://gbi.georgia.gov/press-releases/2021-12-31/gbi-perry-and-douglas-offices-investigating-related-shootings
## 5                                   https://kesq.com/news/2021/12/31/officer-involved-shooting-unfolds-in-beaumont/
## 6                   https://www.thelancasternews.com/content/21-year-old-man-killed-when-car-fleeing-police-crashes
##    X X.1 Unique.ID.formula Unique.identifier..redundant.
## 1 NA  NA                NA                         31495
## 2 NA  NA                NA                         31496
## 3 NA  NA                NA                         31497
## 4 NA  NA                NA                         31491
## 5 NA  NA                NA                         31492
## 6 NA  NA                NA                         31493

Check data

fe <-
  fatal_encounters %>%
  filter(!is.na(Unique.ID))
fe %>% 
  map_dbl(., function(x) sum(is.na(x)))
##                                              Unique.ID 
##                                                      0 
##                                                   Name 
##                                                      0 
##                                                    Age 
##                                                      0 
##                                                 Gender 
##                                                      0 
##                                                   Race 
##                                                      0 
##                                  Race.with.imputations 
##                                                    862 
##                                 Imputation.probability 
##                                                    881 
##                         URL.of.image..PLS.NO.HOTLINKS. 
##                                                      0 
##     Date.of.injury.resulting.in.death..month.day.year. 
##                                                      0 
##                           Location.of.injury..address. 
##                                                      0 
##                               Location.of.death..city. 
##                                                      0 
##                                                  State 
##                                                      0 
##                           Location.of.death..zip.code. 
##                                                    181 
##                             Location.of.death..county. 
##                                                      0 
##                                           Full.Address 
##                                                      0 
##                                               Latitude 
##                                                      0 
##                                              Longitude 
##                                                      0 
##                            Agency.or.agencies.involved 
##                                                      0 
##                                 Highest.level.of.force 
##                                                      0 
##                                          UID.Temporary 
##                                                  25968 
##                                         Name.Temporary 
##                                                      0 
##                                          Armed.Unarmed 
##                                                      0 
##                                         Alleged.weapon 
##                                                      0 
##                           Aggressive.physical.movement 
##                                                      0 
##                                    Fleeing.Not.fleeing 
##                                                      0 
##                                       Description.Temp 
##                                                      0 
##                                               URL.Temp 
##                                                      0 
##                                      Brief.description 
##                                                      0 
## Dispositions.Exclusions.INTERNAL.USE..NOT.FOR.ANALYSIS 
##                                                      0 
##                     Intended.use.of.force..Developing. 
##                                                      0 
##                               Supporting.document.link 
##                                                      0 
##                                                      X 
##                                                  31497 
##                                                    X.1 
##                                                  31496 
##                                      Unique.ID.formula 
##                                                  31496 
##                          Unique.identifier..redundant. 
##                                                      0

Format and Drop NA in coordinates

exclude <- c("UID.Temporary","X", "X.1","Unique.ID.formula","Unique.identifier..redundant.")
fe <-  fe[, !names(fe) %in% exclude]


fe$Latitude <- as.numeric(fe$Latitude)
## Warning: NAs introduced by coercion
fe$Longitude <- as.numeric(fe$Longitude)

fe <- fe[!is.na(fe$Latitude) & !is.na(fe$Longitude), ]

Data to sf

fe_sf <- st_as_sf(fe,coords = c("Longitude", "Latitude"), crs = 4326)

Age Distribution of Individuals Involved in Police Fatal Encounters

The majority of individuals are concentrated between the ages of 20 and 40, with a peak around the late 20s. This suggests that young adults are the most common age group involved in these incidents. The frequency of encounters drops significantly for those under 20 and above 50, indicating that such incidents are less common among the youngest and oldest populations.

fe_sf$Age <- as.numeric(fe_sf$Age)
## Warning: NAs introduced by coercion
ggplot(fe_sf, aes(x = Age)) +
  geom_histogram(binwidth = 5, fill = "steelblue", color = "white", alpha = 0.7) +
  theme_minimal() +
  labs(title = "Age Distribution of Individuals",
       x = "Age",
       y = "Count")
## Warning: Removed 1222 rows containing non-finite outside the scale range
## (`stat_bin()`).

ggplot(fe_sf, aes(y = Age)) +
  geom_boxplot(fill = "steelblue", alpha = 0.7) +
  theme_minimal() +
  labs(title = "Box Plot of Age Distribution",
       x = "Age",
       y = "Density")
## Warning: Removed 1222 rows containing non-finite outside the scale range
## (`stat_boxplot()`).

Age by gender

fe_sf$Gender <- as.factor(fe_sf$Gender)


selected_data <- fe_sf %>%
  filter(!is.na(Age) & !is.na(Gender))


ggplot(selected_data, aes(x = Gender, y = Age, fill = Gender)) +
  geom_boxplot(alpha = 0.7) +
  theme_minimal() +
  labs(title = "Age Distribution by Gender",
       x = "Gender",
       y = "Age") +
  theme(legend.position = "none")

The median age (middle line within each box) is similar across Female and Male groups, hovering around the mid-30s. This suggests that most fatal encounters involve individuals in this age range, regardless of gender

Age Distribution by Race

fe_sf$Race <- as.factor(fe_sf$Race)
selected_data <- fe_sf %>%
  filter(!is.na(Age) & !is.na(Race)) %>%
  mutate(
    Race_Simplified = case_when(
      grepl("White", Race, ignore.case = TRUE) ~ "White",
      Race == "Race unspecified" ~ "Unspecified",
      TRUE ~ "Non-White"
    ),
    Race_Simplified = factor(Race_Simplified, levels = c("White", "Non-White", "Unspecified"))
  )

# Box plot of age distribution by simplified race classification
ggplot(selected_data, aes(x = Race_Simplified, y = Age, fill = Race_Simplified)) +
  geom_boxplot(alpha = 0.7) +
  theme_minimal() +
  labs(
    title = "Age Distribution by Race (White/non-white)",
    x = "Race ",
    y = "Age"
  ) +
  theme(
    axis.text.x = element_text(angle = 0),
    legend.position = "none"
  )

The box plot comparing age distributions among “White,” “Non-White,” and “Unspecified” groups reveals that “White” individuals tend to have a slightly older median age compared to “Non-White” individuals. The “Non-White” group shows a wider range of ages, including more younger individuals.

Density of Age by Race

# Overlayed histogram with density curves
ggplot(selected_data, aes(x = Age, fill = Race_Simplified)) +
  geom_density(aes(color = Race_Simplified), size = 1, alpha = 0.5) +
  theme_minimal() +
  labs(
    title = "Age Distribution by Race  with Density Curves",
    x = "Age",
    y = "Density",
    fill = "Race ",
    color = "Race "
  )
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

The density plot of age distribution provides a smoothed view of the age differences across racial groups. It shows that the “Non-White” group has a sharper peak, indicating a higher concentration of younger individuals in police encounters, while the “White” group’s peak is more spread out, suggesting a broader range of ages. The “Unspecified” category overlaps both but tends to include a wider range of ages, likely due to data gaps in precise age reporting.

Monthly Distribution of Fatal Encounters

# Extract the month from the Date column
fe_sf$Month <- format(fe_sf$Date, "%B")
fe_sf$Month <- factor(fe_sf$Month, levels = month.name)


# Bar plot of incidents by month
ggplot(fe_sf, aes(x = Month, fill = Race_Simplified)) +
  geom_bar(position = "dodge", alpha = 0.7) +
  theme_minimal() +
  labs(
    title = "Number of Fatal Encounters by Month",
    x = "Month",
    y = "Number of Incidents",
    fill = "Race"
  ) +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1)
  )

The bar plot of incidents by month, categorized by race, shows relatively consistent monthly counts throughout the year.

ggplot(fe_sf, aes(x = Month)) +
  geom_bar(position = "dodge", alpha = 0.7, fill = "steelblue") +
  theme_minimal() +
  labs(
    title = "Number of Fatal Encounters by Month",
    x = "Month",
    y = "Number of Incidents",
    fill = "Race"
  ) +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1)
  )

State count Map

atl_sf <- fe_sf %>% 
  filter(Location.of.death..city. == "Atlanta")

tmap_mode("view")
## tmap mode set to interactive viewing
tm_shape(atl_sf) +
  tm_dots(col = "Race_Simplified", size = 0.03, palette = c("White" = "blue", "Non-White" = "green", "Unspecified" = "gray")) +
  tm_layout(
    title = "Fatal Encounters by Race",
    legend.outside = TRUE
  )

The points are densely clustered in certain urban areas of Atlanta, suggesting that fatal encounters tend to occur more frequently in populated or central parts of the city, and distribute to roads and highway.