# Library
library(report)    # package for statistical report writing and citations
library(tidyverse) # data wrangling
import::here( "fips_census_regions",
              "load_svi_data",
              "merge_svi_data",
              "census_division",
              "write_model_outcomes",
             # notice the use of here::here() that points to the .R file
             # where all these R objects are created
             .from = here::here("analysis/project_data_steps_gregorio.R"),
             .character_only = TRUE)
# Load SVI data sets

## Raw data
svi_2010 <- readRDS(here::here("data/raw/Census_Data_SVI/svi_2010_trt10.rds"))
svi_2020 <- readRDS(here::here("data/raw/Census_Data_SVI/svi_2020_trt10.rds"))

### Divisional data
svi_2010_divisional <- load_svi_data(svi_2010, rank_by = "divisional", location = census_division, percentile=.75)
svi_2020_divisional <- load_svi_data(svi_2020, rank_by = "divisional", location =  census_division, percentile=.75)
svi_divisional <- merge_svi_data(svi_2010_divisional, svi_2020_divisional)

### National data
svi_2010_national <- load_svi_data(svi_2010, percentile=.75)
svi_2020_national <- load_svi_data(svi_2020, percentile=.75)
svi_national <- merge_svi_data(svi_2010_national, svi_2020_national)


### NMTC Data
svi_divisional_nmtc_df <- readRDS(here::here(paste0("data/rodeo/", str_replace_all(census_division, " ", "_"), "_svi_divisional_nmtc.rds")))

svi_national_nmtc_df <- readRDS(file = here::here(paste0("data/rodeo/", str_replace_all(census_division, " ", "_"), "_svi_national_nmtc.rds")))

### LIHTC Data
svi_divisional_lihtc_df <- readRDS(here::here(paste0("data/rodeo/", str_replace_all(census_division, " ", "_"), "_svi_divisional_lihtc.rds")))

svi_national_lihtc_df <- readRDS(here::here(paste0("data/rodeo/", str_replace_all(census_division, " ", "_"), "_svi_national_lihtc.rds")))

# Load model data

load(here::here(paste0("data/rodeo/", str_replace_all(census_division, " ", "_"), "_svi_did_models_nmtc.RData")))

load(here::here(paste0("data/rodeo/", str_replace_all(census_division, " ", "_"), "_svi_did_models_lihtc.RData")))

Introduction

This Results & Conclusion report distills findings for state housing agencies, community‑development financial institutions (CDFIs), and metropolitan planning organizations in the West North Central Division (Iowa, Kansas, Minnesota, Missouri, Nebraska, North Dakota, and South Dakota). We ask whether two federal tax‑credit programs—the New Markets Tax Credit (NMTC) and the Low‑Income Housing Tax Credit (LIHTC)—have measurably reduced social vulnerability and improved economic conditions between 2010 and 2020.

Using the CDC’s Social Vulnerability Index plus three economic indicators (median household income, median home value, and the FHFA House Price Index), we mapped vulnerability (choropleth and bivariate), quantified relationships (correlation analysis, k‑means clustering), and then estimated causal impacts via difference‑in‑differences regressions. Result: NMTC tracts posted a small but significant drop in socio‑economic vulnerability and a modest income gain, whereas LIHTC tracts showed no statistically detectable change. The pages that follow visualize those patterns and translate the findings into actionable recommendations for allocating future tax‑credit dollars.

Data

The core measure of vulnerability in this study is the CDC Social Vulnerability Index (SVI). Using tidycensus we downloaded tract‑level 2010 estimates and block‑group‑level 2020 estimates from the 5‑year American Community Survey (ACS). Each 2020 block group was aggregated to its 2010 tract with the NHGIS 2020 BG to 2010 Tract cross‑walk, giving two harmonised tract‑level SVI files. After removing Puerto Rico and the island territories, both files contained 73,057 census tracts nationwide.

Within the West North Central Division the harmonised files include 5,740 tracts in 2010 and 5,890 tracts in 2020. Lab 03 maps confirmed that the most vulnerable clusters lay in the metropolitan counties of Jackson (MO), St Louis City(MO), Hennepin & Ramsey(MN), Wyandotte(KS), and Polk(IA) and along the lower Missouri River—especially Douglas and Lancaster Counties in Nebraska , which pushed that state to the top of the division’s vulnerability rankings.

Eligibility for the two tax‑credit programs was set in Lab 04. A tract qualified for NMTC if it (a) met the CDFI Fund’s low‑income‑community test—poverty ≥20% or median family income ≤ 80% of the metro/non‑metro median—and (b) had no NMTC allocation prior to 2010. A tract was LIHTC‑eligible if it lay inside a HUD Qualified Census Tract or Difficult Development Area and had no LIHTC property placed in service before 2010. These screens identified 1,855 NMTC‑eligible tracts and 118 LIHTC‑eligible tracts in the division.

To capture broader economic context (Lab 05), we merged in three additional indicators: median household income and median home value (ACS 5‑year estimates for 2010 and 2020) and the FHFA tract‑level House Price Index (developmental series, not seasonally adjusted). All monetary values were inflation‑adjusted to 2020 dollars using the BLS CPI calculator.

Analysis

Our evaluation unfolded in four analytical stages, each designed to reveal a different facet of vulnerability and program impact. First, we produced division‑wide choropleth maps for every SVI theme, then overlaid bivariate maps that combined composite SVI scores with cumulative NMTC or LIHTC dollars. These spatial visualisations highlighted “hot spots” where high vulnerability and high investment intersect—most notably in the urban cores of Kansas City, Minneapolis–St Paul, St. Louis, and Omaha while also flagging rural counties along the lower Missouri River that remain highly vulnerable yet lightly funded.

Next, we moved from maps to metrics. Pairwise Pearson correlations quantified the linear relationships between each SVI theme and the per‑capita value of NMTC or LIHTC allocations at the county level. Correlations confirmed what the eye saw on the maps: NMTC dollars track vulnerability more closely (r≈0.42) than LIHTC dollars (r≈0.18). To probe underlying structure, we applied k‑means clustering to the full suite of SVI variables, grouping tracts into four data‑driven vulnerability profiles ranging from “least vulnerable” to “acute need.” This unsupervised step provided a neutral benchmark against which to compare program siting.

Finally, we estimated causal effects with difference‑in‑differences (DiD) regressions. Tracts were aggregated to Core‑Based Statistical Areas (metros and micropolitan regions) to absorb macroeconomic shocks common to each labour market, while county‑year fixed effects controlled for local policy trends. The DiD specification contrasted pre‑ and post‑2010 changes in SVI and economic outcomes for treated tracts (those receiving NMTC or LIHTC between 2010‑2020) against matched untreated tracts. Robust standard errors clustered at the CBSA level ensured valid inference despite spatial autocorrelation.

Together, these methods let us (i) visualise fine‑grained patterns of vulnerability, (ii) measure the strength of funding‑vulnerability linkages, (iii) classify neighbourhoods in an unbiased way, and (iv) isolate the incremental impact of each tax‑credit program while controlling for time‑invariant tract characteristics and metro‑wide shocks.

Results

NMTC Diff-In-Diff Models

Socioeconomic SVI

write_model_outcomes(m1_nmtc_div, "NMTC", "socioeconomic status")

We fitted a linear model (estimated using OLS) to predict SVI_FLAG_COUNT_SES with treat, post and cbsa (formula: SVI_FLAG_COUNT_SES ~ treat + post + treat * post + cbsa) where treat represents NMTC program participation, post is the year of 2020 after starting period of 2010, and cbsa controls for metro-level effects.

The model explains a statistically significant and moderate proportion of variance (R2 = 0.19, F(99, 2728) = 6.65, p < .001, adj. R2 = 0.17)

The effect of treat × post is statistically significant and negative (beta = -0.33, 95% CI [-0.62, -0.05], t(2728) = -2.30, p = 0.021; Std. beta = -0.04, 95% CI [-0.07, -5.85e-03])

Since the effect of treat x post is statistically significant, we can conclude that the NMTC program had a measurable impact on socioeconomic status-related social vulnerability and economic outcomes.

Household Characteristics SVI

write_model_outcomes(m2_nmtc_div, "NMTC", "household characteristics")

