[1] "9,880"
Lecture Videos
Introduction
This week we will be exploring the usage of APIs to import data, the theory behind regression and Diff-in-Diff models as a method to evaluate policy interventions, and slopegraphs as a tool to visualize the outcomes of these interventions.
Thus, while this week’s lesson will require a bit more background reading before we can begin coding, you will have a solid understanding of regression model development and how to embark on the process of completing a study of your own.
APIs
Throughout the majority of the course we have utilized local data sources (CSV, Excel, and .RDS files) to access our data and complete our analyses. However, while local data sources are useful to keep subsets of data readily accessible, sometimes we need to access information from databases that are too large to keep stored on our local machines. In these cases we can virtually connect to these systems via Application Programming Interfaces known as (APIs). These interfaces allow programmers to send a query to a database and extract the data they need to download locally. Recall in Lab 01 we queried the Census API to find the population size of our Census Division. In this lab, we will use the U.S. Census Bureau’s API once again to access information on Median Home Values and Median Incomes for our census tracts of interest.
Watch the video below to learn more about APIs:
Variable Selection
As we explored in Lab 04, the New Markets Tax Credit (NMTC) and Low Income Housing Tax Credit (LIHTC) programs were created with the intention of improving communities by increasing affordable housing and economic activity. Recall that our CDC Social Vulnerability Index (SVI) data provides us with multiple variables to measure vulnerability within a community based on the following:
Socioeconomic Status variables (Below 150% Poverty, Unemployed, Housing Cost Burden, No High School Diploma, No Health Insurance)
Household Characteristics (Aged 65 & Older, Aged 17 & Younger, Civilian with a Disability, Single-Parent Households, English Language Proficiency)
Racial and Ethnic Minority Status (Hispanic or Latino (of any race); Black and African American, American Indian and Alaska Native, Asian, Native Hawaiian and Other Pacific Islander, Two or More Races, Other Races)
Housing Type and Transportation (Multi-Unit Structures, Mobile Homes, Crowding, No Vehicle, Group Quarters)
In addition to these variables, extensive research on community well-being and development has indicated that home values and income serve as good indicators of potential inequalities and susceptibility to adverse living conditions (University of Wisconsin Population Health Institute County Health Rankings, 2023; Zabel, 2015).
The majority of community development work using home values as an indicator of community well being employ “Hedonic Housing Models” which are models that rely on the effect of a location’s characteristics on home price (Rey-Blanco, Zofío, and González-Arias, 2024). Specifically, these models assert that home values are a good price mechanism to capture the state of a neighborhood because they “price in” all of the characteristics of the house as well as the features of the neighborhood and surrounding city.
Anyone who has ever paid $2,500 to rent a 400-square foot apartment in New York City know that when you acquire a dwelling you are paying for location as much as for the space to store your things and sleep at night. Location really means proximity to amenities, assurance of safety, and access to things like low taxes or high-performing schools.
Hedonic pricing models use home value as the dependent variable, typically include features of the house (lot size, square footage, year built, number of bedrooms and bathrooms, etc.) to establish a baseline prediction of the value of the home based upon the house itself. They then incorporate many additional attributes of the neighborhood to determine how people value things. Using this approach you can answer questions like, what is the value of having a park withing walking distance, i.e. what is the premium people will pay for homes that are near a park? What is the value of being in a good school district? What is the real-estate cost of proximity to a factory that produces toxic smoke? Does crime reduce the value of a home? Do new nearby bike lanes increase the value of homes?
We don’t have data on individual houses for this project, thus we can’t run formal hedonic models that account for the features of a home. Instead, we will be pulling in the U.S. Census Bureau’s estimate of median home value within our census tracts and the Federal Housing Finance Agency (FHFA)’s House Price Index data which “is a comprehensive collection of publicly available house price indexes that measure changes in single-family home values based on data that extend back to the mid-1970s from all 50 states and over 400 American cities”.
The Census calculates its estimates for Median Home Value by asking people how much their homes are worth. There are definite limitations to this methodology (people who are attached to their homes might over-value them, people who don’t follow real estate might under-value them). But there is good work on “the wisdom of crowds” that shows that many independent guesses on topics like these, once aggregated, are pretty accurate.
This fact was established partly by watching people try to guess the weight of a pig at the state fair to win a prize. The typical person was not very good at the task and thus their estimate was off by several dozen pounds. But people that do not have experience guessing the weight of pigs will get close enough, and they are also equally as likely to guess too high as they are to guess to low. So if you take all of the guesses from the crowd and average them you typically come within a pound or two of the actual weight (Surowiecki, 2005).
In contrast, the FHFA summarizes its Housing Price Index in the following way:
The FHFA HPI is a broad measure of the movement of single-family house prices. The FHFA HPI is a weighted, repeat-sales index, meaning that it measures average price changes in repeat sales or refinancings on the same properties. This information is obtained by reviewing repeat mortgage transactions on single-family properties whose mortgages have been purchased or securitized by Fannie Mae or Freddie Mac since January 1975.
The FHFA HPI serves as a timely, accurate indicator of house price trends at various geographic levels. Because of the breadth of the sample, it provides more information than is available in other house price indexes. It also provides housing economists with an improved analytical tool that is useful for estimating changes in the rates of mortgage defaults, prepayments and housing affordability in specific geographic areas.
Source FHFA House Price Index
In addition to our two sources of data on housing, we will evaluate income levels with the US Census Bureau’s median income variable. Although it is also an estimate, the large sample size of individuals aged 15 and over with income allows us to once again rely on the “wisdom of the crowd” and utilize these estimates as representative of our area of interest. Research across social science and public health domains has found that inequities in income levels are highly correlated with poverty and vulnerability to poorer quality of (Killingsworth, 2021; University of Wisconsin Population Health Institute County Health Rankings, 2023; US Department of Health and Human Services, 2021).
Thus, we can combine our SVI, Median Home Value, and Median Income variables to build a Diff-in-Diff regression model to evaluate whether the implementation of the NMTC and LIHTC programs has actually effected changes in either social vulnerability, median home values, or median income in the vulnerable communities that they target.
Variable Selection Considerations
While we are using pre-created indices from the CDC to examine social vulnerability for our study in this course, in the future you will likely need to select variables of your own to measure abstract concepts like “social vulnerability”. Thus, it is important to ensure that you understand the importance of the process of variable selection.
Broadly, variable selection is the process of picking the variables and their functional form that you will include in the model.
It is one of the most important steps in the process, but also it is an art, not a science.
The goal in evaluation models is to achieve strong model fit while accounting for competing hypotheses (alternative explanations to the assertion that the program or policy caused the change we see in the data).
Thus, it is important to ensure that you select variables that are related to the topic that you are interesting in measuring. To begin, you can conduct a literature review to identify what kinds of variables previous studies have utilized and determine whether these variables would be useful for your particular study.
This is similar to what we have done here by implementing the CDC’s SVI model and citing previous research on Hedonic Housing Models and Median Incomes as measures of community well-being. However, the CDC’s SVI model is not the only measure of community well-being. We could also seek out other resources such as the following guides that evaluate community change and gentrification:
Types of Measures
Once we have selected our variables, we then need to determine the level and types of metrics that we are interested in. For example, in Lab 02, we created functions that ranked our SVI data at several levels: tract, county, state, divisional, regional, and national. For our visualizations we have aggregated our reports up to the county, state, and national level. In addition, we have data from 2010 and 2020.
This gives us metrics from 2 years and several units of analysis with the majority of our analyses being on the census tract and county level.
We also have two ways to represent quantitative variables - as counts and as proportions where counts are raw numbers while proportions are percentages or ratios.
Sometimes only one type is meaningful - the population of a census tract is not very meaningful because tracts are designed to hold 2000 to 4000 people, and they split when they grow.
Population density, on the other hand, might be meaningful. The growth of a city or county between 2010 and 2020 is likely meaningful.
The number of people of a certain racial or ethnic group in a tract might not be meaningful, but the proportion of individuals of a certain racial or ethnic background in a tract (a measure of diversity) likely is.
So in the future if you need to construct your own indices, pay attention to how you are constructing variables, and whether the way you are presenting a variable (unit of analysis, time period, and count versus proportion) makes sense.
Challenges in Variable Selection
Let’s say we have 10 independent variables to choose from, and we want a simple model with 3 independent variables.
Each variable can be represented at the community (tract) or an aggregated (metro, county, state, divisional, regional, national) level (unit of analysis).
And each variable can be measured as counts or proportions.
So each variable turns into at least 4 potential variables:
X as count, tract level X as proportion, tract level X as count, aggregated level X as proportion, tract level
So 10 variables x 2 units of analysis x 2 metrics translates to approximately 40 distinct variables that we need to choose from:
So here is the real challenge: with 40 variables we can construct almost 10,000 unique 3-variable models!
As a complete dataset, the American Community Survey has thousands of variables and our data set has a total of 44 individual estimates that have been summarized to 4 SVI categories and 2 additional variables for Median Income and Median Home Values (see ACS variables here. Therefore it quickly becomes evident that there are literally millions of ways to construct any given model.
In a data set with just 100 variables we get more than 10 million possibilities:
This gives further insight into why it is so important to begin with a literature review to ensure you have background knowledge on your topic. Understanding the basic factors driving change in your area of interest can help you identify variables that can serve as proxies for some of these factors.
It is helpful to test your understanding of your policy domain by trying to explain the main drivers of change to a hypothetical undergraduate student. Is the idea clear enough in your own mind to explain it to another person? How confident do you feel in your story? If you don’t feel comfortable with this exercise, perhaps you should do some more background reading and reflection before you try to model anything!
P-Value Hacking
Now that we understand the challenges related to variable selection, it is important to have a discussion on “P-Value Hacking”.
As mentioned above, the process of variable selection and model specification is complex partly because of the combinatorics of choice - with a large dataset even a small model with three independent variables results in millions of possible models.
The number sounds overwhelming, but it is less daunting when you consider that we never conduct analysis by trying random combinations of variables. Rather, we usually know which is the policy variable. We need to select the units of measure and functional form, so there are a couple of decisions necessary. Once we have settled on our first variable in the model we have removed a single degree of freedom, but that has a huge impact on remaining decisions.
We have gone from over 10 million to around 78 thousand since we now just need to pick any combination of 2 remaining variables:
If based upon our background reading we know that there is one significant competing hypothesis that we want to account for, e.g. the socio-economic status of parents in the school classroom size example, then we can select that variable to eliminate more degrees of freedom.
In this way, the process of selecting a model looks like a decision tree:
In the end we might have 10 million possible models but when we follow some modeling process we see that several easy choices will eliminate lots of others. There will be many instances where you come to a fork in the road with two or more paths forward (variables to include, or units of measure to select). Often times you will try all of the roads one at a time, then return to the fork and use model fit statistics to determine which path forward is best. This is actually how some machine learning applications work - the process is called pruning the decision tree.
And here lies the fundamental tension in social sciences. We want to find the model that best describes the data, but due to the incremental nature of model selection we will gravitate toward the options that we can make sense of. It is much more common to assume that a program is effective at the onset and look for evidence accordingly. It is a lot less common to begin an evaluation looking for lack of evidence of program success. As a result we are always vulnerable to confirmation bias.
We are never objective bystanders or disinterested parties that approach the data with no agenda, merely interpreting the patterns for our audience. We are interested parties because our careers or our contracts often depend upon not missing something that would have allowed us to lend support to the program we are evaluating. As a result, we are extremely susceptible to confirmation bias. We are not the judge in the courtroom adjudicating truth in the data, we are the prosecutor that was given a job to make the strongest case possible about the guilt of the client, or in our case the effectiveness of a program. We try hard to tell a story with the data, and the funding providers or the peer reviewers serve as the jury that decides whether they believe the evidence.
A natural consequence of this iterative process of model selection is that we tend to find our way to the models that support our theories. Partly this is because it is much easier to make the case that impact exists than it is to make the case that it doesn’t. If you have done a reasonable job of accounting for sources of bias and you are able to identify program impact then your audience will be open to the results. The hard part is eliminating alternative competing hypotheses so you can make a convincing claim that the outcomes are a result of the program and not another explanation.
If, however, you arrive at null results it is comparatively much harder to make the case that the program has no impact because there are so many things that can lead to null findings other than lack of program impact. If your sample size is too small you will have null results. If you have too much noise (measurement error) in the dependent variable you will have null results. If you have any bias that shifts the estimate of impact toward zero it can lead to null results. Oddly, it requires more evidence to convince people that something doesn’t work than to convince them it does. One of the key contributors to the crisis of reproducibility in science is that it is much harder to publish null results than it is to publish a model with significant results.
It’s important to note that there is nothing nefarious about the process. The typical analyst is not manipulating data to achieve desired results. They are also typically not using brute force methods to run thousands of models that select the one that returns the largest program effects or smallest p-values. Rather, when you land on a branch of the decision tree where the data makes sense according to your task at hand or mental model of how the world works, it generates a comfortableness with the models. Alternatively, when you are getting null results you keep thinking that you must be doing something wrong, that there is something you are not seeing, so you continue to transform variables and try new models.
As a result, journals inadvertently act as gatekeepers to suppress evidence that programs don’t work or that a theory does not explain the world. Analysts and authors acquiesce and tweak the models so they fit expectations. Journals get interesting results. Authors get tenure. Everyone is happy.
The problem is that all of these decisions are innocent enough, subtle enough, and harmless enough when they occur on a single paper. But at scale they begin to skew the body of evidence of an entire field. The problem is impossible to detect in a single paper because there is always randomness in sampling that could explain the result. In an era of big data and meta-analysis, however, it is possible to aggregate results across thousands of paper to see the distribution of published p-values. Sampling theory can be used to determine what the distribution of p-values should look like within a field. When compared against observed values in published studies it is possible to test for publication bias in a scientific field. As an example, some recent papers have aggregated thousands of published studies to demonstrate the improbable clustering of p-values right below 0.05 across various disciplines. It looks very similar to reported income in tax data right around the threshold where a slightly higher income would bump people into a higher tax bracket. When people are right near the threshold, they all of a sudden need to take four weeks of vacation at the end of the year, or else they become very generous and donate thousands of dollars to a tax-deductible charity, thus dropping their taxable income below the threshold again.
What these patterns often suggest is that the peer review process results in an under-reporting of null results. If we think about research as a cumulative endeavor where lots of studies on a topic contribute to the consensus about a phenomenon, then suppressing studies that generate small effect sizes is analogous to chopping off the lower third of your data - the average effect in a literature will be artificially large. And consequently, we might have too much confidence in the effectiveness of a cancer drug, we might believe management practices work when they don’t, and we might promote public policies that we believe will improve lives but they end up generating very little impact and costing a lot of money.
There is no evil villain in the story and there are no easy solutions to problems that arise naturally from cognitive biases that emerge from the way the brain manages complexity and incentives in high-stakes systems. But science is adapting and professional norms are changing. Most notably, after recognizing that analysts operate like prosecutors making their case with data, it became apparent that a fair court requires a defense attorney as well. An important keystone of trial law is that all evidence must be shared between the legal teams so that the arguments for guilt or innocence are built through logic and persuasion, not suppression of information.
Similarly, many evidence-based fields are moving toward open data and open science models because it has become apparent that peer review only works when reviewers have access to all of the same information that the authors do. A jury would never believe a prosecutor that makes the argument, I have evidence that exonerates my client, and I am not going to share the evidence with you but I need you to trust me that it exists and it is good evidence. The judge would throw the prosecutor out of the courtroom and require that all evidence be shared with the defense.
Research and evaluation is no different. The evaluator’s job is to make a strong case for the program. The emerging consensus is that a data and methods section in a paper or report is not sufficient to describe the process that generated the results. A proper court would give the data and code to the defense team so they can do their best to poke holes in the evidence and build counter-arguments. If the story can hold up to that level of scrutiny and cross-examination, then the research is robust.
As you are learning during the project, sharing data and code is a non-trivial task. If you don’t have clear documentation about the data, the process, and the programs that were used to generate results then no one will be able to make sense of a bunch of folders that contain a bunch of files. Similarly, the evidence might make it through adjudication via a jury of peers, but to have impact it has to also be adopted widely. Projects that use open data, share code via platforms like GitHub, and leverage free open-source tools are much more likely to be shared and replicated, leading to more impact. Project management is a key component of effectiveness for the data scientist.
Most importantly, awareness of the challenges of working with data should remind you to be diligent and humble. The next part of this tutorial will highlight some of the challenges of model specification to emphasize that caution and humility are required when doing data analytics. Running regressions and interpreting coefficients is the easy part. Being confident that you are explaining the world with any veracity is the hard part. It takes a lot of practice to become comfortable with the process, but it also takes a commitment to curiosity, a self-awareness about the process to avoid any aggregious types of p-hacking, and the willingness to test your assumptions.
Specification and The Sins of Regression
The formal statistical term for this process of selecting variables and their functional form for your model is “Specification”.
As we have previously discussed, typically you will go through the process of selecting variables that you believe capture your theory and allow you to test for important competing hypotheses.
After creating your baseline model you will likely want to explore the functional form of variables in your model to see if there are transformations that improve your model.
Throughout the process and in the final stages you will conduct sensitivity analysis and robustness checks to ensure that your results are not being biased or entirely driven by an outlier or the wrong functional form.
There are many subtle ways that bias can sneak into models other than omitted variables.
Review the following video on the Anscombe’s Quartet where four datasets produced identical regression models (coefficients and significance levels) but graphed have four different forms:
One clear lesson is to never rely entirely on model fit statistics reported by your statistical software. You need to visualize your data, check summary statistics to make sure variables seem plausible, and visualize your data as much as possible.
Many problems are subtle. For example, maybe you are very comfortable with the functional form of your policy variable and your model fit. What happens if you transform a control variable? Change the measure from counts to proportions or add a quadratic term? Do your inferences remain the same, or do they vary widely when you alter controls?
A good data scientist is always paranoid about problems in the data that are hard to see, especially when you want to use observational data to make consequential decisions, like whether or not to continue a multi-billion dollar federal program or mandate state-wide reductions in class size.
A Taxonomy of Specification Problems
In CPP 523/PAF 510 you were introduced to the Seven Sins of Regression - issues that commonly plague cross-sectional models and prevent us from using observational data for causal inference.
You can review the reading materials on these topics here: Seven Sins of Regression Resources
When working with US Census Data, it is particularly important to ensure that you understand the following specification problems:
- Variable skew
- Multicollinearity
- Outliers
- Group Bias
Variable Skew
It is common to have data that is not normally distributed, especially in the social sciences. Variables that have a high level of skew or kurtosis can cause problems with inferential statistics by biasing slopes or inflating standard errors.
There are formal tests for skew, but the easiest way to diagnose the problem is by visualizing distributions using histograms or box and whisker plots.
Let’s take a look at potential issues with skew in Poverty and Vacancy Rates and how we can resolve this by using logged values for percentages:
Poverty Rate
Code
# Example code to log a poverty rate
log.pov.rate <- log10( d$pov.rate + 1 )
Vacancy Percentage
Code
# Example code to log vacancy percentage
log.p.vacant <- log10( d$p.vacant + 1 )
We know that bell-shaped curves are typically preferable, but it’s not clear how that helps when looking at a single variable. The issues are clearer when looking at the relationship between two skewed variables:
Variable Skew and Log Transformations
What exactly does a log transformation do again? Technically, they convert a one-unit change in a variable from a level to a rate of growth. You can read the more precise technical definition here.
But the real intuition comes from understanding the origins of skew. There are many processes in natural and social systems that are governed by exponential, not linear, growth. As the systems progress and differences compound, each additional unit of time results in larger changes in the system.
We can think of another example that originates from diminishing marginal returns. How much does it cost to increase the quality of a bottle of wine? Vineyards can use things like better grapes, better fertilizer, better viticulture, and better land to improve the quality of their product. Producers will do the cheapest things first, maybe buy new equipment to harvest and press grapes. Planting better grapes is expensive because it costs money for the vine stocks and grapes from newly-planted vines are not used in wine-making for at least a year. But they are fixed cost investments that can be amortized over time. Hiring a better vintner to oversee the production of wine will have a big impact on quality, but requires the ongoing cost of paying a large salary to a highly-paid specialist. When all of these options have been exhausted, the last step to improving wine quality is acquiring better land in a region amenable to grapes. This land, however, is very expensive.
As a result, if you ever pay attention to the price of wine at the store you will see that there are what appear to be several jumps in price. The cheapest table wine you can find costs around $3. It’s not great wine, so if you want to upgrade to a decent table wine the prices cluster around $6. If you are bringing a bottle to dinner at a friend’s house and you want something slightly nicer the price is about $12. If you want to splurge for a holiday celebration you will find the next step up in class clusters around $25, and after that $50.
Do you see the pattern here? For each additional unit increase in quality the price doubles. It is an exponential scale. When you are producing cheap wine you can spend a small amount of money to get better equipment to improve quality by one point on this five point scale. The next step up in quality is more costly. And the step after that requires even more capital.
Consequently, if you look at data on wine prices you will find a skewed distribution with the market dominated by inexpensive wine and more limited selection in each additional quality traunch (Source-AC-Nielsen):
If we wanted to conduct a study on the relationship between wine price and customer satisfaction (spoiler alert, the relationship is nebulous) we would introduce specification bias by trying to model quality as a linear function of price.
Alternatively, if we take into account that the relationship between price and quality might not be linear and knowing that price is a skewed variable we can adjust our hypothesis and specification accordingly. It’s not that price doesn’t matter (as the article in the previous paragraph suggests) but we need a better specification to model the relationship. If we transform price using a log scale the relationship becomes clear.
In the regular levels data the relationship between price and satisfaction is very strong up until $20, then it weakens considerably. In the model where price has been converted to a log scale the relationship is a lot cleaner and the model is a better fit, which will results in smaller standard errors and a higher likelihood of finding results that support our theorized relationship between price and quality.
Addressing Variable Skew in Census Data:
Returning to our census variables, when we look at the relationship between variables in the scatterplot we see that a lot of the data clusters in the lower left hand corner of the scatterplots, which is a sign of skew:
After applying log transformations note that the bivariate correlations increase except for relationship between MHV (mhv.growth) and vacancy rates (p.vacant):
The correlation between the transformed version of median home value change and vacancy rates falls, but is that a bad thing? The non-transformed version contains a statistically-significant correlation, but take a look at the scatterplot:
It is likely an inflated correlation because of the handful of outliers. Does the graph look familiar? Recall the plot on the right from Anscombe’s Quartet:
So fixing skew made the correlation weaker, but represents a case of mitigating a spurious correlation that was caused by outliers in the data.
Recall from Lab 04 that we can also explore the clusters of variables within our dataset of interest to identify whether a trend holds without influential outliers or if it truly is non-existent such as the example above where there would be no trend without the outlier in the upper right corner.
Multicollinearity
Recall that one way to think about a control variable that serves as a competing hypothesis is a variable that deletes “problematic” variance that might be the true explanation for the program change, reducing the variance available for the policy variable to the components that are independent (uncorrelated) with the controls.
Multicollinearity occurs when two variables in the model are highly correlated. If both are included in the model at the same time they can essentially cancel each other out. Standard errors will increase and slopes typically shift toward the null. As a result, even if they pair of variables are individually significant and have large effect sizes, they will have small slopes and lack statistical significance when included together.
Multicollinearity is common when there are multiple variables that represent different measures of the same underlying construct in the same dataset. In studies of firms, for example, revenue, firm expenses, and number of employees are all measures of firm size and thus will be highly correlated. Including them all in the model will results in none of them having large or significant slopes.
This is important specifically when you need to interpret a regression coefficient. In the firm example, perhaps you are interested in whether or not companies that use a specific HR practice are more profitable, controlling for size and industry. In this case including all of the size controls together would not hurt because you are not interpreting the control in your analysis.
In our case, perhaps we are interested in whether economically distressed tracts are likely to grow faster than tracts that have already gentrified because of rent gap theory (urban core neighborhoods with lots condemned houses and vacant lots are easier to use for large-scale projects since land is cheap, so developers would target these communities instead of stable neighborhoods where land is expensive and zoning more complicated). If we include multiple measures of distress (unemployment rate, poverty rate, high school drop-out rate) and multiple measures of stability (number of people working in professional industries, percentage with college degrees, rates of divorce) then the high correlation between any set of variables can mute the slopes, making it hard to interpret the results.
Take this example where we try to include both poverty rate and unemployment. A sign of multicollinearity is when both coefficients get smaller and the standard errors get bigger when the two variables are included in the same model (model 3 here):
Code
reg.data <- d
reg.data$mhv.growth[ reg.data$mhv.growth > 200 ] <- NA
reg.data$p.unemp <- log10( reg.data$p.unemp + 1 )
reg.data$p.vacant <- log10( reg.data$p.vacant + 1 )
reg.data$pov.rate <- log10( reg.data$pov.rate + 1 )
m1 <- lm( mhv.growth ~ pov.rate, data=reg.data )
m2 <- lm( mhv.growth ~ p.unemp, data=reg.data )
m3 <- lm( mhv.growth ~ pov.rate + p.unemp, data=reg.data )
stargazer( m1, m2, m3,
type=S_TYPE, digits=2,
omit.stat = c("rsq","f") )
Note that:
- coefficient sizes are smaller
- standard errors are larger
- R-square did not increase
- The SER did not decrease
*The standard error of the regression (SER) is the “average distance” of each data point to the regression line, so a measure of how accurate the model is when used for prediction. Similar to R-square, it is a measure of model fit.
This suggests that these variables contain redundant information and including them both together causes them to cancel each other out.
If these were simply control variables it would not harm your model, per se. But if these are competing hypotheses and thus you are interpretting the magnitude of effects relative to the policy variable you have now muted part of their effect, making them look less important. If they are highly correlated they can cancel each other out almost completely in your model.
When you are worried about multicollinearity:
Check your correlation matrix for independent variables that are highly correlated. Ask yourself, are these two distinct constructs, or two measures of the same construct?
Run the model with each of the suspect variables separately and one with them all together like the example above. This will show you how much the estimate of their impact changes when all are included together.
If you have high multicollinearity and you want to interpret the variables then:
Select which variable you believe best captures the theory / hypothesis or the one you belive to be the best measure of the underlying construct.
Combine the variables into a single scale or index. Use factor analysis (preferred option) or normalize variables and select a set that generates a reliable metric like you have done in a previous lab.
Group Structure
When building models it is important to think about whether there are groups in the data that would influence the outcome. You will cover this topic in the lecture on Fixed Effect Models in CPP 525/PAF 512.
In this domain we know that neighborhoods belong to cities, and cities each have distinctive histories, political structures, economies, geographies and climates. Some cities may be thriving over the study period and experience population growth and strong economic expansion while others are in decline, losing population and enduring shrinking economies. It is also important to consider there may be universal difficulties for a particular region (for example, all US cities were impacted by the 2001 and 2008 economic crises) or globally (for example the entire world has suffered economic impacts following the 2020 COVID-19 Pandemic).
There are broad city-level processes that unfold over decades. No individual census tract within a city will be isolated from these trends occurring metro-wide. As a result we would expect the overall health of the city to impact the home values in each tract.
Therefore, when evaluating city-level changes it is important to account for metro-level effects. Similarly, when evaluating a particular program, all eligible participants for the program should be included in the model.
This is why in Lab 04 we created a flag for all eligible NMTC and LIHTC census tracts and we will employ this in our data filtering for this lab.
Evaluation Methodology Selection
Once we have completed our specification step and ensured that we have accounted for potential bias in our variables, we can embark on selecting the appropriate methodology to evaluate our model and determine whether our outcomes are significant.
We have 7 primary regression tools for evaluation:
- Interrupted Time Series
- Difference-in-Difference Models
- Instrumental Variables
- Fixed Effect Models
- Regression Discontinuity Design
- Logistic Regression
- Matching
Let’s evaluate each of these methodologies to determine which would be best for our analysis:
Interrupted Time Series
This methodology evaluates program outcomes for an entire population over time.
While we have two time periods of data (2010 and 2020) for before and after our interventions, our entire population that is eligible for the programs did not actually receive the intervention. Therefore we can not simply look at the before and after periods and measure outcomes.
Difference-in-Difference (Diff-In-Diff) Models
This methodology evaluates data outcomes for a subset of a population that enrolled in a program versus population members that did not participate and compares their before and after outcomes.
For this study, we have two time periods of data (2010 and 2020) and we have two subsets of data (program participants and non-participants).
Therefore, we can utilize this methodology for analysis.
Instrumental Variables
This methodology is utilized when we believe we have an omitted variable that is difficult to measure, but impacts the outcome of our study.
For example, if we are interested in studying the relationship between wages and education, but we know that individual ability is also a factor in salary increases we can utilize this methodology to control for the “unmeasurable” impact of ability.
For our current study, we do not have any “unmeasurable” variables. We have defined variables for social vulnerability, home values, and income.
Therefore, we do not need this methodology.
Fixed Effects Models
This methodology measures changes over time within groups and between groups where the groups remain constant over the time period.
This is similar to the diff-in-diff model, however this methodology works best with multiple time periods. When there are only two periods, it works similarly to the diff-in-diff model, thus since the diff-in-diff model is better tailored for two time periods, we can utilize that model.
Regression Discontinuity Design
As stated in the Program Evaluation for Public Service textbook:
The regression discontinuity model was created to deal with one very specific type of selection - cases where people have to qualify for the program, and the criteria for qualification is a measure that is highly correlated with performance. Some threshold is created and all people that score above the threshold are accepted into the program, and all people below are not allowed to participate, or vice-versa.”
While there are qualification standards for both the NMTC and LIHTC programs (see Lab 04), all of the census tracts eligible for the NMTC and LIHTC programs do not participate in the program. Therefore, we can not use this methodology.
Logistic Regression
Logistic regression is utilized when our outcome variable is binary (yes/no, 1/0). For example, if we simply wanted to ask if social vulnerability decreased (by however we choose to measure a decrease), if home values increased, or if income increased, then we could employ this methodology.
However, since we have continuous variables, we need to use a linear regression model.
Matching
Our final option is to utilize a Matched model for regression. The primary element of this strategy is to filter our data set to find controls that closely match our program participants on selected characteristics.
In our study for example, we could use a matching algorithm to find non-participant census tracts that closely mirror our treated census tracts on the number of SVI flags, the percentage of poverty, or any other characteristics of interest.
In fact, we could even combine this matching technique with another evaluation tool such as diff-in-diff.
Since we already have filtered our data set to create a reasonably comparable control set (census tracts that are eligible for the NMTC and LIHTC programs, but did not receive an intervention), we do not have to take this additional step. However, it is helpful to keep in mind, though, that if we suspect that eligible tracts that participated in the program are different from eligible tracts that did not participate, we could always return to this methodology to further explore our data.
Diff-In-Diff Model
Now that we have selected the Diff-In-Diff model as our best methodology, let’s take a look at two short videos that show this methodology in practice:
As explained in the videos above, the diff-in-diff model provides us with a relatively easy fix to the challenge of measuring changes due to an intervention over two different points in time.
We will explore this further in the lab.
Slopegraphs
Now that we finally have our variables and evaluation methodology determined, the last thing we need to do is identify the best data visualization technique to readily present our findings to a non-technical audience.
While there are a few different ways that we can visualize the outcomes of our regression model, in this lab we will utilize slopegraphs. We will walk through the code of how to create a slopegraph in the lab, but you can watch the following video on the difference between traditional line graphs and slopegraphs:
Additional Readings
If you would like to review additional resources on this week’s topics, feel free to explore the followink links:
US Census API Guide:
CDC SVI Documentation:
2010: https://www.atsdr.cdc.gov/placeandhealth/svi/documentation/pdf/SVI-2010-Documentation-H.pdf
2020: https://www.atsdr.cdc.gov/placeandhealth/svi/documentation/pdf/SVI2020Documentation_08.05.22.pdf
Readings on home values as an indicator of community well-being:
Rey-Blanco, D., Zofío, J. L., & González-Arias, J. (2024). Improving hedonic housing price models by integrating optimal accessibility indices into regression and random forest analyses. Expert Systems with Applications, 235, 121059-. https://doi.org/10.1016/j.eswa.2023.121059 download
Surowiecki, J. (2005). The wisdom of crowds: Why the many are smarter than the few and how collective wisdom shapes business, economies, societies, and nations. Random House.
Zabel, J. (2015). The hedonic model and the housing cycle. Regional Science and Urban Economics, 54, 74–86. https://doi.org/10.1016/j.regsciurbeco.2015.07.005 download
Readings on FHFA House Price Index:
FHFA House Price Index: https://www.fhfa.gov/DataTools/Downloads/Pages/House-Price-Index.aspx
Rafter, D. (2023). House Price Index (HPI): Defined And Explained https://www.quickenloans.com/learn/house-price-index
Jayachandran, A. (2024). What Is House Price Index (HPI)? https://www.wallstreetmojo.com/house-price-index-hpi/
Zanzalari, D. (2022). What Is the House Price Index (HPI)? https://www.thebalancemoney.com/what-is-the-house-price-index-hpi-5215814
Green, D. (2024). What is the House Price Index? https://homebuyer.com/learn/house-price-index
Bogin, Doerner, & Larson (2016). Working Paper 16-01: Local House Price Dynamics: New Indices and Stylized Facts https://www.fhfa.gov/PolicyProgramsResearch/Research/Pages/wp1601.aspx
Contat & Larson (2023). Working Paper 21-01: A Flexible Method of House Price Index Construction using Repeat-Sales Aggregates https://www.fhfa.gov/PolicyProgramsResearch/Research/Pages/wp2101.aspx
Readings on income as an indicator of community well-being:
Killingsworth, M. A. (2021). Experienced well-being rises with income, even above $75,000 per year. Proceedings of the National Academy of Sciences - PNAS, 118(4). https://doi.org/10.1073/pnas.2016976118 download
National Center for Chronic Disease Prevention and Health Promotion (US) Office on Smoking and Health. Community Health and Economic Prosperity: Engaging Businesses as Stewards and Stakeholders—A Report of the Surgeon General [Internet]. Washington (DC): US Department of Health and Human Services; 2021 Jan. CHAPTER 2, How Neighborhoods Shape Health and Opportunity. Available from: https://www.ncbi.nlm.nih.gov/books/NBK568862/
University of Wisconsin Population Health Institute County Health Rankings (2023). https://www.countyhealthrankings.org/explore-health-rankings/county-health-rankings-model/health-factors/social-economic-factors/income/median-household-income?year=2023
Readings on 7 Sins of Regression:
Lecy, J. (2020). Seven Sins of Regression https://github.com/Watts-College/paf-510-template/blob/main/lectures/p-10-seven-sins-of-regression.pdf
Normality Assumptions: https://library.virginia.edu/data/articles/normality-assumption
-
Variable Skew and Kurtosis:
- https://statisticsbyjim.com/basics/skewed-distribution/
- https://statisticsbyjim.com/hypothesis-testing/identify-distribution-data/
- https://www.datacamp.com/tutorial/understanding-skewness-and-kurtosis
- https://imaging.mrc-cbu.cam.ac.uk/statswiki/FAQ/Simon
- https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6350423/
-
Lognormal transformations for skewed data:
-
Multicollinearity:
-
Group Structure/Fixed Effects:
Readings on Diff-In-Diff Models:
Program Evaluation for Public Service Textbook: https://ds4ps.org/pe4ps-textbook/docs/p-030-diff-in-diff.html
Columbia University Mailman School of Public Health: https://www.publichealth.columbia.edu/research/population-health-methods/difference-difference-estimation
The World Bank: https://dimewiki.worldbank.org/Difference-in-Differences
Huntington-Klein, N. (2023). The Effect Textbook: https://theeffectbook.net/ch-DifferenceinDifference.html
Zeldow & Hatfield (2019): https://diff.healthpolicydatascience.org/
Date, S. (2022): (note the example code is written in Python instead of R but the article provides a good example of this model in practice) https://timeseriesreasoning.com/contents/introduction-to-the-difference-in-differences-regression-model/
Kaiser Permanente Study Example: (note the example code is written in SAS instead of R but the articles provide a good example of this model in practice)
https://support.sas.com/resources/papers/proceedings20/4674-2020.pdf
Readings on slopecharts/graphs:
- https://dataviz.unhcr.org/tools/r/r_slope_chart.html
- https://seeingdata.org/taketime/inside-the-chart-slope-graph/
- https://datavizproject.com/data-type/slope-chart/
- https://www.storytellingwithdata.com/blog/2020/7/27/what-is-a-slopegraph
Note: This lab has been updated from a previous version in CPP 528 and this introduction includes sections written by Prof. Jesse Lecy, PhD and Instructor Cristian Nuno, M.S.: https://watts-college.github.io/cpp-528-template/labs/lab-04-tutorial.html#hedonic-housing-models
Library
To begin, we will need to install a few new packages and load some packages that we’ve previously installed:
Code
utils::install.packages("rio")
utils::install.packages("unhcrthemes")
utils::install.packages("ggrepel")
utils::install.packages("rcompanion")
utils::install.packages("ggpubr")
utils::install.packages("moments")
utils::install.packages("tinytable")
utils::install.packages("modelsummary")
Code
# Load packages
library(here) # relative filepaths for reproducibility
library(rio) # read excel file from URL
library(tidyverse) # data wrangling
library(stringi) # string data wrangling
library(tidycensus) # US census data
library(ggplot2) # data visualization
library(kableExtra) # table formatting
library(scales) # palette and number formatting
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
Functions and Constant Variables
Next we need to import our functions and variables from our project_data_steps.R file. Remember, your file should have your initials at the end to avoid confusion with your teammates. For example, in a shared repo my file name would be project_data_steps_CS.R
.
Recall that we should use the here::here()
function for relative file paths. We also can use double colons ::
to indicate both the specific library and function name we want to use to avoid any overriding.
Import Functions
Create slopegraph plotting function
Code
slopegraph_plot <- function(df, status1_label, status2_label, title_label, subtitle_label) {
# Plot
ggplot(df, aes(
x = year,
y = outcome,
group = status
)) +
geom_line(
linewidth = 0.75,
color = "steelblue",
lineend = "round"
) +
geom_text_repel(
data = df %>%filter(year == 2020),
aes(label = paste0(status, ", ", outcome_label)),
size = 8 / .pt,
hjust = 0,
vjust = -.5,
direction = "y",
nudge_x = 0.3
) +
geom_point(
size = 2.5,
color = "steelblue"
) +
geom_text_repel(
data = df %>%filter(year == 2010) %>% filter(status == status1_label),
aes(label = outcome_label
),
size = 8 / .pt,
hjust = 0,
vjust = -1,
direction = "y",
nudge_x = -1
) +
geom_text_repel(
data = df %>%filter(year == 2010) %>% filter(status == status2_label),
aes(label = outcome_label
),
size = 8 / .pt,
hjust = 0,
vjust = -.5,
direction = "y",
nudge_x = -1
) +
labs(
title = title_label,
subtitle = subtitle_label
) +
scale_x_continuous(
breaks = c(2010, 2020),
limits = c(2005, 2025)
) +
theme_unhcr(
grid = "X",
axis = FALSE,
axis_title = FALSE,
axis_text = "X"
)
}
Import API Key
Code
# Load API key, assign to TidyCensus Package
source(here::here("analysis/password.R"))
census_api_key(census_api_key)
To install your API key for use in future sessions, run this function with `install = TRUE`.
Data
Next, recall that we can load up our data sets and process them with our functions to create data sets on a national and divisional level for 2010 and 2020.
Note that we are loading up the data we saved in Lab 04 with our NMTC and LIHTC flags in addition to our divisional data:
Code
# Load NMTC AND LIHTC data sets
svi_divisional_nmtc <- readRDS(here::here(paste0("data/wrangling/", str_replace_all(census_division, " ", "_"), "_svi_divisional_nmtc.rds")))
svi_national_nmtc <- readRDS(here::here(paste0("data/wrangling/", str_replace_all(census_division, " ", "_"), "_svi_national_nmtc.rds")))
svi_divisional_lihtc <- readRDS(here::here(paste0("data/wrangling/", str_replace_all(census_division, " ", "_"), "_svi_divisional_lihtc.rds")))
svi_national_lihtc <- readRDS(here::here(paste0("data/wrangling/", str_replace_all(census_division, " ", "_"), "_svi_national_lihtc.rds")))
Code
colnames(svi_divisional_lihtc)[str_detect(colnames(svi_divisional_lihtc), "^E_")]
[1] "E_TOTPOP_10" "E_HU_10" "E_HH_10" "E_POV150_10"
[5] "E_UNEMP_10" "E_HBURD_OWN_10" "E_HBURD_RENT_10" "E_HBURD_10"
[9] "E_NOHSDP_10" "E_UNINSUR_12" "E_AGE65_10" "E_AGE17_10"
[13] "E_DISABL_12" "E_SNGPNT_10" "E_LIMENG_10" "E_MINRTY_10"
[17] "E_STRHU_10" "E_MUNIT_10" "E_MOBILE_10" "E_CROWD_10"
[21] "E_NOVEH_10" "E_GROUPQ_10" "E_TOTPOP_20" "E_HU_20"
[25] "E_HH_20" "E_POV150_20" "E_UNEMP_20" "E_HBURD_OWN_20"
[29] "E_HBURD_RENT_20" "E_HBURD_20" "E_NOHSDP_20" "E_UNINSUR_20"
[33] "E_AGE65_20" "E_AGE17_20" "E_DISABL_20" "E_SNGPNT_20"
[37] "E_LIMENG_20" "E_MINRTY_20" "E_STRHU_20" "E_MUNIT_20"
[41] "E_MOBILE_20" "E_CROWD_20" "E_NOVEH_20" "E_GROUPQ_20"
View NMTC Data
Code
svi_divisional_nmtc %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | FIPS_st | FIPS_county | FIPS_tract | state | state_name | county | region_number | region | division_number | division | E_TOTPOP_10 | E_HU_10 | E_HH_10 | E_POV150_10 | ET_POVSTATUS_10 | EP_POV150_10 | EPL_POV150_10 | F_POV150_10 | E_UNEMP_10 | ET_EMPSTATUS_10 | EP_UNEMP_10 | EPL_UNEMP_10 | F_UNEMP_10 | E_HBURD_OWN_10 | ET_HOUSINGCOST_OWN_10 | EP_HBURD_OWN_10 | EPL_HBURD_OWN_10 | F_HBURD_OWN_10 | E_HBURD_RENT_10 | ET_HOUSINGCOST_RENT_10 | EP_HBURD_RENT_10 | EPL_HBURD_RENT_10 | F_HBURD_RENT_10 | E_HBURD_10 | ET_HOUSINGCOST_10 | EP_HBURD_10 | EPL_HBURD_10 | F_HBURD_10 | E_NOHSDP_10 | ET_EDSTATUS_10 | EP_NOHSDP_10 | EPL_NOHSDP_10 | F_NOHSDP_10 | E_UNINSUR_12 | ET_INSURSTATUS_12 | EP_UNINSUR_12 | EPL_UNINSUR_12 | F_UNINSUR_12 | E_AGE65_10 | EP_AGE65_10 | EPL_AGE65_10 | F_AGE65_10 | E_AGE17_10 | EP_AGE17_10 | EPL_AGE17_10 | F_AGE17_10 | E_DISABL_12 | ET_DISABLSTATUS_12 | EP_DISABL_12 | EPL_DISABL_12 | F_DISABL_12 | E_SNGPNT_10 | ET_FAMILIES_10 | EP_SNGPNT_10 | EPL_SNGPNT_10 | F_SNGPNT_10 | E_LIMENG_10 | ET_POPAGE5UP_10 | EP_LIMENG_10 | EPL_LIMENG_10 | F_LIMENG_10 | E_MINRTY_10 | ET_POPETHRACE_10 | EP_MINRTY_10 | EPL_MINRTY_10 | F_MINRTY_10 | E_STRHU_10 | E_MUNIT_10 | EP_MUNIT_10 | EPL_MUNIT_10 | F_MUNIT_10 | E_MOBILE_10 | EP_MOBILE_10 | EPL_MOBILE_10 | F_MOBILE_10 | E_CROWD_10 | ET_OCCUPANTS_10 | EP_CROWD_10 | EPL_CROWD_10 | F_CROWD_10 | E_NOVEH_10 | ET_KNOWNVEH_10 | EP_NOVEH_10 | EPL_NOVEH_10 | F_NOVEH_10 | E_GROUPQ_10 | ET_HHTYPE_10 | EP_GROUPQ_10 | EPL_GROUPQ_10 | F_GROUPQ_10 | SPL_THEME1_10 | RPL_THEME1_10 | F_THEME1_10 | SPL_THEME2_10 | RPL_THEME2_10 | F_THEME2_10 | SPL_THEME3_10 | RPL_THEME3_10 | F_THEME3_10 | SPL_THEME4_10 | RPL_THEME4_10 | F_THEME4_10 | SPL_THEMES_10 | RPL_THEMES_10 | F_TOTAL_10 | E_TOTPOP_20 | E_HU_20 | E_HH_20 | E_POV150_20 | ET_POVSTATUS_20 | EP_POV150_20 | EPL_POV150_20 | F_POV150_20 | E_UNEMP_20 | ET_EMPSTATUS_20 | EP_UNEMP_20 | EPL_UNEMP_20 | F_UNEMP_20 | E_HBURD_OWN_20 | ET_HOUSINGCOST_OWN_20 | EP_HBURD_OWN_20 | EPL_HBURD_OWN_20 | F_HBURD_OWN_20 | E_HBURD_RENT_20 | ET_HOUSINGCOST_RENT_20 | EP_HBURD_RENT_20 | EPL_HBURD_RENT_20 | F_HBURD_RENT_20 | E_HBURD_20 | ET_HOUSINGCOST_20 | EP_HBURD_20 | EPL_HBURD_20 | F_HBURD_20 | E_NOHSDP_20 | ET_EDSTATUS_20 | EP_NOHSDP_20 | EPL_NOHSDP_20 | F_NOHSDP_20 | E_UNINSUR_20 | ET_INSURSTATUS_20 | EP_UNINSUR_20 | EPL_UNINSUR_20 | F_UNINSUR_20 | E_AGE65_20 | EP_AGE65_20 | EPL_AGE65_20 | F_AGE65_20 | E_AGE17_20 | EP_AGE17_20 | EPL_AGE17_20 | F_AGE17_20 | E_DISABL_20 | ET_DISABLSTATUS_20 | EP_DISABL_20 | EPL_DISABL_20 | F_DISABL_20 | E_SNGPNT_20 | ET_FAMILIES_20 | EP_SNGPNT_20 | EPL_SNGPNT_20 | F_SNGPNT_20 | E_LIMENG_20 | ET_POPAGE5UP_20 | EP_LIMENG_20 | EPL_LIMENG_20 | F_LIMENG_20 | E_MINRTY_20 | ET_POPETHRACE_20 | EP_MINRTY_20 | EPL_MINRTY_20 | F_MINRTY_20 | E_STRHU_20 | E_MUNIT_20 | EP_MUNIT_20 | EPL_MUNIT_20 | F_MUNIT_20 | E_MOBILE_20 | EP_MOBILE_20 | EPL_MOBILE_20 | F_MOBILE_20 | E_CROWD_20 | ET_OCCUPANTS_20 | EP_CROWD_20 | EPL_CROWD_20 | F_CROWD_20 | E_NOVEH_20 | ET_KNOWNVEH_20 | EP_NOVEH_20 | EPL_NOVEH_20 | F_NOVEH_20 | E_GROUPQ_20 | ET_HHTYPE_20 | EP_GROUPQ_20 | EPL_GROUPQ_20 | F_GROUPQ_20 | SPL_THEME1_20 | RPL_THEME1_20 | F_THEME1_20 | SPL_THEME2_20 | RPL_THEME2_20 | F_THEME2_20 | SPL_THEME3_20 | RPL_THEME3_20 | F_THEME3_20 | SPL_THEME4_20 | RPL_THEME4_20 | F_THEME4_20 | SPL_THEMES_20 | RPL_THEMES_20 | F_TOTAL_20 | nmtc_eligibility | pre10_nmtc_project_cnt | pre10_nmtc_dollars | pre10_nmtc_dollars_formatted | post10_nmtc_project_cnt | post10_nmtc_dollars | post10_nmtc_dollars_formatted | nmtc_flag |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
34001000100 | 34 | 001 | 000100 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 2907 | 1088 | 983 | 1127 | 2907 | 38.76849 | 0.8482 | 1 | 144 | 1433 | 10.048849 | 0.7544 | 1 | 280 | 435 | 64.36782 | 0.9529 | 1 | 204 | 548 | 37.22628 | 0.2998 | 0 | 484 | 983 | 49.23703 | 0.7813 | 1 | 468 | 1759 | 26.60603 | 0.8634 | 1 | 532 | 2543 | 20.92017 | 0.8978 | 1 | 250 | 8.599931 | 0.1777 | 0 | 944 | 32.47334 | 0.94170 | 1 | 186 | 1851 | 10.04862 | 0.2706 | 0 | 266 | 678 | 39.233038 | 0.8981 | 1 | 177 | 2611 | 6.779012 | 0.7778 | 1 | 1928 | 2907 | 66.32267 | 0.7743 | 1 | 1088 | 113 | 10.386029 | 0.6229 | 0 | 9 | 0.8272059 | 0.7223 | 0 | 80 | 983 | 8.138352 | 0.8657 | 1 | 265 | 983 | 26.95829 | 0.7354 | 0 | 0 | 2907 | 0 | 0.3512 | 0 | 4.1451 | 0.8935 | 5 | 3.06590 | 0.7944 | 3 | 0.7743 | 0.7667 | 1 | 3.2975 | 0.8414 | 1 | 11.28280 | 0.8862 | 10 | 2157 | 941 | 784 | 1182 | 2157 | 54.79833 | 0.9571 | 1 | 242 | 1058 | 22.873346 | 0.9922 | 1 | 215 | 342 | 62.86550 | 0.9780 | 1 | 316 | 442 | 71.49321 | 0.9481 | 1 | 531 | 784 | 67.72959 | 0.9893 | 1 | 396 | 1274 | 31.08320 | 0.9497 | 1 | 266 | 2157 | 12.331943 | 0.9041 | 1 | 185 | 8.576727 | 0.09430 | 0 | 552 | 25.59110 | 0.8128 | 1 | 297 | 1605 | 18.504673 | 0.74880 | 0 | 83 | 510 | 16.27451 | 0.6090 | 0 | 251 | 2020 | 12.425743 | 0.87100 | 1 | 1852 | 2157 | 85.85999 | 0.8476 | 1 | 941 | 118 | 12.5398512 | 0.6385 | 0 | 0 | 0.00000 | 0.3216 | 0 | 67 | 784 | 8.545918 | 0.8657 | 1 | 212 | 784 | 27.04082 | 0.7502 | 1 | 0 | 2157 | 0.0000000 | 0.1517 | 0 | 4.7924 | 0.9850 | 5 | 3.13590 | 0.8217 | 2 | 0.8476 | 0.8400 | 1 | 2.7277 | 0.6085 | 2 | 11.50360 | 0.9104 | 10 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 |
34001000200 | 34 | 001 | 000200 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 3189 | 2217 | 1473 | 519 | 3189 | 16.27469 | 0.4806 | 0 | 109 | 1558 | 6.996149 | 0.5179 | 0 | 573 | 955 | 60.00000 | 0.9323 | 1 | 199 | 518 | 38.41699 | 0.3261 | 0 | 772 | 1473 | 52.41005 | 0.8418 | 1 | 405 | 2579 | 15.70376 | 0.6491 | 0 | 484 | 3547 | 13.64533 | 0.7154 | 0 | 847 | 26.560050 | 0.9629 | 1 | 436 | 13.67200 | 0.08181 | 0 | 608 | 3005 | 20.23295 | 0.8466 | 1 | 42 | 857 | 4.900817 | 0.1204 | 0 | 422 | 3072 | 13.736979 | 0.8799 | 1 | 1792 | 3189 | 56.19316 | 0.7390 | 0 | 2217 | 901 | 40.640505 | 0.8693 | 1 | 0 | 0.0000000 | 0.3251 | 0 | 48 | 1473 | 3.258656 | 0.7064 | 0 | 250 | 1473 | 16.97217 | 0.6444 | 0 | 0 | 3189 | 0 | 0.3512 | 0 | 3.2048 | 0.6963 | 1 | 2.89161 | 0.7231 | 3 | 0.7390 | 0.7317 | 0 | 2.8964 | 0.6887 | 1 | 9.73181 | 0.7340 | 5 | 3510 | 2046 | 1353 | 1021 | 3510 | 29.08832 | 0.7682 | 1 | 121 | 1852 | 6.533477 | 0.6717 | 0 | 343 | 696 | 49.28161 | 0.9273 | 1 | 416 | 657 | 63.31811 | 0.8696 | 1 | 759 | 1353 | 56.09756 | 0.9321 | 1 | 553 | 2338 | 23.65269 | 0.8871 | 1 | 354 | 3510 | 10.085470 | 0.8530 | 1 | 643 | 18.319088 | 0.60310 | 0 | 1002 | 28.54701 | 0.9055 | 1 | 450 | 2508 | 17.942584 | 0.72330 | 0 | 237 | 786 | 30.15267 | 0.8539 | 1 | 534 | 3375 | 15.822222 | 0.90620 | 1 | 2534 | 3510 | 72.19373 | 0.7818 | 1 | 2046 | 906 | 44.2815249 | 0.8690 | 1 | 0 | 0.00000 | 0.3216 | 0 | 119 | 1353 | 8.795270 | 0.8711 | 1 | 324 | 1353 | 23.94678 | 0.7255 | 0 | 0 | 3510 | 0.0000000 | 0.1517 | 0 | 4.1121 | 0.9003 | 4 | 3.99200 | 0.9781 | 3 | 0.7818 | 0.7747 | 1 | 2.9389 | 0.7011 | 2 | 11.82480 | 0.9310 | 10 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 |
34001000300 | 34 | 001 | 000300 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 3997 | 1823 | 1357 | 1401 | 3968 | 35.30746 | 0.8164 | 1 | 382 | 2238 | 17.068811 | 0.9376 | 1 | 176 | 329 | 53.49544 | 0.8855 | 1 | 604 | 1028 | 58.75486 | 0.7947 | 1 | 780 | 1357 | 57.47973 | 0.9165 | 1 | 920 | 2677 | 34.36683 | 0.9346 | 1 | 1351 | 4149 | 32.56206 | 0.9811 | 1 | 314 | 7.855892 | 0.1437 | 0 | 937 | 23.44258 | 0.55900 | 0 | 319 | 3054 | 10.44532 | 0.3000 | 0 | 187 | 782 | 23.913044 | 0.7498 | 0 | 1080 | 3671 | 29.419777 | 0.9742 | 1 | 3357 | 3997 | 83.98799 | 0.8419 | 1 | 1823 | 363 | 19.912233 | 0.7535 | 1 | 0 | 0.0000000 | 0.3251 | 0 | 150 | 1357 | 11.053795 | 0.9136 | 1 | 651 | 1357 | 47.97347 | 0.8585 | 1 | 0 | 3997 | 0 | 0.3512 | 0 | 4.5862 | 0.9691 | 5 | 2.72670 | 0.6360 | 1 | 0.8419 | 0.8336 | 1 | 3.2019 | 0.8054 | 3 | 11.35670 | 0.8920 | 10 | 3801 | 1640 | 1226 | 1857 | 3801 | 48.85556 | 0.9333 | 1 | 226 | 1800 | 12.555556 | 0.9267 | 1 | 111 | 280 | 39.64286 | 0.8339 | 1 | 608 | 946 | 64.27061 | 0.8842 | 1 | 719 | 1226 | 58.64600 | 0.9528 | 1 | 650 | 2275 | 28.57143 | 0.9337 | 1 | 1027 | 3801 | 27.019206 | 0.9914 | 1 | 380 | 9.997369 | 0.14040 | 0 | 1223 | 32.17574 | 0.9607 | 1 | 219 | 2578 | 8.494957 | 0.15680 | 0 | 268 | 909 | 29.48295 | 0.8456 | 1 | 940 | 3400 | 27.647059 | 0.97280 | 1 | 3318 | 3801 | 87.29282 | 0.8579 | 1 | 1640 | 262 | 15.9756098 | 0.6917 | 0 | 0 | 0.00000 | 0.3216 | 0 | 124 | 1226 | 10.114192 | 0.8955 | 1 | 477 | 1226 | 38.90701 | 0.8258 | 1 | 0 | 3801 | 0.0000000 | 0.1517 | 0 | 4.7379 | 0.9829 | 5 | 3.07630 | 0.8013 | 3 | 0.8579 | 0.8501 | 1 | 2.8863 | 0.6781 | 2 | 11.55840 | 0.9150 | 11 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 |
34001000500 | 34 | 001 | 000500 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 3483 | 1241 | 1027 | 1938 | 3483 | 55.64169 | 0.9533 | 1 | 124 | 1630 | 7.607362 | 0.5830 | 0 | 227 | 446 | 50.89686 | 0.8549 | 1 | 478 | 581 | 82.27194 | 0.9799 | 1 | 705 | 1027 | 68.64654 | 0.9863 | 1 | 733 | 2077 | 35.29129 | 0.9396 | 1 | 727 | 3258 | 22.31430 | 0.9149 | 1 | 377 | 10.824002 | 0.3081 | 0 | 1055 | 30.28998 | 0.90140 | 1 | 268 | 2401 | 11.16202 | 0.3549 | 0 | 209 | 763 | 27.391874 | 0.7940 | 1 | 911 | 3077 | 29.606760 | 0.9746 | 1 | 3036 | 3483 | 87.16624 | 0.8550 | 1 | 1241 | 52 | 4.190169 | 0.4505 | 0 | 4 | 0.3223207 | 0.6567 | 0 | 113 | 1027 | 11.002921 | 0.9128 | 1 | 422 | 1027 | 41.09056 | 0.8250 | 1 | 0 | 3483 | 0 | 0.3512 | 0 | 4.3771 | 0.9379 | 4 | 3.33300 | 0.8766 | 3 | 0.8550 | 0.8467 | 1 | 3.1962 | 0.8026 | 2 | 11.76130 | 0.9229 | 10 | 3385 | 1185 | 945 | 1682 | 3364 | 50.00000 | 0.9391 | 1 | 72 | 1577 | 4.565631 | 0.4586 | 0 | 185 | 468 | 39.52991 | 0.8332 | 1 | 362 | 477 | 75.89099 | 0.9703 | 1 | 547 | 945 | 57.88360 | 0.9477 | 1 | 592 | 1983 | 29.85376 | 0.9422 | 1 | 738 | 3385 | 21.802068 | 0.9817 | 1 | 240 | 7.090103 | 0.05988 | 0 | 1129 | 33.35303 | 0.9689 | 1 | 135 | 2256 | 5.984043 | 0.04817 | 0 | 110 | 717 | 15.34170 | 0.5822 | 0 | 721 | 3076 | 23.439532 | 0.95690 | 1 | 3029 | 3385 | 89.48301 | 0.8727 | 1 | 1185 | 9 | 0.7594937 | 0.2382 | 0 | 0 | 0.00000 | 0.3216 | 0 | 103 | 945 | 10.899471 | 0.9072 | 1 | 263 | 945 | 27.83069 | 0.7560 | 1 | 0 | 3385 | 0.0000000 | 0.1517 | 0 | 4.2693 | 0.9283 | 4 | 2.61605 | 0.5709 | 2 | 0.8727 | 0.8648 | 1 | 2.3747 | 0.4357 | 2 | 10.13275 | 0.7921 | 9 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 |
34001001100 | 34 | 001 | 001100 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 2204 | 1204 | 1204 | 1185 | 2204 | 53.76588 | 0.9457 | 1 | 219 | 927 | 23.624596 | 0.9830 | 1 | 97 | 172 | 56.39535 | 0.9094 | 1 | 462 | 1032 | 44.76744 | 0.4746 | 0 | 559 | 1204 | 46.42857 | 0.7197 | 0 | 346 | 1440 | 24.02778 | 0.8306 | 1 | 469 | 1942 | 24.15036 | 0.9360 | 1 | 363 | 16.470054 | 0.7020 | 0 | 578 | 26.22505 | 0.74410 | 0 | 442 | 1558 | 28.36970 | 0.9675 | 1 | 247 | 396 | 62.373737 | 0.9898 | 1 | 104 | 2051 | 5.070697 | 0.7260 | 0 | 2118 | 2204 | 96.09800 | 0.9204 | 1 | 1204 | 570 | 47.342193 | 0.8858 | 1 | 0 | 0.0000000 | 0.3251 | 0 | 14 | 1204 | 1.162791 | 0.4877 | 0 | 817 | 1204 | 67.85714 | 0.9413 | 1 | 0 | 2204 | 0 | 0.3512 | 0 | 4.4150 | 0.9451 | 4 | 4.12940 | 0.9805 | 2 | 0.9204 | 0.9114 | 1 | 2.9911 | 0.7243 | 2 | 12.45590 | 0.9597 | 9 | 1950 | 1267 | 1096 | 1131 | 1950 | 58.00000 | 0.9678 | 1 | 66 | 706 | 9.348442 | 0.8395 | 1 | 42 | 101 | 41.58416 | 0.8612 | 1 | 309 | 995 | 31.05528 | 0.1959 | 0 | 351 | 1096 | 32.02555 | 0.4782 | 0 | 510 | 1379 | 36.98332 | 0.9763 | 1 | 155 | 1950 | 7.948718 | 0.7660 | 1 | 392 | 20.102564 | 0.69880 | 0 | 447 | 22.92308 | 0.6712 | 0 | 570 | 1503 | 37.924152 | 0.99200 | 1 | 143 | 374 | 38.23529 | 0.9167 | 1 | 109 | 1841 | 5.920695 | 0.74640 | 0 | 1909 | 1950 | 97.89744 | 0.9529 | 1 | 1267 | 479 | 37.8058406 | 0.8464 | 1 | 0 | 0.00000 | 0.3216 | 0 | 33 | 1096 | 3.010949 | 0.6446 | 0 | 743 | 1096 | 67.79197 | 0.9414 | 1 | 0 | 1950 | 0.0000000 | 0.1517 | 0 | 4.0278 | 0.8848 | 4 | 4.02510 | 0.9798 | 2 | 0.9529 | 0.9442 | 1 | 2.9057 | 0.6869 | 2 | 11.91150 | 0.9365 | 9 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 |
34001001300 | 34 | 001 | 001300 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 2153 | 1026 | 857 | 695 | 2153 | 32.28054 | 0.7840 | 1 | 266 | 1112 | 23.920863 | 0.9840 | 1 | 168 | 432 | 38.88889 | 0.6425 | 0 | 271 | 425 | 63.76471 | 0.8714 | 1 | 439 | 857 | 51.22520 | 0.8184 | 1 | 210 | 1471 | 14.27600 | 0.5989 | 0 | 463 | 2215 | 20.90293 | 0.8974 | 1 | 334 | 15.513237 | 0.6436 | 0 | 539 | 25.03484 | 0.66990 | 0 | 222 | 1687 | 13.15945 | 0.4984 | 0 | 265 | 608 | 43.585526 | 0.9249 | 1 | 92 | 1905 | 4.829396 | 0.7187 | 0 | 1993 | 2153 | 92.56851 | 0.8890 | 1 | 1026 | 147 | 14.327485 | 0.6885 | 0 | 0 | 0.0000000 | 0.3251 | 0 | 20 | 857 | 2.333722 | 0.6326 | 0 | 142 | 857 | 16.56943 | 0.6382 | 0 | 0 | 2153 | 0 | 0.3512 | 0 | 4.0827 | 0.8798 | 4 | 3.45550 | 0.9039 | 1 | 0.8890 | 0.8804 | 1 | 2.6356 | 0.5687 | 0 | 11.06280 | 0.8673 | 6 | 1632 | 917 | 770 | 591 | 1632 | 36.21324 | 0.8455 | 1 | 203 | 854 | 23.770492 | 0.9928 | 1 | 164 | 291 | 56.35739 | 0.9604 | 1 | 364 | 479 | 75.99165 | 0.9710 | 1 | 528 | 770 | 68.57143 | 0.9914 | 1 | 150 | 1056 | 14.20455 | 0.7232 | 0 | 97 | 1632 | 5.943627 | 0.6352 | 0 | 301 | 18.443628 | 0.60940 | 0 | 271 | 16.60539 | 0.2292 | 0 | 314 | 1361 | 23.071271 | 0.88960 | 1 | 148 | 410 | 36.09756 | 0.9025 | 1 | 0 | 1585 | 0.000000 | 0.06953 | 0 | 1512 | 1632 | 92.64706 | 0.8931 | 1 | 917 | 246 | 26.8266085 | 0.7912 | 1 | 16 | 1.74482 | 0.7855 | 1 | 0 | 770 | 0.000000 | 0.1194 | 0 | 219 | 770 | 28.44156 | 0.7606 | 1 | 14 | 1632 | 0.8578431 | 0.6722 | 0 | 4.1881 | 0.9131 | 3 | 2.70023 | 0.6211 | 2 | 0.8931 | 0.8850 | 1 | 3.1289 | 0.7740 | 3 | 10.91033 | 0.8638 | 9 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 |
Code
svi_national_nmtc %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | FIPS_st | FIPS_county | FIPS_tract | state | state_name | county | region_number | region | division_number | division | E_TOTPOP_10 | E_HU_10 | E_HH_10 | E_POV150_10 | ET_POVSTATUS_10 | EP_POV150_10 | EPL_POV150_10 | F_POV150_10 | E_UNEMP_10 | ET_EMPSTATUS_10 | EP_UNEMP_10 | EPL_UNEMP_10 | F_UNEMP_10 | E_HBURD_OWN_10 | ET_HOUSINGCOST_OWN_10 | EP_HBURD_OWN_10 | EPL_HBURD_OWN_10 | F_HBURD_OWN_10 | E_HBURD_RENT_10 | ET_HOUSINGCOST_RENT_10 | EP_HBURD_RENT_10 | EPL_HBURD_RENT_10 | F_HBURD_RENT_10 | E_HBURD_10 | ET_HOUSINGCOST_10 | EP_HBURD_10 | EPL_HBURD_10 | F_HBURD_10 | E_NOHSDP_10 | ET_EDSTATUS_10 | EP_NOHSDP_10 | EPL_NOHSDP_10 | F_NOHSDP_10 | E_UNINSUR_12 | ET_INSURSTATUS_12 | EP_UNINSUR_12 | EPL_UNINSUR_12 | F_UNINSUR_12 | E_AGE65_10 | EP_AGE65_10 | EPL_AGE65_10 | F_AGE65_10 | E_AGE17_10 | EP_AGE17_10 | EPL_AGE17_10 | F_AGE17_10 | E_DISABL_12 | ET_DISABLSTATUS_12 | EP_DISABL_12 | EPL_DISABL_12 | F_DISABL_12 | E_SNGPNT_10 | ET_FAMILIES_10 | EP_SNGPNT_10 | EPL_SNGPNT_10 | F_SNGPNT_10 | E_LIMENG_10 | ET_POPAGE5UP_10 | EP_LIMENG_10 | EPL_LIMENG_10 | F_LIMENG_10 | E_MINRTY_10 | ET_POPETHRACE_10 | EP_MINRTY_10 | EPL_MINRTY_10 | F_MINRTY_10 | E_STRHU_10 | E_MUNIT_10 | EP_MUNIT_10 | EPL_MUNIT_10 | F_MUNIT_10 | E_MOBILE_10 | EP_MOBILE_10 | EPL_MOBILE_10 | F_MOBILE_10 | E_CROWD_10 | ET_OCCUPANTS_10 | EP_CROWD_10 | EPL_CROWD_10 | F_CROWD_10 | E_NOVEH_10 | ET_KNOWNVEH_10 | EP_NOVEH_10 | EPL_NOVEH_10 | F_NOVEH_10 | E_GROUPQ_10 | ET_HHTYPE_10 | EP_GROUPQ_10 | EPL_GROUPQ_10 | F_GROUPQ_10 | SPL_THEME1_10 | RPL_THEME1_10 | F_THEME1_10 | SPL_THEME2_10 | RPL_THEME2_10 | F_THEME2_10 | SPL_THEME3_10 | RPL_THEME3_10 | F_THEME3_10 | SPL_THEME4_10 | RPL_THEME4_10 | F_THEME4_10 | SPL_THEMES_10 | RPL_THEMES_10 | F_TOTAL_10 | E_TOTPOP_20 | E_HU_20 | E_HH_20 | E_POV150_20 | ET_POVSTATUS_20 | EP_POV150_20 | EPL_POV150_20 | F_POV150_20 | E_UNEMP_20 | ET_EMPSTATUS_20 | EP_UNEMP_20 | EPL_UNEMP_20 | F_UNEMP_20 | E_HBURD_OWN_20 | ET_HOUSINGCOST_OWN_20 | EP_HBURD_OWN_20 | EPL_HBURD_OWN_20 | F_HBURD_OWN_20 | E_HBURD_RENT_20 | ET_HOUSINGCOST_RENT_20 | EP_HBURD_RENT_20 | EPL_HBURD_RENT_20 | F_HBURD_RENT_20 | E_HBURD_20 | ET_HOUSINGCOST_20 | EP_HBURD_20 | EPL_HBURD_20 | F_HBURD_20 | E_NOHSDP_20 | ET_EDSTATUS_20 | EP_NOHSDP_20 | EPL_NOHSDP_20 | F_NOHSDP_20 | E_UNINSUR_20 | ET_INSURSTATUS_20 | EP_UNINSUR_20 | EPL_UNINSUR_20 | F_UNINSUR_20 | E_AGE65_20 | EP_AGE65_20 | EPL_AGE65_20 | F_AGE65_20 | E_AGE17_20 | EP_AGE17_20 | EPL_AGE17_20 | F_AGE17_20 | E_DISABL_20 | ET_DISABLSTATUS_20 | EP_DISABL_20 | EPL_DISABL_20 | F_DISABL_20 | E_SNGPNT_20 | ET_FAMILIES_20 | EP_SNGPNT_20 | EPL_SNGPNT_20 | F_SNGPNT_20 | E_LIMENG_20 | ET_POPAGE5UP_20 | EP_LIMENG_20 | EPL_LIMENG_20 | F_LIMENG_20 | E_MINRTY_20 | ET_POPETHRACE_20 | EP_MINRTY_20 | EPL_MINRTY_20 | F_MINRTY_20 | E_STRHU_20 | E_MUNIT_20 | EP_MUNIT_20 | EPL_MUNIT_20 | F_MUNIT_20 | E_MOBILE_20 | EP_MOBILE_20 | EPL_MOBILE_20 | F_MOBILE_20 | E_CROWD_20 | ET_OCCUPANTS_20 | EP_CROWD_20 | EPL_CROWD_20 | F_CROWD_20 | E_NOVEH_20 | ET_KNOWNVEH_20 | EP_NOVEH_20 | EPL_NOVEH_20 | F_NOVEH_20 | E_GROUPQ_20 | ET_HHTYPE_20 | EP_GROUPQ_20 | EPL_GROUPQ_20 | F_GROUPQ_20 | SPL_THEME1_20 | RPL_THEME1_20 | F_THEME1_20 | SPL_THEME2_20 | RPL_THEME2_20 | F_THEME2_20 | SPL_THEME3_20 | RPL_THEME3_20 | F_THEME3_20 | SPL_THEME4_20 | RPL_THEME4_20 | F_THEME4_20 | SPL_THEMES_20 | RPL_THEMES_20 | F_TOTAL_20 | nmtc_eligibility | pre10_nmtc_project_cnt | pre10_nmtc_dollars | pre10_nmtc_dollars_formatted | post10_nmtc_project_cnt | post10_nmtc_dollars | post10_nmtc_dollars_formatted | nmtc_flag |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
01001020200 | 01 | 001 | 020200 | AL | Alabama | Autauga County | 3 | South Region | 6 | East South Central Division | 2020 | 816 | 730 | 495 | 1992 | 24.84940 | 0.5954 | 0 | 68 | 834 | 8.153477 | 0.57540 | 0 | 49 | 439 | 11.16173 | 0.02067 | 0 | 105 | 291 | 36.08247 | 0.30190 | 0 | 154 | 730 | 21.09589 | 0.09312 | 0 | 339 | 1265 | 26.79842 | 0.8392 | 1 | 313 | 2012 | 15.55666 | 0.6000 | 0 | 204 | 10.09901 | 0.3419 | 0 | 597 | 29.55446 | 0.8192 | 1 | 359 | 1515 | 23.69637 | 0.8791 | 1 | 132 | 456 | 28.947368 | 0.8351 | 1 | 15 | 1890 | 0.7936508 | 0.40130 | 0 | 1243 | 2020 | 61.53465 | 0.7781 | 1 | 816 | 0 | 0.0000000 | 0.1224 | 0 | 34 | 4.1666667 | 0.6664 | 0 | 13 | 730 | 1.780822 | 0.5406 | 0 | 115 | 730 | 15.753425 | 0.8382 | 1 | 0 | 2020 | 0.0000 | 0.3640 | 0 | 2.70312 | 0.5665 | 1 | 3.27660 | 0.8614 | 3 | 0.7781 | 0.7709 | 1 | 2.5316 | 0.5047 | 1 | 9.28942 | 0.6832 | 6 | 1757 | 720 | 573 | 384 | 1511 | 25.41363 | 0.6427 | 0 | 29 | 717 | 4.044630 | 0.4132 | 0 | 33 | 392 | 8.418367 | 0.03542 | 0 | 116 | 181 | 64.08840 | 0.9086 | 1 | 149 | 573 | 26.00349 | 0.40410 | 0 | 139 | 1313 | 10.58644 | 0.5601 | 0 | 91 | 1533 | 5.936073 | 0.4343 | 0 | 284 | 16.163916 | 0.5169 | 0 | 325 | 18.49744 | 0.2851 | 0 | 164 | 1208.000 | 13.57616 | 0.4127 | 0 | 42 | 359.0000 | 11.699164 | 0.3998 | 0 | 0 | 1651 | 0.0000000 | 0.09479 | 0 | 1116 | 1757.000 | 63.51736 | 0.7591 | 1 | 720 | 3 | 0.4166667 | 0.2470 | 0 | 5 | 0.6944444 | 0.5106 | 0 | 9 | 573 | 1.5706806 | 0.4688 | 0 | 57 | 573.000 | 9.947644 | 0.7317 | 0 | 212 | 1757 | 12.0660216 | 0.9549 | 1 | 2.45440 | 0.4888 | 0 | 1.70929 | 0.1025 | 0 | 0.7591 | 0.7527 | 1 | 2.9130 | 0.6862 | 1 | 7.83579 | 0.4802 | 2 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 |
01001020700 | 01 | 001 | 020700 | AL | Alabama | Autauga County | 3 | South Region | 6 | East South Central Division | 2664 | 1254 | 1139 | 710 | 2664 | 26.65165 | 0.6328 | 0 | 29 | 1310 | 2.213741 | 0.05255 | 0 | 134 | 710 | 18.87324 | 0.13890 | 0 | 187 | 429 | 43.58974 | 0.47090 | 0 | 321 | 1139 | 28.18262 | 0.28130 | 0 | 396 | 1852 | 21.38229 | 0.7478 | 0 | 345 | 2878 | 11.98749 | 0.4459 | 0 | 389 | 14.60210 | 0.6417 | 0 | 599 | 22.48499 | 0.4007 | 0 | 510 | 2168 | 23.52399 | 0.8752 | 1 | 228 | 712 | 32.022472 | 0.8712 | 1 | 0 | 2480 | 0.0000000 | 0.09298 | 0 | 694 | 2664 | 26.05105 | 0.5138 | 0 | 1254 | 8 | 0.6379585 | 0.2931 | 0 | 460 | 36.6826156 | 0.9714 | 1 | 0 | 1139 | 0.000000 | 0.1238 | 0 | 125 | 1139 | 10.974539 | 0.7477 | 0 | 0 | 2664 | 0.0000 | 0.3640 | 0 | 2.16035 | 0.4069 | 0 | 2.88178 | 0.6997 | 2 | 0.5138 | 0.5090 | 0 | 2.5000 | 0.4882 | 1 | 8.05593 | 0.5185 | 3 | 3562 | 1313 | 1248 | 1370 | 3528 | 38.83220 | 0.8512 | 1 | 128 | 1562 | 8.194622 | 0.7935 | 1 | 168 | 844 | 19.905213 | 0.44510 | 0 | 237 | 404 | 58.66337 | 0.8359 | 1 | 405 | 1248 | 32.45192 | 0.60420 | 0 | 396 | 2211 | 17.91045 | 0.7857 | 1 | 444 | 3547 | 12.517620 | 0.7758 | 1 | 355 | 9.966311 | 0.1800 | 0 | 954 | 26.78271 | 0.7923 | 1 | 629 | 2593.000 | 24.25762 | 0.8730 | 1 | 171 | 797.0000 | 21.455458 | 0.7186 | 0 | 0 | 3211 | 0.0000000 | 0.09479 | 0 | 1009 | 3562.000 | 28.32678 | 0.4668 | 0 | 1313 | 14 | 1.0662605 | 0.3165 | 0 | 443 | 33.7395278 | 0.9663 | 1 | 73 | 1248 | 5.8493590 | 0.8211 | 1 | 17 | 1248.000 | 1.362180 | 0.1554 | 0 | 112 | 3562 | 3.1443010 | 0.8514 | 1 | 3.81040 | 0.8569 | 4 | 2.65869 | 0.5847 | 2 | 0.4668 | 0.4629 | 0 | 3.1107 | 0.7714 | 3 | 10.04659 | 0.7851 | 9 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 |
01001021100 | 01 | 001 | 021100 | AL | Alabama | Autauga County | 3 | South Region | 6 | East South Central Division | 3298 | 1502 | 1323 | 860 | 3298 | 26.07641 | 0.6211 | 0 | 297 | 1605 | 18.504673 | 0.94340 | 1 | 250 | 1016 | 24.60630 | 0.32070 | 0 | 74 | 307 | 24.10423 | 0.11920 | 0 | 324 | 1323 | 24.48980 | 0.17380 | 0 | 710 | 2231 | 31.82429 | 0.8976 | 1 | 654 | 3565 | 18.34502 | 0.7018 | 0 | 411 | 12.46210 | 0.5001 | 0 | 738 | 22.37720 | 0.3934 | 0 | 936 | 2861 | 32.71583 | 0.9807 | 1 | 138 | 825 | 16.727273 | 0.5715 | 0 | 9 | 3155 | 0.2852615 | 0.25010 | 0 | 1979 | 3298 | 60.00606 | 0.7703 | 1 | 1502 | 14 | 0.9320905 | 0.3234 | 0 | 659 | 43.8748336 | 0.9849 | 1 | 44 | 1323 | 3.325775 | 0.7062 | 0 | 137 | 1323 | 10.355253 | 0.7313 | 0 | 0 | 3298 | 0.0000 | 0.3640 | 0 | 3.33770 | 0.7351 | 2 | 2.69580 | 0.6028 | 1 | 0.7703 | 0.7631 | 1 | 3.1098 | 0.7827 | 1 | 9.91360 | 0.7557 | 5 | 3499 | 1825 | 1462 | 1760 | 3499 | 50.30009 | 0.9396 | 1 | 42 | 966 | 4.347826 | 0.4539 | 0 | 426 | 1274 | 33.437991 | 0.85200 | 1 | 52 | 188 | 27.65957 | 0.1824 | 0 | 478 | 1462 | 32.69494 | 0.61110 | 0 | 422 | 2488 | 16.96141 | 0.7638 | 1 | 497 | 3499 | 14.204058 | 0.8246 | 1 | 853 | 24.378394 | 0.8688 | 1 | 808 | 23.09231 | 0.5829 | 0 | 908 | 2691.100 | 33.74084 | 0.9808 | 1 | 179 | 811.6985 | 22.052524 | 0.7323 | 0 | 8 | 3248 | 0.2463054 | 0.26220 | 0 | 1986 | 3498.713 | 56.76373 | 0.7175 | 0 | 1825 | 29 | 1.5890411 | 0.3551 | 0 | 576 | 31.5616438 | 0.9594 | 1 | 88 | 1462 | 6.0191518 | 0.8269 | 1 | 148 | 1461.993 | 10.123166 | 0.7364 | 0 | 38 | 3499 | 1.0860246 | 0.7013 | 0 | 3.59300 | 0.8073 | 3 | 3.42700 | 0.9156 | 2 | 0.7175 | 0.7114 | 0 | 3.5791 | 0.9216 | 2 | 11.31660 | 0.9150 | 7 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 |
01003010200 | 01 | 003 | 010200 | AL | Alabama | Baldwin County | 3 | South Region | 6 | East South Central Division | 2612 | 1220 | 1074 | 338 | 2605 | 12.97505 | 0.2907 | 0 | 44 | 1193 | 3.688181 | 0.14720 | 0 | 172 | 928 | 18.53448 | 0.13090 | 0 | 31 | 146 | 21.23288 | 0.09299 | 0 | 203 | 1074 | 18.90130 | 0.05657 | 0 | 455 | 1872 | 24.30556 | 0.8016 | 1 | 456 | 2730 | 16.70330 | 0.6445 | 0 | 401 | 15.35222 | 0.6847 | 0 | 563 | 21.55436 | 0.3406 | 0 | 410 | 2038 | 20.11776 | 0.7755 | 1 | 64 | 779 | 8.215661 | 0.2181 | 0 | 0 | 2510 | 0.0000000 | 0.09298 | 0 | 329 | 2612 | 12.59571 | 0.3113 | 0 | 1220 | 38 | 3.1147541 | 0.4648 | 0 | 385 | 31.5573770 | 0.9545 | 1 | 20 | 1074 | 1.862197 | 0.5509 | 0 | 43 | 1074 | 4.003724 | 0.4088 | 0 | 0 | 2612 | 0.0000 | 0.3640 | 0 | 1.94057 | 0.3398 | 1 | 2.11188 | 0.2802 | 1 | 0.3113 | 0.3084 | 0 | 2.7430 | 0.6129 | 1 | 7.10675 | 0.3771 | 3 | 2928 | 1312 | 1176 | 884 | 2928 | 30.19126 | 0.7334 | 0 | 29 | 1459 | 1.987663 | 0.1356 | 0 | 71 | 830 | 8.554217 | 0.03726 | 0 | 134 | 346 | 38.72832 | 0.3964 | 0 | 205 | 1176 | 17.43197 | 0.12010 | 0 | 294 | 2052 | 14.32749 | 0.6940 | 0 | 219 | 2925 | 7.487179 | 0.5423 | 0 | 556 | 18.989071 | 0.6705 | 0 | 699 | 23.87295 | 0.6339 | 0 | 489 | 2226.455 | 21.96317 | 0.8122 | 1 | 191 | 783.8820 | 24.365914 | 0.7799 | 1 | 0 | 2710 | 0.0000000 | 0.09479 | 0 | 398 | 2927.519 | 13.59513 | 0.2511 | 0 | 1312 | 13 | 0.9908537 | 0.3111 | 0 | 400 | 30.4878049 | 0.9557 | 1 | 6 | 1176 | 0.5102041 | 0.2590 | 0 | 81 | 1176.202 | 6.886570 | 0.6115 | 0 | 7 | 2928 | 0.2390710 | 0.4961 | 0 | 2.22540 | 0.4183 | 0 | 2.99129 | 0.7634 | 2 | 0.2511 | 0.2490 | 0 | 2.6334 | 0.5496 | 1 | 8.10119 | 0.5207 | 3 | Yes | 0 | 0 | $0 | 1 | 408000 | $408,000 | 1 |
01003010500 | 01 | 003 | 010500 | AL | Alabama | Baldwin County | 3 | South Region | 6 | East South Central Division | 4230 | 1779 | 1425 | 498 | 3443 | 14.46413 | 0.3337 | 0 | 166 | 1625 | 10.215385 | 0.71790 | 0 | 151 | 1069 | 14.12535 | 0.04638 | 0 | 196 | 356 | 55.05618 | 0.73830 | 0 | 347 | 1425 | 24.35088 | 0.17010 | 0 | 707 | 2945 | 24.00679 | 0.7967 | 1 | 528 | 4001 | 13.19670 | 0.5005 | 0 | 619 | 14.63357 | 0.6436 | 0 | 790 | 18.67612 | 0.1937 | 0 | 536 | 3096 | 17.31266 | 0.6572 | 0 | 165 | 920 | 17.934783 | 0.6102 | 0 | 20 | 4021 | 0.4973887 | 0.32320 | 0 | 754 | 4230 | 17.82506 | 0.4023 | 0 | 1779 | 97 | 5.4525014 | 0.5525 | 0 | 8 | 0.4496908 | 0.4600 | 0 | 63 | 1425 | 4.421053 | 0.7762 | 1 | 90 | 1425 | 6.315790 | 0.5691 | 0 | 787 | 4230 | 18.6052 | 0.9649 | 1 | 2.51890 | 0.5121 | 1 | 2.42790 | 0.4539 | 0 | 0.4023 | 0.3986 | 0 | 3.3227 | 0.8628 | 2 | 8.67180 | 0.6054 | 3 | 5877 | 1975 | 1836 | 820 | 5244 | 15.63692 | 0.3902 | 0 | 90 | 2583 | 3.484321 | 0.3361 | 0 | 159 | 1345 | 11.821561 | 0.10530 | 0 | 139 | 491 | 28.30957 | 0.1924 | 0 | 298 | 1836 | 16.23094 | 0.09053 | 0 | 570 | 4248 | 13.41808 | 0.6669 | 0 | 353 | 5247 | 6.727654 | 0.4924 | 0 | 1109 | 18.870172 | 0.6645 | 0 | 1144 | 19.46571 | 0.3411 | 0 | 717 | 4102.545 | 17.47696 | 0.6332 | 0 | 103 | 1286.1180 | 8.008596 | 0.2341 | 0 | 0 | 5639 | 0.0000000 | 0.09479 | 0 | 868 | 5877.481 | 14.76823 | 0.2709 | 0 | 1975 | 26 | 1.3164557 | 0.3359 | 0 | 45 | 2.2784810 | 0.6271 | 0 | 9 | 1836 | 0.4901961 | 0.2540 | 0 | 116 | 1835.798 | 6.318779 | 0.5811 | 0 | 633 | 5877 | 10.7708014 | 0.9507 | 1 | 1.97613 | 0.3410 | 0 | 1.96769 | 0.1961 | 0 | 0.2709 | 0.2686 | 0 | 2.7488 | 0.6077 | 1 | 6.96352 | 0.3406 | 1 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 |
01003010600 | 01 | 003 | 010600 | AL | Alabama | Baldwin County | 3 | South Region | 6 | East South Central Division | 3724 | 1440 | 1147 | 1973 | 3724 | 52.98067 | 0.9342 | 1 | 142 | 1439 | 9.867964 | 0.69680 | 0 | 235 | 688 | 34.15698 | 0.62950 | 0 | 187 | 459 | 40.74074 | 0.40290 | 0 | 422 | 1147 | 36.79163 | 0.55150 | 0 | 497 | 1876 | 26.49254 | 0.8354 | 1 | 511 | 3661 | 13.95794 | 0.5334 | 0 | 246 | 6.60580 | 0.1481 | 0 | 1256 | 33.72718 | 0.9305 | 1 | 496 | 2522 | 19.66693 | 0.7587 | 1 | 274 | 838 | 32.696897 | 0.8779 | 1 | 32 | 3479 | 0.9198045 | 0.42810 | 0 | 2606 | 3724 | 69.97852 | 0.8184 | 1 | 1440 | 21 | 1.4583333 | 0.3683 | 0 | 321 | 22.2916667 | 0.9036 | 1 | 97 | 1147 | 8.456844 | 0.8956 | 1 | 167 | 1147 | 14.559721 | 0.8209 | 1 | 0 | 3724 | 0.0000 | 0.3640 | 0 | 3.55130 | 0.7859 | 2 | 3.14330 | 0.8145 | 3 | 0.8184 | 0.8108 | 1 | 3.3524 | 0.8725 | 3 | 10.86540 | 0.8550 | 9 | 4115 | 1534 | 1268 | 1676 | 3997 | 41.93145 | 0.8814 | 1 | 294 | 1809 | 16.252073 | 0.9674 | 1 | 341 | 814 | 41.891892 | 0.94320 | 1 | 204 | 454 | 44.93392 | 0.5438 | 0 | 545 | 1268 | 42.98107 | 0.83620 | 1 | 624 | 2425 | 25.73196 | 0.9002 | 1 | 994 | 4115 | 24.155529 | 0.9602 | 1 | 642 | 15.601458 | 0.4841 | 0 | 1126 | 27.36331 | 0.8175 | 1 | 568 | 2989.000 | 19.00301 | 0.7045 | 0 | 212 | 715.0000 | 29.650350 | 0.8592 | 1 | 56 | 3825 | 1.4640523 | 0.53120 | 0 | 2715 | 4115.000 | 65.97813 | 0.7732 | 1 | 1534 | 0 | 0.0000000 | 0.1079 | 0 | 529 | 34.4850065 | 0.9685 | 1 | 101 | 1268 | 7.9652997 | 0.8795 | 1 | 89 | 1268.000 | 7.018927 | 0.6184 | 0 | 17 | 4115 | 0.4131227 | 0.5707 | 0 | 4.54540 | 0.9754 | 5 | 3.39650 | 0.9081 | 2 | 0.7732 | 0.7667 | 1 | 3.1450 | 0.7858 | 2 | 11.86010 | 0.9520 | 10 | Yes | 0 | 0 | $0 | 1 | 8000000 | $8,000,000 | 1 |
View LIHTC Data
Code
svi_divisional_lihtc %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | FIPS_st | FIPS_county | FIPS_tract | state | state_name | county | region_number | region | division_number | division | E_TOTPOP_10 | E_HU_10 | E_HH_10 | E_POV150_10 | ET_POVSTATUS_10 | EP_POV150_10 | EPL_POV150_10 | F_POV150_10 | E_UNEMP_10 | ET_EMPSTATUS_10 | EP_UNEMP_10 | EPL_UNEMP_10 | F_UNEMP_10 | E_HBURD_OWN_10 | ET_HOUSINGCOST_OWN_10 | EP_HBURD_OWN_10 | EPL_HBURD_OWN_10 | F_HBURD_OWN_10 | E_HBURD_RENT_10 | ET_HOUSINGCOST_RENT_10 | EP_HBURD_RENT_10 | EPL_HBURD_RENT_10 | F_HBURD_RENT_10 | E_HBURD_10 | ET_HOUSINGCOST_10 | EP_HBURD_10 | EPL_HBURD_10 | F_HBURD_10 | E_NOHSDP_10 | ET_EDSTATUS_10 | EP_NOHSDP_10 | EPL_NOHSDP_10 | F_NOHSDP_10 | E_UNINSUR_12 | ET_INSURSTATUS_12 | EP_UNINSUR_12 | EPL_UNINSUR_12 | F_UNINSUR_12 | E_AGE65_10 | EP_AGE65_10 | EPL_AGE65_10 | F_AGE65_10 | E_AGE17_10 | EP_AGE17_10 | EPL_AGE17_10 | F_AGE17_10 | E_DISABL_12 | ET_DISABLSTATUS_12 | EP_DISABL_12 | EPL_DISABL_12 | F_DISABL_12 | E_SNGPNT_10 | ET_FAMILIES_10 | EP_SNGPNT_10 | EPL_SNGPNT_10 | F_SNGPNT_10 | E_LIMENG_10 | ET_POPAGE5UP_10 | EP_LIMENG_10 | EPL_LIMENG_10 | F_LIMENG_10 | E_MINRTY_10 | ET_POPETHRACE_10 | EP_MINRTY_10 | EPL_MINRTY_10 | F_MINRTY_10 | E_STRHU_10 | E_MUNIT_10 | EP_MUNIT_10 | EPL_MUNIT_10 | F_MUNIT_10 | E_MOBILE_10 | EP_MOBILE_10 | EPL_MOBILE_10 | F_MOBILE_10 | E_CROWD_10 | ET_OCCUPANTS_10 | EP_CROWD_10 | EPL_CROWD_10 | F_CROWD_10 | E_NOVEH_10 | ET_KNOWNVEH_10 | EP_NOVEH_10 | EPL_NOVEH_10 | F_NOVEH_10 | E_GROUPQ_10 | ET_HHTYPE_10 | EP_GROUPQ_10 | EPL_GROUPQ_10 | F_GROUPQ_10 | SPL_THEME1_10 | RPL_THEME1_10 | F_THEME1_10 | SPL_THEME2_10 | RPL_THEME2_10 | F_THEME2_10 | SPL_THEME3_10 | RPL_THEME3_10 | F_THEME3_10 | SPL_THEME4_10 | RPL_THEME4_10 | F_THEME4_10 | SPL_THEMES_10 | RPL_THEMES_10 | F_TOTAL_10 | E_TOTPOP_20 | E_HU_20 | E_HH_20 | E_POV150_20 | ET_POVSTATUS_20 | EP_POV150_20 | EPL_POV150_20 | F_POV150_20 | E_UNEMP_20 | ET_EMPSTATUS_20 | EP_UNEMP_20 | EPL_UNEMP_20 | F_UNEMP_20 | E_HBURD_OWN_20 | ET_HOUSINGCOST_OWN_20 | EP_HBURD_OWN_20 | EPL_HBURD_OWN_20 | F_HBURD_OWN_20 | E_HBURD_RENT_20 | ET_HOUSINGCOST_RENT_20 | EP_HBURD_RENT_20 | EPL_HBURD_RENT_20 | F_HBURD_RENT_20 | E_HBURD_20 | ET_HOUSINGCOST_20 | EP_HBURD_20 | EPL_HBURD_20 | F_HBURD_20 | E_NOHSDP_20 | ET_EDSTATUS_20 | EP_NOHSDP_20 | EPL_NOHSDP_20 | F_NOHSDP_20 | E_UNINSUR_20 | ET_INSURSTATUS_20 | EP_UNINSUR_20 | EPL_UNINSUR_20 | F_UNINSUR_20 | E_AGE65_20 | EP_AGE65_20 | EPL_AGE65_20 | F_AGE65_20 | E_AGE17_20 | EP_AGE17_20 | EPL_AGE17_20 | F_AGE17_20 | E_DISABL_20 | ET_DISABLSTATUS_20 | EP_DISABL_20 | EPL_DISABL_20 | F_DISABL_20 | E_SNGPNT_20 | ET_FAMILIES_20 | EP_SNGPNT_20 | EPL_SNGPNT_20 | F_SNGPNT_20 | E_LIMENG_20 | ET_POPAGE5UP_20 | EP_LIMENG_20 | EPL_LIMENG_20 | F_LIMENG_20 | E_MINRTY_20 | ET_POPETHRACE_20 | EP_MINRTY_20 | EPL_MINRTY_20 | F_MINRTY_20 | E_STRHU_20 | E_MUNIT_20 | EP_MUNIT_20 | EPL_MUNIT_20 | F_MUNIT_20 | E_MOBILE_20 | EP_MOBILE_20 | EPL_MOBILE_20 | F_MOBILE_20 | E_CROWD_20 | ET_OCCUPANTS_20 | EP_CROWD_20 | EPL_CROWD_20 | F_CROWD_20 | E_NOVEH_20 | ET_KNOWNVEH_20 | EP_NOVEH_20 | EPL_NOVEH_20 | F_NOVEH_20 | E_GROUPQ_20 | ET_HHTYPE_20 | EP_GROUPQ_20 | EPL_GROUPQ_20 | F_GROUPQ_20 | SPL_THEME1_20 | RPL_THEME1_20 | F_THEME1_20 | SPL_THEME2_20 | RPL_THEME2_20 | F_THEME2_20 | SPL_THEME3_20 | RPL_THEME3_20 | F_THEME3_20 | SPL_THEME4_20 | RPL_THEME4_20 | F_THEME4_20 | SPL_THEMES_20 | RPL_THEMES_20 | F_TOTAL_20 | pre10_lihtc_project_cnt | pre10_lihtc_project_dollars | post10_lihtc_project_cnt | post10_lihtc_project_dollars | lihtc_flag | lihtc_eligibility |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
34001001400 | 34 | 001 | 001400 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 3736 | 1893 | 1503 | 2135 | 3736 | 57.14668 | 0.9592 | 1 | 411 | 1635 | 25.137615 | 0.9866 | 1 | 267 | 401 | 66.58354 | 0.9617 | 1 | 715 | 1102 | 64.88203 | 0.8844 | 1 | 982 | 1503 | 65.33599 | 0.9764 | 1 | 511 | 1696 | 30.129717 | 0.90050 | 1 | 527 | 4199 | 12.5506073 | 0.672800 | 0 | 269 | 7.200214 | 0.115100 | 0 | 1598 | 42.77302 | 0.9935 | 1 | 345 | 2252 | 15.319716 | 0.63090 | 0 | 787 | 941 | 83.63443 | 0.9990 | 1 | 63 | 3192 | 1.973684 | 0.54480 | 0 | 3463 | 3736 | 92.69272 | 0.8905 | 1 | 1893 | 427 | 22.556788 | 0.7770 | 1 | 0 | 0.000000 | 0.3251 | 0 | 22 | 1503 | 1.463739 | 0.5339 | 0 | 705 | 1503 | 46.90619 | 0.85330 | 1 | 0 | 3736 | 0.000000 | 0.3512 | 0 | 4.495500 | 0.9585 | 4 | 3.283300 | 0.8640 | 2 | 0.8905 | 0.8818 | 1 | 2.84050 | 0.66710 | 2 | 11.509800 | 0.9048 | 9 | 3812 | 1724 | 1549 | 2291 | 3754 | 61.028236 | 0.9760 | 1 | 380 | 1547 | 24.563672 | 0.9934 | 1 | 117 | 240 | 48.75000 | 0.9237 | 1 | 753 | 1309 | 57.52483 | 0.7816 | 1 | 870 | 1549 | 56.16527 | 0.9326 | 1 | 472 | 1913 | 24.673288 | 0.8987 | 1 | 294 | 3802 | 7.7327722 | 0.7558 | 1 | 363 | 9.52256 | 0.123100 | 0 | 1463 | 38.37880 | 0.9885 | 1 | 508 | 2339.000 | 21.718683 | 0.85640 | 1 | 564 | 948.000 | 59.49367 | 0.9910 | 1 | 201 | 3159 | 6.3627730 | 0.7613 | 1 | 3389 | 3812.000 | 88.90346 | 0.8683 | 1 | 1724 | 571 | 33.1206497 | 0.8294 | 1 | 0 | 0 | 0.3216 | 0 | 83 | 1549 | 5.358296 | 0.7754 | 1 | 661 | 1549.000 | 42.672692 | 0.8448 | 1 | 10 | 3812 | 0.2623295 | 0.4739 | 0 | 4.5565 | 0.9673 | 5 | 3.720300 | 0.9522 | 4 | 0.8683 | 0.8605 | 1 | 3.2451 | 0.81590 | 3 | 12.390200 | 0.9595 | 13 | 0 | 0 | 0 | 0 | 0 | Yes |
34001001500 | 34 | 001 | 001500 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 1074 | 901 | 752 | 656 | 1074 | 61.08007 | 0.9700 | 1 | 43 | 270 | 15.925926 | 0.9242 | 1 | 30 | 70 | 42.85714 | 0.7276 | 0 | 366 | 682 | 53.66569 | 0.6910 | 0 | 396 | 752 | 52.65957 | 0.8458 | 1 | 266 | 921 | 28.881650 | 0.88860 | 1 | 121 | 1064 | 11.3721805 | 0.613100 | 0 | 385 | 35.847300 | 0.990200 | 1 | 129 | 12.01117 | 0.0617 | 0 | 321 | 993 | 32.326284 | 0.98460 | 1 | 62 | 195 | 31.79487 | 0.8408 | 1 | 125 | 1050 | 11.904762 | 0.85620 | 1 | 965 | 1074 | 89.85102 | 0.8717 | 1 | 901 | 636 | 70.588235 | 0.9304 | 1 | 0 | 0.000000 | 0.3251 | 0 | 10 | 752 | 1.329787 | 0.5133 | 0 | 626 | 752 | 83.24468 | 0.98880 | 1 | 0 | 1074 | 0.000000 | 0.3512 | 0 | 4.241700 | 0.9134 | 4 | 3.733500 | 0.9515 | 4 | 0.8717 | 0.8632 | 1 | 3.10880 | 0.77090 | 2 | 11.955700 | 0.9362 | 11 | 1601 | 976 | 810 | 1001 | 1601 | 62.523423 | 0.9797 | 1 | 204 | 563 | 36.234458 | 0.9989 | 1 | 74 | 110 | 67.27273 | 0.9848 | 1 | 224 | 700 | 32.00000 | 0.2097 | 0 | 298 | 810 | 36.79012 | 0.6089 | 0 | 379 | 1145 | 33.100437 | 0.9610 | 1 | 272 | 1601 | 16.9893816 | 0.9572 | 1 | 451 | 28.16989 | 0.936300 | 1 | 251 | 15.67770 | 0.1835 | 0 | 411 | 1350.000 | 30.444444 | 0.97330 | 1 | 196 | 446.000 | 43.94619 | 0.9511 | 1 | 220 | 1532 | 14.3603133 | 0.8929 | 1 | 1435 | 1601.000 | 89.63148 | 0.8738 | 1 | 976 | 451 | 46.2090164 | 0.8742 | 1 | 0 | 0 | 0.3216 | 0 | 24 | 810 | 2.962963 | 0.6412 | 0 | 546 | 810.000 | 67.407407 | 0.9401 | 1 | 15 | 1601 | 0.9369144 | 0.6832 | 0 | 4.5057 | 0.9617 | 4 | 3.937100 | 0.9752 | 4 | 0.8738 | 0.8659 | 1 | 3.4603 | 0.87740 | 2 | 12.776900 | 0.9705 | 11 | 0 | 0 | 1 | 1497998 | 1 | Yes |
34001002400 | 34 | 001 | 002400 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 3129 | 1759 | 1375 | 1916 | 3129 | 61.23362 | 0.9705 | 1 | 205 | 1075 | 19.069767 | 0.9574 | 1 | 28 | 60 | 46.66667 | 0.7987 | 1 | 670 | 1315 | 50.95057 | 0.6297 | 0 | 698 | 1375 | 50.76364 | 0.8102 | 1 | 632 | 2059 | 30.694512 | 0.90660 | 1 | 461 | 2365 | 19.4926004 | 0.873700 | 1 | 539 | 17.225951 | 0.744100 | 0 | 850 | 27.16523 | 0.7907 | 1 | 575 | 1736 | 33.122120 | 0.98650 | 1 | 237 | 594 | 39.89899 | 0.9035 | 1 | 312 | 2663 | 11.716110 | 0.85490 | 1 | 2357 | 3129 | 75.32758 | 0.8038 | 1 | 1759 | 1091 | 62.023877 | 0.9176 | 1 | 29 | 1.648664 | 0.7742 | 1 | 57 | 1375 | 4.145454 | 0.7529 | 1 | 696 | 1375 | 50.61818 | 0.87140 | 1 | 209 | 3129 | 6.679450 | 0.9003 | 1 | 4.518400 | 0.9608 | 5 | 4.279700 | 0.9831 | 4 | 0.8038 | 0.7960 | 1 | 4.21640 | 0.98320 | 5 | 13.818300 | 0.9835 | 15 | 2614 | 1726 | 1217 | 1579 | 2612 | 60.451761 | 0.9744 | 1 | 290 | 1171 | 24.765158 | 0.9939 | 1 | 69 | 127 | 54.33071 | 0.9521 | 1 | 538 | 1090 | 49.35780 | 0.5970 | 0 | 607 | 1217 | 49.87675 | 0.8624 | 1 | 697 | 1998 | 34.884885 | 0.9695 | 1 | 551 | 2614 | 21.0788064 | 0.9797 | 1 | 516 | 19.73986 | 0.679400 | 0 | 503 | 19.24254 | 0.3999 | 0 | 576 | 2111.000 | 27.285647 | 0.95060 | 1 | 257 | 567.000 | 45.32628 | 0.9571 | 1 | 556 | 2368 | 23.4797297 | 0.9570 | 1 | 2029 | 2614.000 | 77.62050 | 0.8058 | 1 | 1726 | 1166 | 67.5550406 | 0.9204 | 1 | 0 | 0 | 0.3216 | 0 | 115 | 1217 | 9.449466 | 0.8840 | 1 | 673 | 1217.000 | 55.299918 | 0.8978 | 1 | 223 | 2614 | 8.5309870 | 0.9307 | 1 | 4.7799 | 0.9845 | 5 | 3.944000 | 0.9756 | 3 | 0.8058 | 0.7985 | 1 | 3.9545 | 0.96510 | 4 | 13.484200 | 0.9845 | 13 | 0 | 0 | 0 | 0 | 0 | Yes |
34003015400 | 34 | 003 | 015400 | NJ | New Jersey | Bergen County | 1 | Northeast Region | 2 | Middle Atlantic Division | 5086 | 2258 | 2100 | 1485 | 5063 | 29.33044 | 0.7447 | 0 | 195 | 2873 | 6.787330 | 0.4938 | 0 | 223 | 478 | 46.65272 | 0.7984 | 1 | 876 | 1622 | 54.00740 | 0.6974 | 0 | 1099 | 2100 | 52.33333 | 0.8405 | 1 | 640 | 3682 | 17.381858 | 0.70160 | 0 | 1579 | 6178 | 25.5584331 | 0.949900 | 1 | 603 | 11.856075 | 0.377400 | 0 | 961 | 18.89501 | 0.2410 | 0 | 534 | 5000 | 10.680000 | 0.31600 | 0 | 254 | 1232 | 20.61688 | 0.6975 | 0 | 681 | 4763 | 14.297712 | 0.88510 | 1 | 3916 | 5086 | 76.99567 | 0.8096 | 1 | 2258 | 1028 | 45.527015 | 0.8820 | 1 | 0 | 0.000000 | 0.3251 | 0 | 28 | 2100 | 1.333333 | 0.5139 | 0 | 643 | 2100 | 30.61905 | 0.76370 | 1 | 57 | 5086 | 1.120724 | 0.7485 | 0 | 3.730500 | 0.8072 | 2 | 2.517000 | 0.5136 | 1 | 0.8096 | 0.8017 | 1 | 3.23320 | 0.81730 | 2 | 10.290300 | 0.7914 | 6 | 7543 | 3570 | 3054 | 1638 | 7543 | 21.715498 | 0.6364 | 0 | 320 | 4251 | 7.527641 | 0.7462 | 0 | 238 | 752 | 31.64894 | 0.6832 | 0 | 1211 | 2302 | 52.60643 | 0.6776 | 0 | 1449 | 3054 | 47.44597 | 0.8252 | 1 | 877 | 5631 | 15.574498 | 0.7611 | 1 | 1093 | 7543 | 14.4902559 | 0.9339 | 1 | 981 | 13.00544 | 0.282700 | 0 | 1174 | 15.56410 | 0.1785 | 0 | 756 | 6369.000 | 11.869995 | 0.37380 | 0 | 303 | 2013.000 | 15.05216 | 0.5737 | 0 | 970 | 7103 | 13.6562016 | 0.8846 | 1 | 5610 | 7543.000 | 74.37359 | 0.7916 | 1 | 3570 | 1871 | 52.4089636 | 0.8898 | 1 | 0 | 0 | 0.3216 | 0 | 258 | 3054 | 8.447937 | 0.8637 | 1 | 301 | 3054.000 | 9.855927 | 0.5207 | 0 | 15 | 7543 | 0.1988599 | 0.4315 | 0 | 3.9028 | 0.8603 | 3 | 2.293300 | 0.3701 | 1 | 0.7916 | 0.7845 | 1 | 3.0273 | 0.73680 | 2 | 10.015000 | 0.7805 | 7 | 0 | 0 | 0 | 0 | 0 | Yes |
34003018100 | 34 | 003 | 018100 | NJ | New Jersey | Bergen County | 1 | Northeast Region | 2 | Middle Atlantic Division | 6907 | 2665 | 2569 | 1865 | 6863 | 27.17470 | 0.7140 | 0 | 242 | 3781 | 6.400423 | 0.4509 | 0 | 434 | 834 | 52.03837 | 0.8694 | 1 | 1123 | 1735 | 64.72622 | 0.8830 | 1 | 1557 | 2569 | 60.60724 | 0.9450 | 1 | 1521 | 4649 | 32.716713 | 0.92270 | 1 | 2703 | 7124 | 37.9421673 | 0.992200 | 1 | 1024 | 14.825539 | 0.598800 | 0 | 1336 | 19.34270 | 0.2674 | 0 | 452 | 5848 | 7.729138 | 0.11920 | 0 | 363 | 1614 | 22.49071 | 0.7280 | 0 | 1324 | 6571 | 20.149140 | 0.93510 | 1 | 4209 | 6907 | 60.93818 | 0.7551 | 1 | 2665 | 517 | 19.399625 | 0.7487 | 0 | 0 | 0.000000 | 0.3251 | 0 | 136 | 2569 | 5.293889 | 0.7960 | 1 | 1043 | 2569 | 40.59945 | 0.82350 | 1 | 0 | 6907 | 0.000000 | 0.3512 | 0 | 4.024800 | 0.8697 | 3 | 2.648500 | 0.5885 | 1 | 0.7551 | 0.7477 | 1 | 3.04450 | 0.74620 | 2 | 10.472900 | 0.8112 | 7 | 7668 | 2912 | 2816 | 1803 | 7664 | 23.525574 | 0.6750 | 0 | 370 | 4727 | 7.827375 | 0.7646 | 1 | 441 | 819 | 53.84615 | 0.9501 | 1 | 1122 | 1997 | 56.18428 | 0.7544 | 1 | 1563 | 2816 | 55.50426 | 0.9274 | 1 | 1879 | 5775 | 32.536797 | 0.9576 | 1 | 1695 | 7668 | 22.1048513 | 0.9829 | 1 | 1041 | 13.57590 | 0.316600 | 0 | 1193 | 15.55816 | 0.1784 | 0 | 711 | 6474.819 | 10.981001 | 0.31250 | 0 | 197 | 1914.175 | 10.29164 | 0.3928 | 0 | 2045 | 7161 | 28.5574640 | 0.9756 | 1 | 5637 | 7667.630 | 73.51685 | 0.7875 | 1 | 2912 | 806 | 27.6785714 | 0.7973 | 1 | 0 | 0 | 0.3216 | 0 | 150 | 2816 | 5.326704 | 0.7742 | 1 | 833 | 2816.042 | 29.580522 | 0.7679 | 1 | 10 | 7668 | 0.1304121 | 0.3642 | 0 | 4.3075 | 0.9336 | 4 | 2.175900 | 0.2971 | 1 | 0.7875 | 0.7803 | 1 | 3.0252 | 0.73590 | 3 | 10.296100 | 0.8061 | 9 | 0 | 0 | 0 | 0 | 0 | Yes |
34005702101 | 34 | 005 | 702101 | NJ | New Jersey | Burlington County | 1 | Northeast Region | 2 | Middle Atlantic Division | 1637 | 702 | 483 | 445 | 1637 | 27.18387 | 0.7142 | 0 | 63 | 456 | 13.815789 | 0.8857 | 1 | 0 | 0 | NaN | NA | NA | 222 | 483 | 45.96273 | 0.5037 | 0 | 222 | 483 | 45.96273 | 0.7085 | 0 | 31 | 903 | 3.433001 | 0.08742 | 0 | 14 | 1965 | 0.7124682 | 0.008765 | 0 | 0 | 0.000000 | 0.002836 | 0 | 696 | 42.51680 | 0.9928 | 1 | 62 | 898 | 6.904232 | 0.08018 | 0 | 103 | 452 | 22.78761 | 0.7331 | 0 | 0 | 1379 | 0.000000 | 0.07335 | 0 | 248 | 1637 | 15.14966 | 0.4224 | 0 | 702 | 25 | 3.561254 | 0.4247 | 0 | 0 | 0.000000 | 0.3251 | 0 | 0 | 483 | 0.000000 | 0.1459 | 0 | 0 | 483 | 0.00000 | 0.01044 | 0 | 0 | 1637 | 0.000000 | 0.3512 | 0 | 2.404585 | 0.4890 | 1 | 1.882266 | 0.1557 | 1 | 0.4224 | 0.4183 | 0 | 1.25734 | 0.03853 | 0 | 5.966591 | 0.2021 | 2 | 3997 | 1271 | 1235 | 304 | 3996 | 7.607608 | 0.1919 | 0 | 46 | 901 | 5.105438 | 0.5252 | 0 | 0 | 0 | NaN | NA | NA | 731 | 1235 | 59.19028 | 0.8107 | 1 | 731 | 1235 | 59.19028 | 0.9566 | 1 | 49 | 1973 | 2.483528 | 0.0993 | 0 | 27 | 3057 | 0.8832188 | 0.0568 | 0 | 0 | 0.00000 | 0.001592 | 0 | 1651 | 41.30598 | 0.9924 | 1 | 58 | 1412.011 | 4.107616 | 0.01556 | 0 | 91 | 1092.793 | 8.32729 | 0.3046 | 0 | 32 | 3347 | 0.9560801 | 0.3989 | 0 | 1411 | 3996.883 | 35.30251 | 0.5750 | 0 | 1271 | 10 | 0.7867821 | 0.2414 | 0 | 0 | 0 | 0.3216 | 0 | 27 | 1235 | 2.186235 | 0.5699 | 0 | 11 | 1234.974 | 0.890707 | 0.0533 | 0 | 0 | 3997 | 0.0000000 | 0.1517 | 0 | 1.8298 | 0.3066 | 1 | 1.713052 | 0.1034 | 1 | 0.5750 | 0.5698 | 0 | 1.3379 | 0.06021 | 0 | 5.455752 | 0.1329 | 2 | 0 | 0 | 0 | 0 | 0 | Yes |
Code
svi_national_lihtc %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | FIPS_st | FIPS_county | FIPS_tract | state | state_name | county | region_number | region | division_number | division | E_TOTPOP_10 | E_HU_10 | E_HH_10 | E_POV150_10 | ET_POVSTATUS_10 | EP_POV150_10 | EPL_POV150_10 | F_POV150_10 | E_UNEMP_10 | ET_EMPSTATUS_10 | EP_UNEMP_10 | EPL_UNEMP_10 | F_UNEMP_10 | E_HBURD_OWN_10 | ET_HOUSINGCOST_OWN_10 | EP_HBURD_OWN_10 | EPL_HBURD_OWN_10 | F_HBURD_OWN_10 | E_HBURD_RENT_10 | ET_HOUSINGCOST_RENT_10 | EP_HBURD_RENT_10 | EPL_HBURD_RENT_10 | F_HBURD_RENT_10 | E_HBURD_10 | ET_HOUSINGCOST_10 | EP_HBURD_10 | EPL_HBURD_10 | F_HBURD_10 | E_NOHSDP_10 | ET_EDSTATUS_10 | EP_NOHSDP_10 | EPL_NOHSDP_10 | F_NOHSDP_10 | E_UNINSUR_12 | ET_INSURSTATUS_12 | EP_UNINSUR_12 | EPL_UNINSUR_12 | F_UNINSUR_12 | E_AGE65_10 | EP_AGE65_10 | EPL_AGE65_10 | F_AGE65_10 | E_AGE17_10 | EP_AGE17_10 | EPL_AGE17_10 | F_AGE17_10 | E_DISABL_12 | ET_DISABLSTATUS_12 | EP_DISABL_12 | EPL_DISABL_12 | F_DISABL_12 | E_SNGPNT_10 | ET_FAMILIES_10 | EP_SNGPNT_10 | EPL_SNGPNT_10 | F_SNGPNT_10 | E_LIMENG_10 | ET_POPAGE5UP_10 | EP_LIMENG_10 | EPL_LIMENG_10 | F_LIMENG_10 | E_MINRTY_10 | ET_POPETHRACE_10 | EP_MINRTY_10 | EPL_MINRTY_10 | F_MINRTY_10 | E_STRHU_10 | E_MUNIT_10 | EP_MUNIT_10 | EPL_MUNIT_10 | F_MUNIT_10 | E_MOBILE_10 | EP_MOBILE_10 | EPL_MOBILE_10 | F_MOBILE_10 | E_CROWD_10 | ET_OCCUPANTS_10 | EP_CROWD_10 | EPL_CROWD_10 | F_CROWD_10 | E_NOVEH_10 | ET_KNOWNVEH_10 | EP_NOVEH_10 | EPL_NOVEH_10 | F_NOVEH_10 | E_GROUPQ_10 | ET_HHTYPE_10 | EP_GROUPQ_10 | EPL_GROUPQ_10 | F_GROUPQ_10 | SPL_THEME1_10 | RPL_THEME1_10 | F_THEME1_10 | SPL_THEME2_10 | RPL_THEME2_10 | F_THEME2_10 | SPL_THEME3_10 | RPL_THEME3_10 | F_THEME3_10 | SPL_THEME4_10 | RPL_THEME4_10 | F_THEME4_10 | SPL_THEMES_10 | RPL_THEMES_10 | F_TOTAL_10 | E_TOTPOP_20 | E_HU_20 | E_HH_20 | E_POV150_20 | ET_POVSTATUS_20 | EP_POV150_20 | EPL_POV150_20 | F_POV150_20 | E_UNEMP_20 | ET_EMPSTATUS_20 | EP_UNEMP_20 | EPL_UNEMP_20 | F_UNEMP_20 | E_HBURD_OWN_20 | ET_HOUSINGCOST_OWN_20 | EP_HBURD_OWN_20 | EPL_HBURD_OWN_20 | F_HBURD_OWN_20 | E_HBURD_RENT_20 | ET_HOUSINGCOST_RENT_20 | EP_HBURD_RENT_20 | EPL_HBURD_RENT_20 | F_HBURD_RENT_20 | E_HBURD_20 | ET_HOUSINGCOST_20 | EP_HBURD_20 | EPL_HBURD_20 | F_HBURD_20 | E_NOHSDP_20 | ET_EDSTATUS_20 | EP_NOHSDP_20 | EPL_NOHSDP_20 | F_NOHSDP_20 | E_UNINSUR_20 | ET_INSURSTATUS_20 | EP_UNINSUR_20 | EPL_UNINSUR_20 | F_UNINSUR_20 | E_AGE65_20 | EP_AGE65_20 | EPL_AGE65_20 | F_AGE65_20 | E_AGE17_20 | EP_AGE17_20 | EPL_AGE17_20 | F_AGE17_20 | E_DISABL_20 | ET_DISABLSTATUS_20 | EP_DISABL_20 | EPL_DISABL_20 | F_DISABL_20 | E_SNGPNT_20 | ET_FAMILIES_20 | EP_SNGPNT_20 | EPL_SNGPNT_20 | F_SNGPNT_20 | E_LIMENG_20 | ET_POPAGE5UP_20 | EP_LIMENG_20 | EPL_LIMENG_20 | F_LIMENG_20 | E_MINRTY_20 | ET_POPETHRACE_20 | EP_MINRTY_20 | EPL_MINRTY_20 | F_MINRTY_20 | E_STRHU_20 | E_MUNIT_20 | EP_MUNIT_20 | EPL_MUNIT_20 | F_MUNIT_20 | E_MOBILE_20 | EP_MOBILE_20 | EPL_MOBILE_20 | F_MOBILE_20 | E_CROWD_20 | ET_OCCUPANTS_20 | EP_CROWD_20 | EPL_CROWD_20 | F_CROWD_20 | E_NOVEH_20 | ET_KNOWNVEH_20 | EP_NOVEH_20 | EPL_NOVEH_20 | F_NOVEH_20 | E_GROUPQ_20 | ET_HHTYPE_20 | EP_GROUPQ_20 | EPL_GROUPQ_20 | F_GROUPQ_20 | SPL_THEME1_20 | RPL_THEME1_20 | F_THEME1_20 | SPL_THEME2_20 | RPL_THEME2_20 | F_THEME2_20 | SPL_THEME3_20 | RPL_THEME3_20 | F_THEME3_20 | SPL_THEME4_20 | RPL_THEME4_20 | F_THEME4_20 | SPL_THEMES_20 | RPL_THEMES_20 | F_TOTAL_20 | pre10_lihtc_project_cnt | pre10_lihtc_project_dollars | post10_lihtc_project_cnt | post10_lihtc_project_dollars | lihtc_flag | lihtc_eligibility |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
01005950700 | 01 | 005 | 950700 | AL | Alabama | Barbour County | 3 | South Region | 6 | East South Central Division | 1753 | 687 | 563 | 615 | 1628 | 37.77641 | 0.8088 | 1 | 17 | 667 | 2.548726 | 0.06941 | 0 | 41 | 376 | 10.90426 | 0.01945 | 0 | 62 | 187 | 33.15508 | 0.2464 | 0 | 103 | 563 | 18.29485 | 0.04875 | 0 | 264 | 1208 | 21.85430 | 0.7570 | 1 | 201 | 1527 | 13.163065 | 0.4991 | 0 | 368 | 20.992584 | 0.89510 | 1 | 462 | 26.354820 | 0.66130 | 0 | 211 | 1085 | 19.44700 | 0.7505 | 1 | 107 | 399 | 26.81704 | 0.8048 | 1 | 0 | 1628 | 0.000000 | 0.09298 | 0 | 861 | 1753 | 49.11580 | 0.7101 | 0 | 687 | 17 | 2.474527 | 0.4324 | 0 | 38 | 5.5312955 | 0.6970 | 0 | 3 | 563 | 0.5328597 | 0.3037 | 0 | 19 | 563 | 3.374778 | 0.3529 | 0 | 233 | 1753 | 13.29150 | 0.9517 | 1 | 2.18306 | 0.4137 | 2 | 3.20468 | 0.8377 | 3 | 0.7101 | 0.7035 | 0 | 2.7377 | 0.6100 | 1 | 8.83554 | 0.6264 | 6 | 1527 | 691 | 595 | 565 | 1365 | 41.39194 | 0.8765 | 1 | 37 | 572 | 6.468532 | 0.6776 | 0 | 70 | 376 | 18.617021 | 0.38590 | 0 | 92 | 219 | 42.00913 | 0.4736 | 0 | 162 | 595 | 27.22689 | 0.4454 | 0 | 280 | 1114 | 25.13465 | 0.8942 | 1 | 105 | 1378 | 7.619739 | 0.5505 | 0 | 383 | 25.081860 | 0.88450 | 1 | 337 | 22.069417 | 0.51380 | 0 | 237 | 1041.0000 | 22.76657 | 0.8360 | 1 | 144 | 413.0000 | 34.86683 | 0.9114 | 1 | 11 | 1466 | 0.7503411 | 0.40700 | 0 | 711 | 1527.0000 | 46.56189 | 0.6441 | 0 | 691 | 13 | 1.881331 | 0.3740 | 0 | 37 | 5.3545586 | 0.7152 | 0 | 0 | 595 | 0.0000000 | 0.09796 | 0 | 115 | 595.0000 | 19.327731 | 0.8859 | 1 | 149 | 1527 | 9.757695 | 0.9470 | 1 | 3.4442 | 0.7707 | 2 | 3.55270 | 0.9403 | 3 | 0.6441 | 0.6387 | 0 | 3.02006 | 0.7337 | 2 | 10.66106 | 0.8537 | 7 | 0 | 0 | 0 | 0 | 0 | Yes |
01011952100 | 01 | 011 | 952100 | AL | Alabama | Bullock County | 3 | South Region | 6 | East South Central Division | 1652 | 796 | 554 | 564 | 1652 | 34.14044 | 0.7613 | 1 | 46 | 816 | 5.637255 | 0.33630 | 0 | 96 | 458 | 20.96070 | 0.19930 | 0 | 62 | 96 | 64.58333 | 0.8917 | 1 | 158 | 554 | 28.51986 | 0.29220 | 0 | 271 | 1076 | 25.18587 | 0.8163 | 1 | 155 | 1663 | 9.320505 | 0.3183 | 0 | 199 | 12.046005 | 0.47180 | 0 | 420 | 25.423729 | 0.60240 | 0 | 327 | 1279 | 25.56685 | 0.9151 | 1 | 137 | 375 | 36.53333 | 0.9108 | 1 | 0 | 1590 | 0.000000 | 0.09298 | 0 | 1428 | 1652 | 86.44068 | 0.8939 | 1 | 796 | 0 | 0.000000 | 0.1224 | 0 | 384 | 48.2412060 | 0.9897 | 1 | 19 | 554 | 3.4296029 | 0.7145 | 0 | 45 | 554 | 8.122744 | 0.6556 | 0 | 0 | 1652 | 0.00000 | 0.3640 | 0 | 2.52440 | 0.5138 | 2 | 2.99308 | 0.7515 | 2 | 0.8939 | 0.8856 | 1 | 2.8462 | 0.6637 | 1 | 9.25758 | 0.6790 | 6 | 1382 | 748 | 549 | 742 | 1382 | 53.69030 | 0.9560 | 1 | 40 | 511 | 7.827789 | 0.7730 | 1 | 110 | 402 | 27.363184 | 0.71780 | 0 | 45 | 147 | 30.61224 | 0.2307 | 0 | 155 | 549 | 28.23315 | 0.4773 | 0 | 181 | 905 | 20.00000 | 0.8253 | 1 | 232 | 1382 | 16.787265 | 0.8813 | 1 | 164 | 11.866860 | 0.27170 | 0 | 250 | 18.089725 | 0.26290 | 0 | 258 | 1132.0000 | 22.79152 | 0.8368 | 1 | 99 | 279.0000 | 35.48387 | 0.9162 | 1 | 33 | 1275 | 2.5882353 | 0.64520 | 0 | 1347 | 1382.0000 | 97.46744 | 0.9681 | 1 | 748 | 0 | 0.000000 | 0.1079 | 0 | 375 | 50.1336898 | 0.9922 | 1 | 0 | 549 | 0.0000000 | 0.09796 | 0 | 37 | 549.0000 | 6.739526 | 0.6039 | 0 | 0 | 1382 | 0.000000 | 0.1831 | 0 | 3.9129 | 0.8785 | 4 | 2.93280 | 0.7342 | 2 | 0.9681 | 0.9599 | 1 | 1.98506 | 0.2471 | 1 | 9.79886 | 0.7570 | 8 | 0 | 0 | 0 | 0 | 0 | Yes |
01015000300 | 01 | 015 | 000300 | AL | Alabama | Calhoun County | 3 | South Region | 6 | East South Central Division | 3074 | 1635 | 1330 | 1904 | 3067 | 62.08021 | 0.9710 | 1 | 293 | 1362 | 21.512482 | 0.96630 | 1 | 180 | 513 | 35.08772 | 0.65450 | 0 | 383 | 817 | 46.87882 | 0.5504 | 0 | 563 | 1330 | 42.33083 | 0.70280 | 0 | 720 | 2127 | 33.85049 | 0.9148 | 1 | 628 | 2835 | 22.151675 | 0.8076 | 1 | 380 | 12.361744 | 0.49340 | 0 | 713 | 23.194535 | 0.45030 | 0 | 647 | 2111 | 30.64898 | 0.9708 | 1 | 298 | 773 | 38.55110 | 0.9247 | 1 | 0 | 2878 | 0.000000 | 0.09298 | 0 | 2623 | 3074 | 85.32856 | 0.8883 | 1 | 1635 | 148 | 9.051988 | 0.6465 | 0 | 6 | 0.3669725 | 0.4502 | 0 | 68 | 1330 | 5.1127820 | 0.8082 | 1 | 303 | 1330 | 22.781955 | 0.9029 | 1 | 0 | 3074 | 0.00000 | 0.3640 | 0 | 4.36250 | 0.9430 | 4 | 2.93218 | 0.7233 | 2 | 0.8883 | 0.8800 | 1 | 3.1718 | 0.8070 | 2 | 11.35478 | 0.9009 | 9 | 2390 | 1702 | 1282 | 1287 | 2390 | 53.84937 | 0.9566 | 1 | 102 | 1066 | 9.568480 | 0.8541 | 1 | 158 | 609 | 25.944171 | 0.67520 | 0 | 286 | 673 | 42.49629 | 0.4856 | 0 | 444 | 1282 | 34.63339 | 0.6634 | 0 | 467 | 1685 | 27.71513 | 0.9180 | 1 | 369 | 2379 | 15.510719 | 0.8562 | 1 | 342 | 14.309623 | 0.40850 | 0 | 548 | 22.928870 | 0.57100 | 0 | 647 | 1831.0000 | 35.33588 | 0.9862 | 1 | 202 | 576.0000 | 35.06944 | 0.9130 | 1 | 16 | 2134 | 0.7497657 | 0.40690 | 0 | 1896 | 2390.0000 | 79.33054 | 0.8451 | 1 | 1702 | 96 | 5.640423 | 0.5329 | 0 | 0 | 0.0000000 | 0.2186 | 0 | 0 | 1282 | 0.0000000 | 0.09796 | 0 | 186 | 1282.0000 | 14.508580 | 0.8308 | 1 | 43 | 2390 | 1.799163 | 0.7727 | 1 | 4.2483 | 0.9395 | 4 | 3.28560 | 0.8773 | 2 | 0.8451 | 0.8379 | 1 | 2.45296 | 0.4602 | 2 | 10.83196 | 0.8718 | 9 | 0 | 0 | 0 | 0 | 0 | Yes |
01015000500 | 01 | 015 | 000500 | AL | Alabama | Calhoun County | 3 | South Region | 6 | East South Central Division | 1731 | 1175 | 743 | 1042 | 1619 | 64.36072 | 0.9767 | 1 | 124 | 472 | 26.271186 | 0.98460 | 1 | 136 | 461 | 29.50108 | 0.48970 | 0 | 163 | 282 | 57.80142 | 0.7919 | 1 | 299 | 743 | 40.24226 | 0.64910 | 0 | 340 | 1270 | 26.77165 | 0.8389 | 1 | 460 | 1794 | 25.641026 | 0.8722 | 1 | 271 | 15.655690 | 0.70190 | 0 | 368 | 21.259388 | 0.32190 | 0 | 507 | 1449 | 34.98965 | 0.9885 | 1 | 150 | 386 | 38.86010 | 0.9269 | 1 | 0 | 1677 | 0.000000 | 0.09298 | 0 | 1559 | 1731 | 90.06355 | 0.9123 | 1 | 1175 | 50 | 4.255319 | 0.5128 | 0 | 4 | 0.3404255 | 0.4480 | 0 | 0 | 743 | 0.0000000 | 0.1238 | 0 | 122 | 743 | 16.419919 | 0.8473 | 1 | 0 | 1731 | 0.00000 | 0.3640 | 0 | 4.32150 | 0.9362 | 4 | 3.03218 | 0.7679 | 2 | 0.9123 | 0.9038 | 1 | 2.2959 | 0.3818 | 1 | 10.56188 | 0.8244 | 8 | 940 | 907 | 488 | 586 | 940 | 62.34043 | 0.9815 | 1 | 59 | 297 | 19.865320 | 0.9833 | 1 | 100 | 330 | 30.303030 | 0.79220 | 1 | 58 | 158 | 36.70886 | 0.3497 | 0 | 158 | 488 | 32.37705 | 0.6020 | 0 | 199 | 795 | 25.03145 | 0.8930 | 1 | 118 | 940 | 12.553192 | 0.7770 | 1 | 246 | 26.170213 | 0.90530 | 1 | 118 | 12.553192 | 0.08233 | 0 | 383 | 822.5089 | 46.56484 | 0.9984 | 1 | 30 | 197.8892 | 15.16000 | 0.5363 | 0 | 0 | 889 | 0.0000000 | 0.09479 | 0 | 898 | 940.3866 | 95.49264 | 0.9489 | 1 | 907 | 0 | 0.000000 | 0.1079 | 0 | 2 | 0.2205072 | 0.4456 | 0 | 2 | 488 | 0.4098361 | 0.23670 | 0 | 146 | 487.6463 | 29.939736 | 0.9404 | 1 | 0 | 940 | 0.000000 | 0.1831 | 0 | 4.2368 | 0.9379 | 4 | 2.61712 | 0.5593 | 2 | 0.9489 | 0.9409 | 1 | 1.91370 | 0.2196 | 1 | 9.71652 | 0.7468 | 8 | 0 | 0 | 0 | 0 | 0 | Yes |
01015000600 | 01 | 015 | 000600 | AL | Alabama | Calhoun County | 3 | South Region | 6 | East South Central Division | 2571 | 992 | 796 | 1394 | 2133 | 65.35396 | 0.9789 | 1 | 263 | 905 | 29.060773 | 0.98990 | 1 | 121 | 306 | 39.54248 | 0.75940 | 1 | 209 | 490 | 42.65306 | 0.4481 | 0 | 330 | 796 | 41.45729 | 0.68030 | 0 | 641 | 1556 | 41.19537 | 0.9554 | 1 | 416 | 1760 | 23.636364 | 0.8383 | 1 | 220 | 8.556982 | 0.24910 | 0 | 584 | 22.714897 | 0.41610 | 0 | 539 | 1353 | 39.83740 | 0.9955 | 1 | 243 | 466 | 52.14592 | 0.9783 | 1 | 30 | 2366 | 1.267963 | 0.48990 | 0 | 1944 | 2571 | 75.61260 | 0.8440 | 1 | 992 | 164 | 16.532258 | 0.7673 | 1 | 8 | 0.8064516 | 0.5110 | 0 | 46 | 796 | 5.7788945 | 0.8329 | 1 | 184 | 796 | 23.115578 | 0.9049 | 1 | 614 | 2571 | 23.88176 | 0.9734 | 1 | 4.44280 | 0.9548 | 4 | 3.12890 | 0.8088 | 2 | 0.8440 | 0.8362 | 1 | 3.9895 | 0.9792 | 4 | 12.40520 | 0.9696 | 11 | 1950 | 964 | 719 | 837 | 1621 | 51.63479 | 0.9467 | 1 | 157 | 652 | 24.079755 | 0.9922 | 1 | 22 | 364 | 6.043956 | 0.01547 | 0 | 129 | 355 | 36.33803 | 0.3420 | 0 | 151 | 719 | 21.00139 | 0.2303 | 0 | 363 | 1387 | 26.17159 | 0.9048 | 1 | 351 | 1613 | 21.760694 | 0.9435 | 1 | 249 | 12.769231 | 0.32090 | 0 | 356 | 18.256410 | 0.27140 | 0 | 332 | 1259.7041 | 26.35540 | 0.9135 | 1 | 136 | 435.6156 | 31.22018 | 0.8775 | 1 | 0 | 1891 | 0.0000000 | 0.09479 | 0 | 1463 | 1949.9821 | 75.02633 | 0.8219 | 1 | 964 | 14 | 1.452282 | 0.3459 | 0 | 8 | 0.8298755 | 0.5269 | 0 | 19 | 719 | 2.6425591 | 0.61120 | 0 | 197 | 719.0542 | 27.397100 | 0.9316 | 1 | 329 | 1950 | 16.871795 | 0.9655 | 1 | 4.0175 | 0.9001 | 4 | 2.47809 | 0.4764 | 2 | 0.8219 | 0.8149 | 1 | 3.38110 | 0.8712 | 2 | 10.69859 | 0.8583 | 9 | 0 | 0 | 0 | 0 | 0 | Yes |
01015002101 | 01 | 015 | 002101 | AL | Alabama | Calhoun County | 3 | South Region | 6 | East South Central Division | 3872 | 1454 | 1207 | 1729 | 2356 | 73.38710 | 0.9916 | 1 | 489 | 2020 | 24.207921 | 0.97860 | 1 | 20 | 168 | 11.90476 | 0.02541 | 0 | 718 | 1039 | 69.10491 | 0.9332 | 1 | 738 | 1207 | 61.14333 | 0.96900 | 1 | 113 | 725 | 15.58621 | 0.6035 | 0 | 664 | 3943 | 16.839970 | 0.6495 | 0 | 167 | 4.313016 | 0.05978 | 0 | 238 | 6.146694 | 0.02255 | 0 | 264 | 2359 | 11.19118 | 0.3027 | 0 | 94 | 263 | 35.74144 | 0.9050 | 1 | 46 | 3769 | 1.220483 | 0.48250 | 0 | 1601 | 3872 | 41.34814 | 0.6572 | 0 | 1454 | 761 | 52.338377 | 0.9504 | 1 | 65 | 4.4704264 | 0.6738 | 0 | 5 | 1207 | 0.4142502 | 0.2791 | 0 | 113 | 1207 | 9.362055 | 0.7004 | 0 | 1516 | 3872 | 39.15289 | 0.9860 | 1 | 4.19220 | 0.9133 | 3 | 1.77253 | 0.1304 | 1 | 0.6572 | 0.6511 | 0 | 3.5897 | 0.9337 | 2 | 10.21163 | 0.7885 | 6 | 3238 | 1459 | 1014 | 1082 | 1836 | 58.93246 | 0.9735 | 1 | 251 | 1403 | 17.890235 | 0.9767 | 1 | 31 | 155 | 20.000000 | 0.44920 | 0 | 515 | 859 | 59.95343 | 0.8554 | 1 | 546 | 1014 | 53.84615 | 0.9535 | 1 | 134 | 916 | 14.62882 | 0.7033 | 0 | 251 | 3238 | 7.751699 | 0.5588 | 0 | 167 | 5.157505 | 0.03597 | 0 | 169 | 5.219271 | 0.02111 | 0 | 323 | 1667.0000 | 19.37612 | 0.7205 | 0 | 94 | 277.0000 | 33.93502 | 0.9040 | 1 | 0 | 3164 | 0.0000000 | 0.09479 | 0 | 1045 | 3238.0000 | 32.27301 | 0.5125 | 0 | 1459 | 607 | 41.603838 | 0.9185 | 1 | 65 | 4.4551062 | 0.6949 | 0 | 24 | 1014 | 2.3668639 | 0.57900 | 0 | 85 | 1014.0000 | 8.382643 | 0.6775 | 0 | 1402 | 3238 | 43.298332 | 0.9876 | 1 | 4.1658 | 0.9263 | 3 | 1.77637 | 0.1225 | 1 | 0.5125 | 0.5082 | 0 | 3.85750 | 0.9661 | 2 | 10.31217 | 0.8160 | 6 | 0 | 0 | 0 | 0 | 0 | Yes |
Housing Price Index Data
We can download our housing price index data set and wrangle it to keep 2010 and 2020 data:
Code
hpi_df <- read.csv("https://r-class.github.io/paf-515-course-materials/data/raw/HPI/HPI_AT_BDL_tract.csv")
Code
hpi_df_10_20 <- hpi_df %>%
mutate(GEOID10 = str_pad(tract, 11, "left", pad=0)) %>%
filter(year %in% c(2010, 2020)) %>%
select(GEOID10, state_abbr, year, hpi) %>%
pivot_wider(names_from = year, values_from = hpi) %>%
mutate(housing_price_index10 = `2010`,
housing_price_index20 = `2020`) %>%
select(GEOID10, state_abbr, housing_price_index10, housing_price_index20)
# View data
hpi_df_10_20 %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID10 | state_abbr | housing_price_index10 | housing_price_index20 |
---|---|---|---|
01001020100 | AL | 132.35 | 152.78 |
01001020200 | AL | 123.78 | 123.37 |
01001020300 | AL | 158.57 | 167.01 |
01001020400 | AL | 165.11 | 179.60 |
01001020501 | AL | 172.55 | 180.96 |
01001020502 | AL | 158.75 | 164.25 |
CBSA Crosswalk
In this lab we will be examining our tract-level data to determine whether the NMTC and LIHTC programs had an impact on our measures of Social Vulnerability or economic conditions.
However, since tracts are relatively small units of geographic that can be impacted by broader city-level trends, we will identify the overarching Core Based Statistical Areas that contain these tracts so that we can control for variance in city-level trends.
The US Census Bureau Explains:
The general concept of a metropolitan or micropolitan statistical area is that of a core area containing a substantial population nucleus, together with adjacent communities having a high degree of economic and social integration with that core. … Each metropolitan statistical area must have at least one urban area of 50,000 or more inhabitants. Each micropolitan statistical area must have at least one urban area of at least 10,000 but less than 50,000 population.
Under the standards, the county (or counties) in which at least 50 percent of the population resides within urban areas of 10,000 or more population, or that contain at least 5,000 people residing within a single urban area of 10,000 or more population, is identified as a “central county” (counties). Additional “outlying counties” are included in the CBSA if they meet specified requirements of commuting to or from the central counties. Counties or equivalent entities form the geographic “building blocks” for metropolitan and micropolitan statistical areas throughout the United States and Puerto Rico.
Source: US Census Bureau
Code
msa_csa_crosswalk <- rio::import("https://r-class.github.io/paf-515-course-materials/data/raw/CSA_MSA_Crosswalk/qcew-county-msa-csa-crosswalk.xlsx", which=4)
msa_csa_crosswalk <- msa_csa_crosswalk %>%
mutate(county_fips = str_pad(`County Code`, 5, "left", pad=0),
cbsa = coalesce(`CSA Title`, `MSA Title`),
cbsa_code = coalesce(`CSA Code`, `MSA Code`),
county_title = `County Title`) %>%
select(county_fips, county_title, cbsa, cbsa_code)
msa_csa_crosswalk %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
county_fips | county_title | cbsa | cbsa_code |
---|---|---|---|
01001 | Autauga County, Alabama | Montgomery-Alexander City, AL CSA | CS388 |
01003 | Baldwin County, Alabama | Mobile-Daphne-Fairhope, AL CSA | CS380 |
01005 | Barbour County, Alabama | Eufaula, AL-GA MicroSA | C2164 |
01007 | Bibb County, Alabama | Birmingham-Hoover-Cullman, AL CSA | CS142 |
01009 | Blount County, Alabama | Birmingham-Hoover-Cullman, AL CSA | CS142 |
01015 | Calhoun County, Alabama | Anniston-Oxford, AL MSA | C1150 |
TidyCensus API Pull
Now that we have our SVI, housing price index, and CBSA metro data sets loaded, we need to pull in additional variables to find the Median Income and Median Home Value for our census tracts of interest.
If you recall from Lab 02, to build our SVI dataset, we pulled data from the 2010 American Community Survey 5-year (ACS5) estimate data (with 2012 ACS5 to supplement for Health Insurance and Disability Status data) and 2020 American Community Survey 5-year estimate data.
Since our 2020 data was assigned to different statistical boundaries based on the 2020 census than the 2010 statistical boundaries https://www.census.gov/programs-surveys/acs/geography-acs/geography-boundaries-by-year.2020.html#list-tab-626530102, we used the NHGIS Crosswalk’s population and housing weights https://www.nhgis.org/geographic-crosswalks to assign census block group data for 2020 to the 2010 statistical boundaries to allow for equitable comparison across time periods.
While this methodology works well for population and housing estimates, the grouped nature of Median Income and Median Home Values makes the process of cross-walking these variables more complicated. Therefore, for the purposes of our project, we will use 2010 ACS5 and 2019 ACS5 Median Income and Median Home Value data since the 2019 ACS5 used the 2010 statistical boundaries.
We will need to make a few adjustments to our 2019 dataset to account for minor errata in the 2010 Census Data that were fixed by the Census Bureau in subsequent releases https://www.census.gov/programs-surveys/geography/technical-documentation/user-note/2010-census-geography.html. Specifically, since the 2010 ACS5 data still has these errors we will need to undo the fixes to make our 2019 data exactly match the 2010 data. The technical documentation notes provide guidance on these adjustments.
Load and Search Variables
Before we begin our TidyCensus API pull, we first need to identify what variables we want to pull. We can use the package’s built in tidycensus::load_variables()
function to view all of our variables. Documentation on this function is available on the website of the package creator, Kyle Walker: https://walker-data.com/tidycensus/articles/basic-usage.html#searching-for-variables.
We can also use a more general Census variable directory website to find variables of interest. Check out the following resources for median home value B25077
:
Census Reporter: https://censusreporter.org/tables/B25077/
Social Explorer Data Dictionary: https://www.socialexplorer.com/data/ACS2018/metadata/?ds=ACS18&table=B25077
The Census Bureau’s official website data.census.gov: (https://data.census.gov/table/ACSDT1Y2022.B25077)
2010
Code
acs_variables10 <- load_variables(2010, "acs5", cache = TRUE)
acs_variables10 %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
name | label | concept |
---|---|---|
B00001_001 | Estimate!!Total | UNWEIGHTED SAMPLE COUNT OF THE POPULATION |
B00002_001 | Estimate!!Total | UNWEIGHTED SAMPLE HOUSING UNITS |
B01001_001 | Estimate!!Total | SEX BY AGE |
B01001_002 | Estimate!!Total!!Male | SEX BY AGE |
B01001_003 | Estimate!!Total!!Male!!Under 5 years | SEX BY AGE |
B01001_004 | Estimate!!Total!!Male!!5 to 9 years | SEX BY AGE |
When using data from the load_variables() function, we can search for keywords by using grepl() to filter through the label or concept columns:
Code
name | label | concept |
---|---|---|
B06011_001 | Estimate!!Median income in the past 12 months!!Total | MEDIAN INCOME IN THE PAST 12 MONTHS (IN 2010 INFLATION-ADJUSTED DOLLARS) BY PLACE OF BIRTH IN THE UNITED STATES |
B06011_002 | Estimate!!Median income in the past 12 months!!Total!!Born in state of residence | MEDIAN INCOME IN THE PAST 12 MONTHS (IN 2010 INFLATION-ADJUSTED DOLLARS) BY PLACE OF BIRTH IN THE UNITED STATES |
B06011_003 | Estimate!!Median income in the past 12 months!!Total!!Born in other state of the United States | MEDIAN INCOME IN THE PAST 12 MONTHS (IN 2010 INFLATION-ADJUSTED DOLLARS) BY PLACE OF BIRTH IN THE UNITED STATES |
B06011_004 | Estimate!!Median income in the past 12 months!!Total!!Native; born outside the United States | MEDIAN INCOME IN THE PAST 12 MONTHS (IN 2010 INFLATION-ADJUSTED DOLLARS) BY PLACE OF BIRTH IN THE UNITED STATES |
B06011_005 | Estimate!!Median income in the past 12 months!!Total!!Foreign born | MEDIAN INCOME IN THE PAST 12 MONTHS (IN 2010 INFLATION-ADJUSTED DOLLARS) BY PLACE OF BIRTH IN THE UNITED STATES |
B06011PR_001 | Estimate!!Median income in the past 12 months!!Total | MEDIAN INCOME IN THE PAST 12 MONTHS (IN 2010 INFLATION-ADJUSTED DOLLARS) BY PLACE OF BIRTH IN PUERTO RICO |
B06011PR_002 | Estimate!!Median income in the past 12 months!!Total!!Born in Puerto Rico | MEDIAN INCOME IN THE PAST 12 MONTHS (IN 2010 INFLATION-ADJUSTED DOLLARS) BY PLACE OF BIRTH IN PUERTO RICO |
B06011PR_003 | Estimate!!Median income in the past 12 months!!Total!!Born in other state of the United States | MEDIAN INCOME IN THE PAST 12 MONTHS (IN 2010 INFLATION-ADJUSTED DOLLARS) BY PLACE OF BIRTH IN PUERTO RICO |
B06011PR_004 | Estimate!!Median income in the past 12 months!!Total!!Native; born elsewhere | MEDIAN INCOME IN THE PAST 12 MONTHS (IN 2010 INFLATION-ADJUSTED DOLLARS) BY PLACE OF BIRTH IN PUERTO RICO |
B06011PR_005 | Estimate!!Median income in the past 12 months!!Total!!Foreign born | MEDIAN INCOME IN THE PAST 12 MONTHS (IN 2010 INFLATION-ADJUSTED DOLLARS) BY PLACE OF BIRTH IN PUERTO RICO |
In addition, if we have already found our table of interest using one of the variable explorer tools above, we can check that it’s available in our survey data by searching the name column:
2019
We can then repeat the same steps for 2019:
Code
acs_variables19 <- load_variables(2019, "acs5", cache = TRUE)
acs_variables19 %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
name | label | concept | geography |
---|---|---|---|
B01001A_001 | Estimate!!Total: | SEX BY AGE (WHITE ALONE) | tract |
B01001A_002 | Estimate!!Total:!!Male: | SEX BY AGE (WHITE ALONE) | tract |
B01001A_003 | Estimate!!Total:!!Male:!!Under 5 years | SEX BY AGE (WHITE ALONE) | tract |
B01001A_004 | Estimate!!Total:!!Male:!!5 to 9 years | SEX BY AGE (WHITE ALONE) | tract |
B01001A_005 | Estimate!!Total:!!Male:!!10 to 14 years | SEX BY AGE (WHITE ALONE) | tract |
B01001A_006 | Estimate!!Total:!!Male:!!15 to 17 years | SEX BY AGE (WHITE ALONE) | tract |
Code
name | label | concept | geography |
---|---|---|---|
B06011PR_001 | Estimate!!Median income in the past 12 months --!!Total: | MEDIAN INCOME IN THE PAST 12 MONTHS (IN 2019 INFLATION-ADJUSTED DOLLARS) BY PLACE OF BIRTH IN PUERTO RICO | NA |
B06011PR_002 | Estimate!!Median income in the past 12 months --!!Total:!!Born in Puerto Rico | MEDIAN INCOME IN THE PAST 12 MONTHS (IN 2019 INFLATION-ADJUSTED DOLLARS) BY PLACE OF BIRTH IN PUERTO RICO | NA |
B06011PR_003 | Estimate!!Median income in the past 12 months --!!Total:!!Born in other state of the United States | MEDIAN INCOME IN THE PAST 12 MONTHS (IN 2019 INFLATION-ADJUSTED DOLLARS) BY PLACE OF BIRTH IN PUERTO RICO | NA |
B06011PR_004 | Estimate!!Median income in the past 12 months --!!Total:!!Native; born elsewhere | MEDIAN INCOME IN THE PAST 12 MONTHS (IN 2019 INFLATION-ADJUSTED DOLLARS) BY PLACE OF BIRTH IN PUERTO RICO | NA |
B06011PR_005 | Estimate!!Median income in the past 12 months --!!Total:!!Foreign born | MEDIAN INCOME IN THE PAST 12 MONTHS (IN 2019 INFLATION-ADJUSTED DOLLARS) BY PLACE OF BIRTH IN PUERTO RICO | NA |
B06011_001 | Estimate!!Median income in the past 12 months --!!Total: | MEDIAN INCOME IN THE PAST 12 MONTHS (IN 2019 INFLATION-ADJUSTED DOLLARS) BY PLACE OF BIRTH IN THE UNITED STATES | tract |
B06011_002 | Estimate!!Median income in the past 12 months --!!Total:!!Born in state of residence | MEDIAN INCOME IN THE PAST 12 MONTHS (IN 2019 INFLATION-ADJUSTED DOLLARS) BY PLACE OF BIRTH IN THE UNITED STATES | tract |
B06011_003 | Estimate!!Median income in the past 12 months --!!Total:!!Born in other state of the United States | MEDIAN INCOME IN THE PAST 12 MONTHS (IN 2019 INFLATION-ADJUSTED DOLLARS) BY PLACE OF BIRTH IN THE UNITED STATES | tract |
B06011_004 | Estimate!!Median income in the past 12 months --!!Total:!!Native; born outside the United States | MEDIAN INCOME IN THE PAST 12 MONTHS (IN 2019 INFLATION-ADJUSTED DOLLARS) BY PLACE OF BIRTH IN THE UNITED STATES | tract |
B06011_005 | Estimate!!Median income in the past 12 months --!!Total:!!Foreign born | MEDIAN INCOME IN THE PAST 12 MONTHS (IN 2019 INFLATION-ADJUSTED DOLLARS) BY PLACE OF BIRTH IN THE UNITED STATES | tract |
Data Pull
Now that we have our data of interest identified, we can create a function to pull our data from the Census API using the tidycensus package:
Code
# TidyCensus pull
census_pull<- function(st, yr) {
df <- tibble(GEOID = "", NAME = "", variable = "", estimate = double(), moe = double())
pull <- get_acs(geography = "tract",
variables = c(
# Median Income
Median_Income = "B06011_001",
# Median Home Value
Median_Home_Value = "B25077_001"
),
survey = "acs5",
state = st,
year = yr)
df <- bind_rows(df, pull)
}
Create list of states
Since we will need data for all of our states to complete a national analysis, we first need to create a list of all abbreviations:
[[1]]
[1] "AL" "AK" "AZ" "AR" "CA" "CO" "CT" "DE" "DC" "FL" "GA" "HI" "ID" "IL" "IN"
[16] "IA" "KS" "KY" "LA" "ME" "MD" "MA" "MI" "MN" "MS" "MO" "MT" "NE" "NV" "NH"
[31] "NJ" "NM" "NY" "NC" "ND" "OH" "OK" "OR" "PA" "RI" "SC" "SD" "TN" "TX" "UT"
[46] "VT" "VA" "WA" "WV" "WI" "WY"
Pull Median Home Values and Median Income for 2010
Now we can loop over our list and use our function to pull the data:
Note that since we are pulling data for all 50 states and DC, the census pull code chunks may take a few minutes to run. If you have difficulties completing the census pulls, you can download them directly from 2010 Census Download Link and 2019 Census Download Link and place them in your data/raw/Census_Data_SVI folder.
You can then load your data with the following code instead of completing the API query:
load(here::here("data/raw/Census_Data_SVI/lab_05_census_pull10_df.rds"))
load(here::here("data/raw/Census_Data_SVI/lab_05_census_pull19_df.rds"))
Code
census_pull10 <- lapply(states, census_pull, yr = 2010)
Code
census_pull10_df <- census_pull10[[1]] %>%
# Drop margin of error column
select(-moe) %>%
# Add suffix to variable names
mutate(variable = paste0(variable, "_10")) %>%
# Pivot data frame
pivot_wider(
names_from = variable,
values_from = c(estimate)
)
census_pull10_df %>% head(10) %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID | NAME | Median_Income_10 | Median_Home_Value_10 |
---|---|---|---|
01001020100 | Census Tract 201, Autauga County, Alabama | 31769 | 120700 |
01001020200 | Census Tract 202, Autauga County, Alabama | 19437 | 138500 |
01001020300 | Census Tract 203, Autauga County, Alabama | 24146 | 111300 |
01001020400 | Census Tract 204, Autauga County, Alabama | 27735 | 126300 |
01001020500 | Census Tract 205, Autauga County, Alabama | 35517 | 173000 |
01001020600 | Census Tract 206, Autauga County, Alabama | 24597 | 110700 |
01001020700 | Census Tract 207, Autauga County, Alabama | 22114 | 93800 |
01001020801 | Census Tract 208.01, Autauga County, Alabama | 30841 | 258000 |
01001020802 | Census Tract 208.02, Autauga County, Alabama | 29006 | 145100 |
01001020900 | Census Tract 209, Autauga County, Alabama | 24841 | 108000 |
Pull Median Home Values and Median Income for 2019
We can repeat the steps from above for 2019:
Code
census_pull19 <- lapply(states, census_pull, yr = 2019)
Now for 2019 to adjust for the census errata, we need to process our data a bit further and undo the fixes for our census tract names to match the errors in the 2010 data since we are using 2010 census tracts:
Code
census_pull19_df <- census_pull19[[1]] %>%
# Select columns
select(GEOID, NAME, variable, estimate, moe) %>%
# Create individual FIPS columns for state, county, and tract
mutate(FIPS_st = substr(GEOID, 1, 2),
FIPS_county = substr(GEOID, 3, 5),
FIPS_tract = substr(GEOID, 6, 11)) %>%
# Los Angeles, CA Census Tract fixes
mutate(FIPS_tract2 = if_else((FIPS_county == "037" & FIPS_st == "06" & FIPS_tract == "137000"), "930401", FIPS_tract )) %>%
# Pima County, AZ Census Tract fixes
mutate(FIPS_tract2 = if_else((FIPS_county == "019" & FIPS_st == "04" & FIPS_tract == "002704"), "002701", FIPS_tract2 )) %>%
mutate(FIPS_tract2 = if_else((FIPS_county == "019" & FIPS_st == "04" & FIPS_tract == "002906"), "002903", FIPS_tract2 )) %>%
mutate(FIPS_tract2 = if_else((FIPS_county == "019" & FIPS_st == "04" & FIPS_tract == "004118"), "410501", FIPS_tract2 )) %>%
mutate(FIPS_tract2 = if_else((FIPS_county == "019" & FIPS_st == "04" & FIPS_tract == "004121"), "410502", FIPS_tract2 )) %>%
mutate(FIPS_tract2 = if_else((FIPS_county == "019" & FIPS_st == "04" & FIPS_tract == "004125"), "410503", FIPS_tract2 )) %>%
mutate(FIPS_tract2 = if_else((FIPS_county == "019" & FIPS_st == "04" & FIPS_tract == "005200"), "470400", FIPS_tract2 )) %>%
mutate(FIPS_tract2 = if_else((FIPS_county == "019" & FIPS_st == "04" & FIPS_tract == "005300"), "470500", FIPS_tract2 )) %>%
# Madison County, NY Census Tract fixes
mutate(FIPS_tract2 = if_else((FIPS_county == "053" & FIPS_st == "36" & FIPS_tract == "030101"), "940101", FIPS_tract2 )) %>%
mutate(FIPS_tract2 = if_else((FIPS_county == "053" & FIPS_st == "36" & FIPS_tract == "030102"), "940102", FIPS_tract2 )) %>%
mutate(FIPS_tract2 = if_else((FIPS_county == "053" & FIPS_st == "36" & FIPS_tract == "030103"), "940103", FIPS_tract2 )) %>%
mutate(FIPS_tract2 = if_else((FIPS_county == "053" & FIPS_st == "36" & FIPS_tract == "030200"), "940200", FIPS_tract2 )) %>%
mutate(FIPS_tract2 = if_else((FIPS_county == "053" & FIPS_st == "36" & FIPS_tract == "030300"), "940300", FIPS_tract2 )) %>%
mutate(FIPS_tract2 = if_else((FIPS_county == "053" & FIPS_st == "36" & FIPS_tract == "030401"), "940401", FIPS_tract2 )) %>%
mutate(FIPS_tract2 = if_else((FIPS_county == "053" & FIPS_st == "36" & FIPS_tract == "030403"), "940403", FIPS_tract2 )) %>%
mutate(FIPS_tract2 = if_else((FIPS_county == "053" & FIPS_st == "36" & FIPS_tract == "030600"), "940600", FIPS_tract2 )) %>%
mutate(FIPS_tract2 = if_else((FIPS_county == "053" & FIPS_st == "36" & FIPS_tract == "030402"), "940700", FIPS_tract2 )) %>%
# Oneida County, NY Census Tract fixes
mutate(FIPS_tract2 = if_else((FIPS_county == "065" & FIPS_st == "36" & FIPS_tract == "024800"), "940000", FIPS_tract2 )) %>%
mutate(FIPS_tract2 = if_else((FIPS_county == "065" & FIPS_st == "36" & FIPS_tract == "024700"), "940100", FIPS_tract2 )) %>%
mutate(FIPS_tract2 = if_else((FIPS_county == "065" & FIPS_st == "36" & FIPS_tract == "024900"), "940200", FIPS_tract2 )) %>%
# Move columns in data set
relocate(c(FIPS_st, FIPS_county, FIPS_tract, FIPS_tract2),.after = GEOID) %>%
# Create new GEOID column
mutate(GEOID = paste0(FIPS_st, FIPS_county, FIPS_tract2)) %>%
# Drop newly created FIPS columns and margin of error
select(-FIPS_st, -FIPS_county, -FIPS_tract, -FIPS_tract2, -moe) %>%
# Add suffix
mutate(variable = paste0(variable, "_19")) %>%
# Pivot data set
pivot_wider(
names_from = variable,
values_from = c(estimate)
)
census_pull19_df %>% head(10) %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID | NAME | Median_Income_19 | Median_Home_Value_19 |
---|---|---|---|
01001020100 | Census Tract 201, Autauga County, Alabama | 25970 | 136100 |
01001020200 | Census Tract 202, Autauga County, Alabama | 20154 | 90500 |
01001020300 | Census Tract 203, Autauga County, Alabama | 27383 | 122600 |
01001020400 | Census Tract 204, Autauga County, Alabama | 34620 | 152700 |
01001020500 | Census Tract 205, Autauga County, Alabama | 41178 | 186900 |
01001020600 | Census Tract 206, Autauga County, Alabama | 21146 | 103600 |
01001020700 | Census Tract 207, Autauga County, Alabama | 20934 | 82400 |
01001020801 | Census Tract 208.01, Autauga County, Alabama | 31667 | 322900 |
01001020802 | Census Tract 208.02, Autauga County, Alabama | 33086 | 171500 |
01001020900 | Census Tract 209, Autauga County, Alabama | 32677 | 156900 |
Join data sets
Now that our data is downloaded and wrangled, we can combine our data sets. Before we do this, you may have noticed in our variable definitions that the Median Income values are inflation-adjusted. Since home prices are also subject to inflation, we need to adjust our 2010 data to match 2019 dollars. To accomplish this, we can utilize an inflation calculator to find the correct multiple for our 2010 to 2019 match.
Inflation calculator
There are several inflation calculators available including one from the Bureau of Labor Statistics https://www.bls.gov/data/inflation_calculator.htm.
Using the BLS’ inflation calculator, we can enter $1 in 2010 to see what it would be worth in 2019 and find that it would increase to $1.16. Thus, we can multiply our 2010 US dollars by 1.16 to make them equivalent to the 2019 numbers.
We can then assign this number to a variable and adjust our data accordingly:
Code
inflation_adj = 1.16
Code
# Join 2010 and 2019 Median Income and Home Value Data
census_pull_df <- left_join(census_pull10_df, census_pull19_df[c("GEOID", "Median_Income_19", "Median_Home_Value_19")], join_by("GEOID" == "GEOID"))
# Create new inflation adjusted columns for 2010 median income and median home value, find changes over time
census_pull_df <- census_pull_df %>%
mutate(Median_Income_10adj = Median_Income_10*inflation_adj,
Median_Home_Value_10adj = Median_Home_Value_10*inflation_adj,
Median_Income_Change = Median_Income_19 - Median_Income_10adj,
Median_Income_Change_pct = (Median_Income_19 - Median_Income_10adj)/Median_Income_10adj,
Median_Home_Value_Change = Median_Home_Value_19 - Median_Home_Value_10adj,
Median_Home_Value_Change_pct = (Median_Home_Value_19 - Median_Home_Value_10adj)/Median_Home_Value_10adj)
# View data
census_pull_df %>% head(10) %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID | NAME | Median_Income_10 | Median_Home_Value_10 | Median_Income_19 | Median_Home_Value_19 | Median_Income_10adj | Median_Home_Value_10adj | Median_Income_Change | Median_Income_Change_pct | Median_Home_Value_Change | Median_Home_Value_Change_pct |
---|---|---|---|---|---|---|---|---|---|---|---|
01001020100 | Census Tract 201, Autauga County, Alabama | 31769 | 120700 | 25970 | 136100 | 36852.04 | 140012 | -10882.04 | -0.2952900 | -3912 | -0.0279405 |
01001020200 | Census Tract 202, Autauga County, Alabama | 19437 | 138500 | 20154 | 90500 | 22546.92 | 160660 | -2392.92 | -0.1061307 | -70160 | -0.4366986 |
01001020300 | Census Tract 203, Autauga County, Alabama | 24146 | 111300 | 27383 | 122600 | 28009.36 | 129108 | -626.36 | -0.0223625 | -6508 | -0.0504074 |
01001020400 | Census Tract 204, Autauga County, Alabama | 27735 | 126300 | 34620 | 152700 | 32172.60 | 146508 | 2447.40 | 0.0760709 | 6192 | 0.0422639 |
01001020500 | Census Tract 205, Autauga County, Alabama | 35517 | 173000 | 41178 | 186900 | 41199.72 | 200680 | -21.72 | -0.0005272 | -13780 | -0.0686665 |
01001020600 | Census Tract 206, Autauga County, Alabama | 24597 | 110700 | 21146 | 103600 | 28532.52 | 128412 | -7386.52 | -0.2588807 | -24812 | -0.1932218 |
01001020700 | Census Tract 207, Autauga County, Alabama | 22114 | 93800 | 20934 | 82400 | 25652.24 | 108808 | -4718.24 | -0.1839309 | -26408 | -0.2427027 |
01001020801 | Census Tract 208.01, Autauga County, Alabama | 30841 | 258000 | 31667 | 322900 | 35775.56 | 299280 | -4108.56 | -0.1148426 | 23620 | 0.0789227 |
01001020802 | Census Tract 208.02, Autauga County, Alabama | 29006 | 145100 | 33086 | 171500 | 33646.96 | 168316 | -560.96 | -0.0166719 | 3184 | 0.0189168 |
01001020900 | Census Tract 209, Autauga County, Alabama | 24841 | 108000 | 32677 | 156900 | 28815.56 | 125280 | 3861.44 | 0.1340054 | 31620 | 0.2523946 |
Create NMTC data sets
Join SVI data for NMTC with Median Income, Median Home Value, and Housing Price Index data:
Code
svi_divisional_nmtc_df0 <- left_join(svi_divisional_nmtc, census_pull_df, join_by("GEOID_2010_trt" == "GEOID"))
svi_divisional_nmtc_df1 <- left_join(svi_divisional_nmtc_df0, hpi_df_10_20, join_by("GEOID_2010_trt" == "GEOID10")) %>%
unite("county_fips", FIPS_st, FIPS_county, sep = "")
svi_divisional_nmtc_df <- left_join(svi_divisional_nmtc_df1, msa_csa_crosswalk, join_by("county_fips" == "county_fips"))
svi_divisional_nmtc_df %>% head(10) %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | county_fips | FIPS_tract | state | state_name | county | region_number | region | division_number | division | E_TOTPOP_10 | E_HU_10 | E_HH_10 | E_POV150_10 | ET_POVSTATUS_10 | EP_POV150_10 | EPL_POV150_10 | F_POV150_10 | E_UNEMP_10 | ET_EMPSTATUS_10 | EP_UNEMP_10 | EPL_UNEMP_10 | F_UNEMP_10 | E_HBURD_OWN_10 | ET_HOUSINGCOST_OWN_10 | EP_HBURD_OWN_10 | EPL_HBURD_OWN_10 | F_HBURD_OWN_10 | E_HBURD_RENT_10 | ET_HOUSINGCOST_RENT_10 | EP_HBURD_RENT_10 | EPL_HBURD_RENT_10 | F_HBURD_RENT_10 | E_HBURD_10 | ET_HOUSINGCOST_10 | EP_HBURD_10 | EPL_HBURD_10 | F_HBURD_10 | E_NOHSDP_10 | ET_EDSTATUS_10 | EP_NOHSDP_10 | EPL_NOHSDP_10 | F_NOHSDP_10 | E_UNINSUR_12 | ET_INSURSTATUS_12 | EP_UNINSUR_12 | EPL_UNINSUR_12 | F_UNINSUR_12 | E_AGE65_10 | EP_AGE65_10 | EPL_AGE65_10 | F_AGE65_10 | E_AGE17_10 | EP_AGE17_10 | EPL_AGE17_10 | F_AGE17_10 | E_DISABL_12 | ET_DISABLSTATUS_12 | EP_DISABL_12 | EPL_DISABL_12 | F_DISABL_12 | E_SNGPNT_10 | ET_FAMILIES_10 | EP_SNGPNT_10 | EPL_SNGPNT_10 | F_SNGPNT_10 | E_LIMENG_10 | ET_POPAGE5UP_10 | EP_LIMENG_10 | EPL_LIMENG_10 | F_LIMENG_10 | E_MINRTY_10 | ET_POPETHRACE_10 | EP_MINRTY_10 | EPL_MINRTY_10 | F_MINRTY_10 | E_STRHU_10 | E_MUNIT_10 | EP_MUNIT_10 | EPL_MUNIT_10 | F_MUNIT_10 | E_MOBILE_10 | EP_MOBILE_10 | EPL_MOBILE_10 | F_MOBILE_10 | E_CROWD_10 | ET_OCCUPANTS_10 | EP_CROWD_10 | EPL_CROWD_10 | F_CROWD_10 | E_NOVEH_10 | ET_KNOWNVEH_10 | EP_NOVEH_10 | EPL_NOVEH_10 | F_NOVEH_10 | E_GROUPQ_10 | ET_HHTYPE_10 | EP_GROUPQ_10 | EPL_GROUPQ_10 | F_GROUPQ_10 | SPL_THEME1_10 | RPL_THEME1_10 | F_THEME1_10 | SPL_THEME2_10 | RPL_THEME2_10 | F_THEME2_10 | SPL_THEME3_10 | RPL_THEME3_10 | F_THEME3_10 | SPL_THEME4_10 | RPL_THEME4_10 | F_THEME4_10 | SPL_THEMES_10 | RPL_THEMES_10 | F_TOTAL_10 | E_TOTPOP_20 | E_HU_20 | E_HH_20 | E_POV150_20 | ET_POVSTATUS_20 | EP_POV150_20 | EPL_POV150_20 | F_POV150_20 | E_UNEMP_20 | ET_EMPSTATUS_20 | EP_UNEMP_20 | EPL_UNEMP_20 | F_UNEMP_20 | E_HBURD_OWN_20 | ET_HOUSINGCOST_OWN_20 | EP_HBURD_OWN_20 | EPL_HBURD_OWN_20 | F_HBURD_OWN_20 | E_HBURD_RENT_20 | ET_HOUSINGCOST_RENT_20 | EP_HBURD_RENT_20 | EPL_HBURD_RENT_20 | F_HBURD_RENT_20 | E_HBURD_20 | ET_HOUSINGCOST_20 | EP_HBURD_20 | EPL_HBURD_20 | F_HBURD_20 | E_NOHSDP_20 | ET_EDSTATUS_20 | EP_NOHSDP_20 | EPL_NOHSDP_20 | F_NOHSDP_20 | E_UNINSUR_20 | ET_INSURSTATUS_20 | EP_UNINSUR_20 | EPL_UNINSUR_20 | F_UNINSUR_20 | E_AGE65_20 | EP_AGE65_20 | EPL_AGE65_20 | F_AGE65_20 | E_AGE17_20 | EP_AGE17_20 | EPL_AGE17_20 | F_AGE17_20 | E_DISABL_20 | ET_DISABLSTATUS_20 | EP_DISABL_20 | EPL_DISABL_20 | F_DISABL_20 | E_SNGPNT_20 | ET_FAMILIES_20 | EP_SNGPNT_20 | EPL_SNGPNT_20 | F_SNGPNT_20 | E_LIMENG_20 | ET_POPAGE5UP_20 | EP_LIMENG_20 | EPL_LIMENG_20 | F_LIMENG_20 | E_MINRTY_20 | ET_POPETHRACE_20 | EP_MINRTY_20 | EPL_MINRTY_20 | F_MINRTY_20 | E_STRHU_20 | E_MUNIT_20 | EP_MUNIT_20 | EPL_MUNIT_20 | F_MUNIT_20 | E_MOBILE_20 | EP_MOBILE_20 | EPL_MOBILE_20 | F_MOBILE_20 | E_CROWD_20 | ET_OCCUPANTS_20 | EP_CROWD_20 | EPL_CROWD_20 | F_CROWD_20 | E_NOVEH_20 | ET_KNOWNVEH_20 | EP_NOVEH_20 | EPL_NOVEH_20 | F_NOVEH_20 | E_GROUPQ_20 | ET_HHTYPE_20 | EP_GROUPQ_20 | EPL_GROUPQ_20 | F_GROUPQ_20 | SPL_THEME1_20 | RPL_THEME1_20 | F_THEME1_20 | SPL_THEME2_20 | RPL_THEME2_20 | F_THEME2_20 | SPL_THEME3_20 | RPL_THEME3_20 | F_THEME3_20 | SPL_THEME4_20 | RPL_THEME4_20 | F_THEME4_20 | SPL_THEMES_20 | RPL_THEMES_20 | F_TOTAL_20 | nmtc_eligibility | pre10_nmtc_project_cnt | pre10_nmtc_dollars | pre10_nmtc_dollars_formatted | post10_nmtc_project_cnt | post10_nmtc_dollars | post10_nmtc_dollars_formatted | nmtc_flag | NAME | Median_Income_10 | Median_Home_Value_10 | Median_Income_19 | Median_Home_Value_19 | Median_Income_10adj | Median_Home_Value_10adj | Median_Income_Change | Median_Income_Change_pct | Median_Home_Value_Change | Median_Home_Value_Change_pct | housing_price_index10 | housing_price_index20 | county_title | cbsa | cbsa_code |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
34001000100 | 34001 | 000100 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 2907 | 1088 | 983 | 1127 | 2907 | 38.76849 | 0.8482 | 1 | 144 | 1433 | 10.048849 | 0.7544 | 1 | 280 | 435 | 64.36782 | 0.9529 | 1 | 204 | 548 | 37.22628 | 0.2998 | 0 | 484 | 983 | 49.23703 | 0.7813 | 1 | 468 | 1759 | 26.60603 | 0.8634 | 1 | 532 | 2543 | 20.92017 | 0.8978 | 1 | 250 | 8.599931 | 0.17770 | 0 | 944 | 32.47334 | 0.94170 | 1 | 186 | 1851 | 10.04862 | 0.2706 | 0 | 266 | 678 | 39.233038 | 0.8981 | 1 | 177 | 2611 | 6.779012 | 0.7778 | 1 | 1928 | 2907 | 66.32267 | 0.7743 | 1 | 1088 | 113 | 10.386029 | 0.6229 | 0 | 9 | 0.8272059 | 0.7223 | 0 | 80 | 983 | 8.138352 | 0.8657 | 1 | 265 | 983 | 26.95829 | 0.7354 | 0 | 0 | 2907 | 0 | 0.3512 | 0 | 4.1451 | 0.8935 | 5 | 3.06590 | 0.7944 | 3 | 0.7743 | 0.7667 | 1 | 3.2975 | 0.8414 | 1 | 11.28280 | 0.8862 | 10 | 2157 | 941 | 784 | 1182 | 2157 | 54.79833 | 0.9571 | 1 | 242 | 1058 | 22.873346 | 0.9922 | 1 | 215 | 342 | 62.86550 | 0.9780 | 1 | 316 | 442 | 71.49321 | 0.9481 | 1 | 531 | 784 | 67.72959 | 0.9893 | 1 | 396 | 1274 | 31.083202 | 0.9497 | 1 | 266 | 2157 | 12.331943 | 0.9041 | 1 | 185 | 8.576727 | 0.09430 | 0 | 552 | 25.59110 | 0.8128 | 1 | 297 | 1605 | 18.504673 | 0.74880 | 0 | 83 | 510 | 16.27451 | 0.6090 | 0 | 251 | 2020 | 12.425743 | 0.87100 | 1 | 1852 | 2157 | 85.85999 | 0.8476 | 1 | 941 | 118 | 12.5398512 | 0.6385 | 0 | 0 | 0.00000 | 0.3216 | 0 | 67 | 784 | 8.545918 | 0.8657 | 1 | 212 | 784 | 27.04082 | 0.7502 | 1 | 0 | 2157 | 0.0000000 | 0.1517 | 0 | 4.7924 | 0.9850 | 5 | 3.13590 | 0.8217 | 2 | 0.8476 | 0.8400 | 1 | 2.7277 | 0.6085 | 2 | 11.50360 | 0.9104 | 10 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 | Census Tract 1, Atlantic County, New Jersey | 23841 | 227800 | 19425 | 155600 | 27655.56 | 264248 | -8230.56 | -0.2976096 | -108648 | -0.4111592 | 139.73 | 111.11 | Atlantic County, New Jersey | Atlantic City, NJ MSA | C1210 |
34001000200 | 34001 | 000200 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 3189 | 2217 | 1473 | 519 | 3189 | 16.27469 | 0.4806 | 0 | 109 | 1558 | 6.996149 | 0.5179 | 0 | 573 | 955 | 60.00000 | 0.9323 | 1 | 199 | 518 | 38.41699 | 0.3261 | 0 | 772 | 1473 | 52.41005 | 0.8418 | 1 | 405 | 2579 | 15.70376 | 0.6491 | 0 | 484 | 3547 | 13.64533 | 0.7154 | 0 | 847 | 26.560050 | 0.96290 | 1 | 436 | 13.67200 | 0.08181 | 0 | 608 | 3005 | 20.23295 | 0.8466 | 1 | 42 | 857 | 4.900817 | 0.1204 | 0 | 422 | 3072 | 13.736979 | 0.8799 | 1 | 1792 | 3189 | 56.19316 | 0.7390 | 0 | 2217 | 901 | 40.640505 | 0.8693 | 1 | 0 | 0.0000000 | 0.3251 | 0 | 48 | 1473 | 3.258656 | 0.7064 | 0 | 250 | 1473 | 16.97217 | 0.6444 | 0 | 0 | 3189 | 0 | 0.3512 | 0 | 3.2048 | 0.6963 | 1 | 2.89161 | 0.7231 | 3 | 0.7390 | 0.7317 | 0 | 2.8964 | 0.6887 | 1 | 9.73181 | 0.7340 | 5 | 3510 | 2046 | 1353 | 1021 | 3510 | 29.08832 | 0.7682 | 1 | 121 | 1852 | 6.533477 | 0.6717 | 0 | 343 | 696 | 49.28161 | 0.9273 | 1 | 416 | 657 | 63.31811 | 0.8696 | 1 | 759 | 1353 | 56.09756 | 0.9321 | 1 | 553 | 2338 | 23.652695 | 0.8871 | 1 | 354 | 3510 | 10.085470 | 0.8530 | 1 | 643 | 18.319088 | 0.60310 | 0 | 1002 | 28.54701 | 0.9055 | 1 | 450 | 2508 | 17.942584 | 0.72330 | 0 | 237 | 786 | 30.15267 | 0.8539 | 1 | 534 | 3375 | 15.822222 | 0.90620 | 1 | 2534 | 3510 | 72.19373 | 0.7818 | 1 | 2046 | 906 | 44.2815249 | 0.8690 | 1 | 0 | 0.00000 | 0.3216 | 0 | 119 | 1353 | 8.795270 | 0.8711 | 1 | 324 | 1353 | 23.94678 | 0.7255 | 0 | 0 | 3510 | 0.0000000 | 0.1517 | 0 | 4.1121 | 0.9003 | 4 | 3.99200 | 0.9781 | 3 | 0.7818 | 0.7747 | 1 | 2.9389 | 0.7011 | 2 | 11.82480 | 0.9310 | 10 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 | Census Tract 2, Atlantic County, New Jersey | 26736 | 320400 | 25729 | 187900 | 31013.76 | 371664 | -5284.76 | -0.1704005 | -183764 | -0.4944358 | 184.06 | 165.71 | Atlantic County, New Jersey | Atlantic City, NJ MSA | C1210 |
34001000300 | 34001 | 000300 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 3997 | 1823 | 1357 | 1401 | 3968 | 35.30746 | 0.8164 | 1 | 382 | 2238 | 17.068811 | 0.9376 | 1 | 176 | 329 | 53.49544 | 0.8855 | 1 | 604 | 1028 | 58.75486 | 0.7947 | 1 | 780 | 1357 | 57.47973 | 0.9165 | 1 | 920 | 2677 | 34.36683 | 0.9346 | 1 | 1351 | 4149 | 32.56206 | 0.9811 | 1 | 314 | 7.855892 | 0.14370 | 0 | 937 | 23.44258 | 0.55900 | 0 | 319 | 3054 | 10.44532 | 0.3000 | 0 | 187 | 782 | 23.913044 | 0.7498 | 0 | 1080 | 3671 | 29.419777 | 0.9742 | 1 | 3357 | 3997 | 83.98799 | 0.8419 | 1 | 1823 | 363 | 19.912233 | 0.7535 | 1 | 0 | 0.0000000 | 0.3251 | 0 | 150 | 1357 | 11.053795 | 0.9136 | 1 | 651 | 1357 | 47.97347 | 0.8585 | 1 | 0 | 3997 | 0 | 0.3512 | 0 | 4.5862 | 0.9691 | 5 | 2.72670 | 0.6360 | 1 | 0.8419 | 0.8336 | 1 | 3.2019 | 0.8054 | 3 | 11.35670 | 0.8920 | 10 | 3801 | 1640 | 1226 | 1857 | 3801 | 48.85556 | 0.9333 | 1 | 226 | 1800 | 12.555556 | 0.9267 | 1 | 111 | 280 | 39.64286 | 0.8339 | 1 | 608 | 946 | 64.27061 | 0.8842 | 1 | 719 | 1226 | 58.64600 | 0.9528 | 1 | 650 | 2275 | 28.571429 | 0.9337 | 1 | 1027 | 3801 | 27.019206 | 0.9914 | 1 | 380 | 9.997369 | 0.14040 | 0 | 1223 | 32.17574 | 0.9607 | 1 | 219 | 2578 | 8.494957 | 0.15680 | 0 | 268 | 909 | 29.48295 | 0.8456 | 1 | 940 | 3400 | 27.647059 | 0.97280 | 1 | 3318 | 3801 | 87.29282 | 0.8579 | 1 | 1640 | 262 | 15.9756098 | 0.6917 | 0 | 0 | 0.00000 | 0.3216 | 0 | 124 | 1226 | 10.114192 | 0.8955 | 1 | 477 | 1226 | 38.90701 | 0.8258 | 1 | 0 | 3801 | 0.0000000 | 0.1517 | 0 | 4.7379 | 0.9829 | 5 | 3.07630 | 0.8013 | 3 | 0.8579 | 0.8501 | 1 | 2.8863 | 0.6781 | 2 | 11.55840 | 0.9150 | 11 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 | Census Tract 3, Atlantic County, New Jersey | 21045 | 250500 | 19420 | 147300 | 24412.20 | 290580 | -4992.20 | -0.2044961 | -143280 | -0.4930828 | NA | NA | Atlantic County, New Jersey | Atlantic City, NJ MSA | C1210 |
34001000500 | 34001 | 000500 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 3483 | 1241 | 1027 | 1938 | 3483 | 55.64169 | 0.9533 | 1 | 124 | 1630 | 7.607362 | 0.5830 | 0 | 227 | 446 | 50.89686 | 0.8549 | 1 | 478 | 581 | 82.27194 | 0.9799 | 1 | 705 | 1027 | 68.64654 | 0.9863 | 1 | 733 | 2077 | 35.29129 | 0.9396 | 1 | 727 | 3258 | 22.31430 | 0.9149 | 1 | 377 | 10.824002 | 0.30810 | 0 | 1055 | 30.28998 | 0.90140 | 1 | 268 | 2401 | 11.16202 | 0.3549 | 0 | 209 | 763 | 27.391874 | 0.7940 | 1 | 911 | 3077 | 29.606760 | 0.9746 | 1 | 3036 | 3483 | 87.16624 | 0.8550 | 1 | 1241 | 52 | 4.190169 | 0.4505 | 0 | 4 | 0.3223207 | 0.6567 | 0 | 113 | 1027 | 11.002921 | 0.9128 | 1 | 422 | 1027 | 41.09056 | 0.8250 | 1 | 0 | 3483 | 0 | 0.3512 | 0 | 4.3771 | 0.9379 | 4 | 3.33300 | 0.8766 | 3 | 0.8550 | 0.8467 | 1 | 3.1962 | 0.8026 | 2 | 11.76130 | 0.9229 | 10 | 3385 | 1185 | 945 | 1682 | 3364 | 50.00000 | 0.9391 | 1 | 72 | 1577 | 4.565631 | 0.4586 | 0 | 185 | 468 | 39.52991 | 0.8332 | 1 | 362 | 477 | 75.89099 | 0.9703 | 1 | 547 | 945 | 57.88360 | 0.9477 | 1 | 592 | 1983 | 29.853757 | 0.9422 | 1 | 738 | 3385 | 21.802068 | 0.9817 | 1 | 240 | 7.090103 | 0.05988 | 0 | 1129 | 33.35303 | 0.9689 | 1 | 135 | 2256 | 5.984043 | 0.04817 | 0 | 110 | 717 | 15.34170 | 0.5822 | 0 | 721 | 3076 | 23.439532 | 0.95690 | 1 | 3029 | 3385 | 89.48301 | 0.8727 | 1 | 1185 | 9 | 0.7594937 | 0.2382 | 0 | 0 | 0.00000 | 0.3216 | 0 | 103 | 945 | 10.899471 | 0.9072 | 1 | 263 | 945 | 27.83069 | 0.7560 | 1 | 0 | 3385 | 0.0000000 | 0.1517 | 0 | 4.2693 | 0.9283 | 4 | 2.61605 | 0.5709 | 2 | 0.8727 | 0.8648 | 1 | 2.3747 | 0.4357 | 2 | 10.13275 | 0.7921 | 9 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 | Census Tract 5, Atlantic County, New Jersey | 17287 | 197000 | 21700 | 131800 | 20052.92 | 228520 | 1647.08 | 0.0821367 | -96720 | -0.4232452 | NA | NA | Atlantic County, New Jersey | Atlantic City, NJ MSA | C1210 |
34001001100 | 34001 | 001100 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 2204 | 1204 | 1204 | 1185 | 2204 | 53.76588 | 0.9457 | 1 | 219 | 927 | 23.624596 | 0.9830 | 1 | 97 | 172 | 56.39535 | 0.9094 | 1 | 462 | 1032 | 44.76744 | 0.4746 | 0 | 559 | 1204 | 46.42857 | 0.7197 | 0 | 346 | 1440 | 24.02778 | 0.8306 | 1 | 469 | 1942 | 24.15036 | 0.9360 | 1 | 363 | 16.470054 | 0.70200 | 0 | 578 | 26.22505 | 0.74410 | 0 | 442 | 1558 | 28.36970 | 0.9675 | 1 | 247 | 396 | 62.373737 | 0.9898 | 1 | 104 | 2051 | 5.070697 | 0.7260 | 0 | 2118 | 2204 | 96.09800 | 0.9204 | 1 | 1204 | 570 | 47.342193 | 0.8858 | 1 | 0 | 0.0000000 | 0.3251 | 0 | 14 | 1204 | 1.162791 | 0.4877 | 0 | 817 | 1204 | 67.85714 | 0.9413 | 1 | 0 | 2204 | 0 | 0.3512 | 0 | 4.4150 | 0.9451 | 4 | 4.12940 | 0.9805 | 2 | 0.9204 | 0.9114 | 1 | 2.9911 | 0.7243 | 2 | 12.45590 | 0.9597 | 9 | 1950 | 1267 | 1096 | 1131 | 1950 | 58.00000 | 0.9678 | 1 | 66 | 706 | 9.348442 | 0.8395 | 1 | 42 | 101 | 41.58416 | 0.8612 | 1 | 309 | 995 | 31.05528 | 0.1959 | 0 | 351 | 1096 | 32.02555 | 0.4782 | 0 | 510 | 1379 | 36.983321 | 0.9763 | 1 | 155 | 1950 | 7.948718 | 0.7660 | 1 | 392 | 20.102564 | 0.69880 | 0 | 447 | 22.92308 | 0.6712 | 0 | 570 | 1503 | 37.924152 | 0.99200 | 1 | 143 | 374 | 38.23529 | 0.9167 | 1 | 109 | 1841 | 5.920695 | 0.74640 | 0 | 1909 | 1950 | 97.89744 | 0.9529 | 1 | 1267 | 479 | 37.8058406 | 0.8464 | 1 | 0 | 0.00000 | 0.3216 | 0 | 33 | 1096 | 3.010949 | 0.6446 | 0 | 743 | 1096 | 67.79197 | 0.9414 | 1 | 0 | 1950 | 0.0000000 | 0.1517 | 0 | 4.0278 | 0.8848 | 4 | 4.02510 | 0.9798 | 2 | 0.9529 | 0.9442 | 1 | 2.9057 | 0.6869 | 2 | 11.91150 | 0.9365 | 9 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 | Census Tract 11, Atlantic County, New Jersey | 16008 | 238500 | 15402 | 162500 | 18569.28 | 276660 | -3167.28 | -0.1705656 | -114160 | -0.4126364 | NA | NA | Atlantic County, New Jersey | Atlantic City, NJ MSA | C1210 |
34001001300 | 34001 | 001300 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 2153 | 1026 | 857 | 695 | 2153 | 32.28054 | 0.7840 | 1 | 266 | 1112 | 23.920863 | 0.9840 | 1 | 168 | 432 | 38.88889 | 0.6425 | 0 | 271 | 425 | 63.76471 | 0.8714 | 1 | 439 | 857 | 51.22520 | 0.8184 | 1 | 210 | 1471 | 14.27600 | 0.5989 | 0 | 463 | 2215 | 20.90293 | 0.8974 | 1 | 334 | 15.513237 | 0.64360 | 0 | 539 | 25.03484 | 0.66990 | 0 | 222 | 1687 | 13.15945 | 0.4984 | 0 | 265 | 608 | 43.585526 | 0.9249 | 1 | 92 | 1905 | 4.829396 | 0.7187 | 0 | 1993 | 2153 | 92.56851 | 0.8890 | 1 | 1026 | 147 | 14.327485 | 0.6885 | 0 | 0 | 0.0000000 | 0.3251 | 0 | 20 | 857 | 2.333722 | 0.6326 | 0 | 142 | 857 | 16.56943 | 0.6382 | 0 | 0 | 2153 | 0 | 0.3512 | 0 | 4.0827 | 0.8798 | 4 | 3.45550 | 0.9039 | 1 | 0.8890 | 0.8804 | 1 | 2.6356 | 0.5687 | 0 | 11.06280 | 0.8673 | 6 | 1632 | 917 | 770 | 591 | 1632 | 36.21324 | 0.8455 | 1 | 203 | 854 | 23.770492 | 0.9928 | 1 | 164 | 291 | 56.35739 | 0.9604 | 1 | 364 | 479 | 75.99165 | 0.9710 | 1 | 528 | 770 | 68.57143 | 0.9914 | 1 | 150 | 1056 | 14.204546 | 0.7232 | 0 | 97 | 1632 | 5.943627 | 0.6352 | 0 | 301 | 18.443628 | 0.60940 | 0 | 271 | 16.60539 | 0.2292 | 0 | 314 | 1361 | 23.071271 | 0.88960 | 1 | 148 | 410 | 36.09756 | 0.9025 | 1 | 0 | 1585 | 0.000000 | 0.06953 | 0 | 1512 | 1632 | 92.64706 | 0.8931 | 1 | 917 | 246 | 26.8266085 | 0.7912 | 1 | 16 | 1.74482 | 0.7855 | 1 | 0 | 770 | 0.000000 | 0.1194 | 0 | 219 | 770 | 28.44156 | 0.7606 | 1 | 14 | 1632 | 0.8578431 | 0.6722 | 0 | 4.1881 | 0.9131 | 3 | 2.70023 | 0.6211 | 2 | 0.8931 | 0.8850 | 1 | 3.1289 | 0.7740 | 3 | 10.91033 | 0.8638 | 9 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 | Census Tract 13, Atlantic County, New Jersey | 32444 | 233700 | 23773 | 162300 | 37635.04 | 271092 | -13862.04 | -0.3683280 | -108792 | -0.4013103 | 66.52 | 44.91 | Atlantic County, New Jersey | Atlantic City, NJ MSA | C1210 |
34001001400 | 34001 | 001400 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 3736 | 1893 | 1503 | 2135 | 3736 | 57.14668 | 0.9592 | 1 | 411 | 1635 | 25.137615 | 0.9866 | 1 | 267 | 401 | 66.58354 | 0.9617 | 1 | 715 | 1102 | 64.88203 | 0.8844 | 1 | 982 | 1503 | 65.33599 | 0.9764 | 1 | 511 | 1696 | 30.12972 | 0.9005 | 1 | 527 | 4199 | 12.55061 | 0.6728 | 0 | 269 | 7.200214 | 0.11510 | 0 | 1598 | 42.77302 | 0.99350 | 1 | 345 | 2252 | 15.31972 | 0.6309 | 0 | 787 | 941 | 83.634432 | 0.9990 | 1 | 63 | 3192 | 1.973684 | 0.5448 | 0 | 3463 | 3736 | 92.69272 | 0.8905 | 1 | 1893 | 427 | 22.556788 | 0.7770 | 1 | 0 | 0.0000000 | 0.3251 | 0 | 22 | 1503 | 1.463739 | 0.5339 | 0 | 705 | 1503 | 46.90619 | 0.8533 | 1 | 0 | 3736 | 0 | 0.3512 | 0 | 4.4955 | 0.9585 | 4 | 3.28330 | 0.8640 | 2 | 0.8905 | 0.8818 | 1 | 2.8405 | 0.6671 | 2 | 11.50980 | 0.9048 | 9 | 3812 | 1724 | 1549 | 2291 | 3754 | 61.02824 | 0.9760 | 1 | 380 | 1547 | 24.563672 | 0.9934 | 1 | 117 | 240 | 48.75000 | 0.9237 | 1 | 753 | 1309 | 57.52483 | 0.7816 | 1 | 870 | 1549 | 56.16527 | 0.9326 | 1 | 472 | 1913 | 24.673288 | 0.8987 | 1 | 294 | 3802 | 7.732772 | 0.7558 | 1 | 363 | 9.522560 | 0.12310 | 0 | 1463 | 38.37880 | 0.9885 | 1 | 508 | 2339 | 21.718683 | 0.85640 | 1 | 564 | 948 | 59.49367 | 0.9910 | 1 | 201 | 3159 | 6.362773 | 0.76130 | 1 | 3389 | 3812 | 88.90346 | 0.8683 | 1 | 1724 | 571 | 33.1206497 | 0.8294 | 1 | 0 | 0.00000 | 0.3216 | 0 | 83 | 1549 | 5.358296 | 0.7754 | 1 | 661 | 1549 | 42.67269 | 0.8448 | 1 | 10 | 3812 | 0.2623295 | 0.4739 | 0 | 4.5565 | 0.9673 | 5 | 3.72030 | 0.9522 | 4 | 0.8683 | 0.8605 | 1 | 3.2451 | 0.8159 | 3 | 12.39020 | 0.9595 | 13 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 | Census Tract 14, Atlantic County, New Jersey | 16780 | 255800 | 17487 | 139100 | 19464.80 | 296728 | -1977.80 | -0.1016091 | -157628 | -0.5312205 | NA | NA | Atlantic County, New Jersey | Atlantic City, NJ MSA | C1210 |
34001001500 | 34001 | 001500 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 1074 | 901 | 752 | 656 | 1074 | 61.08007 | 0.9700 | 1 | 43 | 270 | 15.925926 | 0.9242 | 1 | 30 | 70 | 42.85714 | 0.7276 | 0 | 366 | 682 | 53.66569 | 0.6910 | 0 | 396 | 752 | 52.65957 | 0.8458 | 1 | 266 | 921 | 28.88165 | 0.8886 | 1 | 121 | 1064 | 11.37218 | 0.6131 | 0 | 385 | 35.847300 | 0.99020 | 1 | 129 | 12.01117 | 0.06170 | 0 | 321 | 993 | 32.32628 | 0.9846 | 1 | 62 | 195 | 31.794872 | 0.8408 | 1 | 125 | 1050 | 11.904762 | 0.8562 | 1 | 965 | 1074 | 89.85102 | 0.8717 | 1 | 901 | 636 | 70.588235 | 0.9304 | 1 | 0 | 0.0000000 | 0.3251 | 0 | 10 | 752 | 1.329787 | 0.5133 | 0 | 626 | 752 | 83.24468 | 0.9888 | 1 | 0 | 1074 | 0 | 0.3512 | 0 | 4.2417 | 0.9134 | 4 | 3.73350 | 0.9515 | 4 | 0.8717 | 0.8632 | 1 | 3.1088 | 0.7709 | 2 | 11.95570 | 0.9362 | 11 | 1601 | 976 | 810 | 1001 | 1601 | 62.52342 | 0.9797 | 1 | 204 | 563 | 36.234458 | 0.9989 | 1 | 74 | 110 | 67.27273 | 0.9848 | 1 | 224 | 700 | 32.00000 | 0.2097 | 0 | 298 | 810 | 36.79012 | 0.6089 | 0 | 379 | 1145 | 33.100437 | 0.9610 | 1 | 272 | 1601 | 16.989382 | 0.9572 | 1 | 451 | 28.169894 | 0.93630 | 1 | 251 | 15.67770 | 0.1835 | 0 | 411 | 1350 | 30.444444 | 0.97330 | 1 | 196 | 446 | 43.94619 | 0.9511 | 1 | 220 | 1532 | 14.360313 | 0.89290 | 1 | 1435 | 1601 | 89.63148 | 0.8738 | 1 | 976 | 451 | 46.2090164 | 0.8742 | 1 | 0 | 0.00000 | 0.3216 | 0 | 24 | 810 | 2.962963 | 0.6412 | 0 | 546 | 810 | 67.40741 | 0.9401 | 1 | 15 | 1601 | 0.9369144 | 0.6832 | 0 | 4.5057 | 0.9617 | 4 | 3.93710 | 0.9752 | 4 | 0.8738 | 0.8659 | 1 | 3.4603 | 0.8774 | 2 | 12.77690 | 0.9705 | 11 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 | Census Tract 15, Atlantic County, New Jersey | 11549 | 172400 | 12339 | NA | 13396.84 | 199984 | -1057.84 | -0.0789619 | NA | NA | NA | NA | Atlantic County, New Jersey | Atlantic City, NJ MSA | C1210 |
34001001900 | 34001 | 001900 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 1656 | 1159 | 903 | 524 | 1656 | 31.64251 | 0.7755 | 1 | 72 | 879 | 8.191126 | 0.6337 | 0 | 41 | 50 | 82.00000 | 0.9900 | 1 | 407 | 853 | 47.71395 | 0.5494 | 0 | 448 | 903 | 49.61240 | 0.7888 | 1 | 210 | 1318 | 15.93323 | 0.6573 | 0 | 409 | 1748 | 23.39817 | 0.9270 | 1 | 134 | 8.091787 | 0.15270 | 0 | 262 | 15.82126 | 0.12460 | 0 | 268 | 1303 | 20.56792 | 0.8570 | 1 | 87 | 338 | 25.739645 | 0.7731 | 1 | 93 | 1617 | 5.751392 | 0.7497 | 0 | 1416 | 1656 | 85.50725 | 0.8482 | 1 | 1159 | 897 | 77.394305 | 0.9416 | 1 | 0 | 0.0000000 | 0.3251 | 0 | 91 | 903 | 10.077519 | 0.9007 | 1 | 516 | 903 | 57.14286 | 0.9002 | 1 | 0 | 1656 | 0 | 0.3512 | 0 | 3.7823 | 0.8187 | 3 | 2.65710 | 0.5936 | 2 | 0.8482 | 0.8400 | 1 | 3.4188 | 0.8829 | 3 | 10.70640 | 0.8361 | 9 | 1343 | 1022 | 751 | 694 | 1343 | 51.67535 | 0.9465 | 1 | 136 | 665 | 20.451128 | 0.9868 | 1 | 54 | 65 | 83.07692 | 0.9939 | 1 | 455 | 686 | 66.32653 | 0.9072 | 1 | 509 | 751 | 67.77630 | 0.9894 | 1 | 68 | 926 | 7.343413 | 0.4249 | 0 | 270 | 1343 | 20.104244 | 0.9746 | 1 | 161 | 11.988086 | 0.22700 | 0 | 281 | 20.92331 | 0.5297 | 0 | 212 | 1062 | 19.962335 | 0.80630 | 1 | 69 | 206 | 33.49515 | 0.8825 | 1 | 104 | 1225 | 8.489796 | 0.81120 | 1 | 1038 | 1343 | 77.28965 | 0.8047 | 1 | 1022 | 802 | 78.4735812 | 0.9398 | 1 | 0 | 0.00000 | 0.3216 | 0 | 34 | 751 | 4.527297 | 0.7388 | 0 | 376 | 751 | 50.06658 | 0.8789 | 1 | 0 | 1343 | 0.0000000 | 0.1517 | 0 | 4.3222 | 0.9357 | 4 | 3.25670 | 0.8567 | 3 | 0.8047 | 0.7974 | 1 | 3.0308 | 0.7381 | 2 | 11.41440 | 0.9049 | 10 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 | Census Tract 19, Atlantic County, New Jersey | 20965 | 223700 | 18803 | 254400 | 24319.40 | 259492 | -5516.40 | -0.2268313 | -5092 | -0.0196230 | NA | NA | Atlantic County, New Jersey | Atlantic City, NJ MSA | C1210 |
34001002300 | 34001 | 002300 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 2251 | 1108 | 703 | 1183 | 2251 | 52.55442 | 0.9403 | 1 | 137 | 842 | 16.270784 | 0.9292 | 1 | 119 | 230 | 51.73913 | 0.8660 | 1 | 213 | 473 | 45.03171 | 0.4822 | 0 | 332 | 703 | 47.22617 | 0.7383 | 0 | 370 | 1322 | 27.98790 | 0.8776 | 1 | 811 | 2471 | 32.82072 | 0.9821 | 1 | 153 | 6.796979 | 0.09922 | 0 | 738 | 32.78543 | 0.94640 | 1 | 191 | 1646 | 11.60389 | 0.3890 | 0 | 189 | 519 | 36.416185 | 0.8771 | 1 | 480 | 1860 | 25.806452 | 0.9639 | 1 | 1961 | 2251 | 87.11684 | 0.8548 | 1 | 1108 | 72 | 6.498195 | 0.5264 | 0 | 0 | 0.0000000 | 0.3251 | 0 | 43 | 703 | 6.116643 | 0.8192 | 1 | 338 | 703 | 48.07966 | 0.8595 | 1 | 0 | 2251 | 0 | 0.3512 | 0 | 4.4675 | 0.9532 | 4 | 3.27562 | 0.8621 | 3 | 0.8548 | 0.8465 | 1 | 2.8814 | 0.6831 | 2 | 11.47932 | 0.9018 | 10 | 2410 | 1143 | 789 | 1222 | 2409 | 50.72644 | 0.9419 | 1 | 118 | 1396 | 8.452722 | 0.7982 | 1 | 103 | 219 | 47.03196 | 0.9109 | 1 | 428 | 570 | 75.08772 | 0.9667 | 1 | 531 | 789 | 67.30038 | 0.9884 | 1 | 729 | 1582 | 46.080910 | 0.9943 | 1 | 754 | 2410 | 31.286307 | 0.9952 | 1 | 84 | 3.485477 | 0.01502 | 0 | 592 | 24.56432 | 0.7651 | 1 | 258 | 1818 | 14.191419 | 0.52410 | 0 | 273 | 537 | 50.83799 | 0.9753 | 1 | 826 | 2255 | 36.629712 | 0.99160 | 1 | 2193 | 2410 | 90.99585 | 0.8826 | 1 | 1143 | 71 | 6.2117235 | 0.4953 | 0 | 0 | 0.00000 | 0.3216 | 0 | 202 | 789 | 25.602028 | 0.9894 | 1 | 362 | 789 | 45.88086 | 0.8609 | 1 | 0 | 2410 | 0.0000000 | 0.1517 | 0 | 4.7180 | 0.9818 | 5 | 3.27112 | 0.8607 | 3 | 0.8826 | 0.8746 | 1 | 2.8189 | 0.6488 | 2 | 11.69062 | 0.9229 | 11 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 | Census Tract 23, Atlantic County, New Jersey | 18704 | 223300 | 18470 | 116700 | 21696.64 | 259028 | -3226.64 | -0.1487161 | -142328 | -0.5494696 | NA | NA | Atlantic County, New Jersey | Atlantic City, NJ MSA | C1210 |
Code
svi_national_nmtc_df0 <- left_join(svi_national_nmtc, census_pull_df, join_by("GEOID_2010_trt" == "GEOID"))
svi_national_nmtc_df1 <- left_join(svi_national_nmtc_df0, hpi_df_10_20, join_by("GEOID_2010_trt" == "GEOID10")) %>%
unite("county_fips", FIPS_st, FIPS_county, sep = "")
svi_national_nmtc_df <- left_join(svi_national_nmtc_df1, msa_csa_crosswalk, join_by("county_fips" == "county_fips"))
svi_national_nmtc_df %>% head(10) %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | county_fips | FIPS_tract | state | state_name | county | region_number | region | division_number | division | E_TOTPOP_10 | E_HU_10 | E_HH_10 | E_POV150_10 | ET_POVSTATUS_10 | EP_POV150_10 | EPL_POV150_10 | F_POV150_10 | E_UNEMP_10 | ET_EMPSTATUS_10 | EP_UNEMP_10 | EPL_UNEMP_10 | F_UNEMP_10 | E_HBURD_OWN_10 | ET_HOUSINGCOST_OWN_10 | EP_HBURD_OWN_10 | EPL_HBURD_OWN_10 | F_HBURD_OWN_10 | E_HBURD_RENT_10 | ET_HOUSINGCOST_RENT_10 | EP_HBURD_RENT_10 | EPL_HBURD_RENT_10 | F_HBURD_RENT_10 | E_HBURD_10 | ET_HOUSINGCOST_10 | EP_HBURD_10 | EPL_HBURD_10 | F_HBURD_10 | E_NOHSDP_10 | ET_EDSTATUS_10 | EP_NOHSDP_10 | EPL_NOHSDP_10 | F_NOHSDP_10 | E_UNINSUR_12 | ET_INSURSTATUS_12 | EP_UNINSUR_12 | EPL_UNINSUR_12 | F_UNINSUR_12 | E_AGE65_10 | EP_AGE65_10 | EPL_AGE65_10 | F_AGE65_10 | E_AGE17_10 | EP_AGE17_10 | EPL_AGE17_10 | F_AGE17_10 | E_DISABL_12 | ET_DISABLSTATUS_12 | EP_DISABL_12 | EPL_DISABL_12 | F_DISABL_12 | E_SNGPNT_10 | ET_FAMILIES_10 | EP_SNGPNT_10 | EPL_SNGPNT_10 | F_SNGPNT_10 | E_LIMENG_10 | ET_POPAGE5UP_10 | EP_LIMENG_10 | EPL_LIMENG_10 | F_LIMENG_10 | E_MINRTY_10 | ET_POPETHRACE_10 | EP_MINRTY_10 | EPL_MINRTY_10 | F_MINRTY_10 | E_STRHU_10 | E_MUNIT_10 | EP_MUNIT_10 | EPL_MUNIT_10 | F_MUNIT_10 | E_MOBILE_10 | EP_MOBILE_10 | EPL_MOBILE_10 | F_MOBILE_10 | E_CROWD_10 | ET_OCCUPANTS_10 | EP_CROWD_10 | EPL_CROWD_10 | F_CROWD_10 | E_NOVEH_10 | ET_KNOWNVEH_10 | EP_NOVEH_10 | EPL_NOVEH_10 | F_NOVEH_10 | E_GROUPQ_10 | ET_HHTYPE_10 | EP_GROUPQ_10 | EPL_GROUPQ_10 | F_GROUPQ_10 | SPL_THEME1_10 | RPL_THEME1_10 | F_THEME1_10 | SPL_THEME2_10 | RPL_THEME2_10 | F_THEME2_10 | SPL_THEME3_10 | RPL_THEME3_10 | F_THEME3_10 | SPL_THEME4_10 | RPL_THEME4_10 | F_THEME4_10 | SPL_THEMES_10 | RPL_THEMES_10 | F_TOTAL_10 | E_TOTPOP_20 | E_HU_20 | E_HH_20 | E_POV150_20 | ET_POVSTATUS_20 | EP_POV150_20 | EPL_POV150_20 | F_POV150_20 | E_UNEMP_20 | ET_EMPSTATUS_20 | EP_UNEMP_20 | EPL_UNEMP_20 | F_UNEMP_20 | E_HBURD_OWN_20 | ET_HOUSINGCOST_OWN_20 | EP_HBURD_OWN_20 | EPL_HBURD_OWN_20 | F_HBURD_OWN_20 | E_HBURD_RENT_20 | ET_HOUSINGCOST_RENT_20 | EP_HBURD_RENT_20 | EPL_HBURD_RENT_20 | F_HBURD_RENT_20 | E_HBURD_20 | ET_HOUSINGCOST_20 | EP_HBURD_20 | EPL_HBURD_20 | F_HBURD_20 | E_NOHSDP_20 | ET_EDSTATUS_20 | EP_NOHSDP_20 | EPL_NOHSDP_20 | F_NOHSDP_20 | E_UNINSUR_20 | ET_INSURSTATUS_20 | EP_UNINSUR_20 | EPL_UNINSUR_20 | F_UNINSUR_20 | E_AGE65_20 | EP_AGE65_20 | EPL_AGE65_20 | F_AGE65_20 | E_AGE17_20 | EP_AGE17_20 | EPL_AGE17_20 | F_AGE17_20 | E_DISABL_20 | ET_DISABLSTATUS_20 | EP_DISABL_20 | EPL_DISABL_20 | F_DISABL_20 | E_SNGPNT_20 | ET_FAMILIES_20 | EP_SNGPNT_20 | EPL_SNGPNT_20 | F_SNGPNT_20 | E_LIMENG_20 | ET_POPAGE5UP_20 | EP_LIMENG_20 | EPL_LIMENG_20 | F_LIMENG_20 | E_MINRTY_20 | ET_POPETHRACE_20 | EP_MINRTY_20 | EPL_MINRTY_20 | F_MINRTY_20 | E_STRHU_20 | E_MUNIT_20 | EP_MUNIT_20 | EPL_MUNIT_20 | F_MUNIT_20 | E_MOBILE_20 | EP_MOBILE_20 | EPL_MOBILE_20 | F_MOBILE_20 | E_CROWD_20 | ET_OCCUPANTS_20 | EP_CROWD_20 | EPL_CROWD_20 | F_CROWD_20 | E_NOVEH_20 | ET_KNOWNVEH_20 | EP_NOVEH_20 | EPL_NOVEH_20 | F_NOVEH_20 | E_GROUPQ_20 | ET_HHTYPE_20 | EP_GROUPQ_20 | EPL_GROUPQ_20 | F_GROUPQ_20 | SPL_THEME1_20 | RPL_THEME1_20 | F_THEME1_20 | SPL_THEME2_20 | RPL_THEME2_20 | F_THEME2_20 | SPL_THEME3_20 | RPL_THEME3_20 | F_THEME3_20 | SPL_THEME4_20 | RPL_THEME4_20 | F_THEME4_20 | SPL_THEMES_20 | RPL_THEMES_20 | F_TOTAL_20 | nmtc_eligibility | pre10_nmtc_project_cnt | pre10_nmtc_dollars | pre10_nmtc_dollars_formatted | post10_nmtc_project_cnt | post10_nmtc_dollars | post10_nmtc_dollars_formatted | nmtc_flag | NAME | Median_Income_10 | Median_Home_Value_10 | Median_Income_19 | Median_Home_Value_19 | Median_Income_10adj | Median_Home_Value_10adj | Median_Income_Change | Median_Income_Change_pct | Median_Home_Value_Change | Median_Home_Value_Change_pct | housing_price_index10 | housing_price_index20 | county_title | cbsa | cbsa_code |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
01001020200 | 01001 | 020200 | AL | Alabama | Autauga County | 3 | South Region | 6 | East South Central Division | 2020 | 816 | 730 | 495 | 1992 | 24.84940 | 0.5954 | 0 | 68 | 834 | 8.153477 | 0.57540 | 0 | 49 | 439 | 11.16173 | 0.02067 | 0 | 105 | 291 | 36.08247 | 0.30190 | 0 | 154 | 730 | 21.09589 | 0.09312 | 0 | 339 | 1265 | 26.798419 | 0.8392 | 1 | 313 | 2012 | 15.55666 | 0.6000 | 0 | 204 | 10.09901 | 0.3419 | 0 | 597 | 29.55446 | 0.8192 | 1 | 359 | 1515 | 23.69637 | 0.8791 | 1 | 132 | 456 | 28.947368 | 0.8351 | 1 | 15 | 1890 | 0.7936508 | 0.40130 | 0 | 1243 | 2020 | 61.534653 | 0.77810 | 1 | 816 | 0 | 0.0000000 | 0.1224 | 0 | 34 | 4.1666667 | 0.6664 | 0 | 13 | 730 | 1.780822 | 0.5406 | 0 | 115 | 730 | 15.7534247 | 0.83820 | 1 | 0 | 2020 | 0.0000 | 0.3640 | 0 | 2.70312 | 0.5665 | 1 | 3.27660 | 0.8614 | 3 | 0.77810 | 0.7709 | 1 | 2.53160 | 0.5047 | 1 | 9.28942 | 0.6832 | 6 | 1757 | 720 | 573 | 384 | 1511 | 25.413633 | 0.6427 | 0 | 29 | 717 | 4.044630 | 0.41320 | 0 | 33 | 392 | 8.418367 | 0.03542 | 0 | 116 | 181 | 64.08840 | 0.9086 | 1 | 149 | 573 | 26.00349 | 0.40410 | 0 | 139 | 1313 | 10.586443 | 0.5601 | 0 | 91 | 1533 | 5.936073 | 0.4343 | 0 | 284 | 16.163916 | 0.5169 | 0 | 325 | 18.49744 | 0.28510 | 0 | 164 | 1208.000 | 13.576159 | 0.4127 | 0 | 42 | 359.0000 | 11.6991643 | 0.39980 | 0 | 0 | 1651 | 0.0000000 | 0.09479 | 0 | 1116 | 1757.000 | 63.5173591 | 0.759100 | 1 | 720 | 3 | 0.4166667 | 0.2470 | 0 | 5 | 0.6944444 | 0.5106 | 0 | 9 | 573 | 1.5706806 | 0.46880 | 0 | 57 | 573.000 | 9.947644 | 0.7317 | 0 | 212 | 1757 | 12.0660216 | 0.9549 | 1 | 2.45440 | 0.4888 | 0 | 1.70929 | 0.10250 | 0 | 0.759100 | 0.752700 | 1 | 2.91300 | 0.6862 | 1 | 7.835790 | 0.4802 | 2 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 | Census Tract 202, Autauga County, Alabama | 19437 | 138500 | 20154 | 90500 | 22546.92 | 160660 | -2392.92 | -0.1061307 | -70160 | -0.4366986 | 123.78 | 123.37 | Autauga County, Alabama | Montgomery-Alexander City, AL CSA | CS388 |
01001020700 | 01001 | 020700 | AL | Alabama | Autauga County | 3 | South Region | 6 | East South Central Division | 2664 | 1254 | 1139 | 710 | 2664 | 26.65165 | 0.6328 | 0 | 29 | 1310 | 2.213741 | 0.05255 | 0 | 134 | 710 | 18.87324 | 0.13890 | 0 | 187 | 429 | 43.58974 | 0.47090 | 0 | 321 | 1139 | 28.18262 | 0.28130 | 0 | 396 | 1852 | 21.382289 | 0.7478 | 0 | 345 | 2878 | 11.98749 | 0.4459 | 0 | 389 | 14.60210 | 0.6417 | 0 | 599 | 22.48499 | 0.4007 | 0 | 510 | 2168 | 23.52399 | 0.8752 | 1 | 228 | 712 | 32.022472 | 0.8712 | 1 | 0 | 2480 | 0.0000000 | 0.09298 | 0 | 694 | 2664 | 26.051051 | 0.51380 | 0 | 1254 | 8 | 0.6379585 | 0.2931 | 0 | 460 | 36.6826156 | 0.9714 | 1 | 0 | 1139 | 0.000000 | 0.1238 | 0 | 125 | 1139 | 10.9745391 | 0.74770 | 0 | 0 | 2664 | 0.0000 | 0.3640 | 0 | 2.16035 | 0.4069 | 0 | 2.88178 | 0.6997 | 2 | 0.51380 | 0.5090 | 0 | 2.50000 | 0.4882 | 1 | 8.05593 | 0.5185 | 3 | 3562 | 1313 | 1248 | 1370 | 3528 | 38.832200 | 0.8512 | 1 | 128 | 1562 | 8.194622 | 0.79350 | 1 | 168 | 844 | 19.905213 | 0.44510 | 0 | 237 | 404 | 58.66337 | 0.8359 | 1 | 405 | 1248 | 32.45192 | 0.60420 | 0 | 396 | 2211 | 17.910448 | 0.7857 | 1 | 444 | 3547 | 12.517620 | 0.7758 | 1 | 355 | 9.966311 | 0.1800 | 0 | 954 | 26.78271 | 0.79230 | 1 | 629 | 2593.000 | 24.257617 | 0.8730 | 1 | 171 | 797.0000 | 21.4554580 | 0.71860 | 0 | 0 | 3211 | 0.0000000 | 0.09479 | 0 | 1009 | 3562.000 | 28.3267827 | 0.466800 | 0 | 1313 | 14 | 1.0662605 | 0.3165 | 0 | 443 | 33.7395278 | 0.9663 | 1 | 73 | 1248 | 5.8493590 | 0.82110 | 1 | 17 | 1248.000 | 1.362180 | 0.1554 | 0 | 112 | 3562 | 3.1443010 | 0.8514 | 1 | 3.81040 | 0.8569 | 4 | 2.65869 | 0.58470 | 2 | 0.466800 | 0.462900 | 0 | 3.11070 | 0.7714 | 3 | 10.046590 | 0.7851 | 9 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 | Census Tract 207, Autauga County, Alabama | 22114 | 93800 | 20934 | 82400 | 25652.24 | 108808 | -4718.24 | -0.1839309 | -26408 | -0.2427027 | 95.94 | 108.47 | Autauga County, Alabama | Montgomery-Alexander City, AL CSA | CS388 |
01001021100 | 01001 | 021100 | AL | Alabama | Autauga County | 3 | South Region | 6 | East South Central Division | 3298 | 1502 | 1323 | 860 | 3298 | 26.07641 | 0.6211 | 0 | 297 | 1605 | 18.504673 | 0.94340 | 1 | 250 | 1016 | 24.60630 | 0.32070 | 0 | 74 | 307 | 24.10423 | 0.11920 | 0 | 324 | 1323 | 24.48980 | 0.17380 | 0 | 710 | 2231 | 31.824294 | 0.8976 | 1 | 654 | 3565 | 18.34502 | 0.7018 | 0 | 411 | 12.46210 | 0.5001 | 0 | 738 | 22.37720 | 0.3934 | 0 | 936 | 2861 | 32.71583 | 0.9807 | 1 | 138 | 825 | 16.727273 | 0.5715 | 0 | 9 | 3155 | 0.2852615 | 0.25010 | 0 | 1979 | 3298 | 60.006064 | 0.77030 | 1 | 1502 | 14 | 0.9320905 | 0.3234 | 0 | 659 | 43.8748336 | 0.9849 | 1 | 44 | 1323 | 3.325775 | 0.7062 | 0 | 137 | 1323 | 10.3552532 | 0.73130 | 0 | 0 | 3298 | 0.0000 | 0.3640 | 0 | 3.33770 | 0.7351 | 2 | 2.69580 | 0.6028 | 1 | 0.77030 | 0.7631 | 1 | 3.10980 | 0.7827 | 1 | 9.91360 | 0.7557 | 5 | 3499 | 1825 | 1462 | 1760 | 3499 | 50.300086 | 0.9396 | 1 | 42 | 966 | 4.347826 | 0.45390 | 0 | 426 | 1274 | 33.437991 | 0.85200 | 1 | 52 | 188 | 27.65957 | 0.1824 | 0 | 478 | 1462 | 32.69494 | 0.61110 | 0 | 422 | 2488 | 16.961415 | 0.7638 | 1 | 497 | 3499 | 14.204058 | 0.8246 | 1 | 853 | 24.378394 | 0.8688 | 1 | 808 | 23.09231 | 0.58290 | 0 | 908 | 2691.100 | 33.740844 | 0.9808 | 1 | 179 | 811.6985 | 22.0525243 | 0.73230 | 0 | 8 | 3248 | 0.2463054 | 0.26220 | 0 | 1986 | 3498.713 | 56.7637257 | 0.717500 | 0 | 1825 | 29 | 1.5890411 | 0.3551 | 0 | 576 | 31.5616438 | 0.9594 | 1 | 88 | 1462 | 6.0191518 | 0.82690 | 1 | 148 | 1461.993 | 10.123166 | 0.7364 | 0 | 38 | 3499 | 1.0860246 | 0.7013 | 0 | 3.59300 | 0.8073 | 3 | 3.42700 | 0.91560 | 2 | 0.717500 | 0.711400 | 0 | 3.57910 | 0.9216 | 2 | 11.316600 | 0.9150 | 7 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 | Census Tract 211, Autauga County, Alabama | 17997 | 74000 | 20620 | 88600 | 20876.52 | 85840 | -256.52 | -0.0122875 | 2760 | 0.0321528 | 134.13 | 145.41 | Autauga County, Alabama | Montgomery-Alexander City, AL CSA | CS388 |
01003010200 | 01003 | 010200 | AL | Alabama | Baldwin County | 3 | South Region | 6 | East South Central Division | 2612 | 1220 | 1074 | 338 | 2605 | 12.97505 | 0.2907 | 0 | 44 | 1193 | 3.688181 | 0.14720 | 0 | 172 | 928 | 18.53448 | 0.13090 | 0 | 31 | 146 | 21.23288 | 0.09299 | 0 | 203 | 1074 | 18.90130 | 0.05657 | 0 | 455 | 1872 | 24.305556 | 0.8016 | 1 | 456 | 2730 | 16.70330 | 0.6445 | 0 | 401 | 15.35222 | 0.6847 | 0 | 563 | 21.55436 | 0.3406 | 0 | 410 | 2038 | 20.11776 | 0.7755 | 1 | 64 | 779 | 8.215661 | 0.2181 | 0 | 0 | 2510 | 0.0000000 | 0.09298 | 0 | 329 | 2612 | 12.595712 | 0.31130 | 0 | 1220 | 38 | 3.1147541 | 0.4648 | 0 | 385 | 31.5573770 | 0.9545 | 1 | 20 | 1074 | 1.862197 | 0.5509 | 0 | 43 | 1074 | 4.0037244 | 0.40880 | 0 | 0 | 2612 | 0.0000 | 0.3640 | 0 | 1.94057 | 0.3398 | 1 | 2.11188 | 0.2802 | 1 | 0.31130 | 0.3084 | 0 | 2.74300 | 0.6129 | 1 | 7.10675 | 0.3771 | 3 | 2928 | 1312 | 1176 | 884 | 2928 | 30.191257 | 0.7334 | 0 | 29 | 1459 | 1.987663 | 0.13560 | 0 | 71 | 830 | 8.554217 | 0.03726 | 0 | 134 | 346 | 38.72832 | 0.3964 | 0 | 205 | 1176 | 17.43197 | 0.12010 | 0 | 294 | 2052 | 14.327485 | 0.6940 | 0 | 219 | 2925 | 7.487179 | 0.5423 | 0 | 556 | 18.989071 | 0.6705 | 0 | 699 | 23.87295 | 0.63390 | 0 | 489 | 2226.455 | 21.963167 | 0.8122 | 1 | 191 | 783.8820 | 24.3659136 | 0.77990 | 1 | 0 | 2710 | 0.0000000 | 0.09479 | 0 | 398 | 2927.519 | 13.5951280 | 0.251100 | 0 | 1312 | 13 | 0.9908537 | 0.3111 | 0 | 400 | 30.4878049 | 0.9557 | 1 | 6 | 1176 | 0.5102041 | 0.25900 | 0 | 81 | 1176.202 | 6.886570 | 0.6115 | 0 | 7 | 2928 | 0.2390710 | 0.4961 | 0 | 2.22540 | 0.4183 | 0 | 2.99129 | 0.76340 | 2 | 0.251100 | 0.249000 | 0 | 2.63340 | 0.5496 | 1 | 8.101190 | 0.5207 | 3 | Yes | 0 | 0 | $0 | 1 | 408000 | $408,000 | 1 | Census Tract 102, Baldwin County, Alabama | 23862 | 103200 | 26085 | 136900 | 27679.92 | 119712 | -1594.92 | -0.0576201 | 17188 | 0.1435779 | 128.38 | 166.27 | Baldwin County, Alabama | Mobile-Daphne-Fairhope, AL CSA | CS380 |
01003010500 | 01003 | 010500 | AL | Alabama | Baldwin County | 3 | South Region | 6 | East South Central Division | 4230 | 1779 | 1425 | 498 | 3443 | 14.46413 | 0.3337 | 0 | 166 | 1625 | 10.215385 | 0.71790 | 0 | 151 | 1069 | 14.12535 | 0.04638 | 0 | 196 | 356 | 55.05618 | 0.73830 | 0 | 347 | 1425 | 24.35088 | 0.17010 | 0 | 707 | 2945 | 24.006791 | 0.7967 | 1 | 528 | 4001 | 13.19670 | 0.5005 | 0 | 619 | 14.63357 | 0.6436 | 0 | 790 | 18.67612 | 0.1937 | 0 | 536 | 3096 | 17.31266 | 0.6572 | 0 | 165 | 920 | 17.934783 | 0.6102 | 0 | 20 | 4021 | 0.4973887 | 0.32320 | 0 | 754 | 4230 | 17.825059 | 0.40230 | 0 | 1779 | 97 | 5.4525014 | 0.5525 | 0 | 8 | 0.4496908 | 0.4600 | 0 | 63 | 1425 | 4.421053 | 0.7762 | 1 | 90 | 1425 | 6.3157895 | 0.56910 | 0 | 787 | 4230 | 18.6052 | 0.9649 | 1 | 2.51890 | 0.5121 | 1 | 2.42790 | 0.4539 | 0 | 0.40230 | 0.3986 | 0 | 3.32270 | 0.8628 | 2 | 8.67180 | 0.6054 | 3 | 5877 | 1975 | 1836 | 820 | 5244 | 15.636918 | 0.3902 | 0 | 90 | 2583 | 3.484321 | 0.33610 | 0 | 159 | 1345 | 11.821561 | 0.10530 | 0 | 139 | 491 | 28.30957 | 0.1924 | 0 | 298 | 1836 | 16.23094 | 0.09053 | 0 | 570 | 4248 | 13.418079 | 0.6669 | 0 | 353 | 5247 | 6.727654 | 0.4924 | 0 | 1109 | 18.870172 | 0.6645 | 0 | 1144 | 19.46571 | 0.34110 | 0 | 717 | 4102.545 | 17.476956 | 0.6332 | 0 | 103 | 1286.1180 | 8.0085961 | 0.23410 | 0 | 0 | 5639 | 0.0000000 | 0.09479 | 0 | 868 | 5877.481 | 14.7682323 | 0.270900 | 0 | 1975 | 26 | 1.3164557 | 0.3359 | 0 | 45 | 2.2784810 | 0.6271 | 0 | 9 | 1836 | 0.4901961 | 0.25400 | 0 | 116 | 1835.798 | 6.318779 | 0.5811 | 0 | 633 | 5877 | 10.7708014 | 0.9507 | 1 | 1.97613 | 0.3410 | 0 | 1.96769 | 0.19610 | 0 | 0.270900 | 0.268600 | 0 | 2.74880 | 0.6077 | 1 | 6.963520 | 0.3406 | 1 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 | Census Tract 105, Baldwin County, Alabama | 21585 | 121100 | 28301 | 148500 | 25038.60 | 140476 | 3262.40 | 0.1302948 | 8024 | 0.0571201 | 191.57 | 213.49 | Baldwin County, Alabama | Mobile-Daphne-Fairhope, AL CSA | CS380 |
01003010600 | 01003 | 010600 | AL | Alabama | Baldwin County | 3 | South Region | 6 | East South Central Division | 3724 | 1440 | 1147 | 1973 | 3724 | 52.98067 | 0.9342 | 1 | 142 | 1439 | 9.867964 | 0.69680 | 0 | 235 | 688 | 34.15698 | 0.62950 | 0 | 187 | 459 | 40.74074 | 0.40290 | 0 | 422 | 1147 | 36.79163 | 0.55150 | 0 | 497 | 1876 | 26.492537 | 0.8354 | 1 | 511 | 3661 | 13.95794 | 0.5334 | 0 | 246 | 6.60580 | 0.1481 | 0 | 1256 | 33.72718 | 0.9305 | 1 | 496 | 2522 | 19.66693 | 0.7587 | 1 | 274 | 838 | 32.696897 | 0.8779 | 1 | 32 | 3479 | 0.9198045 | 0.42810 | 0 | 2606 | 3724 | 69.978518 | 0.81840 | 1 | 1440 | 21 | 1.4583333 | 0.3683 | 0 | 321 | 22.2916667 | 0.9036 | 1 | 97 | 1147 | 8.456844 | 0.8956 | 1 | 167 | 1147 | 14.5597210 | 0.82090 | 1 | 0 | 3724 | 0.0000 | 0.3640 | 0 | 3.55130 | 0.7859 | 2 | 3.14330 | 0.8145 | 3 | 0.81840 | 0.8108 | 1 | 3.35240 | 0.8725 | 3 | 10.86540 | 0.8550 | 9 | 4115 | 1534 | 1268 | 1676 | 3997 | 41.931449 | 0.8814 | 1 | 294 | 1809 | 16.252073 | 0.96740 | 1 | 341 | 814 | 41.891892 | 0.94320 | 1 | 204 | 454 | 44.93392 | 0.5438 | 0 | 545 | 1268 | 42.98107 | 0.83620 | 1 | 624 | 2425 | 25.731959 | 0.9002 | 1 | 994 | 4115 | 24.155529 | 0.9602 | 1 | 642 | 15.601458 | 0.4841 | 0 | 1126 | 27.36331 | 0.81750 | 1 | 568 | 2989.000 | 19.003011 | 0.7045 | 0 | 212 | 715.0000 | 29.6503497 | 0.85920 | 1 | 56 | 3825 | 1.4640523 | 0.53120 | 0 | 2715 | 4115.000 | 65.9781288 | 0.773200 | 1 | 1534 | 0 | 0.0000000 | 0.1079 | 0 | 529 | 34.4850065 | 0.9685 | 1 | 101 | 1268 | 7.9652997 | 0.87950 | 1 | 89 | 1268.000 | 7.018927 | 0.6184 | 0 | 17 | 4115 | 0.4131227 | 0.5707 | 0 | 4.54540 | 0.9754 | 5 | 3.39650 | 0.90810 | 2 | 0.773200 | 0.766700 | 1 | 3.14500 | 0.7858 | 2 | 11.860100 | 0.9520 | 10 | Yes | 0 | 0 | $0 | 1 | 8000000 | $8,000,000 | 1 | Census Tract 106, Baldwin County, Alabama | 17788 | 81600 | 16453 | 104700 | 20634.08 | 94656 | -4181.08 | -0.2026298 | 10044 | 0.1061105 | NA | NA | Baldwin County, Alabama | Mobile-Daphne-Fairhope, AL CSA | CS380 |
01003011000 | 01003 | 011000 | AL | Alabama | Baldwin County | 3 | South Region | 6 | East South Central Division | 3758 | 2012 | 1576 | 1053 | 3758 | 28.02022 | 0.6597 | 0 | 66 | 1707 | 3.866432 | 0.16250 | 0 | 293 | 1297 | 22.59059 | 0.25080 | 0 | 83 | 279 | 29.74910 | 0.19030 | 0 | 376 | 1576 | 23.85787 | 0.15710 | 0 | 744 | 2723 | 27.322806 | 0.8465 | 1 | 996 | 4137 | 24.07542 | 0.8462 | 1 | 713 | 18.97286 | 0.8429 | 1 | 804 | 21.39436 | 0.3306 | 0 | 763 | 3295 | 23.15630 | 0.8670 | 1 | 155 | 1145 | 13.537118 | 0.4538 | 0 | 50 | 3475 | 1.4388489 | 0.51460 | 0 | 516 | 3758 | 13.730708 | 0.33300 | 0 | 2012 | 0 | 0.0000000 | 0.1224 | 0 | 606 | 30.1192843 | 0.9484 | 1 | 42 | 1576 | 2.664975 | 0.6476 | 0 | 96 | 1576 | 6.0913706 | 0.55620 | 0 | 0 | 3758 | 0.0000 | 0.3640 | 0 | 2.67200 | 0.5579 | 2 | 3.00890 | 0.7581 | 2 | 0.33300 | 0.3299 | 0 | 2.63860 | 0.5614 | 1 | 8.65250 | 0.6030 | 5 | 4921 | 1979 | 1732 | 1539 | 4908 | 31.356968 | 0.7523 | 1 | 150 | 2105 | 7.125891 | 0.72850 | 0 | 214 | 1471 | 14.547927 | 0.20260 | 0 | 59 | 261 | 22.60536 | 0.1167 | 0 | 273 | 1732 | 15.76212 | 0.07981 | 0 | 936 | 3332 | 28.091237 | 0.9206 | 1 | 861 | 4921 | 17.496444 | 0.8930 | 1 | 1039 | 21.113595 | 0.7653 | 1 | 1183 | 24.03983 | 0.64410 | 0 | 585 | 3738.000 | 15.650080 | 0.5371 | 0 | 81 | 1151.0000 | 7.0373588 | 0.19000 | 0 | 101 | 4546 | 2.2217334 | 0.61440 | 0 | 1244 | 4921.000 | 25.2794148 | 0.427800 | 0 | 1979 | 0 | 0.0000000 | 0.1079 | 0 | 527 | 26.6296109 | 0.9393 | 1 | 83 | 1732 | 4.7921478 | 0.77460 | 1 | 151 | 1732.000 | 8.718245 | 0.6904 | 0 | 20 | 4921 | 0.4064215 | 0.5688 | 0 | 3.37421 | 0.7528 | 3 | 2.75090 | 0.63780 | 1 | 0.427800 | 0.424200 | 0 | 3.08100 | 0.7597 | 2 | 9.633910 | 0.7366 | 6 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 | Census Tract 110, Baldwin County, Alabama | 19340 | 126400 | 23679 | 158700 | 22434.40 | 146624 | 1244.60 | 0.0554773 | 12076 | 0.0823603 | 129.69 | 188.85 | Baldwin County, Alabama | Mobile-Daphne-Fairhope, AL CSA | CS380 |
01003011406 | 01003 | 011406 | AL | Alabama | Baldwin County | 3 | South Region | 6 | East South Central Division | 3317 | 6418 | 1307 | 583 | 3317 | 17.57612 | 0.4181 | 0 | 70 | 1789 | 3.912800 | 0.16690 | 0 | 221 | 685 | 32.26277 | 0.57540 | 0 | 284 | 622 | 45.65916 | 0.52130 | 0 | 505 | 1307 | 38.63810 | 0.60430 | 0 | 168 | 2255 | 7.450111 | 0.2800 | 0 | 919 | 3677 | 24.99320 | 0.8623 | 1 | 452 | 13.62677 | 0.5791 | 0 | 673 | 20.28942 | 0.2668 | 0 | 366 | 2769 | 13.21777 | 0.4276 | 0 | 96 | 887 | 10.822999 | 0.3359 | 0 | 180 | 3066 | 5.8708415 | 0.77920 | 1 | 473 | 3317 | 14.259873 | 0.34330 | 0 | 6418 | 3976 | 61.9507635 | 0.9655 | 1 | 384 | 5.9831723 | 0.7063 | 0 | 17 | 1307 | 1.300689 | 0.4632 | 0 | 10 | 1307 | 0.7651109 | 0.08684 | 0 | 0 | 3317 | 0.0000 | 0.3640 | 0 | 2.33160 | 0.4577 | 1 | 2.38860 | 0.4323 | 1 | 0.34330 | 0.3401 | 0 | 2.58584 | 0.5335 | 1 | 7.64934 | 0.4576 | 3 | 3226 | 7850 | 1797 | 228 | 3215 | 7.091757 | 0.1241 | 0 | 72 | 2055 | 3.503650 | 0.33910 | 0 | 302 | 1139 | 26.514486 | 0.69300 | 0 | 230 | 658 | 34.95441 | 0.3131 | 0 | 532 | 1797 | 29.60490 | 0.52020 | 0 | 128 | 2726 | 4.695525 | 0.2384 | 0 | 530 | 3226 | 16.429014 | 0.8749 | 1 | 790 | 24.488531 | 0.8715 | 1 | 342 | 10.60136 | 0.05624 | 0 | 280 | 2884.000 | 9.708738 | 0.1832 | 0 | 58 | 792.0000 | 7.3232323 | 0.20270 | 0 | 15 | 3107 | 0.4827808 | 0.34070 | 0 | 15 | 3226.000 | 0.4649721 | 0.002512 | 0 | 7850 | 5394 | 68.7133758 | 0.9706 | 1 | 274 | 3.4904459 | 0.6697 | 0 | 23 | 1797 | 1.2799110 | 0.41980 | 0 | 26 | 1797.000 | 1.446856 | 0.1647 | 0 | 0 | 3226 | 0.0000000 | 0.1831 | 0 | 2.09670 | 0.3785 | 1 | 1.65434 | 0.08785 | 1 | 0.002512 | 0.002491 | 0 | 2.40790 | 0.4381 | 1 | 6.161452 | 0.2215 | 3 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 | Census Tract 114.06, Baldwin County, Alabama | 29838 | 252000 | 32201 | 224200 | 34612.08 | 292320 | -2411.08 | -0.0696601 | -68120 | -0.2330323 | NA | NA | Baldwin County, Alabama | Mobile-Daphne-Fairhope, AL CSA | CS380 |
01003011407 | 01003 | 011407 | AL | Alabama | Baldwin County | 3 | South Region | 6 | East South Central Division | 5187 | 6687 | 2066 | 1404 | 5172 | 27.14617 | 0.6423 | 0 | 172 | 1935 | 8.888889 | 0.63280 | 0 | 482 | 1433 | 33.63573 | 0.61530 | 0 | 367 | 633 | 57.97788 | 0.79510 | 1 | 849 | 2066 | 41.09390 | 0.67110 | 0 | 278 | 3618 | 7.683803 | 0.2906 | 0 | 1027 | 4945 | 20.76845 | 0.7735 | 1 | 1398 | 26.95200 | 0.9629 | 1 | 1263 | 24.34933 | 0.5302 | 0 | 596 | 3792 | 15.71730 | 0.5759 | 0 | 158 | 1633 | 9.675444 | 0.2833 | 0 | 29 | 4867 | 0.5958496 | 0.35240 | 0 | 170 | 5187 | 3.277424 | 0.07984 | 0 | 6687 | 2772 | 41.4535666 | 0.9251 | 1 | 197 | 2.9460147 | 0.6326 | 0 | 90 | 2066 | 4.356244 | 0.7729 | 1 | 0 | 2066 | 0.0000000 | 0.02586 | 0 | 0 | 5187 | 0.0000 | 0.3640 | 0 | 3.01030 | 0.6516 | 1 | 2.70470 | 0.6077 | 1 | 0.07984 | 0.0791 | 0 | 2.72046 | 0.6014 | 2 | 8.51530 | 0.5852 | 4 | 5608 | 7576 | 2543 | 1058 | 5602 | 18.886112 | 0.4835 | 0 | 32 | 2631 | 1.216268 | 0.05882 | 0 | 581 | 1979 | 29.358262 | 0.77080 | 1 | 309 | 564 | 54.78723 | 0.7671 | 1 | 890 | 2543 | 34.99803 | 0.67250 | 0 | 230 | 4433 | 5.188360 | 0.2698 | 0 | 776 | 5602 | 13.852196 | 0.8156 | 1 | 1527 | 27.228959 | 0.9205 | 1 | 567 | 10.11056 | 0.05099 | 0 | 615 | 5035.000 | 12.214498 | 0.3295 | 0 | 16 | 1746.0000 | 0.9163803 | 0.01566 | 0 | 0 | 5573 | 0.0000000 | 0.09479 | 0 | 441 | 5608.000 | 7.8637660 | 0.140300 | 0 | 7576 | 3055 | 40.3247096 | 0.9148 | 1 | 72 | 0.9503696 | 0.5383 | 0 | 0 | 2543 | 0.0000000 | 0.09796 | 0 | 125 | 2543.000 | 4.915454 | 0.4934 | 0 | 6 | 5608 | 0.1069900 | 0.4054 | 0 | 2.30022 | 0.4418 | 1 | 1.41144 | 0.04295 | 1 | 0.140300 | 0.139100 | 0 | 2.44986 | 0.4589 | 1 | 6.301820 | 0.2416 | 3 | Yes | 0 | 0 | $0 | 0 | 0 | $0 | 0 | Census Tract 114.07, Baldwin County, Alabama | 22317 | 292600 | 28418 | 241100 | 25887.72 | 339416 | 2530.28 | 0.0977406 | -98316 | -0.2896622 | NA | NA | Baldwin County, Alabama | Mobile-Daphne-Fairhope, AL CSA | CS380 |
01003011502 | 01003 | 011502 | AL | Alabama | Baldwin County | 3 | South Region | 6 | East South Central Division | 9234 | 4606 | 3702 | 3160 | 9213 | 34.29936 | 0.7632 | 1 | 282 | 4002 | 7.046477 | 0.47570 | 0 | 526 | 2158 | 24.37442 | 0.31260 | 0 | 582 | 1544 | 37.69430 | 0.33410 | 0 | 1108 | 3702 | 29.92977 | 0.33740 | 0 | 997 | 6176 | 16.143135 | 0.6201 | 0 | 2074 | 10111 | 20.51231 | 0.7670 | 1 | 1450 | 15.70284 | 0.7043 | 0 | 2491 | 26.97639 | 0.6984 | 0 | 1542 | 7577 | 20.35106 | 0.7842 | 1 | 684 | 2718 | 25.165563 | 0.7767 | 1 | 532 | 8697 | 6.1170519 | 0.78590 | 1 | 3275 | 9234 | 35.466753 | 0.60970 | 0 | 4606 | 214 | 4.6461138 | 0.5268 | 0 | 828 | 17.9765523 | 0.8689 | 1 | 89 | 3702 | 2.404106 | 0.6192 | 0 | 293 | 3702 | 7.9146407 | 0.64700 | 0 | 0 | 9234 | 0.0000 | 0.3640 | 0 | 2.96340 | 0.6387 | 2 | 3.74950 | 0.9623 | 3 | 0.60970 | 0.6040 | 0 | 3.02590 | 0.7475 | 1 | 10.34850 | 0.8024 | 6 | 14165 | 6867 | 6002 | 2853 | 14165 | 20.141193 | 0.5175 | 0 | 313 | 7047 | 4.441606 | 0.46620 | 0 | 1181 | 4164 | 28.362152 | 0.74500 | 0 | 887 | 1838 | 48.25898 | 0.6211 | 0 | 2068 | 6002 | 34.45518 | 0.65900 | 0 | 1667 | 10750 | 15.506977 | 0.7286 | 0 | 2527 | 14165 | 17.839746 | 0.8980 | 1 | 3082 | 21.757854 | 0.7907 | 1 | 2506 | 17.69149 | 0.24240 | 0 | 3004 | 11659.000 | 25.765503 | 0.9038 | 1 | 407 | 3482.0000 | 11.6886847 | 0.39940 | 0 | 364 | 13519 | 2.6925068 | 0.65290 | 0 | 2755 | 14165.000 | 19.4493470 | 0.346300 | 0 | 6867 | 441 | 6.4220183 | 0.5555 | 0 | 526 | 7.6598223 | 0.7585 | 1 | 93 | 6002 | 1.5494835 | 0.46540 | 0 | 184 | 6002.000 | 3.065645 | 0.3373 | 0 | 0 | 14165 | 0.0000000 | 0.1831 | 0 | 3.26930 | 0.7261 | 1 | 2.98920 | 0.76250 | 2 | 0.346300 | 0.343400 | 0 | 2.29980 | 0.3856 | 1 | 8.904600 | 0.6398 | 4 | Yes | 0 | 0 | $0 | 2 | 8860000 | $8,860,000 | 1 | Census Tract 115.02, Baldwin County, Alabama | 20411 | 162700 | 22820 | 180400 | 23676.76 | 188732 | -856.76 | -0.0361857 | -8332 | -0.0441473 | NA | NA | Baldwin County, Alabama | Mobile-Daphne-Fairhope, AL CSA | CS380 |
Create LIHTC data set
Join SVI data for LIHTC with Median Income, Median Home Value, and Housing Price Index data:
Code
svi_divisional_lihtc_df0 <- left_join(svi_divisional_lihtc, census_pull_df, join_by("GEOID_2010_trt" == "GEOID"))
svi_divisional_lihtc_df1 <- left_join(svi_divisional_lihtc_df0, hpi_df_10_20, join_by("GEOID_2010_trt" == "GEOID10")) %>%
unite("county_fips", FIPS_st, FIPS_county, sep = "")
svi_divisional_lihtc_df <- left_join(svi_divisional_lihtc_df1, msa_csa_crosswalk, join_by("county_fips" == "county_fips"))
svi_divisional_lihtc_df %>% head(10) %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | county_fips | FIPS_tract | state | state_name | county | region_number | region | division_number | division | E_TOTPOP_10 | E_HU_10 | E_HH_10 | E_POV150_10 | ET_POVSTATUS_10 | EP_POV150_10 | EPL_POV150_10 | F_POV150_10 | E_UNEMP_10 | ET_EMPSTATUS_10 | EP_UNEMP_10 | EPL_UNEMP_10 | F_UNEMP_10 | E_HBURD_OWN_10 | ET_HOUSINGCOST_OWN_10 | EP_HBURD_OWN_10 | EPL_HBURD_OWN_10 | F_HBURD_OWN_10 | E_HBURD_RENT_10 | ET_HOUSINGCOST_RENT_10 | EP_HBURD_RENT_10 | EPL_HBURD_RENT_10 | F_HBURD_RENT_10 | E_HBURD_10 | ET_HOUSINGCOST_10 | EP_HBURD_10 | EPL_HBURD_10 | F_HBURD_10 | E_NOHSDP_10 | ET_EDSTATUS_10 | EP_NOHSDP_10 | EPL_NOHSDP_10 | F_NOHSDP_10 | E_UNINSUR_12 | ET_INSURSTATUS_12 | EP_UNINSUR_12 | EPL_UNINSUR_12 | F_UNINSUR_12 | E_AGE65_10 | EP_AGE65_10 | EPL_AGE65_10 | F_AGE65_10 | E_AGE17_10 | EP_AGE17_10 | EPL_AGE17_10 | F_AGE17_10 | E_DISABL_12 | ET_DISABLSTATUS_12 | EP_DISABL_12 | EPL_DISABL_12 | F_DISABL_12 | E_SNGPNT_10 | ET_FAMILIES_10 | EP_SNGPNT_10 | EPL_SNGPNT_10 | F_SNGPNT_10 | E_LIMENG_10 | ET_POPAGE5UP_10 | EP_LIMENG_10 | EPL_LIMENG_10 | F_LIMENG_10 | E_MINRTY_10 | ET_POPETHRACE_10 | EP_MINRTY_10 | EPL_MINRTY_10 | F_MINRTY_10 | E_STRHU_10 | E_MUNIT_10 | EP_MUNIT_10 | EPL_MUNIT_10 | F_MUNIT_10 | E_MOBILE_10 | EP_MOBILE_10 | EPL_MOBILE_10 | F_MOBILE_10 | E_CROWD_10 | ET_OCCUPANTS_10 | EP_CROWD_10 | EPL_CROWD_10 | F_CROWD_10 | E_NOVEH_10 | ET_KNOWNVEH_10 | EP_NOVEH_10 | EPL_NOVEH_10 | F_NOVEH_10 | E_GROUPQ_10 | ET_HHTYPE_10 | EP_GROUPQ_10 | EPL_GROUPQ_10 | F_GROUPQ_10 | SPL_THEME1_10 | RPL_THEME1_10 | F_THEME1_10 | SPL_THEME2_10 | RPL_THEME2_10 | F_THEME2_10 | SPL_THEME3_10 | RPL_THEME3_10 | F_THEME3_10 | SPL_THEME4_10 | RPL_THEME4_10 | F_THEME4_10 | SPL_THEMES_10 | RPL_THEMES_10 | F_TOTAL_10 | E_TOTPOP_20 | E_HU_20 | E_HH_20 | E_POV150_20 | ET_POVSTATUS_20 | EP_POV150_20 | EPL_POV150_20 | F_POV150_20 | E_UNEMP_20 | ET_EMPSTATUS_20 | EP_UNEMP_20 | EPL_UNEMP_20 | F_UNEMP_20 | E_HBURD_OWN_20 | ET_HOUSINGCOST_OWN_20 | EP_HBURD_OWN_20 | EPL_HBURD_OWN_20 | F_HBURD_OWN_20 | E_HBURD_RENT_20 | ET_HOUSINGCOST_RENT_20 | EP_HBURD_RENT_20 | EPL_HBURD_RENT_20 | F_HBURD_RENT_20 | E_HBURD_20 | ET_HOUSINGCOST_20 | EP_HBURD_20 | EPL_HBURD_20 | F_HBURD_20 | E_NOHSDP_20 | ET_EDSTATUS_20 | EP_NOHSDP_20 | EPL_NOHSDP_20 | F_NOHSDP_20 | E_UNINSUR_20 | ET_INSURSTATUS_20 | EP_UNINSUR_20 | EPL_UNINSUR_20 | F_UNINSUR_20 | E_AGE65_20 | EP_AGE65_20 | EPL_AGE65_20 | F_AGE65_20 | E_AGE17_20 | EP_AGE17_20 | EPL_AGE17_20 | F_AGE17_20 | E_DISABL_20 | ET_DISABLSTATUS_20 | EP_DISABL_20 | EPL_DISABL_20 | F_DISABL_20 | E_SNGPNT_20 | ET_FAMILIES_20 | EP_SNGPNT_20 | EPL_SNGPNT_20 | F_SNGPNT_20 | E_LIMENG_20 | ET_POPAGE5UP_20 | EP_LIMENG_20 | EPL_LIMENG_20 | F_LIMENG_20 | E_MINRTY_20 | ET_POPETHRACE_20 | EP_MINRTY_20 | EPL_MINRTY_20 | F_MINRTY_20 | E_STRHU_20 | E_MUNIT_20 | EP_MUNIT_20 | EPL_MUNIT_20 | F_MUNIT_20 | E_MOBILE_20 | EP_MOBILE_20 | EPL_MOBILE_20 | F_MOBILE_20 | E_CROWD_20 | ET_OCCUPANTS_20 | EP_CROWD_20 | EPL_CROWD_20 | F_CROWD_20 | E_NOVEH_20 | ET_KNOWNVEH_20 | EP_NOVEH_20 | EPL_NOVEH_20 | F_NOVEH_20 | E_GROUPQ_20 | ET_HHTYPE_20 | EP_GROUPQ_20 | EPL_GROUPQ_20 | F_GROUPQ_20 | SPL_THEME1_20 | RPL_THEME1_20 | F_THEME1_20 | SPL_THEME2_20 | RPL_THEME2_20 | F_THEME2_20 | SPL_THEME3_20 | RPL_THEME3_20 | F_THEME3_20 | SPL_THEME4_20 | RPL_THEME4_20 | F_THEME4_20 | SPL_THEMES_20 | RPL_THEMES_20 | F_TOTAL_20 | pre10_lihtc_project_cnt | pre10_lihtc_project_dollars | post10_lihtc_project_cnt | post10_lihtc_project_dollars | lihtc_flag | lihtc_eligibility | NAME | Median_Income_10 | Median_Home_Value_10 | Median_Income_19 | Median_Home_Value_19 | Median_Income_10adj | Median_Home_Value_10adj | Median_Income_Change | Median_Income_Change_pct | Median_Home_Value_Change | Median_Home_Value_Change_pct | housing_price_index10 | housing_price_index20 | county_title | cbsa | cbsa_code |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
34001001400 | 34001 | 001400 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 3736 | 1893 | 1503 | 2135 | 3736 | 57.14668 | 0.9592 | 1 | 411 | 1635 | 25.137615 | 0.9866 | 1 | 267 | 401 | 66.58354 | 0.9617 | 1 | 715 | 1102 | 64.88203 | 0.8844 | 1 | 982 | 1503 | 65.33599 | 0.9764 | 1 | 511 | 1696 | 30.129717 | 0.90050 | 1 | 527 | 4199 | 12.5506073 | 0.672800 | 0 | 269 | 7.200214 | 0.115100 | 0 | 1598 | 42.77302 | 0.9935 | 1 | 345 | 2252 | 15.319716 | 0.63090 | 0 | 787 | 941 | 83.63443 | 0.9990 | 1 | 63 | 3192 | 1.973684 | 0.54480 | 0 | 3463 | 3736 | 92.69272 | 0.8905 | 1 | 1893 | 427 | 22.556788 | 0.7770 | 1 | 0 | 0.000000 | 0.3251 | 0 | 22 | 1503 | 1.463739 | 0.5339 | 0 | 705 | 1503 | 46.90619 | 0.85330 | 1 | 0 | 3736 | 0.000000 | 0.3512 | 0 | 4.495500 | 0.9585 | 4 | 3.283300 | 0.8640 | 2 | 0.8905 | 0.8818 | 1 | 2.84050 | 0.66710 | 2 | 11.509800 | 0.9048 | 9 | 3812 | 1724 | 1549 | 2291 | 3754 | 61.028236 | 0.9760 | 1 | 380 | 1547 | 24.563672 | 0.9934 | 1 | 117 | 240 | 48.75000 | 0.9237 | 1 | 753 | 1309 | 57.52483 | 0.7816 | 1 | 870 | 1549 | 56.16527 | 0.9326 | 1 | 472 | 1913 | 24.673288 | 0.8987 | 1 | 294 | 3802 | 7.7327722 | 0.7558 | 1 | 363 | 9.522560 | 0.123100 | 0 | 1463 | 38.37880 | 0.9885 | 1 | 508 | 2339.000 | 21.718683 | 0.85640 | 1 | 564 | 948.0000 | 59.49367 | 0.9910 | 1 | 201 | 3159 | 6.3627730 | 0.7613 | 1 | 3389 | 3812.000 | 88.90346 | 0.8683 | 1 | 1724 | 571 | 33.1206497 | 0.8294 | 1 | 0 | 0.000000 | 0.3216 | 0 | 83 | 1549 | 5.358296 | 0.7754 | 1 | 661 | 1549.0000 | 42.672692 | 0.8448 | 1 | 10 | 3812 | 0.2623295 | 0.4739 | 0 | 4.5565 | 0.9673 | 5 | 3.720300 | 0.9522 | 4 | 0.8683 | 0.8605 | 1 | 3.2451 | 0.81590 | 3 | 12.390200 | 0.9595 | 13 | 0 | 0 | 0 | 0 | 0 | Yes | Census Tract 14, Atlantic County, New Jersey | 16780 | 255800 | 17487 | 139100 | 19464.80 | 296728 | -1977.80 | -0.1016091 | -157628 | -0.5312205 | NA | NA | Atlantic County, New Jersey | Atlantic City, NJ MSA | C1210 |
34001001500 | 34001 | 001500 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 1074 | 901 | 752 | 656 | 1074 | 61.08007 | 0.9700 | 1 | 43 | 270 | 15.925926 | 0.9242 | 1 | 30 | 70 | 42.85714 | 0.7276 | 0 | 366 | 682 | 53.66569 | 0.6910 | 0 | 396 | 752 | 52.65957 | 0.8458 | 1 | 266 | 921 | 28.881650 | 0.88860 | 1 | 121 | 1064 | 11.3721805 | 0.613100 | 0 | 385 | 35.847300 | 0.990200 | 1 | 129 | 12.01117 | 0.0617 | 0 | 321 | 993 | 32.326284 | 0.98460 | 1 | 62 | 195 | 31.79487 | 0.8408 | 1 | 125 | 1050 | 11.904762 | 0.85620 | 1 | 965 | 1074 | 89.85102 | 0.8717 | 1 | 901 | 636 | 70.588235 | 0.9304 | 1 | 0 | 0.000000 | 0.3251 | 0 | 10 | 752 | 1.329787 | 0.5133 | 0 | 626 | 752 | 83.24468 | 0.98880 | 1 | 0 | 1074 | 0.000000 | 0.3512 | 0 | 4.241700 | 0.9134 | 4 | 3.733500 | 0.9515 | 4 | 0.8717 | 0.8632 | 1 | 3.10880 | 0.77090 | 2 | 11.955700 | 0.9362 | 11 | 1601 | 976 | 810 | 1001 | 1601 | 62.523423 | 0.9797 | 1 | 204 | 563 | 36.234458 | 0.9989 | 1 | 74 | 110 | 67.27273 | 0.9848 | 1 | 224 | 700 | 32.00000 | 0.2097 | 0 | 298 | 810 | 36.79012 | 0.6089 | 0 | 379 | 1145 | 33.100437 | 0.9610 | 1 | 272 | 1601 | 16.9893816 | 0.9572 | 1 | 451 | 28.169894 | 0.936300 | 1 | 251 | 15.67770 | 0.1835 | 0 | 411 | 1350.000 | 30.444444 | 0.97330 | 1 | 196 | 446.0000 | 43.94619 | 0.9511 | 1 | 220 | 1532 | 14.3603133 | 0.8929 | 1 | 1435 | 1601.000 | 89.63148 | 0.8738 | 1 | 976 | 451 | 46.2090164 | 0.8742 | 1 | 0 | 0.000000 | 0.3216 | 0 | 24 | 810 | 2.962963 | 0.6412 | 0 | 546 | 810.0000 | 67.407407 | 0.9401 | 1 | 15 | 1601 | 0.9369144 | 0.6832 | 0 | 4.5057 | 0.9617 | 4 | 3.937100 | 0.9752 | 4 | 0.8738 | 0.8659 | 1 | 3.4603 | 0.87740 | 2 | 12.776900 | 0.9705 | 11 | 0 | 0 | 1 | 1497998 | 1 | Yes | Census Tract 15, Atlantic County, New Jersey | 11549 | 172400 | 12339 | NA | 13396.84 | 199984 | -1057.84 | -0.0789619 | NA | NA | NA | NA | Atlantic County, New Jersey | Atlantic City, NJ MSA | C1210 |
34001002400 | 34001 | 002400 | NJ | New Jersey | Atlantic County | 1 | Northeast Region | 2 | Middle Atlantic Division | 3129 | 1759 | 1375 | 1916 | 3129 | 61.23362 | 0.9705 | 1 | 205 | 1075 | 19.069767 | 0.9574 | 1 | 28 | 60 | 46.66667 | 0.7987 | 1 | 670 | 1315 | 50.95057 | 0.6297 | 0 | 698 | 1375 | 50.76364 | 0.8102 | 1 | 632 | 2059 | 30.694512 | 0.90660 | 1 | 461 | 2365 | 19.4926004 | 0.873700 | 1 | 539 | 17.225951 | 0.744100 | 0 | 850 | 27.16523 | 0.7907 | 1 | 575 | 1736 | 33.122120 | 0.98650 | 1 | 237 | 594 | 39.89899 | 0.9035 | 1 | 312 | 2663 | 11.716110 | 0.85490 | 1 | 2357 | 3129 | 75.32758 | 0.8038 | 1 | 1759 | 1091 | 62.023877 | 0.9176 | 1 | 29 | 1.648664 | 0.7742 | 1 | 57 | 1375 | 4.145454 | 0.7529 | 1 | 696 | 1375 | 50.61818 | 0.87140 | 1 | 209 | 3129 | 6.679450 | 0.9003 | 1 | 4.518400 | 0.9608 | 5 | 4.279700 | 0.9831 | 4 | 0.8038 | 0.7960 | 1 | 4.21640 | 0.98320 | 5 | 13.818300 | 0.9835 | 15 | 2614 | 1726 | 1217 | 1579 | 2612 | 60.451761 | 0.9744 | 1 | 290 | 1171 | 24.765158 | 0.9939 | 1 | 69 | 127 | 54.33071 | 0.9521 | 1 | 538 | 1090 | 49.35780 | 0.5970 | 0 | 607 | 1217 | 49.87675 | 0.8624 | 1 | 697 | 1998 | 34.884885 | 0.9695 | 1 | 551 | 2614 | 21.0788064 | 0.9797 | 1 | 516 | 19.739862 | 0.679400 | 0 | 503 | 19.24254 | 0.3999 | 0 | 576 | 2111.000 | 27.285647 | 0.95060 | 1 | 257 | 567.0000 | 45.32628 | 0.9571 | 1 | 556 | 2368 | 23.4797297 | 0.9570 | 1 | 2029 | 2614.000 | 77.62050 | 0.8058 | 1 | 1726 | 1166 | 67.5550406 | 0.9204 | 1 | 0 | 0.000000 | 0.3216 | 0 | 115 | 1217 | 9.449466 | 0.8840 | 1 | 673 | 1217.0000 | 55.299918 | 0.8978 | 1 | 223 | 2614 | 8.5309870 | 0.9307 | 1 | 4.7799 | 0.9845 | 5 | 3.944000 | 0.9756 | 3 | 0.8058 | 0.7985 | 1 | 3.9545 | 0.96510 | 4 | 13.484200 | 0.9845 | 13 | 0 | 0 | 0 | 0 | 0 | Yes | Census Tract 24, Atlantic County, New Jersey | 14657 | 243300 | 17646 | 302900 | 17002.12 | 282228 | 643.88 | 0.0378706 | 20672 | 0.0732457 | NA | NA | Atlantic County, New Jersey | Atlantic City, NJ MSA | C1210 |
34003015400 | 34003 | 015400 | NJ | New Jersey | Bergen County | 1 | Northeast Region | 2 | Middle Atlantic Division | 5086 | 2258 | 2100 | 1485 | 5063 | 29.33044 | 0.7447 | 0 | 195 | 2873 | 6.787330 | 0.4938 | 0 | 223 | 478 | 46.65272 | 0.7984 | 1 | 876 | 1622 | 54.00740 | 0.6974 | 0 | 1099 | 2100 | 52.33333 | 0.8405 | 1 | 640 | 3682 | 17.381858 | 0.70160 | 0 | 1579 | 6178 | 25.5584331 | 0.949900 | 1 | 603 | 11.856075 | 0.377400 | 0 | 961 | 18.89501 | 0.2410 | 0 | 534 | 5000 | 10.680000 | 0.31600 | 0 | 254 | 1232 | 20.61688 | 0.6975 | 0 | 681 | 4763 | 14.297712 | 0.88510 | 1 | 3916 | 5086 | 76.99567 | 0.8096 | 1 | 2258 | 1028 | 45.527015 | 0.8820 | 1 | 0 | 0.000000 | 0.3251 | 0 | 28 | 2100 | 1.333333 | 0.5139 | 0 | 643 | 2100 | 30.61905 | 0.76370 | 1 | 57 | 5086 | 1.120724 | 0.7485 | 0 | 3.730500 | 0.8072 | 2 | 2.517000 | 0.5136 | 1 | 0.8096 | 0.8017 | 1 | 3.23320 | 0.81730 | 2 | 10.290300 | 0.7914 | 6 | 7543 | 3570 | 3054 | 1638 | 7543 | 21.715498 | 0.6364 | 0 | 320 | 4251 | 7.527641 | 0.7462 | 0 | 238 | 752 | 31.64894 | 0.6832 | 0 | 1211 | 2302 | 52.60643 | 0.6776 | 0 | 1449 | 3054 | 47.44597 | 0.8252 | 1 | 877 | 5631 | 15.574498 | 0.7611 | 1 | 1093 | 7543 | 14.4902559 | 0.9339 | 1 | 981 | 13.005436 | 0.282700 | 0 | 1174 | 15.56410 | 0.1785 | 0 | 756 | 6369.000 | 11.869995 | 0.37380 | 0 | 303 | 2013.0000 | 15.05216 | 0.5737 | 0 | 970 | 7103 | 13.6562016 | 0.8846 | 1 | 5610 | 7543.000 | 74.37359 | 0.7916 | 1 | 3570 | 1871 | 52.4089636 | 0.8898 | 1 | 0 | 0.000000 | 0.3216 | 0 | 258 | 3054 | 8.447937 | 0.8637 | 1 | 301 | 3054.0000 | 9.855927 | 0.5207 | 0 | 15 | 7543 | 0.1988599 | 0.4315 | 0 | 3.9028 | 0.8603 | 3 | 2.293300 | 0.3701 | 1 | 0.7916 | 0.7845 | 1 | 3.0273 | 0.73680 | 2 | 10.015000 | 0.7805 | 7 | 0 | 0 | 0 | 0 | 0 | Yes | Census Tract 154, Bergen County, New Jersey | 24590 | 389800 | 35719 | 326900 | 28524.40 | 452168 | 7194.60 | 0.2522262 | -125268 | -0.2770386 | NA | NA | Bergen County, New Jersey | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | CS408 |
34003018100 | 34003 | 018100 | NJ | New Jersey | Bergen County | 1 | Northeast Region | 2 | Middle Atlantic Division | 6907 | 2665 | 2569 | 1865 | 6863 | 27.17470 | 0.7140 | 0 | 242 | 3781 | 6.400423 | 0.4509 | 0 | 434 | 834 | 52.03837 | 0.8694 | 1 | 1123 | 1735 | 64.72622 | 0.8830 | 1 | 1557 | 2569 | 60.60724 | 0.9450 | 1 | 1521 | 4649 | 32.716713 | 0.92270 | 1 | 2703 | 7124 | 37.9421673 | 0.992200 | 1 | 1024 | 14.825539 | 0.598800 | 0 | 1336 | 19.34270 | 0.2674 | 0 | 452 | 5848 | 7.729138 | 0.11920 | 0 | 363 | 1614 | 22.49071 | 0.7280 | 0 | 1324 | 6571 | 20.149140 | 0.93510 | 1 | 4209 | 6907 | 60.93818 | 0.7551 | 1 | 2665 | 517 | 19.399625 | 0.7487 | 0 | 0 | 0.000000 | 0.3251 | 0 | 136 | 2569 | 5.293889 | 0.7960 | 1 | 1043 | 2569 | 40.59945 | 0.82350 | 1 | 0 | 6907 | 0.000000 | 0.3512 | 0 | 4.024800 | 0.8697 | 3 | 2.648500 | 0.5885 | 1 | 0.7551 | 0.7477 | 1 | 3.04450 | 0.74620 | 2 | 10.472900 | 0.8112 | 7 | 7668 | 2912 | 2816 | 1803 | 7664 | 23.525574 | 0.6750 | 0 | 370 | 4727 | 7.827375 | 0.7646 | 1 | 441 | 819 | 53.84615 | 0.9501 | 1 | 1122 | 1997 | 56.18428 | 0.7544 | 1 | 1563 | 2816 | 55.50426 | 0.9274 | 1 | 1879 | 5775 | 32.536797 | 0.9576 | 1 | 1695 | 7668 | 22.1048513 | 0.9829 | 1 | 1041 | 13.575900 | 0.316600 | 0 | 1193 | 15.55816 | 0.1784 | 0 | 711 | 6474.819 | 10.981001 | 0.31250 | 0 | 197 | 1914.1749 | 10.29164 | 0.3928 | 0 | 2045 | 7161 | 28.5574640 | 0.9756 | 1 | 5637 | 7667.630 | 73.51685 | 0.7875 | 1 | 2912 | 806 | 27.6785714 | 0.7973 | 1 | 0 | 0.000000 | 0.3216 | 0 | 150 | 2816 | 5.326704 | 0.7742 | 1 | 833 | 2816.0423 | 29.580522 | 0.7679 | 1 | 10 | 7668 | 0.1304121 | 0.3642 | 0 | 4.3075 | 0.9336 | 4 | 2.175900 | 0.2971 | 1 | 0.7875 | 0.7803 | 1 | 3.0252 | 0.73590 | 3 | 10.296100 | 0.8061 | 9 | 0 | 0 | 0 | 0 | 0 | Yes | Census Tract 181, Bergen County, New Jersey | 20495 | 390100 | 29008 | 354100 | 23774.20 | 452516 | 5233.80 | 0.2201462 | -98416 | -0.2174862 | NA | NA | Bergen County, New Jersey | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | CS408 |
34005702101 | 34005 | 702101 | NJ | New Jersey | Burlington County | 1 | Northeast Region | 2 | Middle Atlantic Division | 1637 | 702 | 483 | 445 | 1637 | 27.18387 | 0.7142 | 0 | 63 | 456 | 13.815789 | 0.8857 | 1 | 0 | 0 | NaN | NA | NA | 222 | 483 | 45.96273 | 0.5037 | 0 | 222 | 483 | 45.96273 | 0.7085 | 0 | 31 | 903 | 3.433001 | 0.08742 | 0 | 14 | 1965 | 0.7124682 | 0.008765 | 0 | 0 | 0.000000 | 0.002836 | 0 | 696 | 42.51680 | 0.9928 | 1 | 62 | 898 | 6.904232 | 0.08018 | 0 | 103 | 452 | 22.78761 | 0.7331 | 0 | 0 | 1379 | 0.000000 | 0.07335 | 0 | 248 | 1637 | 15.14966 | 0.4224 | 0 | 702 | 25 | 3.561254 | 0.4247 | 0 | 0 | 0.000000 | 0.3251 | 0 | 0 | 483 | 0.000000 | 0.1459 | 0 | 0 | 483 | 0.00000 | 0.01044 | 0 | 0 | 1637 | 0.000000 | 0.3512 | 0 | 2.404585 | 0.4890 | 1 | 1.882266 | 0.1557 | 1 | 0.4224 | 0.4183 | 0 | 1.25734 | 0.03853 | 0 | 5.966591 | 0.2021 | 2 | 3997 | 1271 | 1235 | 304 | 3996 | 7.607608 | 0.1919 | 0 | 46 | 901 | 5.105438 | 0.5252 | 0 | 0 | 0 | NaN | NA | NA | 731 | 1235 | 59.19028 | 0.8107 | 1 | 731 | 1235 | 59.19028 | 0.9566 | 1 | 49 | 1973 | 2.483528 | 0.0993 | 0 | 27 | 3057 | 0.8832188 | 0.0568 | 0 | 0 | 0.000000 | 0.001592 | 0 | 1651 | 41.30598 | 0.9924 | 1 | 58 | 1412.011 | 4.107616 | 0.01556 | 0 | 91 | 1092.7925 | 8.32729 | 0.3046 | 0 | 32 | 3347 | 0.9560801 | 0.3989 | 0 | 1411 | 3996.883 | 35.30251 | 0.5750 | 0 | 1271 | 10 | 0.7867821 | 0.2414 | 0 | 0 | 0.000000 | 0.3216 | 0 | 27 | 1235 | 2.186235 | 0.5699 | 0 | 11 | 1234.9741 | 0.890707 | 0.0533 | 0 | 0 | 3997 | 0.0000000 | 0.1517 | 0 | 1.8298 | 0.3066 | 1 | 1.713052 | 0.1034 | 1 | 0.5750 | 0.5698 | 0 | 1.3379 | 0.06021 | 0 | 5.455752 | 0.1329 | 2 | 0 | 0 | 0 | 0 | 0 | Yes | Census Tract 7021.01, Burlington County, New Jersey | 33625 | NA | 44370 | NA | 39005.00 | NA | 5365.00 | 0.1375465 | NA | NA | NA | NA | Burlington County, New Jersey | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | CS428 |
34005702204 | 34005 | 702204 | NJ | New Jersey | Burlington County | 1 | Northeast Region | 2 | Middle Atlantic Division | 3000 | 737 | 678 | 1208 | 2479 | 48.72933 | 0.9201 | 1 | 195 | 973 | 20.041110 | 0.9644 | 1 | 141 | 334 | 42.21557 | 0.7153 | 0 | 272 | 344 | 79.06977 | 0.9729 | 1 | 413 | 678 | 60.91445 | 0.9473 | 1 | 479 | 1828 | 26.203501 | 0.85830 | 1 | 243 | 2062 | 11.7846751 | 0.635000 | 0 | 375 | 12.500000 | 0.423100 | 0 | 875 | 29.16667 | 0.8714 | 1 | 247 | 1502 | 16.444740 | 0.69460 | 0 | 245 | 562 | 43.59431 | 0.9252 | 1 | 188 | 2656 | 7.078313 | 0.78350 | 1 | 1581 | 3000 | 52.70000 | 0.7268 | 0 | 737 | 0 | 0.000000 | 0.1009 | 0 | 0 | 0.000000 | 0.3251 | 0 | 118 | 678 | 17.404130 | 0.9662 | 1 | 79 | 678 | 11.65192 | 0.55970 | 0 | 521 | 3000 | 17.366667 | 0.9582 | 1 | 4.325100 | 0.9272 | 4 | 3.697800 | 0.9448 | 3 | 0.7268 | 0.7197 | 0 | 2.91010 | 0.69490 | 2 | 11.659800 | 0.9155 | 9 | 2496 | 766 | 711 | 436 | 2236 | 19.499105 | 0.5828 | 0 | 168 | 1119 | 15.013405 | 0.9569 | 1 | 109 | 476 | 22.89916 | 0.4367 | 0 | 172 | 234 | 73.50427 | 0.9602 | 1 | 281 | 710 | 39.57746 | 0.6774 | 0 | 205 | 1672 | 12.260766 | 0.6634 | 0 | 106 | 2181 | 4.8601559 | 0.5382 | 0 | 483 | 19.350962 | 0.662200 | 0 | 561 | 22.47596 | 0.6407 | 0 | 438 | 1641.664 | 26.680248 | 0.94370 | 1 | 95 | 606.3759 | 15.66685 | 0.5916 | 0 | 20 | 2331 | 0.8580009 | 0.3785 | 0 | 1043 | 2495.717 | 41.79160 | 0.6233 | 0 | 766 | 4 | 0.5221932 | 0.2121 | 0 | 0 | 0.000000 | 0.3216 | 0 | 51 | 711 | 7.172996 | 0.8340 | 1 | 39 | 710.5812 | 5.488465 | 0.3485 | 0 | 313 | 2496 | 12.5400641 | 0.9504 | 1 | 3.4187 | 0.7554 | 1 | 3.216700 | 0.8464 | 1 | 0.6233 | 0.6176 | 0 | 2.6666 | 0.57970 | 2 | 9.925300 | 0.7714 | 4 | 0 | 0 | 0 | 0 | 0 | Yes | Census Tract 7022.04, Burlington County, New Jersey | 17110 | 231600 | 24236 | 195800 | 19847.60 | 268656 | 4388.40 | 0.2211048 | -72856 | -0.2711869 | 114.52 | 126.87 | Burlington County, New Jersey | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | CS428 |
34007600200 | 34007 | 600200 | NJ | New Jersey | Camden County | 1 | Northeast Region | 2 | Middle Atlantic Division | 2152 | 988 | 790 | 823 | 2152 | 38.24349 | 0.8438 | 1 | 219 | 1183 | 18.512257 | 0.9528 | 1 | 115 | 414 | 27.77778 | 0.3413 | 0 | 299 | 376 | 79.52128 | 0.9744 | 1 | 414 | 790 | 52.40506 | 0.8417 | 1 | 485 | 1266 | 38.309637 | 0.95530 | 1 | 317 | 2208 | 14.3568841 | 0.740200 | 0 | 171 | 7.946097 | 0.147200 | 0 | 627 | 29.13569 | 0.8700 | 1 | 273 | 1434 | 19.037657 | 0.80620 | 1 | 176 | 471 | 37.36730 | 0.8842 | 1 | 326 | 1961 | 16.624171 | 0.90730 | 1 | 2074 | 2152 | 96.37546 | 0.9239 | 1 | 988 | 54 | 5.465587 | 0.4952 | 0 | 0 | 0.000000 | 0.3251 | 0 | 20 | 790 | 2.531646 | 0.6528 | 0 | 354 | 790 | 44.81013 | 0.84340 | 1 | 0 | 2152 | 0.000000 | 0.3512 | 0 | 4.333800 | 0.9289 | 4 | 3.614900 | 0.9333 | 4 | 0.9239 | 0.9149 | 1 | 2.66770 | 0.58390 | 1 | 11.540300 | 0.9067 | 10 | 2111 | 878 | 725 | 851 | 2111 | 40.312648 | 0.8788 | 1 | 52 | 913 | 5.695509 | 0.5929 | 0 | 69 | 375 | 18.40000 | 0.2795 | 0 | 273 | 350 | 78.00000 | 0.9779 | 1 | 342 | 725 | 47.17241 | 0.8205 | 1 | 407 | 1376 | 29.578488 | 0.9404 | 1 | 209 | 2111 | 9.9005211 | 0.8481 | 1 | 177 | 8.384652 | 0.089330 | 0 | 516 | 24.44339 | 0.7586 | 1 | 453 | 1595.000 | 28.401254 | 0.96070 | 1 | 200 | 448.0000 | 44.64286 | 0.9538 | 1 | 68 | 2083 | 3.2645223 | 0.6378 | 0 | 2111 | 2111.000 | 100.00000 | 0.9976 | 1 | 878 | 14 | 1.5945330 | 0.3022 | 0 | 10 | 1.138952 | 0.7512 | 1 | 0 | 725 | 0.000000 | 0.1194 | 0 | 239 | 725.0000 | 32.965517 | 0.7908 | 1 | 0 | 2111 | 0.0000000 | 0.1517 | 0 | 4.0807 | 0.8946 | 4 | 3.400230 | 0.8937 | 3 | 0.9976 | 0.9885 | 1 | 2.1153 | 0.31270 | 2 | 10.593830 | 0.8340 | 10 | 0 | 0 | 0 | 0 | 0 | Yes | Census Tract 6002, Camden County, New Jersey | 19841 | 61400 | 18057 | 64600 | 23015.56 | 71224 | -4958.56 | -0.2154438 | -6624 | -0.0930024 | NA | NA | Camden County, New Jersey | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | CS428 |
34007600400 | 34007 | 600400 | NJ | New Jersey | Camden County | 1 | Northeast Region | 2 | Middle Atlantic Division | 3245 | 1556 | 1038 | 2230 | 3118 | 71.52021 | 0.9895 | 1 | 355 | 1169 | 30.367836 | 0.9951 | 1 | 130 | 372 | 34.94624 | 0.5405 | 0 | 498 | 666 | 74.77477 | 0.9578 | 1 | 628 | 1038 | 60.50096 | 0.9442 | 1 | 649 | 1641 | 39.549056 | 0.96100 | 1 | 905 | 3153 | 28.7028227 | 0.968500 | 1 | 188 | 5.793528 | 0.066780 | 0 | 1123 | 34.60709 | 0.9638 | 1 | 447 | 2167 | 20.627596 | 0.85890 | 1 | 415 | 736 | 56.38587 | 0.9800 | 1 | 289 | 2933 | 9.853392 | 0.83120 | 1 | 3058 | 3245 | 94.23729 | 0.9033 | 1 | 1556 | 65 | 4.177378 | 0.4500 | 0 | 0 | 0.000000 | 0.3251 | 0 | 58 | 1038 | 5.587669 | 0.8052 | 1 | 509 | 1038 | 49.03661 | 0.86430 | 1 | 203 | 3245 | 6.255778 | 0.8951 | 1 | 4.858300 | 0.9853 | 5 | 3.700680 | 0.9459 | 4 | 0.9033 | 0.8945 | 1 | 3.33970 | 0.85670 | 3 | 12.801980 | 0.9715 | 13 | 3373 | 1557 | 1335 | 2125 | 3373 | 63.000296 | 0.9805 | 1 | 344 | 1020 | 33.725490 | 0.9987 | 1 | 100 | 409 | 24.44988 | 0.4886 | 0 | 678 | 926 | 73.21814 | 0.9591 | 1 | 778 | 1335 | 58.27715 | 0.9498 | 1 | 841 | 2163 | 38.881183 | 0.9823 | 1 | 332 | 3373 | 9.8428698 | 0.8461 | 1 | 629 | 18.648088 | 0.622700 | 0 | 1069 | 31.69286 | 0.9560 | 1 | 747 | 2304.000 | 32.421875 | 0.98120 | 1 | 440 | 788.0000 | 55.83756 | 0.9864 | 1 | 332 | 3128 | 10.6138107 | 0.8489 | 1 | 3282 | 3373.000 | 97.30210 | 0.9417 | 1 | 1557 | 100 | 6.4226076 | 0.5014 | 0 | 24 | 1.541426 | 0.7760 | 1 | 60 | 1335 | 4.494382 | 0.7365 | 0 | 793 | 1335.0000 | 59.400749 | 0.9136 | 1 | 100 | 3373 | 2.9647198 | 0.8250 | 1 | 4.7574 | 0.9834 | 5 | 4.395200 | 0.9861 | 4 | 0.9417 | 0.9332 | 1 | 3.7525 | 0.93580 | 3 | 13.846800 | 0.9859 | 13 | 0 | 0 | 0 | 0 | 0 | Yes | Census Tract 6004, Camden County, New Jersey | 9391 | 70000 | 12266 | 71500 | 10893.56 | 81200 | 1372.44 | 0.1259864 | -9700 | -0.1194581 | NA | NA | Camden County, New Jersey | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | CS428 |
34007600700 | 34007 | 600700 | NJ | New Jersey | Camden County | 1 | Northeast Region | 2 | Middle Atlantic Division | 1723 | 572 | 409 | 457 | 1342 | 34.05365 | 0.8048 | 1 | 211 | 657 | 32.115677 | 0.9965 | 1 | 125 | 237 | 52.74262 | 0.8787 | 1 | 71 | 172 | 41.27907 | 0.3897 | 0 | 196 | 409 | 47.92176 | 0.7525 | 1 | 495 | 1142 | 43.345009 | 0.97370 | 1 | 249 | 1008 | 24.7023810 | 0.942400 | 1 | 124 | 7.196750 | 0.115000 | 0 | 437 | 25.36274 | 0.6912 | 0 | 144 | 734 | 19.618529 | 0.82660 | 1 | 93 | 271 | 34.31734 | 0.8621 | 1 | 320 | 1565 | 20.447284 | 0.93700 | 1 | 1626 | 1723 | 94.37028 | 0.9044 | 1 | 572 | 28 | 4.895105 | 0.4761 | 0 | 0 | 0.000000 | 0.3251 | 0 | 30 | 409 | 7.334963 | 0.8483 | 1 | 98 | 409 | 23.96088 | 0.71310 | 0 | 381 | 1723 | 22.112594 | 0.9664 | 1 | 4.469900 | 0.9540 | 5 | 3.431900 | 0.8994 | 3 | 0.9044 | 0.8955 | 1 | 3.32900 | 0.85130 | 2 | 12.135200 | 0.9465 | 11 | 1618 | 613 | 517 | 988 | 1618 | 61.063041 | 0.9762 | 1 | 70 | 655 | 10.687023 | 0.8840 | 1 | 85 | 233 | 36.48069 | 0.7849 | 1 | 128 | 284 | 45.07042 | 0.4921 | 0 | 213 | 517 | 41.19923 | 0.7111 | 0 | 477 | 957 | 49.843260 | 0.9969 | 1 | 172 | 1618 | 10.6304079 | 0.8688 | 1 | 207 | 12.793572 | 0.271700 | 0 | 604 | 37.33004 | 0.9856 | 1 | 270 | 1013.206 | 26.648079 | 0.94310 | 1 | 149 | 374.2530 | 39.81264 | 0.9275 | 1 | 256 | 1374 | 18.6317322 | 0.9302 | 1 | 1515 | 1617.787 | 93.64644 | 0.9007 | 1 | 613 | 69 | 11.2561175 | 0.6156 | 0 | 0 | 0.000000 | 0.3216 | 0 | 54 | 517 | 10.444874 | 0.9008 | 1 | 83 | 516.9681 | 16.055148 | 0.6382 | 0 | 18 | 1618 | 1.1124845 | 0.7048 | 0 | 4.4370 | 0.9503 | 4 | 4.058100 | 0.9811 | 4 | 0.9007 | 0.8926 | 1 | 3.1810 | 0.79120 | 1 | 12.576800 | 0.9657 | 10 | 0 | 0 | 1 | 0 | 1 | Yes | Census Tract 6007, Camden County, New Jersey | 16866 | 92700 | 15982 | 75500 | 19564.56 | 107532 | -3582.56 | -0.1831148 | -32032 | -0.2978834 | NA | NA | Camden County, New Jersey | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | CS428 |
Code
svi_national_lihtc_df0 <- left_join(svi_national_lihtc, census_pull_df, join_by("GEOID_2010_trt" == "GEOID"))
svi_national_lihtc_df1 <- left_join(svi_national_lihtc_df0, hpi_df_10_20, join_by("GEOID_2010_trt" == "GEOID10")) %>%
unite("county_fips", FIPS_st, FIPS_county, sep = "")
svi_national_lihtc_df <- left_join(svi_national_lihtc_df1, msa_csa_crosswalk, join_by("county_fips" == "county_fips"))
svi_national_lihtc_df %>% head(10) %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | county_fips | FIPS_tract | state | state_name | county | region_number | region | division_number | division | E_TOTPOP_10 | E_HU_10 | E_HH_10 | E_POV150_10 | ET_POVSTATUS_10 | EP_POV150_10 | EPL_POV150_10 | F_POV150_10 | E_UNEMP_10 | ET_EMPSTATUS_10 | EP_UNEMP_10 | EPL_UNEMP_10 | F_UNEMP_10 | E_HBURD_OWN_10 | ET_HOUSINGCOST_OWN_10 | EP_HBURD_OWN_10 | EPL_HBURD_OWN_10 | F_HBURD_OWN_10 | E_HBURD_RENT_10 | ET_HOUSINGCOST_RENT_10 | EP_HBURD_RENT_10 | EPL_HBURD_RENT_10 | F_HBURD_RENT_10 | E_HBURD_10 | ET_HOUSINGCOST_10 | EP_HBURD_10 | EPL_HBURD_10 | F_HBURD_10 | E_NOHSDP_10 | ET_EDSTATUS_10 | EP_NOHSDP_10 | EPL_NOHSDP_10 | F_NOHSDP_10 | E_UNINSUR_12 | ET_INSURSTATUS_12 | EP_UNINSUR_12 | EPL_UNINSUR_12 | F_UNINSUR_12 | E_AGE65_10 | EP_AGE65_10 | EPL_AGE65_10 | F_AGE65_10 | E_AGE17_10 | EP_AGE17_10 | EPL_AGE17_10 | F_AGE17_10 | E_DISABL_12 | ET_DISABLSTATUS_12 | EP_DISABL_12 | EPL_DISABL_12 | F_DISABL_12 | E_SNGPNT_10 | ET_FAMILIES_10 | EP_SNGPNT_10 | EPL_SNGPNT_10 | F_SNGPNT_10 | E_LIMENG_10 | ET_POPAGE5UP_10 | EP_LIMENG_10 | EPL_LIMENG_10 | F_LIMENG_10 | E_MINRTY_10 | ET_POPETHRACE_10 | EP_MINRTY_10 | EPL_MINRTY_10 | F_MINRTY_10 | E_STRHU_10 | E_MUNIT_10 | EP_MUNIT_10 | EPL_MUNIT_10 | F_MUNIT_10 | E_MOBILE_10 | EP_MOBILE_10 | EPL_MOBILE_10 | F_MOBILE_10 | E_CROWD_10 | ET_OCCUPANTS_10 | EP_CROWD_10 | EPL_CROWD_10 | F_CROWD_10 | E_NOVEH_10 | ET_KNOWNVEH_10 | EP_NOVEH_10 | EPL_NOVEH_10 | F_NOVEH_10 | E_GROUPQ_10 | ET_HHTYPE_10 | EP_GROUPQ_10 | EPL_GROUPQ_10 | F_GROUPQ_10 | SPL_THEME1_10 | RPL_THEME1_10 | F_THEME1_10 | SPL_THEME2_10 | RPL_THEME2_10 | F_THEME2_10 | SPL_THEME3_10 | RPL_THEME3_10 | F_THEME3_10 | SPL_THEME4_10 | RPL_THEME4_10 | F_THEME4_10 | SPL_THEMES_10 | RPL_THEMES_10 | F_TOTAL_10 | E_TOTPOP_20 | E_HU_20 | E_HH_20 | E_POV150_20 | ET_POVSTATUS_20 | EP_POV150_20 | EPL_POV150_20 | F_POV150_20 | E_UNEMP_20 | ET_EMPSTATUS_20 | EP_UNEMP_20 | EPL_UNEMP_20 | F_UNEMP_20 | E_HBURD_OWN_20 | ET_HOUSINGCOST_OWN_20 | EP_HBURD_OWN_20 | EPL_HBURD_OWN_20 | F_HBURD_OWN_20 | E_HBURD_RENT_20 | ET_HOUSINGCOST_RENT_20 | EP_HBURD_RENT_20 | EPL_HBURD_RENT_20 | F_HBURD_RENT_20 | E_HBURD_20 | ET_HOUSINGCOST_20 | EP_HBURD_20 | EPL_HBURD_20 | F_HBURD_20 | E_NOHSDP_20 | ET_EDSTATUS_20 | EP_NOHSDP_20 | EPL_NOHSDP_20 | F_NOHSDP_20 | E_UNINSUR_20 | ET_INSURSTATUS_20 | EP_UNINSUR_20 | EPL_UNINSUR_20 | F_UNINSUR_20 | E_AGE65_20 | EP_AGE65_20 | EPL_AGE65_20 | F_AGE65_20 | E_AGE17_20 | EP_AGE17_20 | EPL_AGE17_20 | F_AGE17_20 | E_DISABL_20 | ET_DISABLSTATUS_20 | EP_DISABL_20 | EPL_DISABL_20 | F_DISABL_20 | E_SNGPNT_20 | ET_FAMILIES_20 | EP_SNGPNT_20 | EPL_SNGPNT_20 | F_SNGPNT_20 | E_LIMENG_20 | ET_POPAGE5UP_20 | EP_LIMENG_20 | EPL_LIMENG_20 | F_LIMENG_20 | E_MINRTY_20 | ET_POPETHRACE_20 | EP_MINRTY_20 | EPL_MINRTY_20 | F_MINRTY_20 | E_STRHU_20 | E_MUNIT_20 | EP_MUNIT_20 | EPL_MUNIT_20 | F_MUNIT_20 | E_MOBILE_20 | EP_MOBILE_20 | EPL_MOBILE_20 | F_MOBILE_20 | E_CROWD_20 | ET_OCCUPANTS_20 | EP_CROWD_20 | EPL_CROWD_20 | F_CROWD_20 | E_NOVEH_20 | ET_KNOWNVEH_20 | EP_NOVEH_20 | EPL_NOVEH_20 | F_NOVEH_20 | E_GROUPQ_20 | ET_HHTYPE_20 | EP_GROUPQ_20 | EPL_GROUPQ_20 | F_GROUPQ_20 | SPL_THEME1_20 | RPL_THEME1_20 | F_THEME1_20 | SPL_THEME2_20 | RPL_THEME2_20 | F_THEME2_20 | SPL_THEME3_20 | RPL_THEME3_20 | F_THEME3_20 | SPL_THEME4_20 | RPL_THEME4_20 | F_THEME4_20 | SPL_THEMES_20 | RPL_THEMES_20 | F_TOTAL_20 | pre10_lihtc_project_cnt | pre10_lihtc_project_dollars | post10_lihtc_project_cnt | post10_lihtc_project_dollars | lihtc_flag | lihtc_eligibility | NAME | Median_Income_10 | Median_Home_Value_10 | Median_Income_19 | Median_Home_Value_19 | Median_Income_10adj | Median_Home_Value_10adj | Median_Income_Change | Median_Income_Change_pct | Median_Home_Value_Change | Median_Home_Value_Change_pct | housing_price_index10 | housing_price_index20 | county_title | cbsa | cbsa_code |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
01005950700 | 01005 | 950700 | AL | Alabama | Barbour County | 3 | South Region | 6 | East South Central Division | 1753 | 687 | 563 | 615 | 1628 | 37.77641 | 0.8088 | 1 | 17 | 667 | 2.548726 | 0.06941 | 0 | 41 | 376 | 10.90426 | 0.01945 | 0 | 62 | 187 | 33.15508 | 0.24640 | 0 | 103 | 563 | 18.29485 | 0.04875 | 0 | 264 | 1208 | 21.85430 | 0.7570 | 1 | 201 | 1527 | 13.163065 | 0.4991 | 0 | 368 | 20.992584 | 0.89510 | 1 | 462 | 26.354820 | 0.66130 | 0 | 211 | 1085 | 19.44700 | 0.7505 | 1 | 107 | 399 | 26.81704 | 0.8048 | 1 | 0 | 1628 | 0.0000000 | 0.09298 | 0 | 861 | 1753 | 49.11580 | 0.7101 | 0 | 687 | 17 | 2.4745269 | 0.4324 | 0 | 38 | 5.5312955 | 0.6970 | 0 | 3 | 563 | 0.5328597 | 0.3037 | 0 | 19 | 563 | 3.374778 | 0.3529 | 0 | 233 | 1753 | 13.29150 | 0.9517 | 1 | 2.18306 | 0.4137 | 2 | 3.20468 | 0.8377 | 3 | 0.7101 | 0.7035 | 0 | 2.7377 | 0.6100 | 1 | 8.83554 | 0.6264 | 6 | 1527 | 691 | 595 | 565 | 1365 | 41.39194 | 0.8765 | 1 | 37 | 572 | 6.468532 | 0.6776 | 0 | 70 | 376 | 18.617021 | 0.38590 | 0 | 92 | 219 | 42.009132 | 0.47360 | 0 | 162 | 595 | 27.22689 | 0.44540 | 0 | 280 | 1114 | 25.13465 | 0.8942 | 1 | 105 | 1378 | 7.619739 | 0.5505 | 0 | 383 | 25.081860 | 0.88450 | 1 | 337 | 22.069417 | 0.51380 | 0 | 237 | 1041.0000 | 22.76657 | 0.8360 | 1 | 144 | 413.0000 | 34.86683 | 0.9114 | 1 | 11 | 1466 | 0.7503411 | 0.40700 | 0 | 711 | 1527.0000 | 46.56189 | 0.6441 | 0 | 691 | 13 | 1.8813314 | 0.3740 | 0 | 37 | 5.3545586 | 0.7152 | 0 | 0 | 595 | 0.0000000 | 0.09796 | 0 | 115 | 595.0000 | 19.327731 | 0.8859 | 1 | 149 | 1527 | 9.7576948 | 0.9470 | 1 | 3.44420 | 0.7707 | 2 | 3.55270 | 0.9403 | 3 | 0.6441 | 0.6387 | 0 | 3.02006 | 0.7337 | 2 | 10.66106 | 0.8537 | 7 | 0 | 0 | 0 | 0 | 0 | Yes | Census Tract 9507, Barbour County, Alabama | 15257 | 133700 | 17244 | 137500 | 17698.12 | 155092 | -454.12 | -0.0256592 | -17592 | -0.1134294 | 131.05 | 135.61 | Barbour County, Alabama | Eufaula, AL-GA MicroSA | C2164 |
01011952100 | 01011 | 952100 | AL | Alabama | Bullock County | 3 | South Region | 6 | East South Central Division | 1652 | 796 | 554 | 564 | 1652 | 34.14044 | 0.7613 | 1 | 46 | 816 | 5.637255 | 0.33630 | 0 | 96 | 458 | 20.96070 | 0.19930 | 0 | 62 | 96 | 64.58333 | 0.89170 | 1 | 158 | 554 | 28.51986 | 0.29220 | 0 | 271 | 1076 | 25.18587 | 0.8163 | 1 | 155 | 1663 | 9.320505 | 0.3183 | 0 | 199 | 12.046005 | 0.47180 | 0 | 420 | 25.423729 | 0.60240 | 0 | 327 | 1279 | 25.56685 | 0.9151 | 1 | 137 | 375 | 36.53333 | 0.9108 | 1 | 0 | 1590 | 0.0000000 | 0.09298 | 0 | 1428 | 1652 | 86.44068 | 0.8939 | 1 | 796 | 0 | 0.0000000 | 0.1224 | 0 | 384 | 48.2412060 | 0.9897 | 1 | 19 | 554 | 3.4296029 | 0.7145 | 0 | 45 | 554 | 8.122744 | 0.6556 | 0 | 0 | 1652 | 0.00000 | 0.3640 | 0 | 2.52440 | 0.5138 | 2 | 2.99308 | 0.7515 | 2 | 0.8939 | 0.8856 | 1 | 2.8462 | 0.6637 | 1 | 9.25758 | 0.6790 | 6 | 1382 | 748 | 549 | 742 | 1382 | 53.69030 | 0.9560 | 1 | 40 | 511 | 7.827789 | 0.7730 | 1 | 110 | 402 | 27.363184 | 0.71780 | 0 | 45 | 147 | 30.612245 | 0.23070 | 0 | 155 | 549 | 28.23315 | 0.47730 | 0 | 181 | 905 | 20.00000 | 0.8253 | 1 | 232 | 1382 | 16.787265 | 0.8813 | 1 | 164 | 11.866860 | 0.27170 | 0 | 250 | 18.089725 | 0.26290 | 0 | 258 | 1132.0000 | 22.79152 | 0.8368 | 1 | 99 | 279.0000 | 35.48387 | 0.9162 | 1 | 33 | 1275 | 2.5882353 | 0.64520 | 0 | 1347 | 1382.0000 | 97.46744 | 0.9681 | 1 | 748 | 0 | 0.0000000 | 0.1079 | 0 | 375 | 50.1336898 | 0.9922 | 1 | 0 | 549 | 0.0000000 | 0.09796 | 0 | 37 | 549.0000 | 6.739526 | 0.6039 | 0 | 0 | 1382 | 0.0000000 | 0.1831 | 0 | 3.91290 | 0.8785 | 4 | 2.93280 | 0.7342 | 2 | 0.9681 | 0.9599 | 1 | 1.98506 | 0.2471 | 1 | 9.79886 | 0.7570 | 8 | 0 | 0 | 0 | 0 | 0 | Yes | Census Tract 9521, Bullock County, Alabama | 19754 | 58200 | 18598 | 66900 | 22914.64 | 67512 | -4316.64 | -0.1883791 | -612 | -0.0090651 | NA | NA | NA | NA | NA |
01015000300 | 01015 | 000300 | AL | Alabama | Calhoun County | 3 | South Region | 6 | East South Central Division | 3074 | 1635 | 1330 | 1904 | 3067 | 62.08021 | 0.9710 | 1 | 293 | 1362 | 21.512482 | 0.96630 | 1 | 180 | 513 | 35.08772 | 0.65450 | 0 | 383 | 817 | 46.87882 | 0.55040 | 0 | 563 | 1330 | 42.33083 | 0.70280 | 0 | 720 | 2127 | 33.85049 | 0.9148 | 1 | 628 | 2835 | 22.151675 | 0.8076 | 1 | 380 | 12.361744 | 0.49340 | 0 | 713 | 23.194535 | 0.45030 | 0 | 647 | 2111 | 30.64898 | 0.9708 | 1 | 298 | 773 | 38.55110 | 0.9247 | 1 | 0 | 2878 | 0.0000000 | 0.09298 | 0 | 2623 | 3074 | 85.32856 | 0.8883 | 1 | 1635 | 148 | 9.0519878 | 0.6465 | 0 | 6 | 0.3669725 | 0.4502 | 0 | 68 | 1330 | 5.1127820 | 0.8082 | 1 | 303 | 1330 | 22.781955 | 0.9029 | 1 | 0 | 3074 | 0.00000 | 0.3640 | 0 | 4.36250 | 0.9430 | 4 | 2.93218 | 0.7233 | 2 | 0.8883 | 0.8800 | 1 | 3.1718 | 0.8070 | 2 | 11.35478 | 0.9009 | 9 | 2390 | 1702 | 1282 | 1287 | 2390 | 53.84937 | 0.9566 | 1 | 102 | 1066 | 9.568480 | 0.8541 | 1 | 158 | 609 | 25.944171 | 0.67520 | 0 | 286 | 673 | 42.496285 | 0.48560 | 0 | 444 | 1282 | 34.63339 | 0.66340 | 0 | 467 | 1685 | 27.71513 | 0.9180 | 1 | 369 | 2379 | 15.510719 | 0.8562 | 1 | 342 | 14.309623 | 0.40850 | 0 | 548 | 22.928870 | 0.57100 | 0 | 647 | 1831.0000 | 35.33588 | 0.9862 | 1 | 202 | 576.0000 | 35.06944 | 0.9130 | 1 | 16 | 2134 | 0.7497657 | 0.40690 | 0 | 1896 | 2390.0000 | 79.33054 | 0.8451 | 1 | 1702 | 96 | 5.6404230 | 0.5329 | 0 | 0 | 0.0000000 | 0.2186 | 0 | 0 | 1282 | 0.0000000 | 0.09796 | 0 | 186 | 1282.0000 | 14.508580 | 0.8308 | 1 | 43 | 2390 | 1.7991632 | 0.7727 | 1 | 4.24830 | 0.9395 | 4 | 3.28560 | 0.8773 | 2 | 0.8451 | 0.8379 | 1 | 2.45296 | 0.4602 | 2 | 10.83196 | 0.8718 | 9 | 0 | 0 | 0 | 0 | 0 | Yes | Census Tract 3, Calhoun County, Alabama | 12211 | 41700 | 18299 | 51300 | 14164.76 | 48372 | 4134.24 | 0.2918680 | 2928 | 0.0605309 | NA | NA | Calhoun County, Alabama | Anniston-Oxford, AL MSA | C1150 |
01015000500 | 01015 | 000500 | AL | Alabama | Calhoun County | 3 | South Region | 6 | East South Central Division | 1731 | 1175 | 743 | 1042 | 1619 | 64.36072 | 0.9767 | 1 | 124 | 472 | 26.271186 | 0.98460 | 1 | 136 | 461 | 29.50108 | 0.48970 | 0 | 163 | 282 | 57.80142 | 0.79190 | 1 | 299 | 743 | 40.24226 | 0.64910 | 0 | 340 | 1270 | 26.77165 | 0.8389 | 1 | 460 | 1794 | 25.641026 | 0.8722 | 1 | 271 | 15.655690 | 0.70190 | 0 | 368 | 21.259388 | 0.32190 | 0 | 507 | 1449 | 34.98965 | 0.9885 | 1 | 150 | 386 | 38.86010 | 0.9269 | 1 | 0 | 1677 | 0.0000000 | 0.09298 | 0 | 1559 | 1731 | 90.06355 | 0.9123 | 1 | 1175 | 50 | 4.2553191 | 0.5128 | 0 | 4 | 0.3404255 | 0.4480 | 0 | 0 | 743 | 0.0000000 | 0.1238 | 0 | 122 | 743 | 16.419919 | 0.8473 | 1 | 0 | 1731 | 0.00000 | 0.3640 | 0 | 4.32150 | 0.9362 | 4 | 3.03218 | 0.7679 | 2 | 0.9123 | 0.9038 | 1 | 2.2959 | 0.3818 | 1 | 10.56188 | 0.8244 | 8 | 940 | 907 | 488 | 586 | 940 | 62.34043 | 0.9815 | 1 | 59 | 297 | 19.865320 | 0.9833 | 1 | 100 | 330 | 30.303030 | 0.79220 | 1 | 58 | 158 | 36.708861 | 0.34970 | 0 | 158 | 488 | 32.37705 | 0.60200 | 0 | 199 | 795 | 25.03145 | 0.8930 | 1 | 118 | 940 | 12.553192 | 0.7770 | 1 | 246 | 26.170213 | 0.90530 | 1 | 118 | 12.553192 | 0.08233 | 0 | 383 | 822.5089 | 46.56484 | 0.9984 | 1 | 30 | 197.8892 | 15.16000 | 0.5363 | 0 | 0 | 889 | 0.0000000 | 0.09479 | 0 | 898 | 940.3866 | 95.49264 | 0.9489 | 1 | 907 | 0 | 0.0000000 | 0.1079 | 0 | 2 | 0.2205072 | 0.4456 | 0 | 2 | 488 | 0.4098361 | 0.23670 | 0 | 146 | 487.6463 | 29.939736 | 0.9404 | 1 | 0 | 940 | 0.0000000 | 0.1831 | 0 | 4.23680 | 0.9379 | 4 | 2.61712 | 0.5593 | 2 | 0.9489 | 0.9409 | 1 | 1.91370 | 0.2196 | 1 | 9.71652 | 0.7468 | 8 | 0 | 0 | 0 | 0 | 0 | Yes | Census Tract 5, Calhoun County, Alabama | 11742 | 38800 | 13571 | 38800 | 13620.72 | 45008 | -49.72 | -0.0036503 | -6208 | -0.1379310 | NA | NA | Calhoun County, Alabama | Anniston-Oxford, AL MSA | C1150 |
01015000600 | 01015 | 000600 | AL | Alabama | Calhoun County | 3 | South Region | 6 | East South Central Division | 2571 | 992 | 796 | 1394 | 2133 | 65.35396 | 0.9789 | 1 | 263 | 905 | 29.060773 | 0.98990 | 1 | 121 | 306 | 39.54248 | 0.75940 | 1 | 209 | 490 | 42.65306 | 0.44810 | 0 | 330 | 796 | 41.45729 | 0.68030 | 0 | 641 | 1556 | 41.19537 | 0.9554 | 1 | 416 | 1760 | 23.636364 | 0.8383 | 1 | 220 | 8.556982 | 0.24910 | 0 | 584 | 22.714897 | 0.41610 | 0 | 539 | 1353 | 39.83740 | 0.9955 | 1 | 243 | 466 | 52.14592 | 0.9783 | 1 | 30 | 2366 | 1.2679628 | 0.48990 | 0 | 1944 | 2571 | 75.61260 | 0.8440 | 1 | 992 | 164 | 16.5322581 | 0.7673 | 1 | 8 | 0.8064516 | 0.5110 | 0 | 46 | 796 | 5.7788945 | 0.8329 | 1 | 184 | 796 | 23.115578 | 0.9049 | 1 | 614 | 2571 | 23.88176 | 0.9734 | 1 | 4.44280 | 0.9548 | 4 | 3.12890 | 0.8088 | 2 | 0.8440 | 0.8362 | 1 | 3.9895 | 0.9792 | 4 | 12.40520 | 0.9696 | 11 | 1950 | 964 | 719 | 837 | 1621 | 51.63479 | 0.9467 | 1 | 157 | 652 | 24.079755 | 0.9922 | 1 | 22 | 364 | 6.043956 | 0.01547 | 0 | 129 | 355 | 36.338028 | 0.34200 | 0 | 151 | 719 | 21.00139 | 0.23030 | 0 | 363 | 1387 | 26.17159 | 0.9048 | 1 | 351 | 1613 | 21.760694 | 0.9435 | 1 | 249 | 12.769231 | 0.32090 | 0 | 356 | 18.256410 | 0.27140 | 0 | 332 | 1259.7041 | 26.35540 | 0.9135 | 1 | 136 | 435.6156 | 31.22018 | 0.8775 | 1 | 0 | 1891 | 0.0000000 | 0.09479 | 0 | 1463 | 1949.9821 | 75.02633 | 0.8219 | 1 | 964 | 14 | 1.4522822 | 0.3459 | 0 | 8 | 0.8298755 | 0.5269 | 0 | 19 | 719 | 2.6425591 | 0.61120 | 0 | 197 | 719.0542 | 27.397100 | 0.9316 | 1 | 329 | 1950 | 16.8717949 | 0.9655 | 1 | 4.01750 | 0.9001 | 4 | 2.47809 | 0.4764 | 2 | 0.8219 | 0.8149 | 1 | 3.38110 | 0.8712 | 2 | 10.69859 | 0.8583 | 9 | 0 | 0 | 0 | 0 | 0 | Yes | Census Tract 6, Calhoun County, Alabama | 10958 | 48000 | 14036 | 43300 | 12711.28 | 55680 | 1324.72 | 0.1042161 | -12380 | -0.2223420 | NA | NA | Calhoun County, Alabama | Anniston-Oxford, AL MSA | C1150 |
01015002101 | 01015 | 002101 | AL | Alabama | Calhoun County | 3 | South Region | 6 | East South Central Division | 3872 | 1454 | 1207 | 1729 | 2356 | 73.38710 | 0.9916 | 1 | 489 | 2020 | 24.207921 | 0.97860 | 1 | 20 | 168 | 11.90476 | 0.02541 | 0 | 718 | 1039 | 69.10491 | 0.93320 | 1 | 738 | 1207 | 61.14333 | 0.96900 | 1 | 113 | 725 | 15.58621 | 0.6035 | 0 | 664 | 3943 | 16.839970 | 0.6495 | 0 | 167 | 4.313016 | 0.05978 | 0 | 238 | 6.146694 | 0.02255 | 0 | 264 | 2359 | 11.19118 | 0.3027 | 0 | 94 | 263 | 35.74144 | 0.9050 | 1 | 46 | 3769 | 1.2204829 | 0.48250 | 0 | 1601 | 3872 | 41.34814 | 0.6572 | 0 | 1454 | 761 | 52.3383769 | 0.9504 | 1 | 65 | 4.4704264 | 0.6738 | 0 | 5 | 1207 | 0.4142502 | 0.2791 | 0 | 113 | 1207 | 9.362055 | 0.7004 | 0 | 1516 | 3872 | 39.15289 | 0.9860 | 1 | 4.19220 | 0.9133 | 3 | 1.77253 | 0.1304 | 1 | 0.6572 | 0.6511 | 0 | 3.5897 | 0.9337 | 2 | 10.21163 | 0.7885 | 6 | 3238 | 1459 | 1014 | 1082 | 1836 | 58.93246 | 0.9735 | 1 | 251 | 1403 | 17.890235 | 0.9767 | 1 | 31 | 155 | 20.000000 | 0.44920 | 0 | 515 | 859 | 59.953434 | 0.85540 | 1 | 546 | 1014 | 53.84615 | 0.95350 | 1 | 134 | 916 | 14.62882 | 0.7033 | 0 | 251 | 3238 | 7.751699 | 0.5588 | 0 | 167 | 5.157505 | 0.03597 | 0 | 169 | 5.219271 | 0.02111 | 0 | 323 | 1667.0000 | 19.37612 | 0.7205 | 0 | 94 | 277.0000 | 33.93502 | 0.9040 | 1 | 0 | 3164 | 0.0000000 | 0.09479 | 0 | 1045 | 3238.0000 | 32.27301 | 0.5125 | 0 | 1459 | 607 | 41.6038382 | 0.9185 | 1 | 65 | 4.4551062 | 0.6949 | 0 | 24 | 1014 | 2.3668639 | 0.57900 | 0 | 85 | 1014.0000 | 8.382643 | 0.6775 | 0 | 1402 | 3238 | 43.2983323 | 0.9876 | 1 | 4.16580 | 0.9263 | 3 | 1.77637 | 0.1225 | 1 | 0.5125 | 0.5082 | 0 | 3.85750 | 0.9661 | 2 | 10.31217 | 0.8160 | 6 | 0 | 0 | 0 | 0 | 0 | Yes | Census Tract 21.01, Calhoun County, Alabama | 4968 | 92000 | 9312 | 153500 | 5762.88 | 106720 | 3549.12 | 0.6158587 | 46780 | 0.4383433 | NA | NA | Calhoun County, Alabama | Anniston-Oxford, AL MSA | C1150 |
01015002300 | 01015 | 002300 | AL | Alabama | Calhoun County | 3 | South Region | 6 | East South Central Division | 3882 | 1861 | 1608 | 1366 | 3882 | 35.18805 | 0.7753 | 1 | 186 | 1539 | 12.085770 | 0.80740 | 1 | 284 | 1109 | 25.60866 | 0.35530 | 0 | 202 | 499 | 40.48096 | 0.39670 | 0 | 486 | 1608 | 30.22388 | 0.34700 | 0 | 727 | 2610 | 27.85441 | 0.8534 | 1 | 547 | 3706 | 14.759849 | 0.5669 | 0 | 716 | 18.444101 | 0.82530 | 1 | 904 | 23.286966 | 0.45720 | 0 | 719 | 2919 | 24.63172 | 0.8986 | 1 | 207 | 1191 | 17.38035 | 0.5923 | 0 | 0 | 3720 | 0.0000000 | 0.09298 | 0 | 490 | 3882 | 12.62236 | 0.3118 | 0 | 1861 | 38 | 2.0419130 | 0.4070 | 0 | 199 | 10.6931757 | 0.7836 | 1 | 52 | 1608 | 3.2338308 | 0.6986 | 0 | 166 | 1608 | 10.323383 | 0.7304 | 0 | 0 | 3882 | 0.00000 | 0.3640 | 0 | 3.35000 | 0.7384 | 3 | 2.86638 | 0.6919 | 2 | 0.3118 | 0.3089 | 0 | 2.9836 | 0.7289 | 1 | 9.51178 | 0.7100 | 6 | 3265 | 1774 | 1329 | 1103 | 3265 | 33.78254 | 0.7880 | 1 | 122 | 1422 | 8.579465 | 0.8131 | 1 | 101 | 844 | 11.966825 | 0.10960 | 0 | 126 | 485 | 25.979381 | 0.15930 | 0 | 227 | 1329 | 17.08051 | 0.11070 | 0 | 267 | 2122 | 12.58247 | 0.6388 | 0 | 328 | 3265 | 10.045942 | 0.6808 | 0 | 440 | 13.476263 | 0.36070 | 0 | 843 | 25.819296 | 0.74470 | 0 | 530 | 2422.0000 | 21.88274 | 0.8097 | 1 | 254 | 861.0000 | 29.50058 | 0.8574 | 1 | 0 | 3026 | 0.0000000 | 0.09479 | 0 | 811 | 3265.0000 | 24.83920 | 0.4221 | 0 | 1774 | 7 | 0.3945885 | 0.2444 | 0 | 338 | 19.0529876 | 0.8924 | 1 | 19 | 1329 | 1.4296464 | 0.44520 | 0 | 120 | 1329.0000 | 9.029345 | 0.7016 | 0 | 0 | 3265 | 0.0000000 | 0.1831 | 0 | 3.03140 | 0.6608 | 2 | 2.86729 | 0.7016 | 2 | 0.4221 | 0.4185 | 0 | 2.46670 | 0.4669 | 1 | 8.78749 | 0.6230 | 5 | 0 | 0 | 0 | 0 | 0 | Yes | Census Tract 23, Calhoun County, Alabama | 15086 | 77500 | 21540 | 78500 | 17499.76 | 89900 | 4040.24 | 0.2308740 | -11400 | -0.1268076 | 120.54 | 131.82 | Calhoun County, Alabama | Anniston-Oxford, AL MSA | C1150 |
01023956700 | 01023 | 956700 | AL | Alabama | Choctaw County | 3 | South Region | 6 | East South Central Division | 3011 | 1772 | 1179 | 1715 | 3011 | 56.95782 | 0.9531 | 1 | 266 | 890 | 29.887640 | 0.99100 | 1 | 267 | 1035 | 25.79710 | 0.36240 | 0 | 79 | 144 | 54.86111 | 0.73440 | 0 | 346 | 1179 | 29.34690 | 0.31850 | 0 | 738 | 2053 | 35.94739 | 0.9287 | 1 | 543 | 2904 | 18.698347 | 0.7133 | 0 | 569 | 18.897376 | 0.84040 | 1 | 648 | 21.521089 | 0.33840 | 0 | 813 | 2273 | 35.76771 | 0.9901 | 1 | 252 | 771 | 32.68482 | 0.8778 | 1 | 0 | 2880 | 0.0000000 | 0.09298 | 0 | 2455 | 3011 | 81.53437 | 0.8712 | 1 | 1772 | 38 | 2.1444695 | 0.4136 | 0 | 485 | 27.3702032 | 0.9349 | 1 | 72 | 1179 | 6.1068702 | 0.8435 | 1 | 109 | 1179 | 9.245123 | 0.6964 | 0 | 0 | 3011 | 0.00000 | 0.3640 | 0 | 3.90460 | 0.8597 | 3 | 3.13968 | 0.8131 | 3 | 0.8712 | 0.8631 | 1 | 3.2524 | 0.8387 | 2 | 11.16788 | 0.8840 | 9 | 3335 | 1912 | 1362 | 1135 | 3313 | 34.25898 | 0.7948 | 1 | 188 | 1147 | 16.390584 | 0.9686 | 1 | 212 | 1058 | 20.037807 | 0.45090 | 0 | 27 | 304 | 8.881579 | 0.02679 | 0 | 239 | 1362 | 17.54772 | 0.12350 | 0 | 466 | 2537 | 18.36815 | 0.7948 | 1 | 495 | 3335 | 14.842579 | 0.8413 | 1 | 791 | 23.718141 | 0.85250 | 1 | 613 | 18.380810 | 0.27840 | 0 | 884 | 2714.0000 | 32.57185 | 0.9752 | 1 | 230 | 918.0000 | 25.05447 | 0.7925 | 1 | 25 | 3103 | 0.8056719 | 0.41920 | 0 | 2637 | 3335.0000 | 79.07046 | 0.8436 | 1 | 1912 | 0 | 0.0000000 | 0.1079 | 0 | 758 | 39.6443515 | 0.9799 | 1 | 16 | 1362 | 1.1747430 | 0.40060 | 0 | 75 | 1362.0000 | 5.506608 | 0.5316 | 0 | 8 | 3335 | 0.2398801 | 0.4965 | 0 | 3.52300 | 0.7901 | 4 | 3.31780 | 0.8870 | 3 | 0.8436 | 0.8365 | 1 | 2.51650 | 0.4924 | 1 | 10.20090 | 0.8033 | 9 | 0 | 0 | 0 | 0 | 0 | Yes | Census Tract 9567, Choctaw County, Alabama | 12737 | 60900 | 16852 | 63400 | 14774.92 | 70644 | 2077.08 | 0.1405815 | -7244 | -0.1025423 | NA | NA | NA | NA | NA |
01023957000 | 01023 | 957000 | AL | Alabama | Choctaw County | 3 | South Region | 6 | East South Central Division | 2567 | 1187 | 916 | 767 | 2567 | 29.87924 | 0.6933 | 0 | 145 | 1060 | 13.679245 | 0.86050 | 1 | 101 | 719 | 14.04729 | 0.04540 | 0 | 43 | 197 | 21.82741 | 0.09791 | 0 | 144 | 916 | 15.72052 | 0.02333 | 0 | 355 | 1704 | 20.83333 | 0.7366 | 0 | 289 | 2296 | 12.587108 | 0.4736 | 0 | 324 | 12.621737 | 0.51120 | 0 | 688 | 26.801714 | 0.68810 | 0 | 572 | 1746 | 32.76060 | 0.9809 | 1 | 121 | 636 | 19.02516 | 0.6414 | 0 | 5 | 2283 | 0.2190101 | 0.22520 | 0 | 1314 | 2567 | 51.18816 | 0.7225 | 0 | 1187 | 0 | 0.0000000 | 0.1224 | 0 | 335 | 28.2224094 | 0.9394 | 1 | 13 | 916 | 1.4192140 | 0.4834 | 0 | 70 | 916 | 7.641921 | 0.6353 | 0 | 0 | 2567 | 0.00000 | 0.3640 | 0 | 2.78733 | 0.5903 | 1 | 3.04680 | 0.7745 | 1 | 0.7225 | 0.7158 | 0 | 2.5445 | 0.5114 | 1 | 9.10113 | 0.6601 | 3 | 2077 | 1158 | 866 | 759 | 2072 | 36.63127 | 0.8256 | 1 | 61 | 780 | 7.820513 | 0.7726 | 1 | 106 | 735 | 14.421769 | 0.19760 | 0 | 11 | 131 | 8.396947 | 0.02525 | 0 | 117 | 866 | 13.51039 | 0.04053 | 0 | 351 | 1464 | 23.97541 | 0.8815 | 1 | 205 | 2077 | 9.870005 | 0.6729 | 0 | 402 | 19.354839 | 0.68820 | 0 | 496 | 23.880597 | 0.63430 | 0 | 466 | 1576.0000 | 29.56853 | 0.9544 | 1 | 154 | 612.0000 | 25.16340 | 0.7942 | 1 | 0 | 2002 | 0.0000000 | 0.09479 | 0 | 1018 | 2077.0000 | 49.01300 | 0.6638 | 0 | 1158 | 0 | 0.0000000 | 0.1079 | 0 | 439 | 37.9101900 | 0.9766 | 1 | 0 | 866 | 0.0000000 | 0.09796 | 0 | 42 | 866.0000 | 4.849884 | 0.4884 | 0 | 5 | 2077 | 0.2407318 | 0.4971 | 0 | 3.19313 | 0.7061 | 3 | 3.16589 | 0.8369 | 2 | 0.6638 | 0.6582 | 0 | 2.16796 | 0.3247 | 1 | 9.19078 | 0.6792 | 6 | 0 | 0 | 0 | 0 | 0 | Yes | Census Tract 9570, Choctaw County, Alabama | 16224 | 51600 | 21740 | 74000 | 18819.84 | 59856 | 2920.16 | 0.1551639 | 14144 | 0.2363005 | NA | NA | NA | NA | NA |
01031010500 | 01031 | 010500 | AL | Alabama | Coffee County | 3 | South Region | 6 | East South Central Division | 4529 | 1950 | 1664 | 1649 | 4022 | 40.99950 | 0.8432 | 1 | 114 | 1424 | 8.005618 | 0.56260 | 0 | 309 | 1057 | 29.23368 | 0.48130 | 0 | 251 | 607 | 41.35091 | 0.41690 | 0 | 560 | 1664 | 33.65385 | 0.45740 | 0 | 1269 | 3370 | 37.65579 | 0.9387 | 1 | 516 | 4279 | 12.058892 | 0.4492 | 0 | 832 | 18.370501 | 0.82310 | 1 | 894 | 19.739457 | 0.23950 | 0 | 1023 | 3404 | 30.05288 | 0.9666 | 1 | 303 | 1112 | 27.24820 | 0.8108 | 1 | 43 | 4270 | 1.0070258 | 0.44510 | 0 | 1761 | 4529 | 38.88276 | 0.6383 | 0 | 1950 | 6 | 0.3076923 | 0.2576 | 0 | 276 | 14.1538462 | 0.8279 | 1 | 8 | 1664 | 0.4807692 | 0.2925 | 0 | 125 | 1664 | 7.512019 | 0.6289 | 0 | 507 | 4529 | 11.19452 | 0.9441 | 1 | 3.25110 | 0.7138 | 2 | 3.28510 | 0.8639 | 3 | 0.6383 | 0.6324 | 0 | 2.9510 | 0.7136 | 2 | 10.12550 | 0.7794 | 7 | 4815 | 2118 | 1731 | 1329 | 4470 | 29.73154 | 0.7256 | 0 | 147 | 1903 | 7.724645 | 0.7670 | 1 | 209 | 1256 | 16.640127 | 0.29310 | 0 | 208 | 475 | 43.789474 | 0.51620 | 0 | 417 | 1731 | 24.09012 | 0.33700 | 0 | 953 | 3728 | 25.56330 | 0.8985 | 1 | 668 | 4485 | 14.894091 | 0.8425 | 1 | 1053 | 21.869159 | 0.79500 | 1 | 766 | 15.908619 | 0.16760 | 0 | 1010 | 3719.0000 | 27.15784 | 0.9262 | 1 | 243 | 1133.0000 | 21.44748 | 0.7184 | 0 | 1 | 4577 | 0.0218484 | 0.19150 | 0 | 1643 | 4815.0000 | 34.12253 | 0.5321 | 0 | 2118 | 0 | 0.0000000 | 0.1079 | 0 | 475 | 22.4268178 | 0.9157 | 1 | 37 | 1731 | 2.1374928 | 0.55080 | 0 | 144 | 1731.0000 | 8.318891 | 0.6750 | 0 | 330 | 4815 | 6.8535826 | 0.9282 | 1 | 3.57060 | 0.8018 | 3 | 2.79870 | 0.6649 | 2 | 0.5321 | 0.5276 | 0 | 3.17760 | 0.7990 | 2 | 10.07900 | 0.7892 | 7 | 0 | 0 | 0 | 0 | 0 | Yes | Census Tract 105, Coffee County, Alabama | 14641 | 88000 | 21367 | 78100 | 16983.56 | 102080 | 4383.44 | 0.2580990 | -23980 | -0.2349138 | 128.88 | 137.26 | Coffee County, Alabama | Dothan-Enterprise-Ozark, AL CSA | CS222 |
Tract Characteristics
Now that we have our data sets created, let’s compare the characteristics of our enrolled tracts versus those that did not enroll:
NMTC National
We can see that there are several more non-participant tracts than participant tracts:
Code
[1] 27014
We can also see that incomes and housing burdened percentages are similar between participant and non-participant tracts. However, poverty appears to be somewhat higher in participant tracts than non-participant tracts.
Code
# Enrolled in NMTC program
svi_national_nmtc_df %>%
filter(nmtc_flag == 1) %>%
summarise(Median_Income_10_mean = mean(Median_Income_10, na.rm = TRUE),
Median_Income_19_mean = mean(Median_Income_19, na.rm = TRUE),
Poverty_Percentage10_mean = mean(EP_POV150_10, na.rm = TRUE),
Poverty_Percentage20_mean = mean(EP_POV150_20, na.rm = TRUE),
Housing_Cost_Burden10_mean = mean(EP_HBURD_10, na.rm = TRUE),
Housing_Cost_Burden20_mean = mean(EP_HBURD_20, na.rm = TRUE),
) %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
Median_Income_10_mean | Median_Income_19_mean | Poverty_Percentage10_mean | Poverty_Percentage20_mean | Housing_Cost_Burden10_mean | Housing_Cost_Burden20_mean |
---|---|---|---|---|---|
18133.46 | 22506.39 | 43.4903 | 39.48449 | 43.12589 | 38.06896 |
Code
# Eligible, but did not enroll in NMTC program
svi_national_nmtc_df %>%
filter(nmtc_flag == 0) %>%
summarise(Median_Income_10_mean = mean(Median_Income_10, na.rm = TRUE),
Median_Income_19_mean = mean(Median_Income_19, na.rm = TRUE),
Poverty_Percentage10_mean = mean(EP_POV150_10, na.rm = TRUE),
Poverty_Percentage20_mean = mean(EP_POV150_20, na.rm = TRUE),
Housing_Cost_Burden10_mean = mean(EP_HBURD_10, na.rm = TRUE),
Housing_Cost_Burden20_mean = mean(EP_HBURD_20, na.rm = TRUE),
) %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
Median_Income_10_mean | Median_Income_19_mean | Poverty_Percentage10_mean | Poverty_Percentage20_mean | Housing_Cost_Burden10_mean | Housing_Cost_Burden20_mean |
---|---|---|---|---|---|
20640.94 | 24515.68 | 36.00355 | 33.68825 | 40.80851 | 36.05171 |
NMTC Divisional
Similar to the national data, we can see that there are several more non-participant tracts than participant tracts:
Code
[1] 3530
Also similar to national data, incomes and housing burdened percentages are similar between participant and non-participant tracts. However, the difference in poverty is even more pronounced on a divisional level with participant tracts having a mean >10% higher.
Code
# Enrolled in NMTC program
svi_divisional_nmtc_df %>%
filter(nmtc_flag == 1) %>%
summarise(Median_Income_10_mean = mean(Median_Income_10, na.rm = TRUE),
Median_Income_19_mean = mean(Median_Income_19, na.rm = TRUE),
Poverty_Percentage10_mean = mean(EP_POV150_10, na.rm = TRUE),
Poverty_Percentage20_mean = mean(EP_POV150_20, na.rm = TRUE),
Housing_Cost_Burden10_mean = mean(EP_HBURD_10, na.rm = TRUE),
Housing_Cost_Burden20_mean = mean(EP_HBURD_20, na.rm = TRUE),
) %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
Median_Income_10_mean | Median_Income_19_mean | Poverty_Percentage10_mean | Poverty_Percentage20_mean | Housing_Cost_Burden10_mean | Housing_Cost_Burden20_mean |
---|---|---|---|---|---|
18069.68 | 23212.78 | 46.49468 | 42.03539 | 48.32522 | 44.23162 |
Code
# Eligible, but did not enroll in NMTC program
svi_divisional_nmtc_df %>%
filter(nmtc_flag == 0) %>%
summarise(Median_Income_10_mean = mean(Median_Income_10, na.rm = TRUE),
Median_Income_19_mean = mean(Median_Income_19, na.rm = TRUE),
Poverty_Percentage10_mean = mean(EP_POV150_10, na.rm = TRUE),
Poverty_Percentage20_mean = mean(EP_POV150_20, na.rm = TRUE),
Housing_Cost_Burden10_mean = mean(EP_HBURD_10, na.rm = TRUE),
Housing_Cost_Burden20_mean = mean(EP_HBURD_20, na.rm = TRUE),
) %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
Median_Income_10_mean | Median_Income_19_mean | Poverty_Percentage10_mean | Poverty_Percentage20_mean | Housing_Cost_Burden10_mean | Housing_Cost_Burden20_mean |
---|---|---|---|---|---|
21525.76 | 25641.17 | 34.53223 | 33.08926 | 45.27037 | 41.71701 |
We can check the range of poverty to our data:
Code
0% 25% 50% 75% 100%
14.68085 35.95900 44.90766 56.14942 89.90826
Code
0% 25% 50% 75% 100%
0.00000 22.95262 32.27176 44.24991 100.00000
If we explore the tracts with 0 poverty, we can see that they have other areas of vulnerability that still makes them eligible for the program such as high rates of group quarters dwellers, housing burdened, and/or disabled:
# A tibble: 3 × 244
GEOID_2010_trt county_fips FIPS_tract state state_name county region_number
<chr> <chr> <chr> <chr> <chr> <chr> <dbl>
1 34025809903 34025 809903 NJ New Jersey Monmou… 1
2 36109001200 36109 001200 NY New York Tompki… 1
3 42119980800 42119 980800 PA Pennsylvania Union … 1
# ℹ 237 more variables: region <chr>, division_number <dbl>, division <chr>,
# E_TOTPOP_10 <dbl>, E_HU_10 <dbl>, E_HH_10 <dbl>, E_POV150_10 <dbl>,
# ET_POVSTATUS_10 <dbl>, EP_POV150_10 <dbl>, EPL_POV150_10 <dbl>,
# F_POV150_10 <dbl>, E_UNEMP_10 <dbl>, ET_EMPSTATUS_10 <dbl>,
# EP_UNEMP_10 <dbl>, EPL_UNEMP_10 <dbl>, F_UNEMP_10 <dbl>,
# E_HBURD_OWN_10 <dbl>, ET_HOUSINGCOST_OWN_10 <dbl>, EP_HBURD_OWN_10 <dbl>,
# EPL_HBURD_OWN_10 <dbl>, F_HBURD_OWN_10 <dbl>, E_HBURD_RENT_10 <dbl>, …
LIHTC National
We can see that there are several more non-participant tracts than participant tracts:
[1] 518
Code
[1] 3205
We can also see that incomes, poverty percentages, and housing burdens are similar in participant and non-participant tracts (as would be expected since they all must meet eligibility criteria):
Code
# Enrolled in LIHTC program
svi_national_lihtc_df %>%
filter(lihtc_flag == 1) %>%
summarise(Median_Income_10_mean = mean(Median_Income_10, na.rm = TRUE),
Median_Income_19_mean = mean(Median_Income_19, na.rm = TRUE),
Poverty_Percentage10_mean = mean(EP_POV150_10, na.rm = TRUE),
Poverty_Percentage20_mean = mean(EP_POV150_20, na.rm = TRUE),
Housing_Cost_Burden10_mean = mean(EP_HBURD_10, na.rm = TRUE),
Housing_Cost_Burden20_mean = mean(EP_HBURD_20, na.rm = TRUE),
) %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
Median_Income_10_mean | Median_Income_19_mean | Poverty_Percentage10_mean | Poverty_Percentage20_mean | Housing_Cost_Burden10_mean | Housing_Cost_Burden20_mean |
---|---|---|---|---|---|
16862.33 | 21685.07 | 50.44181 | 44.82231 | 48.1992 | 43.91082 |
Code
# Eligible, but did not enroll in LIHTC program
svi_national_lihtc_df %>%
filter(lihtc_flag == 0) %>%
summarise(Median_Income_10_mean = mean(Median_Income_10, na.rm = TRUE),
Median_Income_19_mean = mean(Median_Income_19, na.rm = TRUE),
Poverty_Percentage10_mean = mean(EP_POV150_10, na.rm = TRUE),
Poverty_Percentage20_mean = mean(EP_POV150_20, na.rm = TRUE),
Housing_Cost_Burden10_mean = mean(EP_HBURD_10, na.rm = TRUE),
Housing_Cost_Burden20_mean = mean(EP_HBURD_20, na.rm = TRUE),
) %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
Median_Income_10_mean | Median_Income_19_mean | Poverty_Percentage10_mean | Poverty_Percentage20_mean | Housing_Cost_Burden10_mean | Housing_Cost_Burden20_mean |
---|---|---|---|---|---|
16411.91 | 20449.71 | 48.998 | 44.51778 | 47.64982 | 42.35557 |
LIHTC Divisional
Similar to the national data, we can see that there are several more non-participant tracts than participant tracts:
[1] 87
Code
[1] 571
We can also see that incomes and housing burden characteristics are similar between participants and non-participants on a divisional level. However, the differences in poverty percentages are a bit more pronounced (~5% difference):
Code
# Enrolled in LIHTC program
svi_divisional_lihtc_df %>%
filter(lihtc_flag == 1) %>%
summarise(Median_Income_10_mean = mean(Median_Income_10, na.rm = TRUE),
Median_Income_19_mean = mean(Median_Income_19, na.rm = TRUE),
Poverty_Percentage10_mean = mean(EP_POV150_10, na.rm = TRUE),
Poverty_Percentage20_mean = mean(EP_POV150_20, na.rm = TRUE),
Housing_Cost_Burden10_mean = mean(EP_HBURD_10, na.rm = TRUE),
Housing_Cost_Burden20_mean = mean(EP_HBURD_20, na.rm = TRUE),
) %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
Median_Income_10_mean | Median_Income_19_mean | Poverty_Percentage10_mean | Poverty_Percentage20_mean | Housing_Cost_Burden10_mean | Housing_Cost_Burden20_mean |
---|---|---|---|---|---|
16912.48 | 20355.29 | 49.62606 | 46.64981 | 49.05046 | 48.32413 |
Code
# Eligible, but did not enroll in LIHTC program
svi_divisional_lihtc_df %>%
filter(lihtc_flag == 0) %>%
summarise(Median_Income_10_mean = mean(Median_Income_10, na.rm = TRUE),
Median_Income_19_mean = mean(Median_Income_19, na.rm = TRUE),
Poverty_Percentage10_mean = mean(EP_POV150_10, na.rm = TRUE),
Poverty_Percentage20_mean = mean(EP_POV150_20, na.rm = TRUE),
Housing_Cost_Burden10_mean = mean(EP_HBURD_10, na.rm = TRUE),
Housing_Cost_Burden20_mean = mean(EP_HBURD_20, na.rm = TRUE),
) %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
Median_Income_10_mean | Median_Income_19_mean | Poverty_Percentage10_mean | Poverty_Percentage20_mean | Housing_Cost_Burden10_mean | Housing_Cost_Burden20_mean |
---|---|---|---|---|---|
17889.13 | 21686.31 | 44.87371 | 42.46852 | 51.43901 | 48.27482 |
Check for Normality
Now that we have reviewed the characteristics of our tracts of interest — let’s explore the distribution of our SVI, Median Home Values, and Median Income dependent variables nationally and divisionally to check for indicators of normality in accordance with the 7 Sins of Regression.
We will also create logged versions of our Median Home Value, House Price Index, and Median Income variables to assist with skew (where possible) and transform our evaluation of these measures to be able to determine the percentage of change instead of just a raw number. This is particularly important since our home values and median incomes can vary so widely. For instance, while a $20,000 increase may mean very different things depending on the starting value (consider a $100,000 home vs a $1,000,000 home), a 2% increase can be compared equitably.
To explore our variables, we will evaluate the normality of our data distributions. While there are various ways to accomplish this, we will use the following guidelines:
- Visual inspection of histogram
- Visual inspection of histogram compared to normal distribution curve
- Visual inspection of density plot
- Statistical calculation of absolute skewness value ≤2
- Statistical calculation of absolute excess kurtosis ≤4
- Statistical calculation of standard deviation less than half of the mean
While our variables may not pass all of these evaluations (and regression does not require an assumption of normality for dependent or independent variables), it’s useful to have an understanding of our distribution.
You may recall from previous statistical and analytical courses that skewness measures the lateral spread of the tails of variable distribution while kurtosis measures the expected height/peaks or flatness of variable distribution. We will be checking for both skewness and kurtosis in our data set.
While you will need to log your economic outcomes variables, you are not required to complete the normality checks for your lab. However, feel free to follow along if you’d like to examine your Census Division in further detail.
Log Variables
Code
svi_national_nmtc_df$Median_Income_10adj_log <- log(svi_national_nmtc_df$Median_Income_10adj)
svi_national_nmtc_df$Median_Income_19_log <- log(svi_national_nmtc_df$Median_Income_19)
svi_national_nmtc_df$Median_Home_Value_10adj_log = log(svi_national_nmtc_df$Median_Home_Value_10adj)
svi_national_nmtc_df$Median_Home_Value_19_log = log(svi_national_nmtc_df$Median_Home_Value_19)
svi_national_nmtc_df$housing_price_index10_log = log(svi_national_nmtc_df$housing_price_index10)
svi_national_nmtc_df$housing_price_index20_log = log(svi_national_nmtc_df$housing_price_index20)
svi_divisional_nmtc_df$Median_Income_10adj_log <- log(svi_divisional_nmtc_df$Median_Income_10adj)
svi_divisional_nmtc_df$Median_Income_19_log <- log(svi_divisional_nmtc_df$Median_Income_19)
svi_divisional_nmtc_df$Median_Home_Value_10adj_log = log(svi_divisional_nmtc_df$Median_Home_Value_10adj)
svi_divisional_nmtc_df$Median_Home_Value_19_log = log(svi_divisional_nmtc_df$Median_Home_Value_19)
svi_divisional_nmtc_df$housing_price_index10_log = log(svi_divisional_nmtc_df$housing_price_index10)
svi_divisional_nmtc_df$housing_price_index20_log = log(svi_divisional_nmtc_df$housing_price_index20)
svi_national_lihtc_df$Median_Income_10adj_log <- log(svi_national_lihtc_df$Median_Income_10adj)
svi_national_lihtc_df$Median_Income_19_log <- log(svi_national_lihtc_df$Median_Income_19)
svi_national_lihtc_df$Median_Home_Value_10adj_log = log(svi_national_lihtc_df$Median_Home_Value_10adj)
svi_national_lihtc_df$Median_Home_Value_19_log = log(svi_national_lihtc_df$Median_Home_Value_19)
svi_national_lihtc_df$housing_price_index10_log = log(svi_national_lihtc_df$housing_price_index10)
svi_national_lihtc_df$housing_price_index20_log = log(svi_national_lihtc_df$housing_price_index20)
svi_divisional_lihtc_df$Median_Income_10adj_log <- log(svi_divisional_lihtc_df$Median_Income_10adj)
svi_divisional_lihtc_df$Median_Income_19_log <- log(svi_divisional_lihtc_df$Median_Income_19)
svi_divisional_lihtc_df$Median_Home_Value_10adj_log = log(svi_divisional_lihtc_df$Median_Home_Value_10adj)
svi_divisional_lihtc_df$Median_Home_Value_19_log = log(svi_divisional_lihtc_df$Median_Home_Value_19)
svi_divisional_lihtc_df$housing_price_index10_log = log(svi_divisional_lihtc_df$housing_price_index10)
svi_divisional_lihtc_df$housing_price_index20_log = log(svi_divisional_lihtc_df$housing_price_index20)
NMTC Variable Distribution
National
SVI Theme 1: Socioeconomic Status
Code
hist(svi_national_nmtc_df$F_THEME1_10)
Code
plotNormalHistogram(svi_national_nmtc_df$F_THEME1_10)
Code
ggdensity(svi_national_nmtc_df, x = "F_THEME1_10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 29068"
[1] "Absolute Skewness: 0.0391474620702475"
Code
[1] "Absolute Excess Kurtosis: 1.11708752960362"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
hist(svi_national_nmtc_df$F_THEME1_20)
Code
plotNormalHistogram(svi_national_nmtc_df$F_THEME1_20)
Code
ggdensity(svi_national_nmtc_df, x = "F_THEME1_20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 29068"
[1] "Absolute Skewness: 0.033989939262248"
Code
[1] "Absolute Excess Kurtosis: 1.01742081040569"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
SVI Theme 2: Household Characteristics
Code
hist(svi_national_nmtc_df$F_THEME2_10)
Code
plotNormalHistogram(svi_national_nmtc_df$F_THEME2_10)
Code
ggdensity(svi_national_nmtc_df, x = "F_THEME2_10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 29068"
[1] "Absolute Skewness: 0.0415342029895027"
Code
[1] "Absolute Excess Kurtosis: 0.5867078839141"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
hist(svi_national_nmtc_df$F_THEME2_20)
Code
plotNormalHistogram(svi_national_nmtc_df$F_THEME2_20)
Code
ggdensity(svi_national_nmtc_df, x = "F_THEME2_20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 29068"
[1] "Absolute Skewness: 0.0685978514780755"
Code
[1] "Absolute Excess Kurtosis: 0.61939955553921"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
SVI Theme 3: Racial & Ethnic Minority Status
Code
hist(svi_national_nmtc_df$F_THEME3_10)
Code
plotNormalHistogram(svi_national_nmtc_df$F_THEME3_10)
Code
ggdensity(svi_national_nmtc_df, x = "F_THEME3_10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 29068"
[1] "Absolute Skewness: 0.198996204178678"
Code
[1] "Absolute Excess Kurtosis: 1.96040051072248"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
table(svi_national_nmtc_df$F_THEME3_10)
0 1
15973 13095
Code
hist(svi_national_nmtc_df$F_THEME3_20)
Code
plotNormalHistogram(svi_national_nmtc_df$F_THEME3_20)
Code
ggdensity(svi_national_nmtc_df, x = "F_THEME3_20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 29068"
[1] "Absolute Skewness: 0.223622375166713"
Code
[1] "Absolute Excess Kurtosis: 1.9499930333248"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
table(svi_national_nmtc_df$F_THEME3_20)
0 1
16149 12919
SVI Theme 4: Housing Type & Transportation
Code
hist(svi_national_nmtc_df$F_THEME4_10)
Code
plotNormalHistogram(svi_national_nmtc_df$F_THEME4_10)
Code
ggdensity(svi_national_nmtc_df, x = "F_THEME4_10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 29068"
[1] "Absolute Skewness: 0.247106791798108"
Code
[1] "Absolute Excess Kurtosis: 0.440082433078066"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
hist(svi_national_nmtc_df$F_THEME4_20)
Code
plotNormalHistogram(svi_national_nmtc_df$F_THEME4_20)
Code
ggdensity(svi_national_nmtc_df, x = "F_THEME4_20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 29068"
[1] "Absolute Skewness: 0.272404536979311"
Code
[1] "Absolute Excess Kurtosis: 0.434064524326406"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
SVI Overall
Code
hist(svi_national_nmtc_df$F_TOTAL_10)
Code
plotNormalHistogram(svi_national_nmtc_df$F_TOTAL_10)
Code
ggdensity(svi_national_nmtc_df, x = "F_TOTAL_10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 29068"
[1] "Absolute Skewness: 0.0436727474371538"
[1] "Absolute Excess Kurtosis: 0.911084390556951"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_national_nmtc_df$F_TOTAL_20)
Code
plotNormalHistogram(svi_national_nmtc_df$F_TOTAL_20)
Code
ggdensity(svi_national_nmtc_df, x = "F_TOTAL_20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 29068"
[1] "Absolute Skewness: 0.0581038221323139"
[1] "Absolute Excess Kurtosis: 0.768124765222423"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Median Income
Code
plotNormalHistogram(svi_national_nmtc_df$Median_Income_10adj)
Code
ggdensity(svi_national_nmtc_df, x = "Median_Income_10adj", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 1 row containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 1 row containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 29068"
Code
[1] "Absolute Skewness: 0.683797407614315"
Code
[1] "Absolute Excess Kurtosis: 2.86001620141715"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_national_nmtc_df$Median_Income_10adj_log)
Code
plotNormalHistogram(svi_national_nmtc_df$Median_Income_10adj_log)
Code
ggdensity(svi_national_nmtc_df, x = "Median_Income_10adj_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 1 row containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 1 row containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 29068"
Code
[1] "Absolute Skewness: 1.21512618094927"
Code
[1] "Absolute Excess Kurtosis: 4.9183099470765"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
plotNormalHistogram(svi_national_nmtc_df$Median_Income_19)
Code
ggdensity(svi_national_nmtc_df, x = "Median_Income_19", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 12 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 12 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 29068"
Code
[1] "Absolute Skewness: 0.936695283743479"
Code
[1] "Absolute Excess Kurtosis: 4.27236605748425"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_national_nmtc_df$Median_Income_19_log)
Code
plotNormalHistogram(svi_national_nmtc_df$Median_Income_19_log)
Code
ggdensity(svi_national_nmtc_df, x = "Median_Income_19_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 12 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 12 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 29068"
Code
[1] "Absolute Skewness: 1.27151335786324"
Code
[1] "Absolute Excess Kurtosis: 6.31504839590709"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Median Home Value
Code
hist(svi_national_nmtc_df$Median_Home_Value_10adj)
Code
plotNormalHistogram(svi_national_nmtc_df$Median_Home_Value_10adj)
Code
ggdensity(svi_national_nmtc_df, x = "Median_Home_Value_10adj", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 481 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 481 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 29068"
Code
[1] "Absolute Skewness: 2.04452801480231"
Code
[1] "Absolute Excess Kurtosis: 5.17761808132001"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
hist(svi_national_nmtc_df$Median_Home_Value_10adj_log)
Code
plotNormalHistogram(svi_national_nmtc_df$Median_Home_Value_10adj_log)
Code
ggdensity(svi_national_nmtc_df, x = "Median_Home_Value_10adj_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 481 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 481 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
Code
[1] "Length: 29068"
Code
[1] "Absolute Skewness: 0.333285099178232"
Code
[1] "Absolute Excess Kurtosis: 0.162776282166985"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_national_nmtc_df$Median_Home_Value_19)
Code
plotNormalHistogram(svi_national_nmtc_df$Median_Home_Value_19)
Code
ggdensity(svi_national_nmtc_df, x = "Median_Home_Value_19", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 775 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 775 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 29068"
Code
[1] "Absolute Skewness: 2.73968710293995"
Code
[1] "Absolute Excess Kurtosis: 11.2160641939769"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
hist(svi_national_nmtc_df$Median_Home_Value_19_log)
Code
plotNormalHistogram(svi_national_nmtc_df$Median_Home_Value_19_log)
Code
ggdensity(svi_national_nmtc_df, x = "Median_Home_Value_19_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 775 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 775 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 29068"
Code
[1] "Absolute Skewness: 0.396412066876363"
Code
[1] "Absolute Excess Kurtosis: 0.146528535769173"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Housing Price Index
Code
hist(svi_national_nmtc_df$housing_price_index10)
Code
plotNormalHistogram(svi_national_nmtc_df$housing_price_index10)
Code
ggdensity(svi_national_nmtc_df, x = "housing_price_index10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 15207 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 15207 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 29068"
Code
[1] "Absolute Skewness: 2.66096732962555"
Code
[1] "Absolute Excess Kurtosis: 13.4503522121252"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_national_nmtc_df$housing_price_index10_log)
Code
plotNormalHistogram(svi_national_nmtc_df$housing_price_index10_log)
Code
ggdensity(svi_national_nmtc_df, x = "housing_price_index10_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 15207 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 15207 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 29068"
Code
[1] "Absolute Skewness: 0.579969300671996"
Code
[1] "Absolute Excess Kurtosis: 1.19820999461709"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_national_nmtc_df$housing_price_index20)
Code
plotNormalHistogram(svi_national_nmtc_df$housing_price_index20)
Code
ggdensity(svi_national_nmtc_df, x = "housing_price_index20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 14337 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 14337 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 29068"
Code
[1] "Absolute Skewness: 2.92032471460441"
Code
[1] "Absolute Excess Kurtosis: 14.6933704847573"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
hist(svi_national_nmtc_df$housing_price_index20_log)
Code
plotNormalHistogram(svi_national_nmtc_df$housing_price_index20_log)
Code
ggdensity(svi_national_nmtc_df, x = "housing_price_index20_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 14337 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 14337 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 29068"
Code
[1] "Absolute Skewness: 0.62477346399392"
Code
[1] "Absolute Excess Kurtosis: 0.660258064340267"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Divisional
SVI Theme 1: Socioeconomic Status
Code
hist(svi_divisional_nmtc_df$F_THEME1_10)
Code
plotNormalHistogram(svi_divisional_nmtc_df$F_THEME1_10)
Code
ggdensity(svi_divisional_nmtc_df, x = "F_THEME1_10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3704"
[1] "Absolute Skewness: 0.0950650152324593"
Code
[1] "Absolute Excess Kurtosis: 1.10074723961562"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
hist(svi_divisional_nmtc_df$F_THEME1_20)
Code
plotNormalHistogram(svi_divisional_nmtc_df$F_THEME1_20)
Code
ggdensity(svi_divisional_nmtc_df, x = "F_THEME1_20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3704"
[1] "Absolute Skewness: 0.0547960843173613"
Code
[1] "Absolute Excess Kurtosis: 1.0691840771423"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
SVI Theme 2: Household Characteristics
Code
hist(svi_divisional_nmtc_df$F_THEME2_10)
Code
plotNormalHistogram(svi_divisional_nmtc_df$F_THEME2_10)
Code
ggdensity(svi_divisional_nmtc_df, x = "F_THEME2_10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3704"
[1] "Absolute Skewness: 0.0813835807739184"
Code
[1] "Absolute Excess Kurtosis: 0.682492024892148"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
hist(svi_divisional_nmtc_df$F_THEME2_20)
Code
plotNormalHistogram(svi_divisional_nmtc_df$F_THEME2_20)
Code
ggdensity(svi_divisional_nmtc_df, x = "F_THEME2_20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3704"
[1] "Absolute Skewness: 0.0701363717639949"
Code
[1] "Absolute Excess Kurtosis: 0.751641182827766"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
SVI Theme 3: Racial & Ethnic Minority Status
Code
hist(svi_divisional_nmtc_df$F_THEME3_10)
Code
plotNormalHistogram(svi_divisional_nmtc_df$F_THEME3_10)
Code
ggdensity(svi_divisional_nmtc_df, x = "F_THEME3_10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3704"
[1] "Absolute Skewness: 0.0107992934987716"
Code
[1] "Absolute Excess Kurtosis: 1.99988337525993"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
table(svi_divisional_nmtc_df$F_THEME3_10)
0 1
1862 1842
Code
hist(svi_divisional_nmtc_df$F_THEME3_20)
Code
plotNormalHistogram(svi_divisional_nmtc_df$F_THEME3_20)
Code
ggdensity(svi_divisional_nmtc_df, x = "F_THEME3_20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3704"
[1] "Absolute Skewness: 0.0226796438099189"
Code
[1] "Absolute Excess Kurtosis: 1.99948563375666"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
table(svi_divisional_nmtc_df$F_THEME3_20)
0 1
1873 1831
SVI Theme 4: Housing Type & Transportation
Code
hist(svi_divisional_nmtc_df$F_THEME4_10)
Code
plotNormalHistogram(svi_divisional_nmtc_df$F_THEME4_10)
Code
ggdensity(svi_divisional_nmtc_df, x = "F_THEME4_10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3704"
[1] "Absolute Skewness: 0.178577401490003"
Code
[1] "Absolute Excess Kurtosis: 0.849355110461581"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
hist(svi_divisional_nmtc_df$F_THEME4_20)
Code
plotNormalHistogram(svi_divisional_nmtc_df$F_THEME4_20)
Code
ggdensity(svi_divisional_nmtc_df, x = "F_THEME4_20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3704"
[1] "Absolute Skewness: 0.184416788150057"
Code
[1] "Absolute Excess Kurtosis: 0.836438618688658"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
SVI Overall
Code
hist(svi_divisional_nmtc_df$F_TOTAL_10)
Code
plotNormalHistogram(svi_divisional_nmtc_df$F_TOTAL_10)
Code
ggdensity(svi_divisional_nmtc_df, x = "F_TOTAL_10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3704"
[1] "Absolute Skewness: 0.00591390983029318"
Code
[1] "Absolute Excess Kurtosis: 0.977850910040317"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_divisional_nmtc_df$F_TOTAL_20)
Code
plotNormalHistogram(svi_divisional_nmtc_df$F_TOTAL_20)
Code
ggdensity(svi_divisional_nmtc_df, x = "F_TOTAL_20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3704"
[1] "Absolute Skewness: 0.0772636045400056"
Code
[1] "Absolute Excess Kurtosis: 0.885123333793441"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Median Income
Code
plotNormalHistogram(svi_divisional_nmtc_df$Median_Income_10adj)
Code
ggdensity(svi_divisional_nmtc_df, x = "Median_Income_10adj", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3704"
Code
[1] "Absolute Skewness: 0.771788001084237"
Code
[1] "Absolute Excess Kurtosis: 5.26989163990963"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_divisional_nmtc_df$Median_Income_10adj_log)
Code
plotNormalHistogram(svi_divisional_nmtc_df$Median_Income_10adj_log)
Code
ggdensity(svi_divisional_nmtc_df, x = "Median_Income_10adj_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3704"
Code
[1] "Absolute Skewness: 1.3311911324138"
Code
[1] "Absolute Excess Kurtosis: 4.82461424704777"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
plotNormalHistogram(svi_divisional_nmtc_df$Median_Income_19)
Code
ggdensity(svi_divisional_nmtc_df, x = "Median_Income_19", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 1 row containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 1 row containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 3704"
Code
[1] "Absolute Skewness: 0.727017767346645"
Code
[1] "Absolute Excess Kurtosis: 2.74157045568891"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_divisional_nmtc_df$Median_Income_19_log)
Code
plotNormalHistogram(svi_divisional_nmtc_df$Median_Income_19_log)
Code
ggdensity(svi_divisional_nmtc_df, x = "Median_Income_19_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 1 row containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 1 row containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 3704"
Code
[1] "Absolute Skewness: 1.30842713408716"
Code
[1] "Absolute Excess Kurtosis: 5.6755627286166"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Median Home Value
Code
hist(svi_divisional_nmtc_df$Median_Home_Value_10adj)
Code
plotNormalHistogram(svi_divisional_nmtc_df$Median_Home_Value_10adj)
Code
ggdensity(svi_divisional_nmtc_df, x = "Median_Home_Value_10adj", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 112 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 112 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 3704"
Code
[1] "Absolute Skewness: 0.966863805068902"
Code
[1] "Absolute Excess Kurtosis: 0.183465057542072"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
hist(svi_divisional_nmtc_df$Median_Home_Value_10adj_log)
Code
plotNormalHistogram(svi_divisional_nmtc_df$Median_Home_Value_10adj_log)
Code
ggdensity(svi_divisional_nmtc_df, x = "Median_Home_Value_10adj_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 112 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 112 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
Code
[1] "Length: 3704"
Code
[1] "Absolute Skewness: 0.0424969975553017"
Code
[1] "Absolute Excess Kurtosis: 1.15936931839314"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_divisional_nmtc_df$Median_Home_Value_19)
Code
plotNormalHistogram(svi_divisional_nmtc_df$Median_Home_Value_19)
Code
ggdensity(svi_divisional_nmtc_df, x = "Median_Home_Value_19", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 199 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 199 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 3704"
Code
[1] "Absolute Skewness: 1.69096361962191"
Code
[1] "Absolute Excess Kurtosis: 3.5469745952759"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
hist(svi_divisional_nmtc_df$Median_Home_Value_19_log)
Code
plotNormalHistogram(svi_divisional_nmtc_df$Median_Home_Value_19_log)
Code
ggdensity(svi_divisional_nmtc_df, x = "Median_Home_Value_19_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 199 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 199 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 3704"
Code
[1] "Absolute Skewness: 0.179322639321206"
Code
[1] "Absolute Excess Kurtosis: 0.918136064928503"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Housing Price Index
Code
hist(svi_divisional_nmtc_df$housing_price_index10)
Code
plotNormalHistogram(svi_divisional_nmtc_df$housing_price_index10)
Code
ggdensity(svi_divisional_nmtc_df, x = "housing_price_index10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 2627 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 2627 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 3704"
Code
[1] "Absolute Skewness: 1.52709581688138"
Code
[1] "Absolute Excess Kurtosis: 4.76595604148127"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_divisional_nmtc_df$housing_price_index10_log)
Code
plotNormalHistogram(svi_divisional_nmtc_df$housing_price_index10_log)
Code
ggdensity(svi_divisional_nmtc_df, x = "housing_price_index10_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 2627 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 2627 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
Code
[1] "Length: 3704"
Code
[1] "Absolute Skewness: 0.322355088223751"
Code
[1] "Absolute Excess Kurtosis: 0.174630929219294"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_divisional_nmtc_df$housing_price_index20)
Code
plotNormalHistogram(svi_divisional_nmtc_df$housing_price_index20)
Code
ggdensity(svi_divisional_nmtc_df, x = "housing_price_index20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 2602 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 2602 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 3704"
Code
[1] "Absolute Skewness: 1.93528811040446"
Code
[1] "Absolute Excess Kurtosis: 8.63582161488645"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_divisional_nmtc_df$housing_price_index20_log)
Code
plotNormalHistogram(svi_divisional_nmtc_df$housing_price_index20_log)
Code
ggdensity(svi_divisional_nmtc_df, x = "housing_price_index20_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 2602 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 2602 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
Code
[1] "Length: 3704"
Code
[1] "Absolute Skewness: 0.300932556471555"
Code
[1] "Absolute Excess Kurtosis: 0.160257348753374"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
LIHTC Variable Distribution
National
SVI Theme 1: Socioeconomic Status
Code
hist(svi_national_lihtc_df$F_THEME1_10)
Code
plotNormalHistogram(svi_national_lihtc_df$F_THEME1_10)
Code
ggdensity(svi_national_lihtc_df, x = "F_THEME1_10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3723"
[1] "Absolute Skewness: 0.616354903135796"
Code
[1] "Absolute Excess Kurtosis: 0.112922100526614"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_national_lihtc_df$F_THEME1_20)
Code
plotNormalHistogram(svi_national_lihtc_df$F_THEME1_20)
Code
ggdensity(svi_national_lihtc_df, x = "F_THEME1_20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3723"
[1] "Absolute Skewness: 0.594976910867999"
Code
[1] "Absolute Excess Kurtosis: 0.112070644344634"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
SVI Theme 2: Household Characteristics
Code
hist(svi_national_lihtc_df$F_THEME2_10)
Code
plotNormalHistogram(svi_national_lihtc_df$F_THEME2_10)
Code
ggdensity(svi_national_lihtc_df, x = "F_THEME2_10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3723"
[1] "Absolute Skewness: 0.395602246173855"
Code
[1] "Absolute Excess Kurtosis: 0.441083623885851"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_national_lihtc_df$F_THEME2_20)
Code
plotNormalHistogram(svi_national_lihtc_df$F_THEME2_20)
Code
ggdensity(svi_national_lihtc_df, x = "F_THEME2_20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3723"
[1] "Absolute Skewness: 0.260981410692002"
Code
[1] "Absolute Excess Kurtosis: 0.63145712850234"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
SVI Theme 3: Racial & Ethnic Minority Status
Code
hist(svi_national_lihtc_df$F_THEME3_10)
Code
plotNormalHistogram(svi_national_lihtc_df$F_THEME3_10)
Code
ggdensity(svi_national_lihtc_df, x = "F_THEME3_10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3723"
[1] "Absolute Skewness: 0.902276979952208"
Code
[1] "Absolute Excess Kurtosis: 1.18589625144832"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
table(svi_national_lihtc_df$F_THEME3_10)
0 1
1096 2627
Code
hist(svi_national_lihtc_df$F_THEME3_20)
Code
plotNormalHistogram(svi_national_lihtc_df$F_THEME3_20)
Code
ggdensity(svi_national_lihtc_df, x = "F_THEME3_20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3723"
[1] "Absolute Skewness: 0.743314688520507"
Code
[1] "Absolute Excess Kurtosis: 1.44748327382966"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
table(svi_national_lihtc_df$F_THEME3_20)
0 1
1213 2510
SVI Theme 4: Housing Type & Transportation
Code
hist(svi_national_lihtc_df$F_THEME4_10)
Code
plotNormalHistogram(svi_national_lihtc_df$F_THEME4_10)
Code
ggdensity(svi_national_lihtc_df, x = "F_THEME4_10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3723"
[1] "Absolute Skewness: 0.0640770548480284"
Code
[1] "Absolute Excess Kurtosis: 0.435691797399938"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_national_lihtc_df$F_THEME4_20)
Code
plotNormalHistogram(svi_national_lihtc_df$F_THEME4_20)
Code
ggdensity(svi_national_lihtc_df, x = "F_THEME4_20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3723"
[1] "Absolute Skewness: 0.136120824320853"
Code
[1] "Absolute Excess Kurtosis: 0.555745505236912"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
SVI Overall
Code
hist(svi_national_lihtc_df$F_TOTAL_10)
Code
plotNormalHistogram(svi_national_lihtc_df$F_TOTAL_10)
Code
ggdensity(svi_national_lihtc_df, x = "F_TOTAL_10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3723"
[1] "Absolute Skewness: 0.553937068781805"
Code
[1] "Absolute Excess Kurtosis: 0.1589952366606"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_national_lihtc_df$F_TOTAL_20)
Code
plotNormalHistogram(svi_national_lihtc_df$F_TOTAL_20)
Code
ggdensity(svi_national_lihtc_df, x = "F_TOTAL_20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3723"
[1] "Absolute Skewness: 0.443427815416208"
Code
[1] "Absolute Excess Kurtosis: 0.154851347224199"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Median Income
Code
plotNormalHistogram(svi_national_lihtc_df$Median_Income_10adj)
Code
ggdensity(svi_national_lihtc_df, x = "Median_Income_10adj", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3723"
Code
[1] "Absolute Skewness: 1.927877656384"
Code
[1] "Absolute Excess Kurtosis: 15.8684097773125"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_national_lihtc_df$Median_Income_10adj_log)
Code
plotNormalHistogram(svi_national_lihtc_df$Median_Income_10adj_log)
Code
ggdensity(svi_national_lihtc_df, x = "Median_Income_10adj_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 3723"
Code
[1] "Absolute Skewness: 1.32520659727067"
Code
[1] "Absolute Excess Kurtosis: 4.57344593936882"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
plotNormalHistogram(svi_national_lihtc_df$Median_Income_19)
Code
ggdensity(svi_national_lihtc_df, x = "Median_Income_19", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 6 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 6 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 3723"
Code
[1] "Absolute Skewness: 2.35734770415012"
Code
[1] "Absolute Excess Kurtosis: 13.6771686068265"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_national_lihtc_df$Median_Income_19_log)
Code
plotNormalHistogram(svi_national_lihtc_df$Median_Income_19_log)
Code
ggdensity(svi_national_lihtc_df, x = "Median_Income_19_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 6 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 6 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 3723"
Code
[1] "Absolute Skewness: 1.05215502269178"
Code
[1] "Absolute Excess Kurtosis: 4.48007258363398"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Median Home Value
Code
hist(svi_national_lihtc_df$Median_Home_Value_10adj)
Code
plotNormalHistogram(svi_national_lihtc_df$Median_Home_Value_10adj)
Code
ggdensity(svi_national_lihtc_df, x = "Median_Home_Value_10adj", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 148 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 148 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 3723"
Code
[1] "Absolute Skewness: 1.69035458080667"
Code
[1] "Absolute Excess Kurtosis: 3.11530115510163"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
hist(svi_national_lihtc_df$Median_Home_Value_10adj_log)
Code
plotNormalHistogram(svi_national_lihtc_df$Median_Home_Value_10adj_log)
Code
ggdensity(svi_national_lihtc_df, x = "Median_Home_Value_10adj_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 148 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 148 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
Code
[1] "Length: 3723"
Code
[1] "Absolute Skewness: 0.247586220754559"
Code
[1] "Absolute Excess Kurtosis: 0.825939255327966"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_national_lihtc_df$Median_Home_Value_19)
Code
plotNormalHistogram(svi_national_lihtc_df$Median_Home_Value_19)
Code
ggdensity(svi_national_lihtc_df, x = "Median_Home_Value_19", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 230 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 230 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 3723"
Code
[1] "Absolute Skewness: 2.34541037376526"
Code
[1] "Absolute Excess Kurtosis: 8.37067295412282"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
hist(svi_national_lihtc_df$Median_Home_Value_19_log)
Code
plotNormalHistogram(svi_national_lihtc_df$Median_Home_Value_19_log)
Code
ggdensity(svi_national_lihtc_df, x = "Median_Home_Value_19_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 230 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 230 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 3723"
Code
[1] "Absolute Skewness: 0.286856482638145"
Code
[1] "Absolute Excess Kurtosis: 0.636405799672505"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Housing Price Index
Code
hist(svi_national_lihtc_df$housing_price_index10)
Code
plotNormalHistogram(svi_national_lihtc_df$housing_price_index10)
Code
ggdensity(svi_national_lihtc_df, x = "housing_price_index10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 2876 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 2876 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 3723"
Code
[1] "Absolute Skewness: 1.59597749509696"
Code
[1] "Absolute Excess Kurtosis: 3.12345644276895"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_national_lihtc_df$housing_price_index10_log)
Code
plotNormalHistogram(svi_national_lihtc_df$housing_price_index10_log)
Code
ggdensity(svi_national_lihtc_df, x = "housing_price_index10_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 2876 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 2876 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 3723"
Code
[1] "Absolute Skewness: 0.341591279584173"
Code
[1] "Absolute Excess Kurtosis: 0.191304327779092"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_national_lihtc_df$housing_price_index20)
Code
plotNormalHistogram(svi_national_lihtc_df$housing_price_index20)
Code
ggdensity(svi_national_lihtc_df, x = "housing_price_index20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 2718 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 2718 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 3723"
Code
[1] "Absolute Skewness: 1.78599462208052"
Code
[1] "Absolute Excess Kurtosis: 4.92519545732658"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
hist(svi_national_lihtc_df$housing_price_index20_log)
Code
plotNormalHistogram(svi_national_lihtc_df$housing_price_index20_log)
Code
ggdensity(svi_national_lihtc_df, x = "housing_price_index20_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 2718 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 2718 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 3723"
Code
[1] "Absolute Skewness: 0.238617438547599"
Code
[1] "Absolute Excess Kurtosis: 0.144393114411222"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Divisional
SVI Theme 1: Socioeconomic Status
Code
hist(svi_divisional_lihtc_df$F_THEME1_10)
Code
plotNormalHistogram(svi_divisional_lihtc_df$F_THEME1_10)
Code
ggdensity(svi_divisional_lihtc_df, x = "F_THEME1_10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 658"
[1] "Absolute Skewness: 0.464681434235617"
Code
[1] "Absolute Excess Kurtosis: 0.342191343459457"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_divisional_lihtc_df$F_THEME1_20)
Code
plotNormalHistogram(svi_divisional_lihtc_df$F_THEME1_20)
Code
ggdensity(svi_divisional_lihtc_df, x = "F_THEME1_20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 658"
[1] "Absolute Skewness: 0.545550612102249"
Code
[1] "Absolute Excess Kurtosis: 0.281029849510078"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
SVI Theme 2: Household Characteristics
Code
hist(svi_divisional_lihtc_df$F_THEME2_10)
Code
plotNormalHistogram(svi_divisional_lihtc_df$F_THEME2_10)
Code
ggdensity(svi_divisional_lihtc_df, x = "F_THEME2_10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 658"
[1] "Absolute Skewness: 0.390621345650171"
Code
[1] "Absolute Excess Kurtosis: 0.400071665209667"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_divisional_lihtc_df$F_THEME2_20)
Code
plotNormalHistogram(svi_divisional_lihtc_df$F_THEME2_20)
Code
ggdensity(svi_divisional_lihtc_df, x = "F_THEME2_20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 658"
[1] "Absolute Skewness: 0.313231265579455"
Code
[1] "Absolute Excess Kurtosis: 0.595283883937745"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
SVI Theme 3: Racial & Ethnic Minority Status
Code
hist(svi_divisional_lihtc_df$F_THEME3_10)
Code
plotNormalHistogram(svi_divisional_lihtc_df$F_THEME3_10)
Code
ggdensity(svi_divisional_lihtc_df, x = "F_THEME3_10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 658"
[1] "Absolute Skewness: 0.5688091096646"
Code
[1] "Absolute Excess Kurtosis: 1.67645619676257"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
table(svi_divisional_lihtc_df$F_THEME3_10)
0 1
239 419
Code
hist(svi_divisional_lihtc_df$F_THEME3_20)
Code
plotNormalHistogram(svi_divisional_lihtc_df$F_THEME3_20)
Code
ggdensity(svi_divisional_lihtc_df, x = "F_THEME3_20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 658"
[1] "Absolute Skewness: 0.46167791726972"
Code
[1] "Absolute Excess Kurtosis: 1.78685350070549"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
table(svi_divisional_lihtc_df$F_THEME3_20)
0 1
255 403
SVI Theme 4: Housing Type & Transportation
Code
hist(svi_divisional_lihtc_df$F_THEME4_10)
Code
plotNormalHistogram(svi_divisional_lihtc_df$F_THEME4_10)
Code
ggdensity(svi_divisional_lihtc_df, x = "F_THEME4_10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 658"
[1] "Absolute Skewness: 0.0528675963068699"
Code
[1] "Absolute Excess Kurtosis: 0.641139325557921"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
hist(svi_divisional_lihtc_df$F_THEME4_20)
Code
plotNormalHistogram(svi_divisional_lihtc_df$F_THEME4_20)
Code
ggdensity(svi_divisional_lihtc_df, x = "F_THEME4_20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 658"
[1] "Absolute Skewness: 0.154415581949325"
Code
[1] "Absolute Excess Kurtosis: 0.575882787137674"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
SVI Overall
Code
hist(svi_divisional_lihtc_df$F_TOTAL_10)
Code
plotNormalHistogram(svi_divisional_lihtc_df$F_TOTAL_10)
Code
ggdensity(svi_divisional_lihtc_df, x = "F_TOTAL_10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 658"
[1] "Absolute Skewness: 0.503794532885274"
Code
[1] "Absolute Excess Kurtosis: 0.128544362240345"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_divisional_lihtc_df$F_TOTAL_20)
Code
plotNormalHistogram(svi_divisional_lihtc_df$F_TOTAL_20)
Code
ggdensity(svi_divisional_lihtc_df, x = "F_TOTAL_20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 658"
[1] "Absolute Skewness: 0.417380450371442"
Code
[1] "Absolute Excess Kurtosis: 0.305625641219157"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Median Income
Code
plotNormalHistogram(svi_divisional_lihtc_df$Median_Income_10adj)
Code
ggdensity(svi_divisional_lihtc_df, x = "Median_Income_10adj", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 658"
Code
[1] "Absolute Skewness: 2.59458746072646"
Code
[1] "Absolute Excess Kurtosis: 23.4554277758189"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_divisional_lihtc_df$Median_Income_10adj_log)
Code
plotNormalHistogram(svi_divisional_lihtc_df$Median_Income_10adj_log)
Code
ggdensity(svi_divisional_lihtc_df, x = "Median_Income_10adj_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Code
[1] "Length: 658"
Code
[1] "Absolute Skewness: 1.27132616855256"
Code
[1] "Absolute Excess Kurtosis: 4.37089990524896"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
plotNormalHistogram(svi_divisional_lihtc_df$Median_Income_19)
Code
ggdensity(svi_divisional_lihtc_df, x = "Median_Income_19", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 1 row containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 1 row containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 658"
Code
[1] "Absolute Skewness: 2.31568439994785"
Code
[1] "Absolute Excess Kurtosis: 16.252149789397"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_divisional_lihtc_df$Median_Income_19_log)
Code
plotNormalHistogram(svi_divisional_lihtc_df$Median_Income_19_log)
Code
ggdensity(svi_divisional_lihtc_df, x = "Median_Income_19_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 1 row containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 1 row containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 658"
Code
[1] "Absolute Skewness: 1.16994389961393"
Code
[1] "Absolute Excess Kurtosis: 4.8077691335981"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Median Home Value
Code
hist(svi_divisional_lihtc_df$Median_Home_Value_10adj)
Code
plotNormalHistogram(svi_divisional_lihtc_df$Median_Home_Value_10adj)
Code
ggdensity(svi_divisional_lihtc_df, x = "Median_Home_Value_10adj", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 50 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 50 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 658"
Code
[1] "Absolute Skewness: 0.893491528517774"
Code
[1] "Absolute Excess Kurtosis: 0.0996552991162174"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
hist(svi_divisional_lihtc_df$Median_Home_Value_10adj_log)
Code
plotNormalHistogram(svi_divisional_lihtc_df$Median_Home_Value_10adj_log)
Code
ggdensity(svi_divisional_lihtc_df, x = "Median_Home_Value_10adj_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 50 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 50 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
Code
[1] "Length: 658"
Code
[1] "Absolute Skewness: 0.228260574560246"
Code
[1] "Absolute Excess Kurtosis: 1.19610799318265"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_divisional_lihtc_df$Median_Home_Value_19)
Code
plotNormalHistogram(svi_divisional_lihtc_df$Median_Home_Value_19)
Code
ggdensity(svi_divisional_lihtc_df, x = "Median_Home_Value_19", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 75 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 75 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 658"
Code
[1] "Absolute Skewness: 1.34108638895171"
Code
[1] "Absolute Excess Kurtosis: 1.80163937222985"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
hist(svi_divisional_lihtc_df$Median_Home_Value_19_log)
Code
plotNormalHistogram(svi_divisional_lihtc_df$Median_Home_Value_19_log)
Code
ggdensity(svi_divisional_lihtc_df, x = "Median_Home_Value_19_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 75 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 75 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
Code
[1] "Length: 658"
Code
[1] "Absolute Skewness: 0.000866668136410215"
Code
[1] "Absolute Excess Kurtosis: 1.13222529851935"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Housing Price Index
Code
hist(svi_divisional_lihtc_df$housing_price_index10)
Code
plotNormalHistogram(svi_divisional_lihtc_df$housing_price_index10)
Code
ggdensity(svi_divisional_lihtc_df, x = "housing_price_index10", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 579 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 579 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 658"
Code
[1] "Absolute Skewness: 1.69259505587305"
Code
[1] "Absolute Excess Kurtosis: 3.49396426720368"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_divisional_lihtc_df$housing_price_index10_log)
Code
plotNormalHistogram(svi_divisional_lihtc_df$housing_price_index10_log)
Code
ggdensity(svi_divisional_lihtc_df, x = "housing_price_index10_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 579 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 579 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
Code
[1] "Length: 658"
Code
[1] "Absolute Skewness: 0.562222244015004"
Code
[1] "Absolute Excess Kurtosis: 0.0301918947730955"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Code
hist(svi_divisional_lihtc_df$housing_price_index20)
Code
plotNormalHistogram(svi_divisional_lihtc_df$housing_price_index20)
Code
ggdensity(svi_divisional_lihtc_df, x = "housing_price_index20", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 571 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 571 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
[1] "Length: 658"
Code
[1] "Absolute Skewness: 2.07804027088013"
Code
[1] "Absolute Excess Kurtosis: 5.54809587327635"
Code
[1] "Standard deviation is less than 1/2 mean: FALSE"
Code
hist(svi_divisional_lihtc_df$housing_price_index20_log)
Code
plotNormalHistogram(svi_divisional_lihtc_df$housing_price_index20_log)
Code
ggdensity(svi_divisional_lihtc_df, x = "housing_price_index20_log", fill = "lightgray") +
stat_overlay_normal_density(color = "red", linetype = "dashed")
Warning: Removed 571 rows containing non-finite outside the scale range
(`stat_density()`).
Warning: Removed 571 rows containing non-finite outside the scale range
(`stat_overlay_normal_density()`).
Code
Code
[1] "Length: 658"
Code
[1] "Absolute Skewness: 0.646423611782883"
Code
[1] "Absolute Excess Kurtosis: 0.196532258078191"
Code
[1] "Standard deviation is less than 1/2 mean: TRUE"
Diff-In-Diff
Now that we have wrangled our data and explored the distribution of our dependent variables of interest, we need to structure our data to for our diff-in-diff models:
NMTC National
Create National Models
First, we can create datasets with our SVI variables for socioeconomic status, household characteristics, racial and ethnic minorities, and housing and transportation issues:
SVI Model Data
Code
# Create 2010 df, create post variable and set to 0, create year variable and set to 2010
nmtc_did10_usa_svi <- svi_national_nmtc_df %>%
select(GEOID_2010_trt, cbsa, F_THEME1_10, F_THEME2_10, F_THEME3_10, F_THEME4_10, F_TOTAL_10, nmtc_flag) %>%
mutate(post = 0,
year = 2010) %>%
rename("treat" = "nmtc_flag",
"SVI_FLAG_COUNT_SES" = "F_THEME1_10",
"SVI_FLAG_COUNT_HHCHAR" = "F_THEME2_10",
"SVI_FLAG_COUNT_REM" = "F_THEME3_10",
"SVI_FLAG_COUNT_HOUSETRANSPT" = "F_THEME4_10",
"SVI_FLAG_COUNT_OVERALL" = "F_TOTAL_10")
nrow(nmtc_did10_usa_svi)
[1] 29068
Code
nmtc_did10_usa_svi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | SVI_FLAG_COUNT_SES | SVI_FLAG_COUNT_HHCHAR | SVI_FLAG_COUNT_REM | SVI_FLAG_COUNT_HOUSETRANSPT | SVI_FLAG_COUNT_OVERALL | treat | post | year |
---|---|---|---|---|---|---|---|---|---|
01001020200 | Montgomery-Alexander City, AL CSA | 1 | 3 | 1 | 1 | 6 | 0 | 0 | 2010 |
01001020700 | Montgomery-Alexander City, AL CSA | 0 | 2 | 0 | 1 | 3 | 0 | 0 | 2010 |
01001021100 | Montgomery-Alexander City, AL CSA | 2 | 1 | 1 | 1 | 5 | 0 | 0 | 2010 |
01003010200 | Mobile-Daphne-Fairhope, AL CSA | 1 | 1 | 0 | 1 | 3 | 1 | 0 | 2010 |
01003010500 | Mobile-Daphne-Fairhope, AL CSA | 1 | 0 | 0 | 2 | 3 | 0 | 0 | 2010 |
01003010600 | Mobile-Daphne-Fairhope, AL CSA | 2 | 3 | 1 | 3 | 9 | 1 | 0 | 2010 |
Code
# Create 2020 df, create post variable and set to 1, create year variable and set to 2020
nmtc_did20_usa_svi <- svi_national_nmtc_df %>%
select(GEOID_2010_trt, cbsa, F_THEME1_20, F_THEME2_20, F_THEME3_20, F_THEME4_20, F_TOTAL_20, nmtc_flag) %>%
mutate(post = 1,
year = 2020) %>%
rename("treat" = "nmtc_flag",
"SVI_FLAG_COUNT_SES" = "F_THEME1_20",
"SVI_FLAG_COUNT_HHCHAR" = "F_THEME2_20",
"SVI_FLAG_COUNT_REM" = "F_THEME3_20",
"SVI_FLAG_COUNT_HOUSETRANSPT" = "F_THEME4_20",
"SVI_FLAG_COUNT_OVERALL" = "F_TOTAL_20"
)
nrow(nmtc_did20_usa_svi)
[1] 29068
Code
nmtc_did20_usa_svi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | SVI_FLAG_COUNT_SES | SVI_FLAG_COUNT_HHCHAR | SVI_FLAG_COUNT_REM | SVI_FLAG_COUNT_HOUSETRANSPT | SVI_FLAG_COUNT_OVERALL | treat | post | year |
---|---|---|---|---|---|---|---|---|---|
01001020200 | Montgomery-Alexander City, AL CSA | 0 | 0 | 1 | 1 | 2 | 0 | 1 | 2020 |
01001020700 | Montgomery-Alexander City, AL CSA | 4 | 2 | 0 | 3 | 9 | 0 | 1 | 2020 |
01001021100 | Montgomery-Alexander City, AL CSA | 3 | 2 | 0 | 2 | 7 | 0 | 1 | 2020 |
01003010200 | Mobile-Daphne-Fairhope, AL CSA | 0 | 2 | 0 | 1 | 3 | 1 | 1 | 2020 |
01003010500 | Mobile-Daphne-Fairhope, AL CSA | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 2020 |
01003010600 | Mobile-Daphne-Fairhope, AL CSA | 5 | 2 | 1 | 2 | 10 | 1 | 1 | 2020 |
Join 2010 and 2020 data into one df
View top of data frame
Code
nmtc_diff_in_diff_usa_svi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | SVI_FLAG_COUNT_SES | SVI_FLAG_COUNT_HHCHAR | SVI_FLAG_COUNT_REM | SVI_FLAG_COUNT_HOUSETRANSPT | SVI_FLAG_COUNT_OVERALL | treat | post | year |
---|---|---|---|---|---|---|---|---|---|
01001020200 | Montgomery-Alexander City, AL CSA | 1 | 3 | 1 | 1 | 6 | 0 | 0 | 2010 |
01001020700 | Montgomery-Alexander City, AL CSA | 0 | 2 | 0 | 1 | 3 | 0 | 0 | 2010 |
01001021100 | Montgomery-Alexander City, AL CSA | 2 | 1 | 1 | 1 | 5 | 0 | 0 | 2010 |
01003010500 | Mobile-Daphne-Fairhope, AL CSA | 1 | 0 | 0 | 2 | 3 | 0 | 0 | 2010 |
01003011000 | Mobile-Daphne-Fairhope, AL CSA | 2 | 2 | 0 | 1 | 5 | 0 | 0 | 2010 |
01003011406 | Mobile-Daphne-Fairhope, AL CSA | 1 | 1 | 0 | 1 | 3 | 0 | 0 | 2010 |
View bottom of data frame
Code
nmtc_diff_in_diff_usa_svi %>% tail() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | SVI_FLAG_COUNT_SES | SVI_FLAG_COUNT_HHCHAR | SVI_FLAG_COUNT_REM | SVI_FLAG_COUNT_HOUSETRANSPT | SVI_FLAG_COUNT_OVERALL | treat | post | year |
---|---|---|---|---|---|---|---|---|---|
55129950100 | NA | 0 | 2 | 0 | 1 | 3 | 1 | 1 | 2020 |
55141011200 | Wisconsin Rapids-Marshfield, WI MicroSA | 2 | 2 | 0 | 0 | 4 | 1 | 1 | 2020 |
56001963700 | Laramie, WY MicroSA | 2 | 0 | 0 | 1 | 3 | 1 | 1 | 2020 |
56013940100 | Riverton, WY MicroSA | 3 | 3 | 1 | 2 | 9 | 1 | 1 | 2020 |
56013940300 | Riverton, WY MicroSA | 1 | 0 | 0 | 3 | 4 | 1 | 1 | 2020 |
56015957800 | NA | 2 | 1 | 0 | 2 | 5 | 1 | 1 | 2020 |
Economic Outcomes Models Data
Next, we can create a set of data with our variables to measure the economic outcomes of house price index, median home value, and median income:
Create dataset for median income
Code
# Create 2010 df, create post variable and set to 0, create year variable and set to 2010, remove any tracts that don't have data for 2010 and 2019
nmtc_did10_usa_inc <- svi_national_nmtc_df %>%
filter(!is.na(Median_Income_10adj_log)) %>% filter(!is.na(Median_Income_19_log)) %>%
select(GEOID_2010_trt, cbsa, Median_Income_10adj_log, nmtc_flag) %>%
mutate(post = 0,
year = 2010) %>%
rename("treat" = "nmtc_flag",
"MEDIAN_INCOME" = "Median_Income_10adj_log")
nrow(nmtc_did10_usa_inc)
[1] 29055
Code
nmtc_did10_usa_inc %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_INCOME | treat | post | year |
---|---|---|---|---|---|
01001020200 | Montgomery-Alexander City, AL CSA | 10.023354 | 0 | 0 | 2010 |
01001020700 | Montgomery-Alexander City, AL CSA | 10.152386 | 0 | 0 | 2010 |
01001021100 | Montgomery-Alexander City, AL CSA | 9.946380 | 0 | 0 | 2010 |
01003010200 | Mobile-Daphne-Fairhope, AL CSA | 10.228462 | 1 | 0 | 2010 |
01003010500 | Mobile-Daphne-Fairhope, AL CSA | 10.128174 | 0 | 0 | 2010 |
01003010600 | Mobile-Daphne-Fairhope, AL CSA | 9.934699 | 1 | 0 | 2010 |
Code
# Create 2019 df, create post variable and set to 1, create year variable and set to 2019, remove any tracts that don't have data for 2010 and 2019
nmtc_did19_usa_inc <- svi_national_nmtc_df %>%
filter(!is.na(Median_Income_10adj_log)) %>% filter(!is.na(Median_Income_19_log)) %>%
select(GEOID_2010_trt, cbsa, Median_Income_19_log, nmtc_flag) %>%
mutate(post = 1,
year = 2019) %>%
rename("treat" = "nmtc_flag",
"MEDIAN_INCOME" = "Median_Income_19_log")
nrow(nmtc_did19_usa_inc)
[1] 29055
Code
nmtc_did19_usa_inc %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_INCOME | treat | post | year |
---|---|---|---|---|---|
01001020200 | Montgomery-Alexander City, AL CSA | 9.911158 | 0 | 1 | 2019 |
01001020700 | Montgomery-Alexander City, AL CSA | 9.949130 | 0 | 1 | 2019 |
01001021100 | Montgomery-Alexander City, AL CSA | 9.934017 | 0 | 1 | 2019 |
01003010200 | Mobile-Daphne-Fairhope, AL CSA | 10.169116 | 1 | 1 | 2019 |
01003010500 | Mobile-Daphne-Fairhope, AL CSA | 10.250652 | 0 | 1 | 2019 |
01003010600 | Mobile-Daphne-Fairhope, AL CSA | 9.708263 | 1 | 1 | 2019 |
Join 2010 and 2019 data into one df for income
View top of data frame for income
Code
nmtc_diff_in_diff_usa_inc %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_INCOME | treat | post | year |
---|---|---|---|---|---|
01001020200 | Montgomery-Alexander City, AL CSA | 10.02335 | 0 | 0 | 2010 |
01001020700 | Montgomery-Alexander City, AL CSA | 10.15239 | 0 | 0 | 2010 |
01001021100 | Montgomery-Alexander City, AL CSA | 9.94638 | 0 | 0 | 2010 |
01003010500 | Mobile-Daphne-Fairhope, AL CSA | 10.12817 | 0 | 0 | 2010 |
01003011000 | Mobile-Daphne-Fairhope, AL CSA | 10.01835 | 0 | 0 | 2010 |
01003011406 | Mobile-Daphne-Fairhope, AL CSA | 10.45196 | 0 | 0 | 2010 |
View bottom of data frame income
Code
nmtc_diff_in_diff_usa_inc %>% tail() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_INCOME | treat | post | year |
---|---|---|---|---|---|
55129950100 | NA | 10.179300 | 1 | 1 | 2019 |
55141011200 | Wisconsin Rapids-Marshfield, WI MicroSA | 10.010771 | 1 | 1 | 2019 |
56001963700 | Laramie, WY MicroSA | 9.955226 | 1 | 1 | 2019 |
56013940100 | Riverton, WY MicroSA | 9.870964 | 1 | 1 | 2019 |
56013940300 | Riverton, WY MicroSA | 10.148901 | 1 | 1 | 2019 |
56015957800 | NA | 10.308286 | 1 | 1 | 2019 |
Create dataset for home value
Code
nmtc_did10_usa_mhv <- svi_national_nmtc_df %>%
filter(!is.na(Median_Home_Value_10adj_log)) %>% filter(!is.na(Median_Home_Value_19_log)) %>%
select(GEOID_2010_trt, cbsa, Median_Home_Value_10adj_log, nmtc_flag) %>%
mutate(post = 0,
year = 2010) %>%
rename("treat" = "nmtc_flag",
"MEDIAN_HOME_VALUE" = "Median_Home_Value_10adj_log")
nrow(nmtc_did10_usa_mhv)
[1] 28199
Code
nmtc_did10_usa_mhv %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_HOME_VALUE | treat | post | year |
---|---|---|---|---|---|
01001020200 | Montgomery-Alexander City, AL CSA | 11.98705 | 0 | 0 | 2010 |
01001020700 | Montgomery-Alexander City, AL CSA | 11.59734 | 0 | 0 | 2010 |
01001021100 | Montgomery-Alexander City, AL CSA | 11.36024 | 0 | 0 | 2010 |
01003010200 | Mobile-Daphne-Fairhope, AL CSA | 11.69284 | 1 | 0 | 2010 |
01003010500 | Mobile-Daphne-Fairhope, AL CSA | 11.85279 | 0 | 0 | 2010 |
01003010600 | Mobile-Daphne-Fairhope, AL CSA | 11.45800 | 1 | 0 | 2010 |
Code
nmtc_did19_usa_mhv <- svi_national_nmtc_df %>%
filter(!is.na(Median_Home_Value_10adj_log)) %>% filter(!is.na(Median_Home_Value_19_log)) %>%
select(GEOID_2010_trt, cbsa, Median_Home_Value_19_log, nmtc_flag) %>%
mutate(post = 1,
year = 2019) %>%
rename("treat" = "nmtc_flag",
"MEDIAN_HOME_VALUE" = "Median_Home_Value_19_log")
nrow(nmtc_did19_usa_mhv)
[1] 28199
Code
nmtc_did19_usa_mhv %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_HOME_VALUE | treat | post | year |
---|---|---|---|---|---|
01001020200 | Montgomery-Alexander City, AL CSA | 11.41311 | 0 | 1 | 2019 |
01001020700 | Montgomery-Alexander City, AL CSA | 11.31934 | 0 | 1 | 2019 |
01001021100 | Montgomery-Alexander City, AL CSA | 11.39189 | 0 | 1 | 2019 |
01003010200 | Mobile-Daphne-Fairhope, AL CSA | 11.82701 | 1 | 1 | 2019 |
01003010500 | Mobile-Daphne-Fairhope, AL CSA | 11.90834 | 0 | 1 | 2019 |
01003010600 | Mobile-Daphne-Fairhope, AL CSA | 11.55885 | 1 | 1 | 2019 |
Join 2010 and 2019 data into one df for home value
View top of data frame for home value
Code
nmtc_diff_in_diff_usa_mhv %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_HOME_VALUE | treat | post | year |
---|---|---|---|---|---|
01001020200 | Montgomery-Alexander City, AL CSA | 11.98705 | 0 | 0 | 2010 |
01001020700 | Montgomery-Alexander City, AL CSA | 11.59734 | 0 | 0 | 2010 |
01001021100 | Montgomery-Alexander City, AL CSA | 11.36024 | 0 | 0 | 2010 |
01003010500 | Mobile-Daphne-Fairhope, AL CSA | 11.85279 | 0 | 0 | 2010 |
01003011000 | Mobile-Daphne-Fairhope, AL CSA | 11.89563 | 0 | 0 | 2010 |
01003011406 | Mobile-Daphne-Fairhope, AL CSA | 12.58560 | 0 | 0 | 2010 |
View bottom of data frame for home value
Code
nmtc_diff_in_diff_usa_mhv %>% tail() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_HOME_VALUE | treat | post | year |
---|---|---|---|---|---|
55129950100 | NA | 11.97540 | 1 | 1 | 2019 |
55141011200 | Wisconsin Rapids-Marshfield, WI MicroSA | 11.36674 | 1 | 1 | 2019 |
56001963700 | Laramie, WY MicroSA | 12.48673 | 1 | 1 | 2019 |
56013940100 | Riverton, WY MicroSA | 11.62893 | 1 | 1 | 2019 |
56013940300 | Riverton, WY MicroSA | 11.72238 | 1 | 1 | 2019 |
56015957800 | NA | 11.98480 | 1 | 1 | 2019 |
Create data set for house price index
Code
nmtc_did10_usa_hpi <- svi_national_nmtc_df %>%
filter(!is.na(housing_price_index10_log)) %>% filter(!is.na(housing_price_index20_log)) %>%
select(GEOID_2010_trt, cbsa, housing_price_index10_log, nmtc_flag) %>%
mutate(post = 0,
year = 2010) %>%
rename("treat" = "nmtc_flag",
"HOUSE_PRICE_INDEX" = "housing_price_index10_log")
nrow(nmtc_did10_usa_hpi)
[1] 13611
Code
nmtc_did10_usa_hpi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | HOUSE_PRICE_INDEX | treat | post | year |
---|---|---|---|---|---|
01001020200 | Montgomery-Alexander City, AL CSA | 4.818506 | 0 | 0 | 2010 |
01001020700 | Montgomery-Alexander City, AL CSA | 4.563723 | 0 | 0 | 2010 |
01001021100 | Montgomery-Alexander City, AL CSA | 4.898809 | 0 | 0 | 2010 |
01003010200 | Mobile-Daphne-Fairhope, AL CSA | 4.854995 | 1 | 0 | 2010 |
01003010500 | Mobile-Daphne-Fairhope, AL CSA | 5.255253 | 0 | 0 | 2010 |
01003011000 | Mobile-Daphne-Fairhope, AL CSA | 4.865147 | 0 | 0 | 2010 |
Code
nmtc_did20_usa_hpi <- svi_national_nmtc_df %>%
filter(!is.na(housing_price_index10_log)) %>% filter(!is.na(housing_price_index20_log)) %>%
select(GEOID_2010_trt, cbsa, housing_price_index20_log, nmtc_flag) %>%
mutate(post = 1,
year = 2020) %>%
rename("treat" = "nmtc_flag",
"HOUSE_PRICE_INDEX" = "housing_price_index20_log")
nrow(nmtc_did20_usa_hpi)
[1] 13611
Code
nmtc_did20_usa_hpi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | HOUSE_PRICE_INDEX | treat | post | year |
---|---|---|---|---|---|
01001020200 | Montgomery-Alexander City, AL CSA | 4.815188 | 0 | 1 | 2020 |
01001020700 | Montgomery-Alexander City, AL CSA | 4.686474 | 0 | 1 | 2020 |
01001021100 | Montgomery-Alexander City, AL CSA | 4.979557 | 0 | 1 | 2020 |
01003010200 | Mobile-Daphne-Fairhope, AL CSA | 5.113613 | 1 | 1 | 2020 |
01003010500 | Mobile-Daphne-Fairhope, AL CSA | 5.363590 | 0 | 1 | 2020 |
01003011000 | Mobile-Daphne-Fairhope, AL CSA | 5.240953 | 0 | 1 | 2020 |
Join 2010 and 2019 data into one df for house price index
View top of data frame for house price index
Code
nmtc_diff_in_diff_usa_hpi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | HOUSE_PRICE_INDEX | treat | post | year |
---|---|---|---|---|---|
01001020200 | Montgomery-Alexander City, AL CSA | 4.818506 | 0 | 0 | 2010 |
01001020700 | Montgomery-Alexander City, AL CSA | 4.563723 | 0 | 0 | 2010 |
01001021100 | Montgomery-Alexander City, AL CSA | 4.898809 | 0 | 0 | 2010 |
01003010500 | Mobile-Daphne-Fairhope, AL CSA | 5.255253 | 0 | 0 | 2010 |
01003011000 | Mobile-Daphne-Fairhope, AL CSA | 4.865147 | 0 | 0 | 2010 |
01003011601 | Mobile-Daphne-Fairhope, AL CSA | 5.129129 | 0 | 0 | 2010 |
View bottom of data frame for house price index
Code
nmtc_diff_in_diff_usa_hpi %>% tail() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | HOUSE_PRICE_INDEX | treat | post | year |
---|---|---|---|---|---|
55125940000 | NA | 5.908001 | 1 | 1 | 2020 |
55127000501 | Whitewater, WI MicroSA | 5.471682 | 1 | 1 | 2020 |
55129950100 | NA | 5.281070 | 1 | 1 | 2020 |
55141011200 | Wisconsin Rapids-Marshfield, WI MicroSA | 5.218516 | 1 | 1 | 2020 |
56001963700 | Laramie, WY MicroSA | 5.714557 | 1 | 1 | 2020 |
56015957800 | NA | 5.190955 | 1 | 1 | 2020 |
NMTC National Model
Now that we have our datasets created, we can craft our models. Remember that in R we can use the lm()
function for linear models. We can then format the output of models using packages like modelsummary
to create easy-to-read output tables (note: unlike stargazer and the base lm() output, your regression models will not print directly in your .RMD file, you will need to view the output in the ‘viewer’ window in RStudio):
Code
# SVI & Economic Models
m1_nmtc_usa <- lm( SVI_FLAG_COUNT_SES ~ treat + post + treat*post + cbsa, data=nmtc_diff_in_diff_usa_svi )
m2_nmtc_usa <- lm( SVI_FLAG_COUNT_HHCHAR ~ treat + post + treat*post + cbsa, data=nmtc_diff_in_diff_usa_svi )
m3_nmtc_usa <- lm( SVI_FLAG_COUNT_REM ~ treat + post + treat*post + cbsa, data=nmtc_diff_in_diff_usa_svi )
m4_nmtc_usa <- lm( SVI_FLAG_COUNT_HOUSETRANSPT ~ treat + post + treat*post + cbsa, data=nmtc_diff_in_diff_usa_svi )
m5_nmtc_usa <- lm( SVI_FLAG_COUNT_OVERALL ~ treat + post + treat*post + cbsa, data=nmtc_diff_in_diff_usa_svi)
m6_nmtc_usa <- lm( MEDIAN_INCOME ~ treat + post + treat*post + cbsa, data=nmtc_diff_in_diff_usa_inc )
m7_nmtc_usa <- lm( MEDIAN_HOME_VALUE ~ treat + post + treat*post + cbsa, data=nmtc_diff_in_diff_usa_mhv )
m8_nmtc_usa <- lm( HOUSE_PRICE_INDEX ~ treat + post + treat*post + cbsa, data=nmtc_diff_in_diff_usa_hpi )
# Add all models to a list
models <- list(
"SES" = m1_nmtc_usa,
"HHChar" = m2_nmtc_usa,
"REM" = m3_nmtc_usa,
"HOUSETRANSPT" = m4_nmtc_usa,
"OVERALL" = m5_nmtc_usa,
"Median Income (USD, logged)" = m6_nmtc_usa,
"Median Home Value (USD, logged)" = m7_nmtc_usa,
"House Price Index (logged)" = m8_nmtc_usa
)
# Display model results
modelsummary(models, fmt = 2, stars = c('*' = .05, '**' = .01, '***' = .001), coef_omit = "cbsa", gof_omit = "IC|Log",
notes = list('All models include metro-level fixed effects by core-based statistical area (cbsa).'),
title = paste0("Differences-in-Differences Linear Regression Analysis of NMTC in ", "United States")) %>%
group_tt(j = list("Social Vulnerability" = 2:6, "Economic Outcomes" = 7:9))
Social Vulnerability | Economic Outcomes | |||||||
---|---|---|---|---|---|---|---|---|
SES | HHChar | REM | HOUSETRANSPT | OVERALL | Median Income (USD, logged) | Median Home Value (USD, logged) | House Price Index (logged) | |
* p < 0.05, ** p < 0.01, *** p < 0.001 | ||||||||
All models include metro-level fixed effects by core-based statistical area (cbsa). | ||||||||
(Intercept) | 1.39 | 0.79 | -0.13 | 2.62*** | 4.67* | 9.96*** | 11.59*** | 4.87*** |
(0.97) | (0.71) | (0.29) | (0.69) | (1.91) | (0.21) | (0.29) | (0.23) | |
treat | 0.73*** | 0.28*** | 0.14*** | 0.38*** | 1.53*** | -0.14*** | -0.06*** | -0.03* |
(0.03) | (0.02) | (0.01) | (0.02) | (0.07) | (0.01) | (0.01) | (0.01) | |
post | -0.04*** | -0.06*** | 0.00 | -0.02 | -0.13*** | 0.02*** | -0.09*** | 0.40*** |
(0.01) | (0.01) | (0.00) | (0.01) | (0.02) | (0.00) | (0.00) | (0.00) | |
treat × post | -0.19*** | -0.07 | -0.02 | 0.02 | -0.26** | 0.04*** | 0.01 | -0.01 |
(0.05) | (0.03) | (0.01) | (0.03) | (0.09) | (0.01) | (0.01) | (0.02) | |
Num.Obs. | 52344 | 52344 | 52344 | 52344 | 52344 | 52326 | 50618 | 24934 |
R2 | 0.201 | 0.125 | 0.353 | 0.139 | 0.233 | 0.168 | 0.659 | 0.490 |
R2 Adj. | 0.190 | 0.113 | 0.344 | 0.127 | 0.222 | 0.157 | 0.654 | 0.477 |
F | 18.279 | 10.431 | 39.670 | 11.764 | 22.061 | 14.688 | 136.380 | 35.739 |
RMSE | 1.37 | 0.99 | 0.40 | 0.97 | 2.68 | 0.30 | 0.41 | 0.32 |
Interpret National SVI & Economic Models
To begin interpreting our models, we first want to note that all of our models include metro-level fixed effect controls by cbsa (Core-Based Statistical Area) to allow the model to consider relative variation with metro areas and equitably make comparisons.
Next, we want to look at the treat x post
variable to determine if our program had a statistically significant impact. If this variable is statistically significant, than we can deem that tracts that received program dollars performed significantly differently than would be expected according to general trends.
Across our SVI flag models, we can find that the categories that experienced statistically significant changes based on NMTC program enrollment on a national basis were Socioeconomic Status and Overall Social Vulnerability.
If we recall from our chart above, the Socioeconomic Status category consists of measures of poverty, unemployment, housing burdens, educational levels, and lack of health insurance. Our Overall Social Vulnerability considers areas of vulnerability across socioeconomic, household characteristics, racial and ethnic minority status, and housing and transportation access. Thus, these are all areas that the NMTC program hopes to target.
Looking at the SES model:
We find that our average SES Flag Count across census tracts eligible for the NMTC program was 1.39 (intercept) flags in 2010. In 2020 this decreased to 1.35 (intercept + post) flags.
For tracts that received tax credits from the NMTC program, the average SES flag count was 2.12 (intercept + treat) flags in 2010. In 2020, this decreased to 1.89 (intercept + treat + post + treat*post) flags.
Although 1.89 flags in 2020 for tracts in the NMTC program is greater than the average of 1.35 flags in non-treated tracts, the decrease in flag count was greater for tracts enrolled in the NMTC program as indicated by the treat*post coefficient.
Looking at the overall SVI model:
We find that our average total flag count across census tracts eligible for the NMTC program was 4.67 (intercept) flags in 2010. In 2020 this decreased to 4.54 (intercept + post) flags.
For tracts that received tax credits from the NMTC program, the average overall flag count was 6.2 (intercept + treat) flags in 2010. In 2020, this decreased to 5.81 (intercept + treat + post + treat*post) flags.
Although 5.81 flags in 2020 for tracts in the NMTC program is greater than 4.54 flags in non-treated tracts, the decrease in flag count was greater for tracts enrolled in the NMTC program as indicated by the treat*post coefficient.
Finally, we can examine our indicators of Economic Conditions and determine that changes in Median Income were statistically significantly greater in tracts that received NMTC dollars versus those that did not:
- Specifically looking at the
treat x post
coefficient, recall that our economic values are logged so we can read this as an increase of 4% (.04*100) for each 1-unit increase. However, if we want to find the exact numeric calculations of this change, we can utilize theexp()
function to complete our calculations:
Code
# Non-Treatment 2010 (Intercept), Avg Median Income $21,264.67
exp(m6_nmtc_usa$coefficients[1])
(Intercept)
21264.67
Code
(Intercept)
21798.59
[1] "Pct change 2010-2020, non-treated: 2.5108313460778"
Code
(Intercept)
18424.47
Code
(Intercept)
19692.21
[1] "Pct change 2010-2020, treated: 6.88074066716708"
Code
(Intercept)
18424.47
Code
(Intercept)
18887.08
Code
[1] "Pct change 2010-2020, treated counterfactual: 2.51084563083769"
Thus, looking at our calculations here, we can conclude that when we control for metro-level effects, our average Median Income for tracts that did not receive NMTC dollars was $21,264.67 in 2010. This increased to $21,798.59 in 2020, a 2.51% increase income.
When we control for metro-level effects, our NMTC treated tracts had an average Median Income of $18,424.47 in 2010. The average Median Income in these tracts increased to $19,692.21 in 2020. This equates to a percent change of 6.88%. An increase > 4% higher than we would expect if the tracts had followed general trends.
As a counterfactual, we can see that we would have expected the average Median Income to be $18,887.08 if it had increased by 2.5%.
Further, we can look at the percentage increases for our coefficients to confirm our calculations are correct:
Code
# 2.5% Increase in post
(exp(m6_nmtc_usa$coefficients[3]) - 1)*100
post
2.510835
Code
treat:post
4.262861
Visualize National Models
We can visualize these changes with slopegraphs. To begin, let’s look at the coefficients of our three significant models:
Code
# Recall:
# M1 is SES
# Intercept = intercept, the average count in 2010
# Treat = Impact of being in the NMTC program
# Post = Impact of year being 2020
# Treat:Post = Impact of treatment program and year being 2020
m1_nmtc_usa$coefficients[1:3]
(Intercept) treat post
1.38768634 0.72747008 -0.04412369
Code
m1_nmtc_usa$coefficients[length(m1_nmtc_usa$coefficients)]
treat:post
-0.1861891
Code
# Recall:
# M5 is Overall SVI Flag Count
# Intercept = intercept, the average count in 2010
# Treat = Impact of being in the NMTC program
# Post = Impact of year being 2020
# Treat:Post = Impact of treatment program and year being 2020
m5_nmtc_usa$coefficients[1:3]
(Intercept) treat post
4.666958 1.526677 -0.128629
Code
m5_nmtc_usa$coefficients[length(m5_nmtc_usa$coefficients)]
treat:post
-0.2586418
Code
# Recall:
# M6 is the logged Median Income, thus we need to pull the exponents
# Intercept = intercept, the average count in 2010
# Treat = Impact of being in the NMTC program
# Post = Impact of year being 2020
# Treat:Post = Impact of treatment program and year being 2020
exp(m6_nmtc_usa$coefficients[1:3])
(Intercept) treat post
21264.667365 0.866436 1.025108
treat:post
1.042629
Create visualization data frame and plot
SES
Code
status <- c("NMTC Non-Participant",
"NMTC Participant Counterfactual",
"NMTC Participant",
"NMTC Non-Participant",
"NMTC Participant Counterfactual",
"NMTC Participant")
year <- c(2010,
2010,
2010,
2020,
2020,
2020)
outcome <- c(m1_nmtc_usa$coefficients[1],
m1_nmtc_usa$coefficients[1] + m1_nmtc_usa$coefficients[2],
m1_nmtc_usa$coefficients[1] + m1_nmtc_usa$coefficients[2],
m1_nmtc_usa$coefficients[1] + m1_nmtc_usa$coefficients[3],
m1_nmtc_usa$coefficients[1] + m1_nmtc_usa$coefficients[2] + m1_nmtc_usa$coefficients[3],
m1_nmtc_usa$coefficients[1] + m1_nmtc_usa$coefficients[2] + m1_nmtc_usa$coefficients[3] + m1_nmtc_usa$coefficients[length(m1_nmtc_usa$coefficients)])
sviusa_viz_ses_nmtc <- data.frame(status, year, outcome)
sviusa_viz_ses_nmtc$outcome_label <- round(sviusa_viz_ses_nmtc$outcome, 2)
sviusa_viz_ses_nmtc
status year outcome outcome_label
1 NMTC Non-Participant 2010 1.387686 1.39
2 NMTC Participant Counterfactual 2010 2.115156 2.12
3 NMTC Participant 2010 2.115156 2.12
4 NMTC Non-Participant 2020 1.343563 1.34
5 NMTC Participant Counterfactual 2020 2.071033 2.07
6 NMTC Participant 2020 1.884844 1.88
Code
slopegraph_plot(sviusa_viz_ses_nmtc, "NMTC Participant", "NMTC Non-Participant", "Impact of NMTC Program on SVI SES Flag Count", "United States | 2010 - 2020")
The slopegraph for SES SVI flags for the NMTC program indicates that nationally our NMTC Participant Tracts had a notable decrease in socioeconomic social vulnerability flags in 2020 from the expected count of 2.07 for the counterfactual to 1.88 for the actual outcome.
Overall SVI
Code
status <- c("NMTC Non-Participant",
"NMTC Participant Counterfactual",
"NMTC Participant",
"NMTC Non-Participant",
"NMTC Participant Counterfactual",
"NMTC Participant")
year <- c(2010,
2010,
2010,
2020,
2020,
2020)
outcome <- c(m5_nmtc_usa$coefficients[1],
m5_nmtc_usa$coefficients[1] + m5_nmtc_usa$coefficients[2],
m5_nmtc_usa$coefficients[1] + m5_nmtc_usa$coefficients[2],
m5_nmtc_usa$coefficients[1] + m5_nmtc_usa$coefficients[3],
m5_nmtc_usa$coefficients[1] + m5_nmtc_usa$coefficients[2] + m5_nmtc_usa$coefficients[3],
m5_nmtc_usa$coefficients[1] + m5_nmtc_usa$coefficients[2] + m5_nmtc_usa$coefficients[3] + m5_nmtc_usa$coefficients[length(m5_nmtc_usa$coefficients)])
sviusa_viz_overall_nmtc <- data.frame(status, year, outcome)
sviusa_viz_overall_nmtc$outcome_label <- round(sviusa_viz_overall_nmtc$outcome, 2)
sviusa_viz_overall_nmtc
status year outcome outcome_label
1 NMTC Non-Participant 2010 4.666958 4.67
2 NMTC Participant Counterfactual 2010 6.193635 6.19
3 NMTC Participant 2010 6.193635 6.19
4 NMTC Non-Participant 2020 4.538329 4.54
5 NMTC Participant Counterfactual 2020 6.065006 6.07
6 NMTC Participant 2020 5.806365 5.81
Code
slopegraph_plot(sviusa_viz_overall_nmtc, "NMTC Participant", "NMTC Non-Participant", "Impact of NMTC Program on SVI Overall Flag Count", "United States | 2010 - 2020")
The slopegraph for overall SVI flags for the NMTC program indicates that nationally our NMTC Participant Tracts had a notable decrease in total social vulnerability flags in 2020 from the expected count of 6.07 for the counterfactual to 5.81 for the actual outcome.
Median Income
Code
status <- c("NMTC Non-Participant",
"NMTC Participant Counterfactual",
"NMTC Participant",
"NMTC Non-Participant",
"NMTC Participant Counterfactual",
"NMTC Participant")
year <- c(2010,
2010,
2010,
2020,
2020,
2020)
outcome <- c(exp(m6_nmtc_usa$coefficients[1]),
exp(m6_nmtc_usa$coefficients[1])*exp(m6_nmtc_usa$coefficients[2]),
exp(m6_nmtc_usa$coefficients[1])*exp(m6_nmtc_usa$coefficients[2]),
exp(m6_nmtc_usa$coefficients[1])*exp(m6_nmtc_usa$coefficients[3]),
exp(m6_nmtc_usa$coefficients[1])*exp(m6_nmtc_usa$coefficients[2])*exp(m6_nmtc_usa$coefficients[3]),
exp(m6_nmtc_usa$coefficients[1])*exp(m6_nmtc_usa$coefficients[2])*exp(m6_nmtc_usa$coefficients[3])*exp(m6_nmtc_usa$coefficients[length(m6_nmtc_usa$coefficients)])
)
sviusa_viz_medinc_nmtc <- data.frame(status, year, outcome)
### Note that instead of rounding like we did for SVI variables, we will be formatting our outcome as US dollars
sviusa_viz_medinc_nmtc$outcome_label <- scales::dollar_format()(sviusa_viz_medinc_nmtc$outcome)
sviusa_viz_medinc_nmtc
status year outcome outcome_label
1 NMTC Non-Participant 2010 21264.67 $21,264.67
2 NMTC Participant Counterfactual 2010 18424.47 $18,424.47
3 NMTC Participant 2010 18424.47 $18,424.47
4 NMTC Non-Participant 2020 21798.59 $21,798.59
5 NMTC Participant Counterfactual 2020 18887.08 $18,887.08
6 NMTC Participant 2020 19692.21 $19,692.21
Code
slopegraph_plot(sviusa_viz_medinc_nmtc, "NMTC Participant", "NMTC Non-Participant", "Impact of NMTC Program on Average Median Income", "United States | 2010 - 2020")
The slopegraph for Average Median Income for the NMTC program indicates that nationally our NMTC Participant Tracts had a notable increase in 2020 from the expected income of $18,887.08 for the counterfactual to $19,692.21 for the actual outcome.
LIHTC National
Create National Models
Just as we did for the NMTC national data, we now need to create datasets with our SVI variables for socioeconomic status, household characteristics, racial and ethnic minorities, and housing and transportation issues for the LIHTC program:
SVI Model Data
Code
# Create 2010 df, create post variable and set to 0, create year variable and set to 2010
lihtc_did10_usa_svi <- svi_national_lihtc_df %>%
select(GEOID_2010_trt, cbsa, F_THEME1_10, F_THEME2_10, F_THEME3_10, F_THEME4_10, F_TOTAL_10, lihtc_flag) %>%
mutate(post = 0,
year = 2010) %>%
rename("treat" = "lihtc_flag",
"SVI_FLAG_COUNT_SES" = "F_THEME1_10",
"SVI_FLAG_COUNT_HHCHAR" = "F_THEME2_10",
"SVI_FLAG_COUNT_REM" = "F_THEME3_10",
"SVI_FLAG_COUNT_HOUSETRANSPT" = "F_THEME4_10",
"SVI_FLAG_COUNT_OVERALL" = "F_TOTAL_10")
nrow(lihtc_did10_usa_svi)
[1] 3723
Code
lihtc_did10_usa_svi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | SVI_FLAG_COUNT_SES | SVI_FLAG_COUNT_HHCHAR | SVI_FLAG_COUNT_REM | SVI_FLAG_COUNT_HOUSETRANSPT | SVI_FLAG_COUNT_OVERALL | treat | post | year |
---|---|---|---|---|---|---|---|---|---|
01005950700 | Eufaula, AL-GA MicroSA | 2 | 3 | 0 | 1 | 6 | 0 | 0 | 2010 |
01011952100 | NA | 2 | 2 | 1 | 1 | 6 | 0 | 0 | 2010 |
01015000300 | Anniston-Oxford, AL MSA | 4 | 2 | 1 | 2 | 9 | 0 | 0 | 2010 |
01015000500 | Anniston-Oxford, AL MSA | 4 | 2 | 1 | 1 | 8 | 0 | 0 | 2010 |
01015000600 | Anniston-Oxford, AL MSA | 4 | 2 | 1 | 4 | 11 | 0 | 0 | 2010 |
01015002101 | Anniston-Oxford, AL MSA | 3 | 1 | 0 | 2 | 6 | 0 | 0 | 2010 |
Code
# Create 2020 df, create post variable and set to 1, create year variable and set to 2020
lihtc_did20_usa_svi <- svi_national_lihtc_df %>%
select(GEOID_2010_trt, cbsa, F_THEME1_20, F_THEME2_20, F_THEME3_20, F_THEME4_20, F_TOTAL_20, lihtc_flag) %>%
mutate(post = 1,
year = 2020) %>%
rename("treat" = "lihtc_flag",
"SVI_FLAG_COUNT_SES" = "F_THEME1_20",
"SVI_FLAG_COUNT_HHCHAR" = "F_THEME2_20",
"SVI_FLAG_COUNT_REM" = "F_THEME3_20",
"SVI_FLAG_COUNT_HOUSETRANSPT" = "F_THEME4_20",
"SVI_FLAG_COUNT_OVERALL" = "F_TOTAL_20"
)
nrow(lihtc_did20_usa_svi)
[1] 3723
Code
lihtc_did20_usa_svi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | SVI_FLAG_COUNT_SES | SVI_FLAG_COUNT_HHCHAR | SVI_FLAG_COUNT_REM | SVI_FLAG_COUNT_HOUSETRANSPT | SVI_FLAG_COUNT_OVERALL | treat | post | year |
---|---|---|---|---|---|---|---|---|---|
01005950700 | Eufaula, AL-GA MicroSA | 2 | 3 | 0 | 2 | 7 | 0 | 1 | 2020 |
01011952100 | NA | 4 | 2 | 1 | 1 | 8 | 0 | 1 | 2020 |
01015000300 | Anniston-Oxford, AL MSA | 4 | 2 | 1 | 2 | 9 | 0 | 1 | 2020 |
01015000500 | Anniston-Oxford, AL MSA | 4 | 2 | 1 | 1 | 8 | 0 | 1 | 2020 |
01015000600 | Anniston-Oxford, AL MSA | 4 | 2 | 1 | 2 | 9 | 0 | 1 | 2020 |
01015002101 | Anniston-Oxford, AL MSA | 3 | 1 | 0 | 2 | 6 | 0 | 1 | 2020 |
Join 2010 and 2020 data into one df
View top of data frame
Code
lihtc_diff_in_diff_usa_svi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | SVI_FLAG_COUNT_SES | SVI_FLAG_COUNT_HHCHAR | SVI_FLAG_COUNT_REM | SVI_FLAG_COUNT_HOUSETRANSPT | SVI_FLAG_COUNT_OVERALL | treat | post | year |
---|---|---|---|---|---|---|---|---|---|
01005950700 | Eufaula, AL-GA MicroSA | 2 | 3 | 0 | 1 | 6 | 0 | 0 | 2010 |
01011952100 | NA | 2 | 2 | 1 | 1 | 6 | 0 | 0 | 2010 |
01015000300 | Anniston-Oxford, AL MSA | 4 | 2 | 1 | 2 | 9 | 0 | 0 | 2010 |
01015000500 | Anniston-Oxford, AL MSA | 4 | 2 | 1 | 1 | 8 | 0 | 0 | 2010 |
01015000600 | Anniston-Oxford, AL MSA | 4 | 2 | 1 | 4 | 11 | 0 | 0 | 2010 |
01015002101 | Anniston-Oxford, AL MSA | 3 | 1 | 0 | 2 | 6 | 0 | 0 | 2010 |
View bottom of data frame
Code
lihtc_diff_in_diff_usa_svi %>% tail() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | SVI_FLAG_COUNT_SES | SVI_FLAG_COUNT_HHCHAR | SVI_FLAG_COUNT_REM | SVI_FLAG_COUNT_HOUSETRANSPT | SVI_FLAG_COUNT_OVERALL | treat | post | year |
---|---|---|---|---|---|---|---|---|---|
55079006500 | Milwaukee-Racine-Waukesha, WI CSA | 4 | 3 | 1 | 2 | 10 | 1 | 1 | 2020 |
55079008400 | Milwaukee-Racine-Waukesha, WI CSA | 4 | 3 | 1 | 1 | 9 | 1 | 1 | 2020 |
55079012200 | Milwaukee-Racine-Waukesha, WI CSA | 3 | 3 | 1 | 2 | 9 | 1 | 1 | 2020 |
55079013400 | Milwaukee-Racine-Waukesha, WI CSA | 2 | 2 | 1 | 2 | 7 | 1 | 1 | 2020 |
55079017000 | Milwaukee-Racine-Waukesha, WI CSA | 4 | 3 | 1 | 0 | 8 | 1 | 1 | 2020 |
56013940100 | Riverton, WY MicroSA | 3 | 3 | 1 | 2 | 9 | 1 | 1 | 2020 |
Economic Outcomes Models Data
Next, we can create a set of data with our variables to measure the economic outcomes of house price index, median home value, and median income:
Create dataset for median income
Code
# Create 2010 df, create post variable and set to 0, create year variable and set to 2010, remove any tracts that don't have data for 2010 and 2019
lihtc_did10_usa_inc <- svi_national_lihtc_df %>%
filter(!is.na(Median_Income_10adj_log)) %>% filter(!is.na(Median_Income_19_log)) %>%
select(GEOID_2010_trt, cbsa, Median_Income_10adj_log, lihtc_flag) %>%
mutate(post = 0,
year = 2010) %>%
rename("treat" = "lihtc_flag",
"MEDIAN_INCOME" = "Median_Income_10adj_log")
nrow(lihtc_did10_usa_inc)
[1] 3717
Code
lihtc_did10_usa_inc %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_INCOME | treat | post | year |
---|---|---|---|---|---|
01005950700 | Eufaula, AL-GA MicroSA | 9.781214 | 0 | 0 | 2010 |
01011952100 | NA | 10.039531 | 0 | 0 | 2010 |
01015000300 | Anniston-Oxford, AL MSA | 9.558513 | 0 | 0 | 2010 |
01015000500 | Anniston-Oxford, AL MSA | 9.519347 | 0 | 0 | 2010 |
01015000600 | Anniston-Oxford, AL MSA | 9.450245 | 0 | 0 | 2010 |
01015002101 | Anniston-Oxford, AL MSA | 8.659193 | 0 | 0 | 2010 |
Code
# Create 2019 df, create post variable and set to 1, create year variable and set to 2019, remove any tracts that don't have data for 2010 and 2019
lihtc_did19_usa_inc <- svi_national_lihtc_df %>%
filter(!is.na(Median_Income_10adj_log)) %>% filter(!is.na(Median_Income_19_log)) %>%
select(GEOID_2010_trt, cbsa, Median_Income_19_log, lihtc_flag) %>%
mutate(post = 1,
year = 2019) %>%
rename("treat" = "lihtc_flag",
"MEDIAN_INCOME" = "Median_Income_19_log")
nrow(lihtc_did19_usa_inc)
[1] 3717
Code
lihtc_did19_usa_inc %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_INCOME | treat | post | year |
---|---|---|---|---|---|
01005950700 | Eufaula, AL-GA MicroSA | 9.755220 | 0 | 1 | 2019 |
01011952100 | NA | 9.830809 | 0 | 1 | 2019 |
01015000300 | Anniston-Oxford, AL MSA | 9.814602 | 0 | 1 | 2019 |
01015000500 | Anniston-Oxford, AL MSA | 9.515690 | 0 | 1 | 2019 |
01015000600 | Anniston-Oxford, AL MSA | 9.549381 | 0 | 1 | 2019 |
01015002101 | Anniston-Oxford, AL MSA | 9.139059 | 0 | 1 | 2019 |
Join 2010 and 2019 data into one df for income
View top of data frame for income
Code
lihtc_diff_in_diff_usa_inc %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_INCOME | treat | post | year |
---|---|---|---|---|---|
01005950700 | Eufaula, AL-GA MicroSA | 9.781214 | 0 | 0 | 2010 |
01011952100 | NA | 10.039531 | 0 | 0 | 2010 |
01015000300 | Anniston-Oxford, AL MSA | 9.558513 | 0 | 0 | 2010 |
01015000500 | Anniston-Oxford, AL MSA | 9.519347 | 0 | 0 | 2010 |
01015000600 | Anniston-Oxford, AL MSA | 9.450245 | 0 | 0 | 2010 |
01015002101 | Anniston-Oxford, AL MSA | 8.659193 | 0 | 0 | 2010 |
View bottom of data frame income
Code
lihtc_diff_in_diff_usa_inc %>% tail() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_INCOME | treat | post | year |
---|---|---|---|---|---|
55079006500 | Milwaukee-Racine-Waukesha, WI CSA | 9.617604 | 1 | 1 | 2019 |
55079008400 | Milwaukee-Racine-Waukesha, WI CSA | 9.482960 | 1 | 1 | 2019 |
55079012200 | Milwaukee-Racine-Waukesha, WI CSA | 9.766006 | 1 | 1 | 2019 |
55079013400 | Milwaukee-Racine-Waukesha, WI CSA | 9.731334 | 1 | 1 | 2019 |
55079017000 | Milwaukee-Racine-Waukesha, WI CSA | 9.928668 | 1 | 1 | 2019 |
56013940100 | Riverton, WY MicroSA | 9.870964 | 1 | 1 | 2019 |
Create dataset for home value
Code
lihtc_did10_usa_mhv <- svi_national_lihtc_df %>%
filter(!is.na(Median_Home_Value_10adj_log)) %>% filter(!is.na(Median_Home_Value_19_log)) %>%
select(GEOID_2010_trt, cbsa, Median_Home_Value_10adj_log, lihtc_flag) %>%
mutate(post = 0,
year = 2010) %>%
rename("treat" = "lihtc_flag",
"MEDIAN_HOME_VALUE" = "Median_Home_Value_10adj_log")
nrow(lihtc_did10_usa_mhv)
[1] 3467
Code
lihtc_did10_usa_mhv %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_HOME_VALUE | treat | post | year |
---|---|---|---|---|---|
01005950700 | Eufaula, AL-GA MicroSA | 11.95177 | 0 | 0 | 2010 |
01011952100 | NA | 11.12006 | 0 | 0 | 2010 |
01015000300 | Anniston-Oxford, AL MSA | 10.78668 | 0 | 0 | 2010 |
01015000500 | Anniston-Oxford, AL MSA | 10.71460 | 0 | 0 | 2010 |
01015000600 | Anniston-Oxford, AL MSA | 10.92738 | 0 | 0 | 2010 |
01015002101 | Anniston-Oxford, AL MSA | 11.57796 | 0 | 0 | 2010 |
Code
lihtc_did19_usa_mhv <- svi_national_lihtc_df %>%
filter(!is.na(Median_Home_Value_10adj_log)) %>% filter(!is.na(Median_Home_Value_19_log)) %>%
select(GEOID_2010_trt, cbsa, Median_Home_Value_19_log, lihtc_flag) %>%
mutate(post = 1,
year = 2019) %>%
rename("treat" = "lihtc_flag",
"MEDIAN_HOME_VALUE" = "Median_Home_Value_19_log")
nrow(lihtc_did19_usa_mhv)
[1] 3467
Code
lihtc_did19_usa_mhv %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_HOME_VALUE | treat | post | year |
---|---|---|---|---|---|
01005950700 | Eufaula, AL-GA MicroSA | 11.83138 | 0 | 1 | 2019 |
01011952100 | NA | 11.11095 | 0 | 1 | 2019 |
01015000300 | Anniston-Oxford, AL MSA | 10.84545 | 0 | 1 | 2019 |
01015000500 | Anniston-Oxford, AL MSA | 10.56618 | 0 | 1 | 2019 |
01015000600 | Anniston-Oxford, AL MSA | 10.67591 | 0 | 1 | 2019 |
01015002101 | Anniston-Oxford, AL MSA | 11.94146 | 0 | 1 | 2019 |
Join 2010 and 2019 data into one df for home value
View top of data frame for home value
Code
lihtc_diff_in_diff_usa_mhv %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_HOME_VALUE | treat | post | year |
---|---|---|---|---|---|
01005950700 | Eufaula, AL-GA MicroSA | 11.95177 | 0 | 0 | 2010 |
01011952100 | NA | 11.12006 | 0 | 0 | 2010 |
01015000300 | Anniston-Oxford, AL MSA | 10.78668 | 0 | 0 | 2010 |
01015000500 | Anniston-Oxford, AL MSA | 10.71460 | 0 | 0 | 2010 |
01015000600 | Anniston-Oxford, AL MSA | 10.92738 | 0 | 0 | 2010 |
01015002101 | Anniston-Oxford, AL MSA | 11.57796 | 0 | 0 | 2010 |
View bottom of data frame for home value
Code
lihtc_diff_in_diff_usa_mhv %>% tail() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_HOME_VALUE | treat | post | year |
---|---|---|---|---|---|
55079006500 | Milwaukee-Racine-Waukesha, WI CSA | 10.67360 | 1 | 1 | 2019 |
55079008400 | Milwaukee-Racine-Waukesha, WI CSA | 10.54534 | 1 | 1 | 2019 |
55079012200 | Milwaukee-Racine-Waukesha, WI CSA | 11.30958 | 1 | 1 | 2019 |
55079013400 | Milwaukee-Racine-Waukesha, WI CSA | 11.26575 | 1 | 1 | 2019 |
55079017000 | Milwaukee-Racine-Waukesha, WI CSA | 11.29228 | 1 | 1 | 2019 |
56013940100 | Riverton, WY MicroSA | 11.62893 | 1 | 1 | 2019 |
Create data set for house price index
Code
lihtc_did10_usa_hpi <- svi_national_lihtc_df %>%
filter(!is.na(housing_price_index10_log)) %>% filter(!is.na(housing_price_index20_log)) %>%
select(GEOID_2010_trt, cbsa, housing_price_index10_log, lihtc_flag) %>%
mutate(post = 0,
year = 2010) %>%
rename("treat" = "lihtc_flag",
"HOUSE_PRICE_INDEX" = "housing_price_index10_log")
nrow(lihtc_did10_usa_hpi)
[1] 831
Code
lihtc_did10_usa_hpi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | HOUSE_PRICE_INDEX | treat | post | year |
---|---|---|---|---|---|
01005950700 | Eufaula, AL-GA MicroSA | 4.875579 | 0 | 0 | 2010 |
01015002300 | Anniston-Oxford, AL MSA | 4.791982 | 0 | 0 | 2010 |
01031010500 | Dothan-Enterprise-Ozark, AL CSA | 4.858882 | 0 | 0 | 2010 |
01031011000 | Dothan-Enterprise-Ozark, AL CSA | 4.944567 | 0 | 0 | 2010 |
01069041500 | Dothan-Enterprise-Ozark, AL CSA | 4.820201 | 0 | 0 | 2010 |
01077010200 | Florence-Muscle Shoals, AL MSA | 4.855851 | 0 | 0 | 2010 |
Code
lihtc_did20_usa_hpi <- svi_national_lihtc_df %>%
filter(!is.na(housing_price_index10_log)) %>% filter(!is.na(housing_price_index20_log)) %>%
select(GEOID_2010_trt, cbsa, housing_price_index20_log, lihtc_flag) %>%
mutate(post = 1,
year = 2020) %>%
rename("treat" = "lihtc_flag",
"HOUSE_PRICE_INDEX" = "housing_price_index20_log")
nrow(lihtc_did20_usa_hpi)
[1] 831
Code
lihtc_did20_usa_hpi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | HOUSE_PRICE_INDEX | treat | post | year |
---|---|---|---|---|---|
01005950700 | Eufaula, AL-GA MicroSA | 4.909783 | 0 | 1 | 2020 |
01015002300 | Anniston-Oxford, AL MSA | 4.881437 | 0 | 1 | 2020 |
01031010500 | Dothan-Enterprise-Ozark, AL CSA | 4.921877 | 0 | 1 | 2020 |
01031011000 | Dothan-Enterprise-Ozark, AL CSA | 5.022696 | 0 | 1 | 2020 |
01069041500 | Dothan-Enterprise-Ozark, AL CSA | 4.901490 | 0 | 1 | 2020 |
01077010200 | Florence-Muscle Shoals, AL MSA | 5.037147 | 0 | 1 | 2020 |
Join 2010 and 2019 data into one df for house price index
View top of data frame for house price index
Code
lihtc_diff_in_diff_usa_hpi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | HOUSE_PRICE_INDEX | treat | post | year |
---|---|---|---|---|---|
01005950700 | Eufaula, AL-GA MicroSA | 4.875579 | 0 | 0 | 2010 |
01015002300 | Anniston-Oxford, AL MSA | 4.791982 | 0 | 0 | 2010 |
01031010500 | Dothan-Enterprise-Ozark, AL CSA | 4.858882 | 0 | 0 | 2010 |
01031011000 | Dothan-Enterprise-Ozark, AL CSA | 4.944567 | 0 | 0 | 2010 |
01069041500 | Dothan-Enterprise-Ozark, AL CSA | 4.820201 | 0 | 0 | 2010 |
01077010200 | Florence-Muscle Shoals, AL MSA | 4.855851 | 0 | 0 | 2010 |
View bottom of data frame for house price index
Code
lihtc_diff_in_diff_usa_hpi %>% tail() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | HOUSE_PRICE_INDEX | treat | post | year |
---|---|---|---|---|---|
53037975500 | Ellensburg, WA MicroSA | 5.743163 | 1 | 1 | 2020 |
53041970900 | Centralia, WA MicroSA | 5.605912 | 1 | 1 | 2020 |
54097966800 | NA | 4.975561 | 1 | 1 | 2020 |
55025001200 | Madison-Baraboo, WI CSA | 6.432554 | 1 | 1 | 2020 |
55035001200 | Eau Claire-Menomonie, WI CSA | 5.901485 | 1 | 1 | 2020 |
55079001800 | Milwaukee-Racine-Waukesha, WI CSA | 5.077546 | 1 | 1 | 2020 |
LIHTC National Model
Now that we have our datasets created, we can craft our models. Remember that in R we can use the lm()
function for linear models. We can then format the output of models using packages like modelsummary
to create easy-to-read output tables (note: unlike stargazer and the base lm() output, your regression models will not print directly in your .RMD file, you will need to view the output in the ‘viewer’ window in RStudio):
Code
# SVI & Economic Models
m1_lihtc_usa <- lm( SVI_FLAG_COUNT_SES ~ treat + post + treat*post + cbsa, data=lihtc_diff_in_diff_usa_svi )
m2_lihtc_usa <- lm( SVI_FLAG_COUNT_HHCHAR ~ treat + post + treat*post + cbsa, data=lihtc_diff_in_diff_usa_svi )
m3_lihtc_usa <- lm( SVI_FLAG_COUNT_REM ~ treat + post + treat*post + cbsa, data=lihtc_diff_in_diff_usa_svi )
m4_lihtc_usa <- lm( SVI_FLAG_COUNT_HOUSETRANSPT ~ treat + post + treat*post + cbsa, data=lihtc_diff_in_diff_usa_svi )
m5_lihtc_usa <- lm( SVI_FLAG_COUNT_OVERALL ~ treat + post + treat*post + cbsa, data=lihtc_diff_in_diff_usa_svi)
m6_lihtc_usa <- lm( MEDIAN_INCOME ~ treat + post + treat*post + cbsa, data=lihtc_diff_in_diff_usa_inc )
m7_lihtc_usa <- lm( MEDIAN_HOME_VALUE ~ treat + post + treat*post + cbsa, data=lihtc_diff_in_diff_usa_mhv )
m8_lihtc_usa <- lm( HOUSE_PRICE_INDEX ~ treat + post + treat*post + cbsa, data=lihtc_diff_in_diff_usa_hpi )
# Add all models to a list
models <- list(
"SES" = m1_lihtc_usa,
"HHChar" = m2_lihtc_usa,
"REM" = m3_lihtc_usa,
"HOUSETRANSPT" = m4_lihtc_usa,
"OVERALL" = m5_lihtc_usa,
"Median Income (USD, logged)" = m6_lihtc_usa,
"Median Home Value (USD, logged)" = m7_lihtc_usa,
"House Price Index (logged)" = m8_lihtc_usa
)
# Display model results
modelsummary(models, fmt = 2, stars = c('*' = .05, '**' = .01, '***' = .001), coef_omit = "cbsa", gof_omit = "IC|Log",
notes = list('All models include metro-level fixed effects by core-based statistical area (cbsa).'),
title = paste0("Differences-in-Differences Linear Regression Analysis of LIHTC in ", "United States")) %>%
group_tt(j = list("Social Vulnerability" = 2:6, "Economic Outcomes" = 7:9))
Social Vulnerability | Economic Outcomes | |||||||
---|---|---|---|---|---|---|---|---|
SES | HHChar | REM | HOUSETRANSPT | OVERALL | Median Income (USD, logged) | Median Home Value (USD, logged) | House Price Index (logged) | |
* p < 0.05, ** p < 0.01, *** p < 0.001 | ||||||||
All models include metro-level fixed effects by core-based statistical area (cbsa). | ||||||||
(Intercept) | 3.06*** | 3.44*** | -0.02 | 3.83*** | 10.31*** | 9.83*** | 11.69*** | 4.94*** |
(0.81) | (0.69) | (0.26) | (0.63) | (1.53) | (0.25) | (0.35) | (0.27) | |
treat | 0.06 | 0.16*** | 0.05** | 0.20*** | 0.47*** | 0.02 | 0.02 | -0.04 |
(0.06) | (0.05) | (0.02) | (0.04) | (0.11) | (0.02) | (0.03) | (0.04) | |
post | -0.21*** | -0.16*** | -0.03** | -0.06** | -0.45*** | 0.06*** | -0.12*** | 0.52*** |
(0.03) | (0.03) | (0.01) | (0.02) | (0.06) | (0.01) | (0.01) | (0.02) | |
treat × post | -0.02 | -0.04 | -0.03 | 0.00 | -0.10 | 0.02 | 0.06 | 0.04 |
(0.08) | (0.07) | (0.03) | (0.06) | (0.15) | (0.02) | (0.03) | (0.05) | |
Num.Obs. | 7126 | 7126 | 7126 | 7126 | 7126 | 7118 | 6618 | 1638 |
R2 | 0.209 | 0.235 | 0.368 | 0.197 | 0.272 | 0.275 | 0.692 | 0.494 |
R2 Adj. | 0.167 | 0.195 | 0.335 | 0.155 | 0.234 | 0.237 | 0.674 | 0.431 |
F | 5.037 | 5.848 | 11.107 | 4.677 | 7.129 | 7.219 | 39.908 | 7.894 |
RMSE | 1.11 | 0.95 | 0.36 | 0.87 | 2.11 | 0.34 | 0.48 | 0.36 |
Interpret National SVI & Economic Models
Once again, we first want to note that all of our models include metro-level fixed effect controls by cbsa (Core-Based Statistical Area) to allow the model to consider relative variation with metro areas and equitably make comparisons.
Next, we want to look at the treat x post
variable to determine if our program had a statistically significant impact. If this variable is statistically significant, than we can deem that tracts that received program dollars performed significantly differently than would be expected according to general trends.
In the case of the LIHTC program we can see that there are not statistically significant changes in social vulnerability or economic outcomes on a national basis.
Thus, although we cannot conclude that the program had a measurable impact on our SVI and economic outcomes, we can conclude that our tracts that received LIHTC dollars were statistically more vulnerable based on Household Characteristics, Racial and Ethnic diversity, Housing and Transportation, and Overall Social Vulnerability.
Since the LIHTC program focuses on increasing availability of housing for low income individuals in a variety of communities, it is possible that it is effective at accomplishing this goal. However, we would need to conduct further research and examine different variables to explore this further.
Visualize National Models
Since we do not have any statistically significant results, we do not have changes to visualize.
NMTC Divisional
Create Divisional Models
Now we can repeat our analysis and zone in on our division-specific data:
Again, we can create datasets with our SVI variables for socioeconomic status, household characteristics, racial and ethnic minorities, and housing and transportation issues:
SVI Model Data
Code
# Create 2010 df, create post variable and set to 0, create year variable and set to 2010
nmtc_did10_div_svi <- svi_divisional_nmtc_df %>%
select(GEOID_2010_trt, cbsa, F_THEME1_10, F_THEME2_10, F_THEME3_10, F_THEME4_10, F_TOTAL_10, nmtc_flag) %>%
mutate(post = 0,
year = 2010) %>%
rename("treat" = "nmtc_flag",
"SVI_FLAG_COUNT_SES" = "F_THEME1_10",
"SVI_FLAG_COUNT_HHCHAR" = "F_THEME2_10",
"SVI_FLAG_COUNT_REM" = "F_THEME3_10",
"SVI_FLAG_COUNT_HOUSETRANSPT" = "F_THEME4_10",
"SVI_FLAG_COUNT_OVERALL" = "F_TOTAL_10")
nrow(nmtc_did10_div_svi)
[1] 3704
Code
nmtc_did10_div_svi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | SVI_FLAG_COUNT_SES | SVI_FLAG_COUNT_HHCHAR | SVI_FLAG_COUNT_REM | SVI_FLAG_COUNT_HOUSETRANSPT | SVI_FLAG_COUNT_OVERALL | treat | post | year |
---|---|---|---|---|---|---|---|---|---|
34001000100 | Atlantic City, NJ MSA | 5 | 3 | 1 | 1 | 10 | 0 | 0 | 2010 |
34001000200 | Atlantic City, NJ MSA | 1 | 3 | 0 | 1 | 5 | 0 | 0 | 2010 |
34001000300 | Atlantic City, NJ MSA | 5 | 1 | 1 | 3 | 10 | 0 | 0 | 2010 |
34001000500 | Atlantic City, NJ MSA | 4 | 3 | 1 | 2 | 10 | 0 | 0 | 2010 |
34001001100 | Atlantic City, NJ MSA | 4 | 2 | 1 | 2 | 9 | 0 | 0 | 2010 |
34001001300 | Atlantic City, NJ MSA | 4 | 1 | 1 | 0 | 6 | 0 | 0 | 2010 |
Code
# Create 2020 df, create post variable and set to 1, create year variable and set to 2020
nmtc_did20_div_svi <- svi_divisional_nmtc_df %>%
select(GEOID_2010_trt, cbsa, F_THEME1_20, F_THEME2_20, F_THEME3_20, F_THEME4_20, F_TOTAL_20, nmtc_flag) %>%
mutate(post = 1,
year = 2020) %>%
rename("treat" = "nmtc_flag",
"SVI_FLAG_COUNT_SES" = "F_THEME1_20",
"SVI_FLAG_COUNT_HHCHAR" = "F_THEME2_20",
"SVI_FLAG_COUNT_REM" = "F_THEME3_20",
"SVI_FLAG_COUNT_HOUSETRANSPT" = "F_THEME4_20",
"SVI_FLAG_COUNT_OVERALL" = "F_TOTAL_20"
)
nrow(nmtc_did20_div_svi)
[1] 3704
Code
nmtc_did20_div_svi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | SVI_FLAG_COUNT_SES | SVI_FLAG_COUNT_HHCHAR | SVI_FLAG_COUNT_REM | SVI_FLAG_COUNT_HOUSETRANSPT | SVI_FLAG_COUNT_OVERALL | treat | post | year |
---|---|---|---|---|---|---|---|---|---|
34001000100 | Atlantic City, NJ MSA | 5 | 2 | 1 | 2 | 10 | 0 | 1 | 2020 |
34001000200 | Atlantic City, NJ MSA | 4 | 3 | 1 | 2 | 10 | 0 | 1 | 2020 |
34001000300 | Atlantic City, NJ MSA | 5 | 3 | 1 | 2 | 11 | 0 | 1 | 2020 |
34001000500 | Atlantic City, NJ MSA | 4 | 2 | 1 | 2 | 9 | 0 | 1 | 2020 |
34001001100 | Atlantic City, NJ MSA | 4 | 2 | 1 | 2 | 9 | 0 | 1 | 2020 |
34001001300 | Atlantic City, NJ MSA | 3 | 2 | 1 | 3 | 9 | 0 | 1 | 2020 |
Join 2010 and 2020 data into one df
View top of data frame
Code
nmtc_diff_in_diff_div_svi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | SVI_FLAG_COUNT_SES | SVI_FLAG_COUNT_HHCHAR | SVI_FLAG_COUNT_REM | SVI_FLAG_COUNT_HOUSETRANSPT | SVI_FLAG_COUNT_OVERALL | treat | post | year |
---|---|---|---|---|---|---|---|---|---|
34001000100 | Atlantic City, NJ MSA | 5 | 3 | 1 | 1 | 10 | 0 | 0 | 2010 |
34001000200 | Atlantic City, NJ MSA | 1 | 3 | 0 | 1 | 5 | 0 | 0 | 2010 |
34001000300 | Atlantic City, NJ MSA | 5 | 1 | 1 | 3 | 10 | 0 | 0 | 2010 |
34001000500 | Atlantic City, NJ MSA | 4 | 3 | 1 | 2 | 10 | 0 | 0 | 2010 |
34001001100 | Atlantic City, NJ MSA | 4 | 2 | 1 | 2 | 9 | 0 | 0 | 2010 |
34001001300 | Atlantic City, NJ MSA | 4 | 1 | 1 | 0 | 6 | 0 | 0 | 2010 |
View bottom of data frame
Code
nmtc_diff_in_diff_div_svi %>% tail() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | SVI_FLAG_COUNT_SES | SVI_FLAG_COUNT_HHCHAR | SVI_FLAG_COUNT_REM | SVI_FLAG_COUNT_HOUSETRANSPT | SVI_FLAG_COUNT_OVERALL | treat | post | year |
---|---|---|---|---|---|---|---|---|---|
42101038200 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 2 | 4 | 0 | 2 | 8 | 1 | 1 | 2020 |
42101038900 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 3 | 2 | 1 | 2 | 8 | 1 | 1 | 2020 |
42125704100 | Pittsburgh-New Castle, PA CSA | 3 | 1 | 0 | 2 | 6 | 1 | 1 | 2020 |
42129800700 | Pittsburgh-New Castle, PA CSA | 2 | 2 | 0 | 2 | 6 | 1 | 1 | 2020 |
42133000100 | York-Hanover-Gettysburg, PA CSA | 5 | 2 | 0 | 2 | 9 | 1 | 1 | 2020 |
42133001600 | York-Hanover-Gettysburg, PA CSA | 5 | 3 | 0 | 3 | 11 | 1 | 1 | 2020 |
Economic Outcomes Models Data
Next, we can create a set of data with our variables to measure the economic outcomes of house price index, median home value, and median income:
Create dataset for median income
Code
# Create 2010 df, create post variable and set to 0, create year variable and set to 2010, remove any tracts that don't have data for 2010 and 2019
nmtc_did10_div_inc <- svi_divisional_nmtc_df %>%
filter(!is.na(Median_Income_10adj_log)) %>% filter(!is.na(Median_Income_19_log)) %>%
select(GEOID_2010_trt, cbsa, Median_Income_10adj_log, nmtc_flag) %>%
mutate(post = 0,
year = 2010) %>%
rename("treat" = "nmtc_flag",
"MEDIAN_INCOME" = "Median_Income_10adj_log")
nrow(nmtc_did10_div_inc)
[1] 3703
Code
nmtc_did10_div_inc %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_INCOME | treat | post | year |
---|---|---|---|---|---|
34001000100 | Atlantic City, NJ MSA | 10.227582 | 0 | 0 | 2010 |
34001000200 | Atlantic City, NJ MSA | 10.342186 | 0 | 0 | 2010 |
34001000300 | Atlantic City, NJ MSA | 10.102838 | 0 | 0 | 2010 |
34001000500 | Atlantic City, NJ MSA | 9.906130 | 0 | 0 | 2010 |
34001001100 | Atlantic City, NJ MSA | 9.829264 | 0 | 0 | 2010 |
34001001300 | Atlantic City, NJ MSA | 10.535691 | 0 | 0 | 2010 |
Code
# Create 2019 df, create post variable and set to 1, create year variable and set to 2019, remove any tracts that don't have data for 2010 and 2019
nmtc_did19_div_inc <- svi_divisional_nmtc_df %>%
filter(!is.na(Median_Income_10adj_log)) %>% filter(!is.na(Median_Income_19_log)) %>%
select(GEOID_2010_trt, cbsa, Median_Income_19_log, nmtc_flag) %>%
mutate(post = 1,
year = 2019) %>%
rename("treat" = "nmtc_flag",
"MEDIAN_INCOME" = "Median_Income_19_log")
nrow(nmtc_did19_div_inc)
[1] 3703
Code
nmtc_did19_div_inc %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_INCOME | treat | post | year |
---|---|---|---|---|---|
34001000100 | Atlantic City, NJ MSA | 9.874316 | 0 | 1 | 2019 |
34001000200 | Atlantic City, NJ MSA | 10.155374 | 0 | 1 | 2019 |
34001000300 | Atlantic City, NJ MSA | 9.874059 | 0 | 1 | 2019 |
34001000500 | Atlantic City, NJ MSA | 9.985067 | 0 | 1 | 2019 |
34001001100 | Atlantic City, NJ MSA | 9.642253 | 0 | 1 | 2019 |
34001001300 | Atlantic City, NJ MSA | 10.076306 | 0 | 1 | 2019 |
Join 2010 and 2019 data into one df for income
View top of data frame for income
Code
nmtc_diff_in_diff_div_inc %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_INCOME | treat | post | year |
---|---|---|---|---|---|
34001000100 | Atlantic City, NJ MSA | 10.227582 | 0 | 0 | 2010 |
34001000200 | Atlantic City, NJ MSA | 10.342186 | 0 | 0 | 2010 |
34001000300 | Atlantic City, NJ MSA | 10.102838 | 0 | 0 | 2010 |
34001000500 | Atlantic City, NJ MSA | 9.906130 | 0 | 0 | 2010 |
34001001100 | Atlantic City, NJ MSA | 9.829264 | 0 | 0 | 2010 |
34001001300 | Atlantic City, NJ MSA | 10.535691 | 0 | 0 | 2010 |
View bottom of data frame income
Code
nmtc_diff_in_diff_div_inc %>% tail() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_INCOME | treat | post | year |
---|---|---|---|---|---|
42101038200 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 9.772866 | 1 | 1 | 2019 |
42101038900 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 9.836065 | 1 | 1 | 2019 |
42125704100 | Pittsburgh-New Castle, PA CSA | 9.102866 | 1 | 1 | 2019 |
42129800700 | Pittsburgh-New Castle, PA CSA | 9.652523 | 1 | 1 | 2019 |
42133000100 | York-Hanover-Gettysburg, PA CSA | 9.886290 | 1 | 1 | 2019 |
42133001600 | York-Hanover-Gettysburg, PA CSA | 9.747185 | 1 | 1 | 2019 |
Create dataset for home value
Code
nmtc_did10_div_mhv <- svi_divisional_nmtc_df %>%
filter(!is.na(Median_Home_Value_10adj_log)) %>% filter(!is.na(Median_Home_Value_19_log)) %>%
select(GEOID_2010_trt, cbsa, Median_Home_Value_10adj_log, nmtc_flag) %>%
mutate(post = 0,
year = 2010) %>%
rename("treat" = "nmtc_flag",
"MEDIAN_HOME_VALUE" = "Median_Home_Value_10adj_log")
nrow(nmtc_did10_div_mhv)
[1] 3479
Code
nmtc_did10_div_mhv %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_HOME_VALUE | treat | post | year |
---|---|---|---|---|---|
34001000100 | Atlantic City, NJ MSA | 12.48464 | 0 | 0 | 2010 |
34001000200 | Atlantic City, NJ MSA | 12.82575 | 0 | 0 | 2010 |
34001000300 | Atlantic City, NJ MSA | 12.57963 | 0 | 0 | 2010 |
34001000500 | Atlantic City, NJ MSA | 12.33938 | 0 | 0 | 2010 |
34001001100 | Atlantic City, NJ MSA | 12.53054 | 0 | 0 | 2010 |
34001001300 | Atlantic City, NJ MSA | 12.51021 | 0 | 0 | 2010 |
Code
nmtc_did19_div_mhv <- svi_divisional_nmtc_df %>%
filter(!is.na(Median_Home_Value_10adj_log)) %>% filter(!is.na(Median_Home_Value_19_log)) %>%
select(GEOID_2010_trt, cbsa, Median_Home_Value_19_log, nmtc_flag) %>%
mutate(post = 1,
year = 2019) %>%
rename("treat" = "nmtc_flag",
"MEDIAN_HOME_VALUE" = "Median_Home_Value_19_log")
nrow(nmtc_did19_div_mhv)
[1] 3479
Code
nmtc_did19_div_mhv %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_HOME_VALUE | treat | post | year |
---|---|---|---|---|---|
34001000100 | Atlantic City, NJ MSA | 11.95504 | 0 | 1 | 2019 |
34001000200 | Atlantic City, NJ MSA | 12.14367 | 0 | 1 | 2019 |
34001000300 | Atlantic City, NJ MSA | 11.90023 | 0 | 1 | 2019 |
34001000500 | Atlantic City, NJ MSA | 11.78904 | 0 | 1 | 2019 |
34001001100 | Atlantic City, NJ MSA | 11.99843 | 0 | 1 | 2019 |
34001001300 | Atlantic City, NJ MSA | 11.99720 | 0 | 1 | 2019 |
Join 2010 and 2019 data into one df for home value
View top of data frame for home value
Code
nmtc_diff_in_diff_div_mhv %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_HOME_VALUE | treat | post | year |
---|---|---|---|---|---|
34001000100 | Atlantic City, NJ MSA | 12.48464 | 0 | 0 | 2010 |
34001000200 | Atlantic City, NJ MSA | 12.82575 | 0 | 0 | 2010 |
34001000300 | Atlantic City, NJ MSA | 12.57963 | 0 | 0 | 2010 |
34001000500 | Atlantic City, NJ MSA | 12.33938 | 0 | 0 | 2010 |
34001001100 | Atlantic City, NJ MSA | 12.53054 | 0 | 0 | 2010 |
34001001300 | Atlantic City, NJ MSA | 12.51021 | 0 | 0 | 2010 |
View bottom of data frame for home value
Code
nmtc_diff_in_diff_div_mhv %>% tail() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_HOME_VALUE | treat | post | year |
---|---|---|---|---|---|
42101037700 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 11.76602 | 1 | 1 | 2019 |
42101038200 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 11.52288 | 1 | 1 | 2019 |
42101038900 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 12.24289 | 1 | 1 | 2019 |
42129800700 | Pittsburgh-New Castle, PA CSA | 10.79753 | 1 | 1 | 2019 |
42133000100 | York-Hanover-Gettysburg, PA CSA | 11.72400 | 1 | 1 | 2019 |
42133001600 | York-Hanover-Gettysburg, PA CSA | 10.89303 | 1 | 1 | 2019 |
Create data set for house price index
Code
nmtc_did10_div_hpi <- svi_divisional_nmtc_df %>%
filter(!is.na(housing_price_index10_log)) %>% filter(!is.na(housing_price_index20_log)) %>%
select(GEOID_2010_trt, cbsa, housing_price_index10_log, nmtc_flag) %>%
mutate(post = 0,
year = 2010) %>%
rename("treat" = "nmtc_flag",
"HOUSE_PRICE_INDEX" = "housing_price_index10_log")
nrow(nmtc_did10_div_hpi)
[1] 1026
Code
nmtc_did10_div_hpi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | HOUSE_PRICE_INDEX | treat | post | year |
---|---|---|---|---|---|
34001000100 | Atlantic City, NJ MSA | 4.939712 | 0 | 0 | 2010 |
34001000200 | Atlantic City, NJ MSA | 5.215262 | 0 | 0 | 2010 |
34001001300 | Atlantic City, NJ MSA | 4.197503 | 0 | 0 | 2010 |
34001002500 | Atlantic City, NJ MSA | 4.829513 | 0 | 0 | 2010 |
34001010104 | Atlantic City, NJ MSA | 5.626829 | 0 | 0 | 2010 |
34001010300 | Atlantic City, NJ MSA | 5.203787 | 0 | 0 | 2010 |
Code
nmtc_did20_div_hpi <- svi_divisional_nmtc_df %>%
filter(!is.na(housing_price_index10_log)) %>% filter(!is.na(housing_price_index20_log)) %>%
select(GEOID_2010_trt, cbsa, housing_price_index20_log, nmtc_flag) %>%
mutate(post = 1,
year = 2020) %>%
rename("treat" = "nmtc_flag",
"HOUSE_PRICE_INDEX" = "housing_price_index20_log")
nrow(nmtc_did20_div_hpi)
[1] 1026
Code
nmtc_did20_div_hpi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | HOUSE_PRICE_INDEX | treat | post | year |
---|---|---|---|---|---|
34001000100 | Atlantic City, NJ MSA | 4.710521 | 0 | 1 | 2020 |
34001000200 | Atlantic City, NJ MSA | 5.110239 | 0 | 1 | 2020 |
34001001300 | Atlantic City, NJ MSA | 3.804660 | 0 | 1 | 2020 |
34001002500 | Atlantic City, NJ MSA | 4.586089 | 0 | 1 | 2020 |
34001010104 | Atlantic City, NJ MSA | 5.727662 | 0 | 1 | 2020 |
34001010300 | Atlantic City, NJ MSA | 5.174284 | 0 | 1 | 2020 |
Join 2010 and 2019 data into one df for house price index
View top of data frame for house price index
Code
nmtc_diff_in_diff_div_hpi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | HOUSE_PRICE_INDEX | treat | post | year |
---|---|---|---|---|---|
34001000100 | Atlantic City, NJ MSA | 4.939712 | 0 | 0 | 2010 |
34001000200 | Atlantic City, NJ MSA | 5.215262 | 0 | 0 | 2010 |
34001001300 | Atlantic City, NJ MSA | 4.197503 | 0 | 0 | 2010 |
34001002500 | Atlantic City, NJ MSA | 4.829513 | 0 | 0 | 2010 |
34001010104 | Atlantic City, NJ MSA | 5.626829 | 0 | 0 | 2010 |
34001010300 | Atlantic City, NJ MSA | 5.203787 | 0 | 0 | 2010 |
View bottom of data frame for house price index
Code
nmtc_diff_in_diff_div_hpi %>% tail() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | HOUSE_PRICE_INDEX | treat | post | year |
---|---|---|---|---|---|
42101024200 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 5.917037 | 1 | 1 | 2020 |
42101029800 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 5.482803 | 1 | 1 | 2020 |
42101031102 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 5.848402 | 1 | 1 | 2020 |
42101033500 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 5.860644 | 1 | 1 | 2020 |
42101034900 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 5.804743 | 1 | 1 | 2020 |
42101038900 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 5.190565 | 1 | 1 | 2020 |
NMTC Divisional Model
Code
# SVI & Economic Models
m1_nmtc_div <- lm( SVI_FLAG_COUNT_SES ~ treat + post + treat*post + cbsa, data=nmtc_diff_in_diff_div_svi )
m2_nmtc_div <- lm( SVI_FLAG_COUNT_HHCHAR ~ treat + post + treat*post + cbsa, data=nmtc_diff_in_diff_div_svi )
m3_nmtc_div <- lm( SVI_FLAG_COUNT_REM ~ treat + post + treat*post + cbsa, data=nmtc_diff_in_diff_div_svi )
m4_nmtc_div <- lm( SVI_FLAG_COUNT_HOUSETRANSPT ~ treat + post + treat*post + cbsa, data=nmtc_diff_in_diff_div_svi )
m5_nmtc_div <- lm( SVI_FLAG_COUNT_OVERALL ~ treat + post + treat*post + cbsa, data=nmtc_diff_in_diff_div_svi)
m6_nmtc_div <- lm( MEDIAN_INCOME ~ treat + post + treat*post + cbsa, data=nmtc_diff_in_diff_div_inc )
m7_nmtc_div <- lm( MEDIAN_HOME_VALUE ~ treat + post + treat*post + cbsa, data=nmtc_diff_in_diff_div_mhv )
m8_nmtc_div <- lm( HOUSE_PRICE_INDEX ~ treat + post + treat*post + cbsa, data=nmtc_diff_in_diff_div_hpi )
# Add all models to a list
models <- list(
"SES" = m1_nmtc_div,
"HHChar" = m2_nmtc_div,
"REM" = m3_nmtc_div,
"HOUSETRANSPT" = m4_nmtc_div,
"OVERALL" = m5_nmtc_div,
"Median Income (USD, logged)" = m6_nmtc_div,
"Median Home Value (USD, logged)" = m7_nmtc_div,
"House Price Index (logged)" = m8_nmtc_div
)
# Display model results
modelsummary(models, fmt = 2, stars = c('*' = .05, '**' = .01, '***' = .001), coef_omit = "cbsa", gof_omit = "IC|Log",
notes = list('All models include metro-level fixed effects by core-based statistical area (cbsa).'),
title = paste0("Differences-in-Differences Linear Regression Analysis of NMTC in ", census_division)) %>%
group_tt(j = list("Social Vulnerability" = 2:6, "Economic Outcomes" = 7:9))
Social Vulnerability | Economic Outcomes | |||||||
---|---|---|---|---|---|---|---|---|
SES | HHChar | REM | HOUSETRANSPT | OVERALL | Median Income (USD, logged) | Median Home Value (USD, logged) | House Price Index (logged) | |
* p < 0.05, ** p < 0.01, *** p < 0.001 | ||||||||
All models include metro-level fixed effects by core-based statistical area (cbsa). | ||||||||
(Intercept) | 1.59*** | 1.62*** | 0.08* | 1.16*** | 4.44*** | 10.12*** | 11.79*** | 4.90*** |
(0.11) | (0.08) | (0.03) | (0.07) | (0.21) | (0.02) | (0.03) | (0.04) | |
treat | 0.94*** | 0.45*** | 0.21*** | 0.59*** | 2.18*** | -0.19*** | -0.14*** | 0.03 |
(0.11) | (0.08) | (0.03) | (0.08) | (0.22) | (0.03) | (0.04) | (0.07) | |
post | -0.04 | -0.04 | 0.00 | 0.02 | -0.06 | 0.03*** | -0.07*** | 0.24*** |
(0.03) | (0.03) | (0.01) | (0.02) | (0.07) | (0.01) | (0.01) | (0.01) | |
treat × post | -0.42** | -0.06 | -0.05 | -0.03 | -0.56 | 0.06 | 0.11* | 0.05 |
(0.16) | (0.12) | (0.05) | (0.11) | (0.31) | (0.04) | (0.05) | (0.09) | |
Num.Obs. | 7238 | 7238 | 7238 | 7238 | 7238 | 7236 | 6788 | 2020 |
R2 | 0.184 | 0.060 | 0.342 | 0.313 | 0.269 | 0.088 | 0.729 | 0.317 |
R2 Adj. | 0.178 | 0.053 | 0.337 | 0.308 | 0.263 | 0.081 | 0.727 | 0.302 |
F | 32.365 | 9.164 | 74.720 | 65.385 | 52.773 | 13.829 | 362.449 | 20.396 |
RMSE | 1.40 | 1.07 | 0.41 | 0.98 | 2.80 | 0.33 | 0.46 | 0.32 |
Interpret Divisional SVI & Economic Models
Just like with our national models, note that all of our divisional models include metro-level fixed effect controls by cbsa (Core-Based Statistical Area) to allow the model to consider relative variation with metro areas and equitably make comparisons.
Next, we want to look at the treat x post
variable to determine if our program had a statistically significant impact. If this variable is statistically significant, than we can deem that tracts that received program dollars performed significantly differently than would be expected according to general trends.
Across our SVI flag models for the Middle Atlantic Division, the category that experienced statistically significant changes based on NMTC program enrollment on a divisional basis is Socioeconomic Status.
The Socioeconomic Status category consists of measures of poverty, unemployment, housing burdens, educational levels, and lack of health insurance. Thus, the NMTC’s goal of effecting changes in SES vulnerability appears to be working in the Middle Atlantic Division.
Looking at the SES model:
We find that our average SES Flag Count across census tracts eligible for the NMTC program was 1.59 (intercept) flags in 2010. In 2020 this decreased to 1.55 (intercept + post) flags.
For tracts that received tax credits from the NMTC program, the average SES flag count was 2.53 (intercept + treat) flags in 2010. In 2020, this decreased to 2.07 (intercept + treat + post + treat*post) flags.
Although 2.07 flags in 2020 for tracts in the NMTC program is greater than the average of 1.55 flags in non-treated tracts, the decrease in flag count was greater for tracts enrolled in the NMTC program as indicated by the treat*post coefficient. The counterfactual for NMTC-treated tracts was 2.49 flags (intercept + treat + post).
Finally, we can examine our indicators of Economic Conditions and determine that changes in Median Home Value were statistically significantly greater in tracts that received NMTC dollars versus those that did not:
- Specifically looking at the
treat x post
coefficient, recall that our economic values are logged so we can read this as an increase of 11% (.11*100) for each 1-unit increase. However, if we want to find the exact numeric calculations of this change, we can utilize theexp()
function to complete our calculations:
Code
# Non-Treatment 2010 (Intercept), Avg Median Home Value $131,767.2
exp(m7_nmtc_div$coefficients[1])
(Intercept)
131767.2
Code
(Intercept)
123150.8
[1] "Pct change 2010-2020, non-treated: -6.53910836687735"
Code
(Intercept)
114941.7
Code
(Intercept)
120052.5
[1] "Pct change 2010-2020, treated: 4.44642805874631"
Code
(Intercept)
114941.7
Code
(Intercept)
107425.6
Code
[1] "Pct change 2010-2020, treated counterfactual: -6.53905414658039"
Thus, looking at our calculations here, we can conclude that when we control for metro-level effects, our average Median Home Value for tracts that did not receive NMTC dollars was $131,767.20 in 2010 when adjusted for inflation. This decreased to $123,150.8 in 2020, a -6.54% decrease in home values according to US Census data.
When we control for metro-level effects, our NMTC treated tracts had an average Median Home Value of $114,941.70 in 2010. The average Median Income in these tracts increased to $120,052.50 in 2020. This is an ~11% increase over what we would have expected according to general trends.
As a counterfactual, we can see that we would have expected the average Median Home Value of $107,425.60 in 2020 if it had decreased by -6.5%.
Further, we can look at the percentage increases for our coefficients to confirm our calculations are correct:
Code
# -6.5% decrease in post
(exp(m7_nmtc_div$coefficients[3]) - 1)*100
post
-6.539073
Code
treat:post
11.75411
Visualize Divisional Models
We can visualize these changes with slopegraphs. To begin, let’s look at the coefficients of our three significant models:
Code
# Recall:
# M1 is SES
# Intercept = intercept, the average count in 2010
# Treat = Impact of being in the NMTC program
# Post = Impact of year being 2020
# Treat:Post = Impact of treatment program and year being 2020
m1_nmtc_div$coefficients[1:3]
(Intercept) treat post
1.58555582 0.93817136 -0.04350348
Code
m1_nmtc_div$coefficients[length(m1_nmtc_div$coefficients)]
treat:post
-0.4243328
Code
# Recall:
# M7 is the logged Median Home Value, thus we need to pull the exponents
# Intercept = intercept, the average count in 2010
# Treat = Impact of being in the NMTC program
# Post = Impact of year being 2020
# Treat:Post = Impact of treatment program and year being 2020
exp(m7_nmtc_div$coefficients[1:3])
(Intercept) treat post
131767.1512927 0.8723093 0.9346093
treat:post
1.117541
Create visualization data frame and plot
SES
Code
status <- c("NMTC Non-Participant",
"NMTC Participant Counterfactual",
"NMTC Participant",
"NMTC Non-Participant",
"NMTC Participant Counterfactual",
"NMTC Participant")
year <- c(2010,
2010,
2010,
2020,
2020,
2020)
outcome <- c(m1_nmtc_div$coefficients[1],
m1_nmtc_div$coefficients[1] + m1_nmtc_div$coefficients[2],
m1_nmtc_div$coefficients[1] + m1_nmtc_div$coefficients[2],
m1_nmtc_div$coefficients[1] + m1_nmtc_div$coefficients[3],
m1_nmtc_div$coefficients[1] + m1_nmtc_div$coefficients[2] + m1_nmtc_div$coefficients[3],
m1_nmtc_div$coefficients[1] + m1_nmtc_div$coefficients[2] + m1_nmtc_div$coefficients[3] + m1_nmtc_div$coefficients[length(m1_nmtc_div$coefficients)])
svidiv_viz_ses_nmtc <- data.frame(status, year, outcome)
svidiv_viz_ses_nmtc$outcome_label <- round(svidiv_viz_ses_nmtc$outcome, 2)
svidiv_viz_ses_nmtc
status year outcome outcome_label
1 NMTC Non-Participant 2010 1.585556 1.59
2 NMTC Participant Counterfactual 2010 2.523727 2.52
3 NMTC Participant 2010 2.523727 2.52
4 NMTC Non-Participant 2020 1.542052 1.54
5 NMTC Participant Counterfactual 2020 2.480224 2.48
6 NMTC Participant 2020 2.055891 2.06
Code
slopegraph_plot(svidiv_viz_ses_nmtc, "NMTC Participant", "NMTC Non-Participant","Impact of NMTC Program on SVI SES Flag Count", paste0(census_division, " | 2010 - 2020"))
The slopegraph for SES SVI flags for the NMTC program indicates that in the Middle Atlantic Division our NMTC Participant Tracts had a notable decrease in socioeconomic social vulnerability flags in 2020 from the expected count of 2.48 for the counterfactual to 2.06 for the actual outcome.
Median Home Value
Code
status <- c("NMTC Non-Participant",
"NMTC Participant Counterfactual",
"NMTC Participant",
"NMTC Non-Participant",
"NMTC Participant Counterfactual",
"NMTC Participant")
year <- c(2010,
2010,
2010,
2020,
2020,
2020)
outcome <- c(exp(m7_nmtc_div$coefficients[1]),
exp(m7_nmtc_div$coefficients[1])*exp(m7_nmtc_div$coefficients[2]),
exp(m7_nmtc_div$coefficients[1])*exp(m7_nmtc_div$coefficients[2]),
exp(m7_nmtc_div$coefficients[1])*exp(m7_nmtc_div$coefficients[3]),
exp(m7_nmtc_div$coefficients[1])*exp(m7_nmtc_div$coefficients[2])*exp(m7_nmtc_div$coefficients[3]),
exp(m7_nmtc_div$coefficients[1])*exp(m7_nmtc_div$coefficients[2])*exp(m7_nmtc_div$coefficients[3])*exp(m7_nmtc_div$coefficients[length(m7_nmtc_div$coefficients)])
)
svidiv_viz_medhmv_nmtc <- data.frame(status, year, outcome)
### Note that instead of rounding like we did for SVI variables, we will be formatting our outcome as US dollars
svidiv_viz_medhmv_nmtc$outcome_label <- scales::dollar_format()(svidiv_viz_medhmv_nmtc$outcome)
svidiv_viz_medhmv_nmtc
status year outcome outcome_label
1 NMTC Non-Participant 2010 131767.2 $131,767
2 NMTC Participant Counterfactual 2010 114941.7 $114,942
3 NMTC Participant 2010 114941.7 $114,942
4 NMTC Non-Participant 2020 123150.8 $123,151
5 NMTC Participant Counterfactual 2020 107425.6 $107,426
6 NMTC Participant 2020 120052.5 $120,053
Code
slopegraph_plot(svidiv_viz_medhmv_nmtc, "NMTC Participant", "NMTC Non-Participant", "Impact of NMTC Program on Average Median Home Value", paste0(census_division, " | 2010 - 2020"))
The slopegraph for Average Home Value for the NMTC program indicates that in the Middle Atlantic Division our NMTC Participant Tracts had a notable increase in 2020 from the expected home value of $107,426 for the counterfactual to $120,053 for the actual outcome. This increase is also in contrast to the general trend of decreasing average median home values within NMTC-eligible tracts in the division from 2010 to 2020.
LIHTC Divisional
Create Divisional Models
Create datasets with our SVI variables for socioeconomic status, household characteristics, racial and ethnic minorities, and housing and transportation issues:
SVI Model Data
Code
# Create 2010 df, create post variable and set to 0, create year variable and set to 2010
lihtc_did10_div_svi <- svi_divisional_lihtc_df %>%
select(GEOID_2010_trt, cbsa, F_THEME1_10, F_THEME2_10, F_THEME3_10, F_THEME4_10, F_TOTAL_10, lihtc_flag) %>%
mutate(post = 0,
year = 2010) %>%
rename("treat" = "lihtc_flag",
"SVI_FLAG_COUNT_SES" = "F_THEME1_10",
"SVI_FLAG_COUNT_HHCHAR" = "F_THEME2_10",
"SVI_FLAG_COUNT_REM" = "F_THEME3_10",
"SVI_FLAG_COUNT_HOUSETRANSPT" = "F_THEME4_10",
"SVI_FLAG_COUNT_OVERALL" = "F_TOTAL_10")
nrow(lihtc_did10_div_svi)
[1] 658
Code
lihtc_did10_div_svi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | SVI_FLAG_COUNT_SES | SVI_FLAG_COUNT_HHCHAR | SVI_FLAG_COUNT_REM | SVI_FLAG_COUNT_HOUSETRANSPT | SVI_FLAG_COUNT_OVERALL | treat | post | year |
---|---|---|---|---|---|---|---|---|---|
34001001400 | Atlantic City, NJ MSA | 4 | 2 | 1 | 2 | 9 | 0 | 0 | 2010 |
34001001500 | Atlantic City, NJ MSA | 4 | 4 | 1 | 2 | 11 | 1 | 0 | 2010 |
34001002400 | Atlantic City, NJ MSA | 5 | 4 | 1 | 5 | 15 | 0 | 0 | 2010 |
34003015400 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 2 | 1 | 1 | 2 | 6 | 0 | 0 | 2010 |
34003018100 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 3 | 1 | 1 | 2 | 7 | 0 | 0 | 2010 |
34005702101 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 1 | 1 | 0 | 0 | 2 | 0 | 0 | 2010 |
Code
# Create 2020 df, create post variable and set to 1, create year variable and set to 2020
lihtc_did20_div_svi <- svi_divisional_lihtc_df %>%
select(GEOID_2010_trt, cbsa, F_THEME1_20, F_THEME2_20, F_THEME3_20, F_THEME4_20, F_TOTAL_20, lihtc_flag) %>%
mutate(post = 1,
year = 2020) %>%
rename("treat" = "lihtc_flag",
"SVI_FLAG_COUNT_SES" = "F_THEME1_20",
"SVI_FLAG_COUNT_HHCHAR" = "F_THEME2_20",
"SVI_FLAG_COUNT_REM" = "F_THEME3_20",
"SVI_FLAG_COUNT_HOUSETRANSPT" = "F_THEME4_20",
"SVI_FLAG_COUNT_OVERALL" = "F_TOTAL_20"
)
nrow(lihtc_did20_div_svi)
[1] 658
Code
lihtc_did20_div_svi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | SVI_FLAG_COUNT_SES | SVI_FLAG_COUNT_HHCHAR | SVI_FLAG_COUNT_REM | SVI_FLAG_COUNT_HOUSETRANSPT | SVI_FLAG_COUNT_OVERALL | treat | post | year |
---|---|---|---|---|---|---|---|---|---|
34001001400 | Atlantic City, NJ MSA | 5 | 4 | 1 | 3 | 13 | 0 | 1 | 2020 |
34001001500 | Atlantic City, NJ MSA | 4 | 4 | 1 | 2 | 11 | 1 | 1 | 2020 |
34001002400 | Atlantic City, NJ MSA | 5 | 3 | 1 | 4 | 13 | 0 | 1 | 2020 |
34003015400 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 3 | 1 | 1 | 2 | 7 | 0 | 1 | 2020 |
34003018100 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 4 | 1 | 1 | 3 | 9 | 0 | 1 | 2020 |
34005702101 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 1 | 1 | 0 | 0 | 2 | 0 | 1 | 2020 |
Join 2010 and 2020 data into one df
View top of data frame
Code
lihtc_diff_in_diff_div_svi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | SVI_FLAG_COUNT_SES | SVI_FLAG_COUNT_HHCHAR | SVI_FLAG_COUNT_REM | SVI_FLAG_COUNT_HOUSETRANSPT | SVI_FLAG_COUNT_OVERALL | treat | post | year |
---|---|---|---|---|---|---|---|---|---|
34001001400 | Atlantic City, NJ MSA | 4 | 2 | 1 | 2 | 9 | 0 | 0 | 2010 |
34001002400 | Atlantic City, NJ MSA | 5 | 4 | 1 | 5 | 15 | 0 | 0 | 2010 |
34003015400 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 2 | 1 | 1 | 2 | 6 | 0 | 0 | 2010 |
34003018100 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 3 | 1 | 1 | 2 | 7 | 0 | 0 | 2010 |
34005702101 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 1 | 1 | 0 | 0 | 2 | 0 | 0 | 2010 |
34005702204 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 4 | 3 | 0 | 2 | 9 | 0 | 0 | 2010 |
View bottom of data frame
Code
lihtc_diff_in_diff_div_svi %>% tail() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | SVI_FLAG_COUNT_SES | SVI_FLAG_COUNT_HHCHAR | SVI_FLAG_COUNT_REM | SVI_FLAG_COUNT_HOUSETRANSPT | SVI_FLAG_COUNT_OVERALL | treat | post | year |
---|---|---|---|---|---|---|---|---|---|
42049001800 | Erie, PA MSA | 4 | 3 | 0 | 2 | 9 | 1 | 1 | 2020 |
42101002500 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 2 | 1 | 0 | 1 | 4 | 1 | 1 | 2020 |
42101011900 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 0 | 2 | 1 | 2 | 5 | 1 | 1 | 2020 |
42101024000 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 2 | 1 | 0 | 2 | 5 | 1 | 1 | 2020 |
42101028300 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 4 | 3 | 1 | 1 | 9 | 1 | 1 | 2020 |
42121200300 | Oil City, PA MicroSA | 3 | 3 | 0 | 2 | 8 | 1 | 1 | 2020 |
Economic Outcomes Models Data
Next, we can create a set of data with our variables to measure the economic outcomes of house price index, median home value, and median income:
Create dataset for median income
Code
# Create 2010 df, create post variable and set to 0, create year variable and set to 2010, remove any tracts that don't have data for 2010 and 2019
lihtc_did10_div_inc <- svi_divisional_lihtc_df %>%
filter(!is.na(Median_Income_10adj_log)) %>% filter(!is.na(Median_Income_19_log)) %>%
select(GEOID_2010_trt, cbsa, Median_Income_10adj_log, lihtc_flag) %>%
mutate(post = 0,
year = 2010) %>%
rename("treat" = "lihtc_flag",
"MEDIAN_INCOME" = "Median_Income_10adj_log")
nrow(lihtc_did10_div_inc)
[1] 657
Code
lihtc_did10_div_inc %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_INCOME | treat | post | year |
---|---|---|---|---|---|
34001001400 | Atlantic City, NJ MSA | 9.876363 | 0 | 0 | 2010 |
34001001500 | Atlantic City, NJ MSA | 9.502774 | 1 | 0 | 2010 |
34001002400 | Atlantic City, NJ MSA | 9.741093 | 0 | 0 | 2010 |
34003015400 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 10.258515 | 0 | 0 | 2010 |
34003018100 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 10.076356 | 0 | 0 | 2010 |
34005702101 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 10.571445 | 0 | 0 | 2010 |
Code
# Create 2019 df, create post variable and set to 1, create year variable and set to 2019, remove any tracts that don't have data for 2010 and 2019
lihtc_did19_div_inc <- svi_divisional_lihtc_df %>%
filter(!is.na(Median_Income_10adj_log)) %>% filter(!is.na(Median_Income_19_log)) %>%
select(GEOID_2010_trt, cbsa, Median_Income_19_log, lihtc_flag) %>%
mutate(post = 1,
year = 2019) %>%
rename("treat" = "lihtc_flag",
"MEDIAN_INCOME" = "Median_Income_19_log")
nrow(lihtc_did19_div_inc)
[1] 657
Code
lihtc_did19_div_inc %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_INCOME | treat | post | year |
---|---|---|---|---|---|
34001001400 | Atlantic City, NJ MSA | 9.769213 | 0 | 1 | 2019 |
34001001500 | Atlantic City, NJ MSA | 9.420520 | 1 | 1 | 2019 |
34001002400 | Atlantic City, NJ MSA | 9.778264 | 0 | 1 | 2019 |
34003015400 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 10.483438 | 0 | 1 | 2019 |
34003018100 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 10.275327 | 0 | 1 | 2019 |
34005702101 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 10.700319 | 0 | 1 | 2019 |
Join 2010 and 2019 data into one df for income
View top of data frame for income
Code
lihtc_diff_in_diff_div_inc %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_INCOME | treat | post | year |
---|---|---|---|---|---|
34001001400 | Atlantic City, NJ MSA | 9.876363 | 0 | 0 | 2010 |
34001002400 | Atlantic City, NJ MSA | 9.741093 | 0 | 0 | 2010 |
34003015400 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 10.258515 | 0 | 0 | 2010 |
34003018100 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 10.076356 | 0 | 0 | 2010 |
34005702101 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 10.571445 | 0 | 0 | 2010 |
34005702204 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 9.895838 | 0 | 0 | 2010 |
View bottom of data frame income
Code
lihtc_diff_in_diff_div_inc %>% tail() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_INCOME | treat | post | year |
---|---|---|---|---|---|
42049001800 | Erie, PA MSA | 9.674326 | 1 | 1 | 2019 |
42101002500 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 10.518430 | 1 | 1 | 2019 |
42101011900 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 10.142583 | 1 | 1 | 2019 |
42101024000 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 10.463903 | 1 | 1 | 2019 |
42101028300 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 9.959442 | 1 | 1 | 2019 |
42121200300 | Oil City, PA MicroSA | 10.178844 | 1 | 1 | 2019 |
Create dataset for home value
Code
lihtc_did10_div_mhv <- svi_divisional_lihtc_df %>%
filter(!is.na(Median_Home_Value_10adj_log)) %>% filter(!is.na(Median_Home_Value_19_log)) %>%
select(GEOID_2010_trt, cbsa, Median_Home_Value_10adj_log, lihtc_flag) %>%
mutate(post = 0,
year = 2010) %>%
rename("treat" = "lihtc_flag",
"MEDIAN_HOME_VALUE" = "Median_Home_Value_10adj_log")
nrow(lihtc_did10_div_mhv)
[1] 577
Code
lihtc_did10_div_mhv %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_HOME_VALUE | treat | post | year |
---|---|---|---|---|---|
34001001400 | Atlantic City, NJ MSA | 12.60057 | 0 | 0 | 2010 |
34001002400 | Atlantic City, NJ MSA | 12.55047 | 0 | 0 | 2010 |
34003015400 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 13.02181 | 0 | 0 | 2010 |
34003018100 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 13.02258 | 0 | 0 | 2010 |
34005702204 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 12.50119 | 0 | 0 | 2010 |
34007600200 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 11.17359 | 0 | 0 | 2010 |
Code
lihtc_did19_div_mhv <- svi_divisional_lihtc_df %>%
filter(!is.na(Median_Home_Value_10adj_log)) %>% filter(!is.na(Median_Home_Value_19_log)) %>%
select(GEOID_2010_trt, cbsa, Median_Home_Value_19_log, lihtc_flag) %>%
mutate(post = 1,
year = 2019) %>%
rename("treat" = "lihtc_flag",
"MEDIAN_HOME_VALUE" = "Median_Home_Value_19_log")
nrow(lihtc_did19_div_mhv)
[1] 577
Code
lihtc_did19_div_mhv %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_HOME_VALUE | treat | post | year |
---|---|---|---|---|---|
34001001400 | Atlantic City, NJ MSA | 11.84295 | 0 | 1 | 2019 |
34001002400 | Atlantic City, NJ MSA | 12.62116 | 0 | 1 | 2019 |
34003015400 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 12.69741 | 0 | 1 | 2019 |
34003018100 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 12.77733 | 0 | 1 | 2019 |
34005702204 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 12.18485 | 0 | 1 | 2019 |
34007600200 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 11.07597 | 0 | 1 | 2019 |
Join 2010 and 2019 data into one df for home value
View top of data frame for home value
Code
lihtc_diff_in_diff_div_mhv %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_HOME_VALUE | treat | post | year |
---|---|---|---|---|---|
34001001400 | Atlantic City, NJ MSA | 12.60057 | 0 | 0 | 2010 |
34001002400 | Atlantic City, NJ MSA | 12.55047 | 0 | 0 | 2010 |
34003015400 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 13.02181 | 0 | 0 | 2010 |
34003018100 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 13.02258 | 0 | 0 | 2010 |
34005702204 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 12.50119 | 0 | 0 | 2010 |
34007600200 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 11.17359 | 0 | 0 | 2010 |
View bottom of data frame for home value
Code
lihtc_diff_in_diff_div_mhv %>% tail() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | MEDIAN_HOME_VALUE | treat | post | year |
---|---|---|---|---|---|
42049001800 | Erie, PA MSA | 10.73857 | 1 | 1 | 2019 |
42101002500 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 12.76569 | 1 | 1 | 2019 |
42101011900 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 11.68013 | 1 | 1 | 2019 |
42101024000 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 12.27979 | 1 | 1 | 2019 |
42101028300 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 11.41752 | 1 | 1 | 2019 |
42121200300 | Oil City, PA MicroSA | 10.81778 | 1 | 1 | 2019 |
Create data set for house price index
Code
lihtc_did10_div_hpi <- svi_divisional_lihtc_df %>%
filter(!is.na(housing_price_index10_log)) %>% filter(!is.na(housing_price_index20_log)) %>%
select(GEOID_2010_trt, cbsa, housing_price_index10_log, lihtc_flag) %>%
mutate(post = 0,
year = 2010) %>%
rename("treat" = "lihtc_flag",
"HOUSE_PRICE_INDEX" = "housing_price_index10_log")
nrow(lihtc_did10_div_hpi)
[1] 77
Code
lihtc_did10_div_hpi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | HOUSE_PRICE_INDEX | treat | post | year |
---|---|---|---|---|---|
34005702204 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 4.740749 | 0 | 0 | 2010 |
34009021400 | Ocean City, NJ MSA | 5.595826 | 0 | 0 | 2010 |
34009021500 | Ocean City, NJ MSA | 4.792479 | 0 | 0 | 2010 |
34013002202 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 5.557021 | 0 | 0 | 2010 |
34013009400 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 5.638390 | 0 | 0 | 2010 |
34013009500 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 4.985249 | 0 | 0 | 2010 |
Code
lihtc_did20_div_hpi <- svi_divisional_lihtc_df %>%
filter(!is.na(housing_price_index10_log)) %>% filter(!is.na(housing_price_index20_log)) %>%
select(GEOID_2010_trt, cbsa, housing_price_index20_log, lihtc_flag) %>%
mutate(post = 1,
year = 2020) %>%
rename("treat" = "lihtc_flag",
"HOUSE_PRICE_INDEX" = "housing_price_index20_log")
nrow(lihtc_did20_div_hpi)
[1] 77
Code
lihtc_did20_div_hpi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | HOUSE_PRICE_INDEX | treat | post | year |
---|---|---|---|---|---|
34005702204 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 4.843163 | 0 | 1 | 2020 |
34009021400 | Ocean City, NJ MSA | 5.796635 | 0 | 1 | 2020 |
34009021500 | Ocean City, NJ MSA | 5.025130 | 0 | 1 | 2020 |
34013002202 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 5.703749 | 0 | 1 | 2020 |
34013009400 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 5.867402 | 0 | 1 | 2020 |
34013009500 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 5.299517 | 0 | 1 | 2020 |
Join 2010 and 2019 data into one df for house price index
View top of data frame for house price index
Code
lihtc_diff_in_diff_div_hpi %>% head() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | HOUSE_PRICE_INDEX | treat | post | year |
---|---|---|---|---|---|
34005702204 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 4.740749 | 0 | 0 | 2010 |
34009021400 | Ocean City, NJ MSA | 5.595826 | 0 | 0 | 2010 |
34009021500 | Ocean City, NJ MSA | 4.792479 | 0 | 0 | 2010 |
34013002202 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 5.557021 | 0 | 0 | 2010 |
34013009400 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 5.638390 | 0 | 0 | 2010 |
34013009500 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 4.985249 | 0 | 0 | 2010 |
View bottom of data frame for house price index
Code
lihtc_diff_in_diff_div_hpi %>% tail() %>% kbl() %>% kable_styling() %>% scroll_box(width = "100%")
GEOID_2010_trt | cbsa | HOUSE_PRICE_INDEX | treat | post | year |
---|---|---|---|---|---|
36103122406 | New York-Newark-Bridgeport, NY-NJ-CT-PA CSA | 5.696825 | 1 | 1 | 2020 |
36109001100 | Ithaca-Cortland, NY CSA | 5.336961 | 1 | 1 | 2020 |
42011000300 | Reading, PA MSA | 5.129780 | 1 | 1 | 2020 |
42045400401 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 5.507200 | 1 | 1 | 2020 |
42101002500 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 6.431057 | 1 | 1 | 2020 |
42101024000 | Philadelphia-Camden-Vineland, PA-NJ-DE-MD CSA | 5.774893 | 1 | 1 | 2020 |
LIHTC Divisional Model
Now that we have our datasets created, we can craft our models. Remember that in R we can use the lm()
function for linear models. We can then format the output of models using packages like modelsummary
to create easy-to-read output tables (note: unlike stargazer and the base lm() output, your regression models will not print directly in your .RMD file, you will need to view the output in the ‘viewer’ window in RStudio):
Code
# SVI & Economic Models
m1_lihtc_div <- lm( SVI_FLAG_COUNT_SES ~ treat + post + treat*post + cbsa, data=lihtc_diff_in_diff_div_svi )
m2_lihtc_div <- lm( SVI_FLAG_COUNT_HHCHAR ~ treat + post + treat*post + cbsa, data=lihtc_diff_in_diff_div_svi )
m3_lihtc_div <- lm( SVI_FLAG_COUNT_REM ~ treat + post + treat*post + cbsa, data=lihtc_diff_in_diff_div_svi )
m4_lihtc_div <- lm( SVI_FLAG_COUNT_HOUSETRANSPT ~ treat + post + treat*post + cbsa, data=lihtc_diff_in_diff_div_svi )
m5_lihtc_div <- lm( SVI_FLAG_COUNT_OVERALL ~ treat + post + treat*post + cbsa, data=lihtc_diff_in_diff_div_svi)
m6_lihtc_div <- lm( MEDIAN_INCOME ~ treat + post + treat*post + cbsa, data=lihtc_diff_in_diff_div_inc )
m7_lihtc_div <- lm( MEDIAN_HOME_VALUE ~ treat + post + treat*post + cbsa, data=lihtc_diff_in_diff_div_mhv )
m8_lihtc_div <- lm( HOUSE_PRICE_INDEX ~ treat + post + treat*post + cbsa, data=lihtc_diff_in_diff_div_hpi )
# Add all models to a list
models <- list(
"SES" = m1_lihtc_div,
"HHChar" = m2_lihtc_div,
"REM" = m3_lihtc_div,
"HOUSETRANSPT" = m4_lihtc_div,
"OVERALL" = m5_lihtc_div,
"Median Income (USD, logged)" = m6_lihtc_div,
"Median Home Value (USD, logged)" = m7_lihtc_div,
"House Price Index (logged)" = m8_lihtc_div
)
# Display model results
modelsummary(models, fmt = 2, stars = c('*' = .05, '**' = .01, '***' = .001), coef_omit = "cbsa", gof_omit = "IC|Log",
notes = list('All models include metro-level fixed effects by core-based statistical area (cbsa).'),
title = paste0("Differences-in-Differences Linear Regression Analysis of LIHTC in ", census_division)) %>%
group_tt(j = list("Social Vulnerability" = 2:6, "Economic Outcomes" = 7:9))
Social Vulnerability | Economic Outcomes | |||||||
---|---|---|---|---|---|---|---|---|
SES | HHChar | REM | HOUSETRANSPT | OVERALL | Median Income (USD, logged) | Median Home Value (USD, logged) | House Price Index (logged) | |
* p < 0.05, ** p < 0.01, *** p < 0.001 | ||||||||
All models include metro-level fixed effects by core-based statistical area (cbsa). | ||||||||
(Intercept) | 2.94*** | 1.82*** | 0.24*** | 1.33*** | 6.33*** | 9.86*** | 11.68*** | 4.86*** |
(0.19) | (0.16) | (0.07) | (0.16) | (0.39) | (0.06) | (0.09) | (0.28) | |
treat | 0.23 | 0.30* | 0.16** | 0.34** | 1.03*** | -0.03 | -0.13 | 0.11 |
(0.14) | (0.12) | (0.05) | (0.12) | (0.28) | (0.04) | (0.07) | (0.14) | |
post | -0.09 | -0.09 | -0.02 | 0.05 | -0.15 | 0.04 | -0.07* | 0.27*** |
(0.07) | (0.06) | (0.02) | (0.06) | (0.14) | (0.02) | (0.03) | (0.07) | |
treat × post | 0.10 | 0.20 | -0.04 | -0.05 | 0.21 | 0.00 | 0.12 | 0.00 |
(0.19) | (0.17) | (0.07) | (0.16) | (0.39) | (0.06) | (0.10) | (0.19) | |
Num.Obs. | 1314 | 1314 | 1314 | 1314 | 1314 | 1312 | 1152 | 154 |
R2 | 0.145 | 0.137 | 0.271 | 0.220 | 0.236 | 0.209 | 0.698 | 0.255 |
R2 Adj. | 0.123 | 0.114 | 0.251 | 0.199 | 0.216 | 0.188 | 0.689 | 0.162 |
F | 6.391 | 5.949 | 13.967 | 10.608 | 11.637 | 9.938 | 78.299 | 2.739 |
RMSE | 1.15 | 1.01 | 0.41 | 0.98 | 2.37 | 0.35 | 0.53 | 0.37 |
Interpret Divisional SVI & Economic Models
Once again, we first want to note that all of our models include metro-level fixed effect controls by cbsa (Core-Based Statistical Area) to allow the model to consider relative variation with metro areas and equitably make comparisons.
Again, we want to look at the treat x post
variable to determine if our program had a statistically significant impact. If this variable is statistically significant, than we can deem that tracts that received program dollars performed significantly differently than would be expected according to general trends.
Just as with our national data, when we look at the Middle Atlantic Division, the diff-in-diff regression models for the LIHTC program does not indicate any statistically significant changes in social vulnerability or economic outcomes. Therefore we cannot conclude that the program had a measurable impact on our SVI and economic outcomes.
However, we can highlight that our Middle Atlantic Division tracts that received LIHTC dollars were statistically more vulnerable based on Household Characteristics, Racial and Ethnic diversity, Housing and Transportation, and Overall Social Vulnerability.
Similar to our discussion of the national data, it’s important to consider that the LIHTC program focuses on increasing availability of housing for low income individuals in a variety of communities and these results may suggest it is effective at targeting more vulnerable areas and accomplishing this goal. However, this would be a topic to explore in further depth in future studies.
Visualize Divisional Models
Again, since we do not have statistically significant changes, we do not need to visualize our outcomes.
Save data sets and models
Now that we have created our models and visualizations, we will save our final data sets to the rodeo folder as rds files. We will also save our collection of regression models to an RData file.
Code
save(m1_nmtc_usa, m2_nmtc_usa, m3_nmtc_usa, m4_nmtc_usa, m5_nmtc_usa, m6_nmtc_usa, m7_nmtc_usa, m8_nmtc_usa, file = here::here(paste0("data/rodeo/", str_replace_all(census_division, " ", "_"), "_svi_did_usa_models_nmtc.RData")), compress=TRUE)
save(m1_lihtc_usa, m2_lihtc_usa, m3_lihtc_usa, m4_lihtc_usa, m5_lihtc_usa, m6_lihtc_usa, m7_lihtc_usa, m8_lihtc_usa, file = here::here(paste0("data/rodeo/", str_replace_all(census_division, " ", "_"), "_svi_did_usa_models_lihtc.RData")), compress=TRUE)
Code
# Save data sets
saveRDS(svi_divisional_lihtc_df, file = here::here(paste0("data/rodeo/", str_replace_all(census_division, " ", "_"), "_svi_divisional_lihtc.rds")))
saveRDS(svi_national_lihtc_df, file = here::here(paste0("data/rodeo/", str_replace_all(census_division, " ", "_"), "_svi_national_lihtc.rds")))
saveRDS(svi_divisional_nmtc_df, file = here::here(paste0("data/rodeo/", str_replace_all(census_division, " ", "_"), "_svi_divisional_nmtc.rds")))
saveRDS(svi_national_nmtc_df, file = here::here(paste0("data/rodeo/", str_replace_all(census_division, " ", "_"), "_svi_national_nmtc.rds")))
# Save regression models
save(m1_nmtc_div, m2_nmtc_div, m3_nmtc_div, m4_nmtc_div, m5_nmtc_div, m6_nmtc_div, m7_nmtc_div, m8_nmtc_div, file = here::here(paste0("data/rodeo/", str_replace_all(census_division, " ", "_"), "_svi_did_models_nmtc.RData")), compress=TRUE, compression_level = 9)
save(m1_lihtc_div, m2_lihtc_div, m3_lihtc_div, m4_lihtc_div, m5_lihtc_div, m6_lihtc_div, m7_lihtc_div, m8_lihtc_div, file = here::here(paste0("data/rodeo/", str_replace_all(census_division, " ", "_"), "_svi_did_models_lihtc.RData")), compress=TRUE, compression_level = 9)
Homework:
- Write a brief introduction paragraph with a summary of what the diff-in-diff model is and why you’re utilizing it for your evaluation. Include a summary of your dependent variable data (SVI, median income, median home value, and house price index) and your independent variables (the LIHTC and NMTC tax credit data).
- Create regression models for SVI flags, median income, home price index, and median home values for LIHTC and NMTC for your division
- Include brief description of model findings, particularly the significance of treat x post
- Include slope graph visualizations of models with statistically significant treat x post coefficient and describe trends in visuals
Lab Submission Instructions
Congratulations! You’ve reached the end of the Lab-05 Tutorial!
You are now ready to complete your lab and submit it on Canvas.
Your import step in your .RMD file should look similar to the code chunk below, but your project_data_steps.R file should have your name/initials on the end (i.e. project_data_steps_CS.R).
Code
import::here( "fips_census_regions",
"load_svi_data",
"merge_svi_data",
"census_division",
"slopegraph_plot",
"census_pull",
# 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.R"),
.character_only = TRUE)
The following checklist will ensure that you’re on track: