This study explores the effects of race/ethnicity on rent burden, eviction rates, and infant mortality across Connecticut towns. The research study will utilize the R programming language to analyze data on eviction rates, rent affordability, and race/ethnicity. Through spatial analysis, the study will analyze the spatial distribution of these variables and compare them visually. The goal is to identify patterns or trends that may emerge from the variables, thereby gaining an understanding variables. The results of this research show Connecticut Cities have common traits urban areas are more likely to have a higher percent of black residence and a higher rate of evictions and infant mortality.
Eviction and affordable housing are complex issues that have significant consequences for communities across the United States. To understand the challenges that many Americans face in obtaining stable and affordable housing, it is important to examine the socio-economic and legal factors that influence eviction practices and rent affordability.
Rural areas in South and North Carolina have seen a surge in eviction rates. This highlights the vulnerability of rural renters in terms of housing instability. In South Carolina, for example, almost 18% of rural residents face eviction annually due to limited tenant protections and inexpensive eviction filing fees. This is in contrast to urban areas where eviction rates are usually higher.
The impact of eviction is felt disproportionately by Black communities. According to data from the Eviction Lab, Black-majority neighborhoods in 131 metropolitan areas experienced higher rates of eviction filings and actual evictions. This underscores the racial disparities inherent in the housing and eviction crises, emphasizing the need for interventions to address these inequities.
After the expiration of eviction moratorium in Connecticut, eviction filings have approached pre-pandemic levels, with significant monthly increases observed. For example, Hartford saw an increase in eviction filings in December 2021 compared to December 2019. This trend suggests that eviction rates may continue to rise. It is worth noting that there is a significant disparity in legal representation, with landlords being over 11 times more likely to have legal representation than renters. This disparity is even greater among Black and Hispanic/Latino renters. The data also reveal that eviction cases disproportionately affect these minority groups (CTData, ND).
According to research conducted by Ramphal in 2023, young children exposed to evictions are more likely to experience negative effects on their neurodevelopment and overall health. Another study has found a correlation between housing insecurities and low birth weight, preterm birth, admission to the NICU or a step down facility, as well as extended hospitalizations after birth (Leifheit 2022). The research question: How does the spatial relationship between rent burden and infant mortality vary when factoring in race and ethnicity?
For this research question, 3 different datasets: Evictions, American Community Survey 5-year Estimates and Infant Mortality variables will be combined into a single dataset. Table 1 goes into further detail. Combining these different datasets will allow further spatial analysis.
library(kableExtra)
# Creating a data frame
data_description <- data.frame(
Data = c("[Connecticut Weekly Evictions by Census Tract](https://data.ct.gov/Housing-and-Development/Connecticut-Weekly-Evictions-by-Census-Tract/j5dt-tcp7/about_data)",
"[American Community Survey 5-year estimates](http://data.census.gov/)",
"[Infant Mortality Rate, CT DPH](https://portal.ct.gov/DPH/Health-Information-Systems--Reporting/Hisrhome/Vital-Statistics-Registration-Reports)"),
Description = c("Weekly evictions data from Eviction Lab, aggregated to town level from census tract data.",
"Data on demographic and housing characteristics from U.S. Census Bureau.",
"2021 Provisional report tables from Connecticut Department of Public Health."),
Geography = c("City and Town", "City and Town", "City and Town"),
stringsAsFactors = FALSE # Set to FALSE to avoid converting strings to factors
)
# Use kable from knitr and kable_styling from kableExtra
data_description %>%
kable("html", table.attr = "style='width:100%; border: 1px solid black; border-collapse: collapse;'",
caption="Table 1: Data Sources: The data for this project will be used from multiple sources and then aggragated together.") %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
| Data | Description | Geography |
|---|---|---|
| Connecticut Weekly Evictions by Census Tract | Weekly evictions data from Eviction Lab, aggregated to town level from census tract data. | City and Town |
| American Community Survey 5-year estimates | Data on demographic and housing characteristics from U.S. Census Bureau. | City and Town |
| Infant Mortality Rate, CT DPH | 2021 Provisional report tables from Connecticut Department of Public Health. | City and Town |
The eviction data used is reported by the Eviction Lab at Princeton University and updated weekly. This data set provides the total number of evictions filled each day and is reported by census tract. For this project this data will be aggregated to towns using 2021 evictions. This dataset is only evictions that have been filled with the court.
The American Community Survey 2021 5-Year Estimates will be use the following parameters: Gross rent as a percentage of household income, Percent Population Race: white, Percent Population Race: Black, and Percent Population: Hispanic.
To determine the infant mortality rate, the 2021 provisional data available from the Connecticut Department of Public Health will be used. It’s important to note that this dataset is considered “provisional”, meaning that it has certain limitations in terms of its application.
The aim of this study is to explore the spatial relationship among the variables. Choropleth and Local Indicators of Spatial Association(LISA) maps will be created for each variable and visually analyzed. Figure 2’s flow chart will serve as a guide, providing a visual representation of the data’s organization and hierarchy. By following this flow chart, key patterns and trends within the data can be identified, providing insights into how they relate to one another. The study has the potential to provide valuable insights into the nature of the data, and help in making informed decisions about how best to analyze and interpret it.
The first step in gathering the data is to start with the census data using Tidycensus. For this to download the American Community Survey 5-year estimate. The next step was to download the Infant Mortality Rate To proceed further, three different datasets are merged into one, which will be used for the rest of the analysis. This unified dataset will be used to map variables; Percent Evictions, Percent Population White, Percent Population Black, Percent Population Hispanic, and Percent Rent Burden.
The eviction data was obtained and downloaded as CSV and then read and filtered to only include 2021 data. This data was aggregated to the town level and joined to the ACS and Infant Mortality dataset, as other data sources refer to Connecticut towns or county subdivisions.
This analysis will use LISA which is Anselin’s Local Moran’s I. This method is used to analyze spatial clustering or dispersion (outliers) within a dataset. It is different from the Global Moran’s I test because it returns values for each record or geographic entity in the dataset. The results are visualized, and the values range from -1 to 1. A positive value of Moran’s I that is closer to 1 shows significant spatial clustering. Conversely, values closer to -1 indicate dispersion, while those closer to zero indicate that the data is random, and there is no spatial autocorrelation or dispersion.
The analysis conducted by LISA reveals the presence of four distinct cluster types, namely High-High (HH), Low-Low (LL), High-Low (HL), and Low-High (LH). These clusters or outliers signify a spatial arrangement of features that possess either high or low attribute values, which are surrounded by neighboring features with similar high or low values or opposite values.
#load the necessary libraries:
library(tidycensus) #used to get the census data
library(dplyr) #used to clean
library(shiny)
library(tidyverse)
library(mapview)
library(ggplot2)
library(lubridate)
library(tigris)
library(RColorBrewer)
library(janitor)
library(sf)
library(tmap)
library(spdep)
# Change the presentation of decimal numbers to 4 and avoid scientific notation
options(prompt="R> ", digits=4, scipen=999)
################################
## Dataset 1 ACS Data ##########
################################
#get the census data:
#Percent Black
#Percent White
#Percent Hispanic
#Rent Burden
#lookup the variable names to get the data useing get_variables
#vars_2022_acs5 <- load_variables(2022, "acs5", cache = TRUE)
# View the first few variables to get a sense of the data
#head(vars_2019_acs5)
#c(percent_high_school = "DP02_0062P"
#Here we will add the values to the parameters for the get_acs call.
geography <- "county subdivision"
variables <- c(Total = "B02001_001",
White = "B02001_002",
Black = "B02001_003")
state <- "CT"
year <- 2021
# Fetch race data from the detailed tables
race_data <- get_acs(geography = "county subdivision",
variables = c(Total = "B02001_001",
White = "B02001_002",
Black = "B02001_003",
Hispanic = "B03002_012"),
year = 2021,
state = "CT",
survey = "acs5",
output = "wide",
show_progress = FALSE,
progress_bar = FALSE
)
#get percent of white, black and hispanic:
race_percentages <- race_data%>%
mutate(PercentWhite = round((WhiteE / TotalE) * 100,2),
PercentBlack = round((BlackE / TotalE) * 100,2),
PercentHispanic = round((HispanicE / TotalE) * 100,2))
#select only the percent columns and the geoid.
#the GEOID will be used to join the table to the rent burden table.
race_percentages <- race_percentages %>%
select(GEOID,PercentWhite, PercentBlack, PercentHispanic)
# Fetch housing characteristic (Rent Burden) separately from the Data Profiles
rent_burden_data <- get_acs(geography = "county subdivision",
variables = c(RentBurden = "DP04_0137PE"), #variable for rent burden (Percent of households with rent >30% of household income)
state = "CT",
year = 2021,
survey = "acs5",
output = "wide",
show_progress = FALSE,
progress_bar = FALSE)
#Join the data together:
acs_merged_data <- merge(race_percentages, rent_burden_data, by = "GEOID")
#################################################
##### Dataset 2 Evictions #######################
#################################################
#Get the evictions data:
eviction_data <- read_csv("/Users/jeff/Downloads/Connecticut_Weekly_Evictions_by_Census_Tract_20240404.csv")
# Convert 'Week date' to Date format
eviction_data$`Week date` <- as.Date(eviction_data$`Week date`, format = "%m/%d/%Y")
# Extract Year from 'Week date'
eviction_data$Year <- year(eviction_data$`Week date`)
# Sum Eviction Filings by GEOID and Year
summary_data <- eviction_data %>%
group_by(GEOID, Year) %>%
summarise(Total_Eviction_Filings = sum(`Eviction filings`, na.rm = TRUE))
#filter for 2021 evictions:
filtered_evictions_2021 <- summary_data %>%
filter(Year==2021)
# Get town boundary without showing a progress bar
towns_data <- county_subdivisions(state = "CT", year = 2021, progress_bar = FALSE)
# Get census tracts in Connecticut without a progress bar
census_tract_CT <- tracts(state = "CT", cb = TRUE, year = 2021, progress_bar = FALSE) %>%
rename(census_tract_fips = GEOID)
# Perform an attribute join without a progress bar
census_tract_town <- st_join(census_tract_CT, towns_data, join = st_intersects)
#join the census town data with the evictions data
evictions_towns <- merge(filtered_evictions_2021, census_tract_town, by.x = "GEOID", by.y = "census_tract_fips")
#summarize to towns
evictions_towns <- evictions_towns %>%
group_by(NAME.y)%>%
summarise(Total_Eviction_Filings=sum(Total_Eviction_Filings))
# Calculating the percentage of evictions per town
total_evictions <- sum(evictions_towns$Total_Eviction_Filings) # Total evictions across all towns
evictions_towns <- evictions_towns %>%
mutate(Percent_Evictions = (Total_Eviction_Filings / total_evictions) * 100)
#Now Merge Evictions with ACS Data
#Remove NA's from the ACS data
acs_merged_data <-na.omit(acs_merged_data)
#join with evictions data:
#this removes town
acs_merged_data <- acs_merged_data %>%
mutate(NAME = gsub("(town)(?!.*town)", "", NAME, perl = TRUE))
acs_merged_data <- acs_merged_data %>%
mutate(NAME = sub(",.*$", "", NAME))
# Trim leading and trailing spaces from NAME in acs_merged_data
acs_merged_data$NAME <- trimws(acs_merged_data$NAME)
# Trim leading and trailing spaces from town in evictions_towns
evictions_towns$town <- trimws(evictions_towns$NAME.y)
# Now, merge the data
acs_evictions <- merge(acs_merged_data, evictions_towns, by.x = "NAME", by.y = "NAME.y") %>%
select(-"NAME") %>% #remove the duplicate town name
clean_names() #Set all the variable names to lower case
############################################
#### Dataset 3: Infant Mortality ###########
############################################
#read the csv file into a dataframe
infant_mortality <- read_csv("infantmortality_2021.csv")
total_mortality<-sum(infant_mortality$deaths) #sum the infant mortality
infant_mortality <- infant_mortality %>%
mutate(percent_mortality = round((deaths / total_mortality) *100,2))%>% #calculate the percent
select(-deaths) #remove the deaths column
# Calculating the percentage of evictions per town
#total_evictions <- sum(evictions_towns$Total_Eviction_Filings) # Total evictions across all towns
#evictions_towns <- evictions_towns %>%
# mutate(Percent_Evictions = (Total_Eviction_Filings / total_evictions) * 100)
#now join this to the main dataset for the project
acs_evictions_infant <-merge(acs_evictions, infant_mortality, by = "town")
acs_evictions_infant <-acs_evictions_infant %>%
clean_names()
#Exploratory Spatial Analysis.
#first get the polygons
options(tigris_use_cache = TRUE) # Optional: This caches the data to avoid re-downloading in future sessions.
subdivisions <- county_subdivisions(state = "CT", class = "sf")%>%
clean_names()
#Here is the final dataset with the spatial data
final_data_set <- full_join(subdivisions, acs_evictions_infant, by = c("name" = "town"))
write_csv(final_data_set, "final_data_set588.csv")
bounds <- st_bbox(final_data_set)
ggplot(data = final_data_set) +
geom_sf(aes(fill = percent_white)) +
scale_fill_gradient(name = "Percent Population", low = "lightgrey", high = "darkblue") +
theme_void() +
labs(title = "Map 1: Percent Population White",
subtitle = "Connecticut Towns",
caption = "Map 1: shows an even distribution of the Percent Population White across most of the state. The exception for this is Connecticut's largest cities.
.") +
theme(plot.title = element_text(
size = 16,
hjust = 0.5),# Center the title
plot.subtitle = element_text(
size = 12,
hjust = 0.5),#Center the subtitle
plot.caption = element_text(
size = 12,
hjust = 0.5),#adjust the position of the caption
plot.margin = margin(1, 1, 1, 1, "cm")) + # Adjust plot margins to make space for the annotation
annotate("text", x = bounds$xmax, y = bounds$ymin, label = "Source: U.S. Census Bureau, ACS 2021 5-year",
hjust = 1, vjust = 0, size = 3, color = "gray")
ggplot(data = final_data_set) +
geom_sf(aes(fill = percent_black)) +
scale_fill_gradient(name = "Percent Population", low = "lightgrey", high = "darkblue") +
theme_void() +
labs(title = "Map 2: Percent Population Black",
subtitle = "Connecticut Towns",
caption = "Map 2 shows the spatial distribution of the Percent Population Black, mostly resides in the cities.\n There is a very low percentage of the black population that is evenly distributed in Connecticut.") +
theme(plot.title = element_text(
size = 16,
hjust = 0.5),# Center the title
plot.subtitle = element_text(
size = 12,
hjust = 0.5),#Center the subtitle
plot.caption = element_text(
size = 12,
hjust = 0.5),#adjust the position of the caption
plot.margin = margin(1, 1, 1, 1, "cm")) + # Adjust plot margins to make space for the annotation
annotate("text", x = bounds$xmax, y = bounds$ymin, label = "Source: U.S. Census Bureau, ACS 2021 5-year",
hjust = 1, vjust = 0, size = 3, color = "gray")
ggplot(data = final_data_set) +
geom_sf(aes(fill = percent_hispanic)) +
scale_fill_gradient(name = "Percent Population", low = "lightgrey", high = "darkblue")+
theme_void() +
labs(title = "Map 3: Percent Population Hispanic",
subtitle = "Connecticut Towns",
caption ="Map 3 shows shows percent popualtion that is Hispanic. Like, Percent Population Black, the higher values are in the city.") +
theme(plot.title = element_text(
size = 16,
hjust = 0.5),# Center the title
plot.subtitle = element_text(
size = 12,
hjust = 0.5),#Center the subtitle
plot.caption = element_text(
size = 12,
hjust = 0.5),#adjust the position of the caption
plot.margin = margin(1, 1, 1, 1, "cm")) + # Adjust plot margins to make space for the annotation
annotate("text", x = bounds$xmax, y = bounds$ymin, label = "Source: U.S. Census Bureau, ACS 2021 5-year",
hjust = 1, vjust = 0, size = 3, color = "gray")
ggplot(data = final_data_set) +
geom_sf(aes(fill = rent_burden)) +
scale_fill_gradient(name = "Percent", low = "lightgrey", high = "darkblue") +
theme_void() +
labs(title = "Map 4: Percent Population: Rent Burden",
subtitle = "Connecticut Towns",
caption="Rent Burden appears widespread over Connecticut's 169 towns. The minimum percent of rent burden is 0. The hightest is almost 70%.") +
theme(plot.title = element_text(
size = 16,
hjust = 0.5),# Center the title
plot.subtitle = element_text(
size = 12,
hjust = 0.5),#Center the subtitle
plot.caption = element_text(
size = 12,
hjust = 0.5),#adjust the position of the caption
plot.margin = margin(1, 1, 1, 1, "cm")) + # Adjust plot margins to make space for the annotation
annotate("text", x = bounds$xmax, y = bounds$ymin, label = "Source: U.S. Census Bureau, ACS 2021 5-year",
hjust = 1, vjust = 0, size = 3, color = "gray")
ggplot(data = final_data_set) +
geom_sf(aes(fill = percent_evictions)) +
scale_fill_gradient(name = "Percent", low = "lightgrey", high = "darkblue"
) +
theme_void() +
labs(title = "Map 5: Percent Evictions by:",
subtitle = "Connecticut Towns",
caption = "Most of the Connecticut Evictions are in Connecticut Largest cities.") +
theme(plot.title = element_text(
size = 16,
hjust = 0.5),# Center the title
plot.subtitle = element_text(
size = 12,
hjust = 0.5),#Center the subtitle
plot.caption = element_text(
size = 12,
hjust = 0.5),#adjust the position of the caption# Center the subtitle
plot.margin = margin(1, 1, 1, 1, "cm")) + # Adjust plot margins
annotate("text", x = bounds$xmax, y = bounds$ymin, label = "Source: Eviction Lab at Princeton University",
hjust = 1, vjust = 0, size = 3, color = "gray")
ggplot(data = final_data_set) +
geom_sf(aes(fill = percent_mortality)) +
scale_fill_gradient(name = "Percent", low = "lightgrey", high = "darkblue"
) +
theme_void() +
labs(title = "Map 6: Percent Infant Mortality by:",
subtitle = "Connecticut Towns",
caption= "Map 6 shows Percent of Infant Mortality is the highest in the cities.") +
theme(plot.title = element_text(
size = 16,
hjust = 0.5),# Center the title
plot.subtitle = element_text(
size = 14,
hjust = 0.5),#Center the subtitle
plot.caption = element_text(
size = 12,
hjust = 0.5),#adjust the position of the caption
plot.margin = margin(1, 1, 1, 1, "cm")) + # Adjust plot margins
annotate("text", x = bounds$xmax, y = bounds$ymin, label = "Source: 2021 Provisional DPH Estimates",
hjust = 1, vjust = 0, size = 3, color = "gray")
#summary statistics:
library(psych)
#filter the data to make it easier to get summary statistics:
all_data_nogeom<-final_data_set %>%
select(geoid.x,
name,
percent_white,
percent_black,
percent_hispanic,
rent_burden,
percent_evictions,
percent_mortality,
-geometry)
all_data_nogeom <- as.data.frame(all_data_nogeom)
all_data_nogeom2<-all_data_nogeom %>%
select(-geoid.x,
-geometry)
library(psych)
library(knitr)
# Assuming 'data' is your dataframe
describe_output <- describe(all_data_nogeom2)
kable(describe_output, format = "html", caption = "Table 2: Descriptive Statistics of Data")
| vars | n | mean | sd | median | trimmed | mad | min | max | range | skew | kurtosis | se | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| name* | 1 | 174 | 84.2701 | 49.3067 | 83.5000 | 83.9714 | 64.4931 | 1.0000 | 170.000 | 169.000 | 0.045 | -1.242 | 3.7379 |
| percent_white | 2 | 169 | 83.9689 | 12.7926 | 88.6000 | 86.3887 | 6.6717 | 27.7700 | 96.990 | 69.220 | -2.073 | 4.656 | 0.9840 |
| percent_black | 3 | 169 | 4.5807 | 7.9862 | 1.8700 | 2.7072 | 2.0905 | 0.0000 | 56.980 | 56.980 | 3.498 | 14.541 | 0.6143 |
| percent_hispanic | 4 | 169 | 8.6530 | 8.7369 | 5.9000 | 6.7182 | 3.5138 | 0.4100 | 45.450 | 45.040 | 2.429 | 5.697 | 0.6721 |
| rent_burden | 5 | 169 | 14.4911 | 9.3360 | 12.3000 | 13.5854 | 6.0787 | 0.0000 | 68.400 | 68.400 | 1.796 | 6.428 | 0.7182 |
| percent_evictions | 6 | 169 | 0.5870 | 0.9389 | 0.3101 | 0.4052 | 0.3006 | 0.0239 | 7.645 | 7.621 | 4.741 | 26.958 | 0.0722 |
| percent_mortality | 7 | 169 | 0.5922 | 1.5281 | 0.0000 | 0.2365 | 0.0000 | 0.0000 | 10.780 | 10.780 | 4.301 | 21.361 | 0.1175 |
Table 2 provides summary statistics across the 6 variables. These statistics reveal varied distributions and levels of variability. For instance, the Percent White variable has a mean close to 84% with a median even higher at 88.6%, showing a distribution that leans slightly towards higher percentages within the white demographic. In contrast, Percent Black and Percent Hispanic have lower means and medians, indicating less prevalence but higher volatility in their distribution across regions, as shown by their higher standard deviations and positive skewness. This skewness is particularly pronounced in the Percent Evictions and Percent Mortality statistics, both of which have extremely high kurtosis, suggesting the presence of significant outliers. These two variables, although they have relatively low means, show a substantial range and extreme values that skew the data, indicating areas with acute issues of evictions and mortality rates. Such statistics not only highlight the diversity in demographic makeup but also underscore distinct socio-economic challenges in different regions, with some facing particularly severe conditions that greatly skew the overall data.
# remove rows with NAs
c_final_data <- final_data_set[complete.cases(
final_data_set$percent_white,
final_data_set$percent_black,
final_data_set$percent_hispanic,
final_data_set$rent_burden,
final_data_set$percent_evictions,
final_data_set$percent_mortality), ]
neighbors <- poly2nb(c_final_data)
weights <- nb2listw(neighbors, style="W", zero.policy=TRUE)
lisa_values <- localmoran(c_final_data$percent_white, weights)
c_final_data$LISA_category <- factor(ifelse(lisa_values[,5] < 0.05,
ifelse(lisa_values[,1] > 0 & c_final_data$percent_white > mean(c_final_data$percent_white), "HH",
ifelse(lisa_values[,1] < 0 & c_final_data$percent_white < mean(c_final_data$percent_white), "LL",
ifelse(lisa_values[,1] > 0, "HL", "LH"))), "Not Significant"),
levels = c("HH", "HL", "LL", "LH", "Not Significant"))
# Create the map
white_map <- tm_shape(c_final_data) +
tm_polygons("LISA_category", palette=c("red", "blue", "lightblue", "pink", "grey"),
title="LISA Categories", subtitle="Connecticut Cities and Towns") +
tm_layout(main.title="LISA Map 1 of Percent Population White",
main.title.position = c("CENTER", "TOP"),
main.title.fontface = "bold",
frame = FALSE,
legend.position = c("right", "bottom")) +
tm_credits("Source: U.S. Census Bureau 2022 American Community Survey 5-Year Estimate") # Correct placement of credits
# Print the map
white_map
LISA Map 1 shows significant low values of percent population white
population the northern part of the state where the towns are blue
represents low values of Percent Population White are sorrounded by high
Percent Population White. Where as the pink color or LH represents high
values sourrounded by low values.
lisa_values <- localmoran(c_final_data$percent_black, weights)
c_final_data$LISA_category <- factor(ifelse(lisa_values[,5] < 0.05,
ifelse(lisa_values[,1] > 0 & c_final_data$percent_black > mean(c_final_data$percent_black), "HH",
ifelse(lisa_values[,1] < 0 & c_final_data$percent_black < mean(c_final_data$percent_black), "LL",
ifelse(lisa_values[,1] > 0, "HL", "LH"))), "Not Significant"),
levels = c("HH", "HL", "LL", "LH", "Not Significant"))
# Create the map
black_map <- tm_shape(c_final_data) +
tm_polygons("LISA_category", palette=c("red", "blue", "lightblue", "pink", "grey"),
title="LISA Categories", subtitle="Connecticut Cities and Towns") +
tm_layout(main.title="LISA Map 2: of Percent Population Black",
main.title.position = c("CENTER", "TOP"),
main.title.fontface = "bold",
frame = FALSE,
legend.position = c("right", "bottom")) +
tm_credits("Source: U.S. Census Bureau 2022 American Community Survey 5-Year Estimate") # Correct placement of credits
# Print the map
black_map
In Lisa Map 2, this map shows the clustering of the Percent Black
population as having high values surrounded by other high values. It
also shows Low Percent Population Black surrounded by other low Percent
Black Population.
lisa_values <- localmoran(c_final_data$percent_hispanic, weights)
c_final_data$LISA_category <- factor(ifelse(lisa_values[,5] < 0.05,
ifelse(lisa_values[,1] > 0 & c_final_data$percent_hispanic > mean(c_final_data$percent_hispanic), "HH",
ifelse(lisa_values[,1] < 0 & c_final_data$percent_hispanic < mean(c_final_data$percent_hispanic), "LL",
ifelse(lisa_values[,1] > 0, "HL", "LH"))), "Not Significant"),
levels = c("HH", "HL", "LL", "LH", "Not Significant"))
# Create the map
hsp_map <- tm_shape(c_final_data) +
tm_polygons("LISA_category", palette=c("red", "blue", "lightblue", "pink", "grey"),
title="LISA Categories", subtitle="Connecticut Cities and Towns") +
tm_layout(main.title="LISA Map 3: of Percent Population Hispanic",
main.title.position = c("RIGHT", "TOP"),
main.title.fontface = "bold",
frame = FALSE,
legend.position = c("right", "bottom")) +
tm_credits("Source: 2022 U.S. Census Bureau American Community Survey 5-Year Estimate") # Correct placement of credits
# Print the map
hsp_map
Lisa map 3: show areas with high values surrounded by other areas of high values. as well as low values surrounded by areas of low Percent Population Hispanic.
lisa_values <- localmoran(c_final_data$percent_evictions, weights)
c_final_data$LISA_category <- factor(ifelse(lisa_values[,5] < 0.05,
ifelse(lisa_values[,1] > 0 & c_final_data$percent_evictions > mean(c_final_data$percent_evictions), "HH",
ifelse(lisa_values[,1] < 0 & c_final_data$percent_evictions < mean(c_final_data$percent_evictions), "LL",
ifelse(lisa_values[,1] > 0, "HL", "LH"))), "Not Significant"),
levels = c("HH", "HL", "LL", "LH", "Not Significant"))
# Create the map
evictions_map <- tm_shape(c_final_data) +
tm_polygons("LISA_category", palette=c("red", "blue", "lightblue", "pink", "grey"),
title="LISA Categories", subtitle="Connecticut Cities and Towns") +
tm_layout(main.title="LISA Map 4: of Percent of Total Evictions",
main.title.position = c("CENTER", "TOP"),
main.title.fontface = "bold",
frame = FALSE,
legend.position = c("right", "bottom")) +
tm_credits("Source: Princeton Evictions Lab, 2024") # Correct placement of credits
# Print the map
evictions_map
Lisa Map 4: This map shows a high concentration of evictions in the area
of Hartford ad the sorrowing towns. As well as the area around
Bridgeport,New Haven and Waterbury.
lisa_values <- localmoran(c_final_data$rent_burden, weights)
c_final_data$LISA_category <- factor(ifelse(lisa_values[,5] < 0.05,
ifelse(lisa_values[,1] > 0 & c_final_data$rent_burden > mean(c_final_data$rent_burden), "HH",
ifelse(lisa_values[,1] < 0 & c_final_data$rent_burden < mean(c_final_data$rent_burden), "LL",
ifelse(lisa_values[,1] > 0, "HL", "LH"))), "Not Significant"),
levels = c("HH", "HL", "LL", "LH", "Not Significant"))
# Create the map
rent_map <- tm_shape(c_final_data) +
tm_polygons("LISA_category", palette=c("red", "blue", "lightblue", "pink", "grey"),
title="LISA Categories", subtitle="Connecticut Cities and Towns") +
tm_layout(main.title="LISA Map 5: of Percent of Rent Burden",
main.title.position = c("CENTER", "TOP"),
main.title.fontface = "bold",
frame = FALSE,
legend.position = c("right", "bottom")) +
tm_credits("Source: 2022 U.S. Census Bureau American Community Survey 5-Year Estimate") # Correct placement of credits
# Print the map
rent_map
Lisa Map 5: Percent Rent Burden shows only three towns in the north of rent burden.
lisa_values <- localmoran(c_final_data$percent_mortality, weights)
c_final_data$LISA_category <- factor(ifelse(lisa_values[,5] < 0.05,
ifelse(lisa_values[,1] > 0 & c_final_data$percent_mortality > mean(c_final_data$percent_mortality), "HH",
ifelse(lisa_values[,1] < 0 & c_final_data$percent_mortality < mean(c_final_data$percent_mortality), "LL",
ifelse(lisa_values[,1] > 0, "HL", "LH"))), "Not Significant"),
levels = c("HH", "HL", "LL", "LH", "Not Significant"))
# Create the map
mortality_map <- tm_shape(c_final_data) +
tm_polygons("LISA_category", palette=c("red", "blue", "lightblue", "pink", "grey"),
title="LISA Categories", subtitle="Connecticut Cities and Towns") +
tm_layout(main.title="LISA Map 6: of Percent Infant Mortality",
main.title.position = c("CENTER", "TOP"),
main.title.fontface = "bold",
frame = FALSE,
legend.position = c("right", "bottom")) +
tm_credits("Source: Connecticut Department of Public Health") # Correct placement of credits
# Print the map
print(mortality_map)
Lisa Map 6 shows clustering of infant mortality around Hartford and New
Haven but not in those two cities.
The LISA Maps 1 and 2 display contrasting results; low values of percent population white and high values of percent population black in cities and the towns directly surrounding them. LISA Maps 4, 2, and 6 all indicate high-high clustering in and around urban areas. This suggests a potential relationship between evictions, infant mortality, and the racial demographics of an area. Interestingly, the data shows that the percentage of the population with a rent burden over 30% does not play a significant role. Regression analysis would be beneficial to quantitatively determine the correlations and relationships between infant mortality, percent evictions, percent population black, and percent population white. Research has indicated that areas with a higher black population are more likely to experience higher eviction rates.
In conclusion, this study underscores the need for a deeper understanding of the relationships among eviction rates, rent burden, and infant mortality in Connecticut. By analyzing data on eviction rates, rent affordability, and race/ethnicity, the maps reveal a correlation between infant mortality and eviction percentages. Further research is essential to uncover more detailed insights about the areas in and around Hartford to better understand these issues. Additionally, the study has identified a spatial relationship between rent burden and infant mortality, suggesting that policies aimed at reducing evictions and ensuring housing affordability may positively impact infant health outcomes. This research has the potential to contribute to a more equitable and just society by equipping policymakers with the information needed to implement interventions that address the root causes of housing and eviction crises, while prioritizing the health and well-being of vulnerable populations.
CTData Collaborative. (No Date). Connecticut’s Eviction Crisis Exposed: A Report by CTData Collaborative. Retrieved from https://www.ctdata.org/evictions-report on March 23, 2024.
Hepburn, Peter, Louis, R., and Desmond, M.(2024) Eviction Tracking System: Version 1.0. Princeton: Princeton University Kenoyer, Kelly(2024), Southeastern U.S. tops the list for rural eviction rates, WHQR, retrieved from https://www.whqr.org/local/2024-03-14/southeastern-u-s-tops-the-list-for-rural- eviction-rates on March 23, 2024
Leifheit, Kathryn Margaret(2022), Evictions in the United States: Implications For Child Health, Doctoral Dissertations, Johns Hopkins, retrieved from https://jscholarship.library.jhu.edu/items/cf7f2209-d308-454e-b1d1-94231536800c on March 23, 2024
Ramphal et al. (2023) conducted a systematic review on the impact of evictions on infant and child health outcomes, published in JAMA Network Open, 6(4). Retrieved from https:// jamanetwork-com.ezaccess.libraries.psu.edu/journals/jamanetworkopen/fullarticle/2803667 on March 23 2024
Romer, Carl, Perry Andre M., and Broady, K. (2021). The coming eviction crisis will disproportionately affect Black communities, according to Brookings.edu. https://www.brookings.edu/articles/the-coming-eviction-crisis-will-hit-black-communities- the-hardest/ Retrieved on March 23, 2024.
U.S. Census Bureau. (2021). American Community Survey 5-Year Estimate (2017-2021). Retrieved using tidy-census.
DPH, CT(2023) Conneticut Registration Report tables, Births, Deaths, Fetal Deaths, and Marriages Calendar Year 2021(Provisional)