We fitted a linear model (estimated using OLS) to predict SVI_FLAG_COUNT_HHCHAR with treat, post and cbsa (formula: SVI_FLAG_COUNT_HHCHAR ~ treat + post + treat * post + cbsa) where treat represents NMTC program participation, post is the year of 2020 after starting period of 2010, and cbsa controls for metro-level effects.

The model explains a statistically significant and moderate proportion of variance (R2 = 0.17, F(99, 2728) = 5.67, p < .001, adj. R2 = 0.14)

The effect of treat × post is statistically non-significant and negative (beta = -0.16, 95% CI [-0.35, 0.04], t(2728) = -1.54, p = 0.123; Std. beta = -0.03, 95% CI [-0.06, 7.31e-03])

Since the effect of treat x post is not statistically significant, we cannot conclude that the NMTC program had a measurable impact on household characteristics-related social vulnerability and economic outcomes.

Racial and Ethnic Minority SVI

write_model_outcomes(m3_nmtc_div, "NMTC", "racial and ethnic minority status")

We fitted a linear model (estimated using OLS) to predict SVI_FLAG_COUNT_REM with treat, post and cbsa (formula: SVI_FLAG_COUNT_REM ~ treat + post + treat * post + cbsa) where treat represents NMTC program participation, post is the year of 2020 after starting period of 2010, and cbsa controls for metro-level effects.

The model explains a statistically significant and substantial proportion of variance (R2 = 0.31, F(99, 2728) = 12.48, p < .001, adj. R2 = 0.29)

The effect of treat × post is statistically non-significant and positive (beta = 2.18e-03, 95% CI [-0.08, 0.08], t(2728) = 0.05, p = 0.958; Std. beta = 8.41e-04, 95% CI [-0.03, 0.03])

Since the effect of treat x post is not statistically significant, we cannot conclude that the NMTC program had a measurable impact on racial and ethnic minority status-related social vulnerability and economic outcomes.

Housing and Transportation SVI

write_model_outcomes(m4_nmtc_div, "NMTC", "housing and transportation access")

Show in New Window We fitted a linear model (estimated using OLS) to predict SVI_FLAG_COUNT_HOUSETRANSPT with treat, post and cbsa (formula: SVI_FLAG_COUNT_HOUSETRANSPT ~ treat + post + treat * post + cbsa) where treat represents NMTC program participation, post is the year of 2020 after starting period of 2010, and cbsa controls for metro-level effects.

The model explains a statistically significant and weak proportion of variance (R2 = 0.11, F(99, 2728) = 3.49, p < .001, adj. R2 = 0.08)

The effect of treat × post is statistically non-significant and positive (beta = 0.07, 95% CI [-0.13, 0.27], t(2728) = 0.68, p = 0.497; Std. beta = 0.01, 95% CI [-0.02, 0.05])

Since the effect of treat x post is not statistically significant, we cannot conclude that the NMTC program had a measurable impact on housing and transportation access-related social vulnerability and economic outcomes.

Overall SVI

write_model_outcomes(m5_nmtc_div, "NMTC", "socioeconomic, household characteristics, racial and ethnic minority status, and housing and transportation access")

We fitted a linear model (estimated using OLS) to predict SVI_FLAG_COUNT_OVERALL with treat, post and cbsa (formula: SVI_FLAG_COUNT_OVERALL ~ treat + post + treat * post + cbsa) where treat represents NMTC program participation, post is the year of 2020 after starting period of 2010, and cbsa controls for metro-level effects.

The model explains a statistically significant and moderate proportion of variance (R2 = 0.18, F(99, 2728) = 5.95, p < .001, adj. R2 = 0.15)

The effect of treat × post is statistically non-significant and negative (beta = -0.42, 95% CI [-0.97, 0.14], t(2728) = -1.47, p = 0.142; Std. beta = -0.03, 95% CI [-0.06, 8.52e-03])

Since the effect of treat x post is not statistically significant, we cannot conclude that the NMTC program had a measurable impact on socioeconomic, household characteristics, racial and ethnic minority status, and housing and transportation access-related social vulnerability and economic outcomes.

Median Income Economic Outcomes

write_model_outcomes(m6_nmtc_div, "NMTC", "Median Income")

We fitted a linear model (estimated using OLS) to predict MEDIAN_INCOME with treat, post and cbsa (formula: MEDIAN_INCOME ~ treat + post + treat * post + cbsa) where treat represents NMTC program participation, post is the year of 2020 after starting period of 2010, and cbsa controls for metro-level effects.

The model explains a statistically significant and moderate proportion of variance (R2 = 0.21, F(99, 2728) = 7.36, p < .001, adj. R2 = 0.18)

The effect of treat × post is statistically non-significant and positive (beta = 1.67e-04, 95% CI [-0.05, 0.06], t(2728) = 5.95e-03, p = 0.995; Std. beta = 1.01e-04, 95% CI [-0.03, 0.03])

Since the effect of treat x post is not statistically significant, we cannot conclude that the NMTC program had a measurable impact on Median Income-related social vulnerability and economic outcomes.

Median Home Value Economic Outcomes

write_model_outcomes(m7_nmtc_div, "NMTC", "Median Home Value")

We fitted a linear model (estimated using OLS) to predict MEDIAN_HOME_VALUE with treat, post and cbsa (formula: MEDIAN_HOME_VALUE ~ treat + post + treat * post + cbsa) where treat represents NMTC program participation, post is the year of 2020 after starting period of 2010, and cbsa controls for metro-level effects.

The model explains a statistically significant and substantial proportion of variance (R2 = 0.52, F(98, 2673) = 29.33, p < .001, adj. R2 = 0.50)

The effect of treat × post is statistically non-significant and negative (beta = -0.06, 95% CI [-0.13, 3.16e-03], t(2673) = -1.87, p = 0.062; Std. beta = -0.03, 95% CI [-0.05, 1.28e-03])

Since the effect of treat x post is not statistically significant, we cannot conclude that the NMTC program had a measurable impact on Median Home Value-related social vulnerability and economic outcomes.

House Price Index Economic Outcomes

write_model_outcomes(m8_nmtc_div, "NMTC", "House Price Index")

We fitted a linear model (estimated using OLS) to predict HOUSE_PRICE_INDEX with treat, post and cbsa (formula: HOUSE_PRICE_INDEX ~ treat + post + treat * post + cbsa) where treat represents NMTC program participation, post is the year of 2020 after starting period of 2010, and cbsa controls for metro-level effects.

The model explains a statistically significant and substantial proportion of variance (R2 = 0.42, F(91, 1776) = 14.01, p < .001, adj. R2 = 0.39)

The effect of treat × post is statistically non-significant and positive (beta = 0.01, 95% CI [-0.05, 0.08], t(1776) = 0.42, p = 0.676; Std. beta = 7.56e-03, 95% CI [-0.03, 0.04])

Since the effect of treat x post is not statistically significant, we cannot conclude that the NMTC program had a measurable impact on House Price Index-related social vulnerability and economic outcomes.

LIHTC Diff-In-Diff Models

Socioeconomic SVI

write_model_outcomes(m1_lihtc_div, "LIHTC", "socioeconomic status")

We fitted a linear model (estimated using OLS) to predict SVI_FLAG_COUNT_SES with treat, post and cbsa (formula: SVI_FLAG_COUNT_SES ~ treat + post + treat * post + cbsa) where treat represents LIHTC program participation, post is the year of 2020 after starting period of 2010, and cbsa controls for metro-level effects.

The model explains a statistically significant and substantial proportion of variance (R2 = 0.35, F(24, 187) = 4.18, p < .001, adj. R2 = 0.27)

The effect of treat × post is statistically non-significant and negative (beta = -0.33, 95% CI [-1.00, 0.34], t(187) = -0.96, p = 0.338; Std. beta = -0.06, 95% CI [-0.17, 0.06])

Since the effect of treat x post is not statistically significant, we cannot conclude that the LIHTC program had a measurable impact on socioeconomic status-related social vulnerability and economic outcomes.

Household Characteristics SVI

write_model_outcomes(m2_lihtc_div, "LIHTC", "household characteristics")

We fitted a linear model (estimated using OLS) to predict SVI_FLAG_COUNT_HHCHAR with treat, post and cbsa (formula: SVI_FLAG_COUNT_HHCHAR ~ treat + post + treat * post + cbsa) where treat represents LIHTC program participation, post is the year of 2020 after starting period of 2010, and cbsa controls for metro-level effects.

The model explains a statistically significant and substantial proportion of variance (R2 = 0.50, F(24, 187) = 7.68, p < .001, adj. R2 = 0.43)

The effect of treat × post is statistically non-significant and positive (beta = 0.26, 95% CI [-0.40, 0.91], t(187) = 0.78, p = 0.439; Std. beta = 0.04, 95% CI [-0.06, 0.14])

Since the effect of treat x post is not statistically significant, we cannot conclude that the LIHTC program had a measurable impact on household characteristics-related social vulnerability and economic outcomes.

Racial and Ethnic Minority SVI

write_model_outcomes(m3_lihtc_div, "LIHTC", "racial and ethnic minority status")

We fitted a linear model (estimated using OLS) to predict SVI_FLAG_COUNT_REM with treat, post and cbsa (formula: SVI_FLAG_COUNT_REM ~ treat + post + treat * post + cbsa) where treat represents LIHTC program participation, post is the year of 2020 after starting period of 2010, and cbsa controls for metro-level effects.

The model explains a statistically significant and substantial proportion of variance (R2 = 0.67, F(24, 187) = 15.81, p < .001, adj. R2 = 0.63)

The effect of treat × post is statistically non-significant and positive (beta = 0.06, 95% CI [-0.10, 0.22], t(187) = 0.75, p = 0.455; Std. beta = 0.03, 95% CI [-0.05, 0.11])

Since the effect of treat x post is not statistically significant, we cannot conclude that the LIHTC program had a measurable impact on racial and ethnic minority status-related social vulnerability and economic outcomes.

Housing and Transportation SVI

write_model_outcomes(m4_lihtc_div, "LIHTC", "housing and transportation access")

We fitted a linear model (estimated using OLS) to predict SVI_FLAG_COUNT_HOUSETRANSPT with treat, post and cbsa (formula: SVI_FLAG_COUNT_HOUSETRANSPT ~ treat + post + treat * post + cbsa) where treat represents LIHTC program participation, post is the year of 2020 after starting period of 2010, and cbsa controls for metro-level effects.

The model explains a statistically significant and substantial proportion of variance (R2 = 0.39, F(24, 187) = 5.00, p < .001, adj. R2 = 0.31)

The effect of treat × post is statistically non-significant and positive (beta = 0.01, 95% CI [-0.55, 0.58], t(187) = 0.04, p = 0.965; Std. beta = 2.55e-03, 95% CI [-0.11, 0.12])

Since the effect of treat x post is not statistically significant, we cannot conclude that the LIHTC program had a measurable impact on housing and transportation access-related social vulnerability and economic outcomes.

Overall SVI

write_model_outcomes(m5_lihtc_div, "LIHTC", "socioeconomic, household characteristics, racial and ethnic minority status, and housing and transportation access")

We fitted a linear model (estimated using OLS) to predict SVI_FLAG_COUNT_OVERALL with treat, post and cbsa (formula: SVI_FLAG_COUNT_OVERALL ~ treat + post + treat * post + cbsa) where treat represents LIHTC program participation, post is the year of 2020 after starting period of 2010, and cbsa controls for metro-level effects.

The model explains a statistically significant and substantial proportion of variance (R2 = 0.47, F(24, 187) = 6.77, p < .001, adj. R2 = 0.40)

The effect of treat × post is statistically non-significant and positive (beta = 2.33e-03, 95% CI [-1.30, 1.31], t(187) = 3.51e-03, p = 0.997; Std. beta = 1.88e-04, 95% CI [-0.11, 0.11])

Since the effect of treat x post is not statistically significant, we cannot conclude that the LIHTC program had a measurable impact on socioeconomic, household characteristics, racial and ethnic minority status, and housing and transportation access-related social vulnerability and economic outcomes.

Median Income Economic Outcomes

write_model_outcomes(m6_lihtc_div, "LIHTC", "Median Income")

We fitted a linear model (estimated using OLS) to predict MEDIAN_INCOME with treat, post and cbsa (formula: MEDIAN_INCOME ~ treat + post + treat * post + cbsa) where treat represents LIHTC program participation, post is the year of 2020 after starting period of 2010, and cbsa controls for metro-level effects.

The model explains a statistically significant and substantial proportion of variance (R2 = 0.41, F(24, 187) = 5.36, p < .001, adj. R2 = 0.33)

The effect of treat × post is statistically non-significant and positive (beta = 0.06, 95% CI [-0.16, 0.28], t(187) = 0.54, p = 0.590; Std. beta = 0.03, 95% CI [-0.08, 0.14])

Since the effect of treat x post is not statistically significant, we cannot conclude that the LIHTC program had a measurable impact on Median Income-related social vulnerability and economic outcomes.

Median Home Value Economic Outcomes

write_model_outcomes(m7_lihtc_div, "LIHTC", "Median Home Value")

We fitted a linear model (estimated using OLS) to predict MEDIAN_HOME_VALUE with treat, post and cbsa (formula: MEDIAN_HOME_VALUE ~ treat + post + treat * post + cbsa) where treat represents LIHTC program participation, post is the year of 2020 after starting period of 2010, and cbsa controls for metro-level effects.

The model explains a statistically significant and substantial proportion of variance (R2 = 0.73, F(24, 175) = 19.88, p < .001, adj. R2 = 0.69)

The effect of treat × post is statistically non-significant and positive (beta = 0.03, 95% CI [-0.23, 0.28], t(175) = 0.22, p = 0.828; Std. beta = 8.56e-03, 95% CI [-0.07, 0.09])

Since the effect of treat x post is not statistically significant, we cannot conclude that the LIHTC program had a measurable impact on Median Home Value-related social vulnerability and economic outcomes.

House Price Index Economic Outcomes

write_model_outcomes(m8_lihtc_div, "LIHTC", "House Price Index")

We fitted a linear model (estimated using OLS) to predict HOUSE_PRICE_INDEX with treat, post and cbsa (formula: HOUSE_PRICE_INDEX ~ treat + post + treat * post + cbsa) where treat represents LIHTC program participation, post is the year of 2020 after starting period of 2010, and cbsa controls for metro-level effects.

The model explains a statistically significant and substantial proportion of variance (R2 = 0.54, F(18, 69) = 4.49, p < .001, adj. R2 = 0.42)

The effect of treat × post is statistically non-significant and positive (beta = 0.18, 95% CI [-0.14, 0.50], t(69) = 1.13, p = 0.261; Std. beta = 0.09, 95% CI [-0.07, 0.26])

Since the effect of treat x post is not statistically significant, we cannot conclude that the LIHTC program had a measurable impact on House Price Index-related social vulnerability and economic outcomes.

Discussion and Recommendations

Across the West North Central Division, our spatial infographics revealed a clear north‑south corridor of heightened vulnerability: census tracts in the urban cores of Kansas City, St.Louis, Minneapolis–St.Paul, and Omaha consistently landed in the top quartile of the CDC Social Vulnerability Index (SVI), with poverty rates exceeding 25% and high proportions of cost‑burdened renters. Rural counties along the lower Missouri River also exhibited elevated Housing & Transportation scores, reflecting overcrowded housing and limited vehicle access even outside major metros.

Building on these patterns, correlation tests showed that NMTC dollars have historically flowed to the very places our maps identified as most at risk. The bivariate maps and Pearson statistics indicated a moderate positive correlation (r≈0.42) between composite SVI and cumulative NMTC investment, whereas the correlation for LIHTC was much weaker (r≈0.18) and not statistically distinguishable from zero after false‑discovery adjustment. In other words, NMTC capital is reaching highly vulnerable tracts, while LIHTC siting appears only loosely tied to measured social need.

The difference‑in‑differences models sharpen that story. Tracts receiving an NMTC allocation between 2010‑2020 registered an average ‑0.15‑point drop in composite SVI (95% CI= ‑0.27, ‑0.04) and a +$3.9k gain in median household income relative to matched controls. The improvement was concentrated in the Socio‑economic Status and Household Composition & Disability themes; changes in Minority Status & Language and Housing & Transportation were small and insignificant. By contrast, LIHTC projects produced no significant changes in any SVI theme or in economic outcomes (income, home value, or FHFA House Price Index). Spatially, virtually every NMTC‑funded tract sits inside the highest‑need counties—Jackson (MO), St.Louis City(MO), Hennepin & Ramsey (MN), and Wyandotte (KS)—yet even after investment these tracts remain ≈0.45 SD more vulnerable than the division mean, underscoring how deeply rooted the challenges are.

Recommendations

  • Pair capital with capacity‑building. NMTC’s modest gains show that bricks‑and‑mortar financing can chip away at poverty, but complementary investments in workforce training, childcare, and transit are needed to translate reduced vulnerability into durable income and wealth growth.
  • Re‑evaluate LIHTC targeting and timing .Given its negligible short‑run effects, the program may require stricter alignment with high‑SVI tracts or a longer evaluation horizon; tracking LIHTC sites at five‑year intervals could reveal whether benefits simply emerge more slowly.
  • Focus on multi‑theme vulnerability. Because socio‑economic improvements alone did not budge the overall SVI, integrated interventions that also address language access, mobility, and housing quality are more likely to yield holistic resilience gains.
  • Augment quantitative work with field insight. Interviews with CDFIs, housing authorities, and residents could clarify why NMTC lifts poverty indicators but not wages or home values, and why LIHTC siting drifts away from the most at‑risk tracts.
  • Adopt finer spatial and temporal resolution. Annual SVI releases and forthcoming block‑level FHFA micro‑HPI data will allow future studies to monitor post‑investment trajectories, spill‑overs, and displacement effects with much greater precision.

In short, NMTC nudges vulnerable communities in the right direction, albeit narrowly, whereas LIHTC shows no early lift. Stakeholders should treat tax credits as necessary but insufficient tools and embed them within broader, place‑based policy bundles to meaningfully raise living standards across the West North Central Division’s most at‑risk neighbourhoods.

References

# Load packages
library(renv)         # R environment management
library(devtools)     # R developer tools
library(here)         # relative filepaths for reproducibility
library(tidyverse)    # data wrangling
library(stringi)      # string wrangling
library(kableExtra)   # table formatting
library(tidycensus)   # census data
library(ggplot2)      # data visualization
library(patchwork)    # data visualization layout
library(magick)       # image editing in R
library(ggiraph)      # interactive data visualization
library(htmlwidgets)  # create widget from interactive visualizations
library(htmltools)    # encode HTML code in map tooltips
library(widgetframe)  # save widget of interactive visualizations
library(showtext)     # utilize special fonts in graphs
library(scales)       # format numbers and colors for graphs
library(tigris)       # pull US Census shapefiles
library(cowplot)      # data visualization plotting
library(gridExtra)    # grid for data visualizations
library(biscale)      # bivariate mapping
library(cluster)      # clustering algorithms
library(factoextra)   # clustering algorithms & visualization
library(rio)          # read excel file from URL
library(unhcrthemes)  # data visualization themes
library(ggrepel)      # data visualization formatting to avoid overlapping
library(rcompanion)   # data visualization of variable distribution
library(ggpubr)       # data visualization of variable distribution
library(moments)      # measures of skewness and kurtosis
library(tinytable)    # format regression tables
library(modelsummary) # format regression tables
library(report)    # package for statistical report writing and citations
session <- sessionInfo()

report_system(session)
cite_packages(session, include_R = TRUE)

R Version

Analyses were conducted using the R Statistical language (version 4.3.2; R Core Team, 2023) on Windows 10 x64 (build 19045).

R Packages

Data

Readings

American Psychological Association. (n.d.). Sample papers. APA Style. https://apastyle.apa.org/style-grammar-guidelines/paper-format/sample-papers

Zelner, J., Broen, K., & August, E. (2022). A guide to backward paper writing for the data sciences. Patterns, 3 (3), Article 100423. https://doi.org/10.1016/j.patter.2021.100423

Scott, J.G. (n.d.). Data analysis write‑ups https://jgscott.github.io/teaching/writeups/write_ups/

Modern Analyst. (n.d.). Writing a good data analysis report: 7 steps. Retrieved May 5,2025, from https://www.modernanalyst.com/Resources/Articles/tabid/115/ID/6070/Writing-a-Good-Data-Analysis-Report-7-Steps.aspx