# Measures of hardship compared: report

Companion 8.1c of The Public Mind, by Vishal Singh (NYU Stern). Generated from the chapter's data files; the reading version is at https://vishalsingh.org/politics/measures-of-hardship-compared. Table n of this report is figure n of the chapter.

## Identification

- Title: Measures of hardship compared
- Chapter: Companion 8.1c (Part VIII, Places and the people in them; Votes, giving and places)
- Question: On one common specification, which kinds of hardship track the vote and which are demographic proxies?
- Dek: Across 80,873 census tracts, the median absolute coefficient of a hardship measure on the 2020 Democratic vote falls from 4.7 points per standard deviation to 2.2 once race and ethnicity, education, density and state are held fixed.
- Grain: places
- Status: draft
- Published: 2026-10-03
- Updated: not revised
- Data sources:
  - Precinct votes on census geographies. Precinct votes allocated to 2020 census tracts and ZIP code tabulation areas (Fekrazad 2025), contiguous states and the District of Columbia, with the American Community Survey controls of the project atlases (2019 to 2023 five-year for tracts; ZIP code vintage not confirmed); years: 2016 and 2020 (contiguous United States only); weights: votes cast in the unit (pres_tot, pres_tot_2020); units with 100 or fewer votes dropped
  - Area Deprivation Index. Area Deprivation Index national rank, Neighborhood Atlas version 4.0.1 (2023); tract values are unweighted means of block-group ranks and ZIP code values are area aggregations; license not confirmed; years: Vintage as distributed with the tract and ZCTA atlas files.; weights: none (area values)
  - Opportunity Atlas. Opportunity Atlas tract estimates for children born 1978 to 1983 with low-income parents, area-interpolated to 2020 tracts (household and individual income rank, incarceration, teen birth); years: Birth cohorts and outcome years as defined by Chetty and others (2018).; weights: none (area values)
  - EJScreen. EJScreen 2024 tract values (version 2.32 in the atlas build code), from a community mirror of the archived tool; years: Version as distributed with the tract atlas file.; weights: none (area values)
  - CDC PLACES. PLACES crude prevalence of nine adult health measures, model-based; 2024 release for tracts and 2025 release for ZIP code areas; years: Release as distributed with the tract and ZCTA atlas files.; weights: none (area values)
  - Social Capital Atlas. Social Capital Atlas ZIP code values (2022 release, Facebook users), six measures; years: Built from Facebook friendship data; see the provider for the measurement window.; weights: none (area values)
  - IRS SOI ZIP code data. IRS Statistics of Income ZIP code data, tax year 2022: shares of returns with the earned income credit and with unemployment compensation, and mean adjusted gross income per return; years: Tax year as distributed with the ZCTA atlas file.; weights: none (area values)
- Canonical URL: https://vishalsingh.org/politics/measures-of-hardship-compared
- Report: https://vishalsingh.org/politics/measures-of-hardship-compared/report
- Markdown: https://vishalsingh.org/politics/measures-of-hardship-compared/report.md
- BibTeX key: singh2026measuresofhardshipcompared

```bibtex
@misc{singh2026measuresofhardshipcompared,
  author = {Singh, Vishal},
  title = {Measures of hardship compared},
  year = {2026},
  url = {https://vishalsingh.org/politics/measures-of-hardship-compared},
  note = {In The Public Mind. Published 3 October 2026.}
}
```

## Principal estimates

The facts the dek and the opening prose cite, in order of appearance.

| Estimand | Population | Period | Value | Interval | n | Weights | Source | Fact id |
| --- | --- | --- | ---: | --- | ---: | --- | --- | --- |
| count of tracts in the common sample | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 80,873 |   |   | none (counts of units and votes) | Precinct votes on census geographies | n_tracts |
| median across measures of the absolute raw coefficient | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 4.7 |   | 80,873 | votes cast in the tract (pres_tot) | Precinct votes on census geographies | med_abs_raw |
| median across measures of the absolute common-specification coefficient | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 2.2 |   | 80,873 | votes cast in the tract (pres_tot) | Precinct votes on census geographies | med_abs_adj |
| common-specification coefficient of the Democratic two-party share on the standardized measure: ozone | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | −3.2 | 95% CI −4.3 to −2.1 | 80,873 | votes cast in the tract (pres_tot) | EJScreen | t_ozone_adj |
| common-specification coefficient of the Democratic two-party share on the standardized measure: no health insurance | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 7.6 | 95% CI 6.2 to 9.0 | 80,873 | votes cast in the tract (pres_tot) | CDC PLACES | t_access2_adj |
| count of measures whose raw 95% interval excludes zero | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 20 |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies | n_raw_nonzero |
| count of measures that keep their sign and at least half of the raw coefficient | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 3 |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies | n_keeps |
| share of the raw coefficient that a measure must keep to count as keeping its association | measures with a raw interval that excludes zero | 2020 presidential election | 50% |   |   | none (rule) | Precinct votes on census geographies | keep_threshold |
| count of measures that keep less than half of the raw coefficient or whose adjusted interval includes zero | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 9 |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies | n_lose |
| count of measures whose adjusted interval lies on the other side of zero from the raw coefficient | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 8 |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies | n_reverses |

## Findings

Once race and ethnicity, education, population density and state are held fixed, the median absolute coefficient of a tract measure of hardship on the 2020 Democratic vote is 2.2 points, against 4.7 points before any controls. The unit is points of Democratic share of the two-party vote per standard deviation of the measure, and the sample is the 80,873 census tracts that have every measure and control, described below. The adjusted coefficients run from −3.2 for ozone, an EJScreen model estimate, to 7.6 for lack of health insurance, a PLACES model estimate.

Of the 20 measures that go with the vote before any controls, 3 keep at least 50% of that association once the controls are in, 9 lose more than 50% of it and 8 reverse sign. The rule that sorts the measures into these groups was set after a first run of the estimates, and the last section shows that two measures sit close to its line.

Each measure is signed so that a higher value means more hardship, so a positive coefficient means a more Democratic vote where hardship is higher (social capital, taken up below, is the exception). The estimates are descriptive regressions that compare places. The votes are precinct returns that a land-cover model allocated to census geographies [1], so each area's Democratic share is a modeled estimate and not a count, and a pattern across areas can differ from the pattern among the people in them [2] (ecological inference). Several of the measures are model estimates as well, the PLACES health values among them, and the next section says which. Companion 8.1d, Air pollution and the vote (https://vishalsingh.org/politics/air-pollution-and-the-vote) covers air pollution in detail, and chapters are planned on deprivation and childhood outcomes (Planned, Deprivation and mobility (https://vishalsingh.org/politics/deprivation-and-mobility; planned)), health (Planned, Health outcomes and the vote (https://vishalsingh.org/politics/health-outcomes-and-the-vote; planned)) and social ties (Planned, Social capital (https://vishalsingh.org/politics/social-capital; planned)). This chapter puts the measures on one footing and does not rebuild those results.

Table 1. Raw associations with the Democratic vote split in sign across 24 hardship measures, and adjusted ones are smaller and mostly positive

### One footing for every measure

The comparison fixes the sample, the outcome, the weights, the controls and the interval method, and it gives each measure the same sign and scale.

The 2020 vote layer covers the contiguous states and the District of Columbia and holds 83,648 census tracts. The tract atlas has a row for 82,765 of them. The 883 without a row are the tracts of Connecticut, which the atlas codes by planning region and the vote layer by county; they carry 1.8 million votes and voted 60% Democratic. Of the atlas tracts, 81,617 have more than 100 estimated votes, and the common sample keeps those of them that have every measure and control. They lie in 3,081 counties in 47 states and carry 154.8 million votes. The 744 tracts that drop out at this point voted 74.3% Democratic, against 52.0% in the sample. The race and college controls are missing for 218 of them, 203 in the District of Columbia, and those tracts voted 93% Democratic. The other 526 lack an Area Deprivation Index, Opportunity Atlas or EJScreen value and voted 59% Democratic (Table 2).

Table 2. The Social Capital Atlas drops ZIP code areas that voted 40% Democratic against 53% for those kept, and missing controls drop tracts in the District of Columbia

The outcome is the Democratic share of the 2020 two-party presidential vote, in points of share. The Companion 8.1d, Air pollution and the vote (https://vishalsingh.org/politics/air-pollution-and-the-vote) chapter reports the margin, the Democratic share minus the Republican share, and a coefficient of the margin is 2 times the coefficient of the share on the same data. Each area counts in proportion to its estimated votes. A measure is cut at its 1st and 99th percentiles across areas, so that a few extreme values do not set the scale, and then standardized with the vote-weighted mean and standard deviation. A coefficient is the difference in Democratic share, in points, between two areas one standard deviation apart on the measure, and with controls the two areas also match on the controls. The vote-weighted standard deviation of the Democratic share across tracts is 20.9 points.

The controls are the shares of residents who are white, Black, Asian and Hispanic, the college share, the log of population density and a fixed effect for each state, which compares areas inside one state. Race and ethnicity, education and density explain 72% of the variation in the vote within states, so an adjusted comparison is among tracts that resemble each other on traits that predict the vote closely. The controls leave out income, which is itself a measure of hardship, and age; the last section adds both as a variation. Intervals are 95% intervals from standard errors clustered by state, with the critical value of a t distribution that has one fewer degree of freedom than there are clusters, since the number of clusters is small [3].

The measures come from six sources in the project atlas, and the atlas build documentation, not the data files, dates them. The Area Deprivation Index ranks neighborhoods from least to most deprived [4]. The atlas holds the 2023 release of the Neighborhood Atlas, with tract values that are unweighted means of block-group ranks and ZIP code values that aggregate them by area, an approximation. The terms of use may restrict redistribution and are unconfirmed, so this chapter publishes coefficients and no area values. The Opportunity Atlas gives model-based estimates of outcomes in adulthood for children who grew up in a tract [5], here children born between 1978 and 1983 whose parents had low incomes, interpolated from 2010 tracts to 2020 tracts. They do not describe the tract's current residents. EJScreen is the Environmental Protection Agency's screening tool, here the 2024 release as kept in a community mirror after the agency withdrew it. (Note: The atlas build code and Companion 8.1d, Air pollution and the vote (https://vishalsingh.org/politics/air-pollution-and-the-vote) name different versions of the 2024 release, and the two have not been reconciled; the methods note gives both.) The PLACES estimates of adult health are crude prevalence from a model, the 2024 release for tracts and the 2025 release for ZIP code areas, taken up below [6]. The tract controls from the American Community Survey cover 2019 to 2023, so the vote of November 2020 is set against measures dated 2019 to 2024.

Two sources exist for ZIP code areas only. The Social Capital Atlas is a 2022 snapshot built from Facebook friendships, with noise added to protect privacy [7]; the 6 columns used here match the 2022 release value for value. The IRS ZIP code data are for tax year 2022 and describe households that file a tax return. The ZIP code sample has its own counts and is described in its section. Social capital keeps its published direction, so a higher value means more connection, and the other measures are signed toward more hardship.

### Before controls, the measures disagree in sign

Table 1 plots the raw and adjusted coefficient of each of the 24 tract measures. The raw coefficients run from −10.4 for arthritis, a modeled PLACES estimate, to 13.1 for proximity to hazardous waste facilities, an EJScreen indicator. Before controls, 12 measures have a coefficient with an interval above zero, 8 have one with an interval below zero and 4 have an interval that includes zero. The positive ones are mainly environmental: 13.1 (95% CI 11.9 to 14.4) for hazardous waste proximity, 11.9 (95% CI 8.1 to 15.6) for traffic proximity, 11.4 (95% CI 10.1 to 12.7) for nitrogen dioxide and 11.6 (95% CI 8.6 to 14.6) for diesel particulate matter. The negative ones are mainly deprivation and illness: −10.4 (95% CI −11.8 to −8.9) for arthritis, −6.3 (95% CI −8.5 to −4.2) for depression and −5.9 (95% CI −8.2 to −3.5) for the Area Deprivation Index, so more deprived tracts voted less Democratic.

Two Opportunity Atlas measures of income in adulthood disagree. Low household income rank has a raw coefficient of 3.0 (95% CI 1.3 to 4.8) and low individual income rank has −2.4 (95% CI −4.0 to −0.7), and the data here cannot say why the signs differ. Before controls, the answer to which kinds of hardship go with the vote depends on the measure: environmental burdens and some childhood outcomes go with a more Democratic vote, and deprivation and illness go with a more Republican one.

### With controls, most coefficients are positive and smaller

With race and ethnicity, education, density and state held fixed, 16 measures have an interval above zero, 2 have one below zero and 6 include zero. The two negative ones are ozone, −3.2 (95% CI −4.3 to −2.1), and fine particles, −2.0 (95% CI −3.8 to −0.1). The largest coefficient belongs to lack of health insurance, 7.6 (95% CI 6.2 to 9.0). The next four are fair or poor health, 4.5, the Area Deprivation Index, 3.9, low household income rank, 3.6 and housing built before 1960, 3.6, and their intervals overlap one another, so the data do not rank them. Among alike tracts in one state, the ones with more hardship voted more Democratic on those 16 measures. Adjusted coefficients are closer to zero than raw ones for 17 of the 24 measures.

The measures sort into groups by what the controls do. The group of 3 that keep at least 50% of the raw coefficient is low household income rank, whose adjusted coefficient is 3.6 (95% CI 2.9 to 4.3), housing built before 1960, 3.6 (95% CI 2.9 to 4.3), and lack of health insurance, whose adjusted coefficient is larger than its raw one. The group of 9 that lose more than 50% of it, or whose adjusted interval includes zero, is made up of 6 environmental indicators, incarceration, obesity and arthritis. The group of 8 that reverse sign, with an adjusted interval on the other side of zero, is the Area Deprivation Index, low individual income rank, ozone, fine particles, depression, diabetes, current smoking and no leisure-time physical activity. The remaining 4 have a raw interval that includes zero, and teen birth, fair or poor health and poor mental health are above zero once the controls are in. Both the 50% line and the choice of the 9 PLACES measures, made after a first look at 19 of the 40, followed a first run of the estimates. The last section shows how firm the groups are.

### Race and education move the coefficients most

Table 3 adds the controls one block at a time. Across measures the median absolute change in the coefficient is 3.5 points when race and ethnicity enter, 3.8 when education enters, 1.0 when density enters and 1.6 when state fixed effects enter. The size of a step depends on the order, so the steps do not add up to a share of the change. Leaving out one block from the common specification gives a median change of 3.2 points for race and ethnicity, 3.0 for education and 0.9 for density.

Table 3. Race and education move the coefficients most, and density and state fixed effects move them less

The Area Deprivation Index shows how a control can matter by construction. It is built from income, education, employment and housing measures [4], so holding education fixed removes part of what it measures. Its coefficient is −5.9 (95% CI −8.2 to −3.5) before controls and −7.2 (95% CI −8.9 to −5.6) with race and ethnicity held fixed. With race, education and density held fixed but no state effects it is 0.0 (95% CI −2.3 to 2.3), and with state effects it is 3.9 (95% CI 2.6 to 5.2). In the common specification without the college share it is −3.6 (95% CI −5.2 to −2.1).

### Environmental burdens lose most of their association

Among the 10 environmental indicators, all have a raw coefficient above zero and 9 have an interval above zero. 6 of them keep at most 23% of the raw coefficient after the controls. Diesel particulate matter goes from 11.6 (95% CI 8.6 to 14.6) to 1.1 (95% CI −0.8 to 2.9), traffic proximity from 11.9 (95% CI 8.1 to 15.6) to 2.4 (95% CI 1.2 to 3.5) and nitrogen dioxide from 11.4 (95% CI 10.1 to 12.7) to 2.0 (95% CI 0.8 to 3.1). The proximity indicators for hazardous waste facilities, Superfund sites and risk management facilities go from 13.1 (95% CI 11.9 to 14.4), 6.9 (95% CI 5.7 to 8.0) and 5.0 (95% CI 3.2 to 6.7) to 3.0 (95% CI 2.2 to 3.9), 0.6 (95% CI 0.0 to 1.1) and 0.5 (95% CI −0.3 to 1.3).

A state bootstrap puts the share of the raw coefficient that remains at 9% (95% CI −1% to 28%) for diesel, 20% (95% CI 14% to 28%) for traffic, 17% (95% CI 7% to 27%) for nitrogen dioxide and 23% (95% CI 17% to 28%) for hazardous waste proximity, and the 6 indicators keep between 8% and 23% of their raw coefficients. Race, education and density explain 47% of the within-state variation in diesel exposure, 59% in nitrogen dioxide and 51% in hazardous waste proximity, so much of the within-state difference in these exposures follows demographics. The other environmental indicators behave differently. Housing built before 1960 keeps 54% (95% CI 42% to 71%) of its raw coefficient and only 9% of its variation is explained by the controls. Ozone and fine particles reverse sign, and toxic releases to air have a raw interval that includes zero. Companion 8.1d, Air pollution and the vote (https://vishalsingh.org/politics/air-pollution-and-the-vote) takes up four of these exposures in detail.

These results depend on the level of the fixed effects. With county fixed effects in place of state fixed effects, which compares tracts inside one county, diesel is 4.1 (95% CI 2.7 to 5.6), which is 36% of its raw coefficient against 9% with state effects. Obesity goes from 0.0 (95% CI −1.5 to 1.6) to 6.7 (95% CI 5.7 to 7.7), fine particles from −2.0 (95% CI −3.8 to −0.1) to 0.2 (95% CI −1.5 to 1.9) and ozone from −3.2 (95% CI −4.3 to −2.1) to −1.1 (95% CI −2.1 to −0.2). Whether a measure behaves as a demographic proxy depends on how local the comparison is.

### The PLACES health measures share most of their variance with demographics

The CDC's PLACES estimates are the output of a multilevel model fitted to survey answers. Its inputs are the respondent's age, sex, race and ethnicity and education, the county poverty rate and state and county effects. The fitted model is then applied to each area's population by age, race and ethnicity and sex. Because counts by education are not available for small areas, a bootstrap assigns education to each group [6]. A tract's own college share is therefore not an input, and a tract's estimate differs from another's through its age, sex and racial mix and its county. The atlas holds crude prevalence and not age-adjusted prevalence, so a tract with older residents has higher prevalence of an age-related condition: arthritis correlates +0.62 with the share of older residents. Across tracts, race and ethnicity shares, the shares of older residents and of children, and county effects share between 66% and 89% of the variance of the 9 PLACES measures here. County effects alone share between 33% and 78%, and race and age alone between 25% and 63%. Race, education and density with state effects share between 40% and 80% of their within-state variance (Table 4).

Table 4. Race, education and density share 40% to 80% of the within-state variance of the PLACES health measures and 2% of the variance of toxic releases

Before controls the PLACES coefficients are near zero or negative with one exception: 0.2 (95% CI −1.2 to 1.6) for fair or poor health, −0.1 (95% CI −1.5 to 1.3) for poor mental health and −6.3 (95% CI −8.5 to −4.2) for depression, against 1.8 (95% CI 0.4 to 3.1) for lack of health insurance. With the controls in, 7 of the 9 are above zero, from 1.9 (95% CI 1.2 to 2.7) for diabetes to 7.6 (95% CI 6.2 to 9.0) for lack of health insurance. What is left after the controls includes the age and sex structure, which the controls omit, and each county's own level, which are the other inputs of the model. The coefficients are not evidence that illness goes with the vote apart from who lives in a tract. Planned, Health outcomes and the vote (https://vishalsingh.org/politics/health-outcomes-and-the-vote; planned) is planned to cover the full set of PLACES outcomes.

### Deprivation reverses sign and low income rank holds

The Area Deprivation Index changes from −5.9 (95% CI −8.2 to −3.5) to 3.9 (95% CI 2.6 to 5.2), and the share of its variation within states that the controls explain is 59%. Among the Opportunity Atlas measures, low household income rank keeps 119% (95% CI 70% to 234%) of its raw coefficient. Incarceration goes from 2.5 (95% CI 0.8 to 4.1) to 1.0 (95% CI 0.8 to 1.3), a share of 41% (95% CI 21% to 98%), and race, education and density explain only 13% of its variation. Low individual income rank goes from −2.4 (95% CI −4.0 to −0.7) to 2.0 (95% CI 1.3 to 2.7), and teen birth from 0.4 (95% CI −1.4 to 2.3) to 1.9 (95% CI 1.1 to 2.6). These estimates describe children born between 1978 and 1983 who grew up in a tract. Planned, Deprivation and mobility (https://vishalsingh.org/politics/deprivation-and-mobility; planned) is planned to ask how deprivation and mobility relate to the vote with race held constant.

### ZIP code areas add social capital and tax returns

Social capital and tax returns exist for ZIP code areas only. The ZIP-only sample is 18,039 ZIP code tabulation areas carrying 149.4 million of the 157.2 million votes in ZIP code areas with more than 100 votes. The Social Capital Atlas lacks values for 11,138 areas that otherwise qualify, which carry 7.7 million votes and voted 40% Democratic, against 53% in the sample, so the ZIP-only estimates describe the areas where the atlas has values.

Table 5. Friend clustering, volunteering and the unemployment compensation share change sign once the controls enter, while the earned income credit share keeps its raw sign

Economic connectedness, which Chetty and coauthors define as the share of friends with high socioeconomic status among people with low status [7], has a raw coefficient of 0.4 (95% CI −1.5 to 2.3) and an adjusted one of −0.9 (95% CI −3.1 to 1.3), both with intervals that include zero. The two cohesiveness measures (Table 5) are strongly negative before controls, −9.1 (95% CI −11.2 to −7.1) for friend clustering and −9.7 (95% CI −11.7 to −7.8) for the friend support ratio. With controls, clustering is 1.2 (95% CI 0.3 to 2.1) and the support ratio −2.0 (95% CI −3.0 to −1.1). The volunteering rate goes from −3.1 (95% CI −4.6 to −1.5) to 3.7 (95% CI 2.9 to 4.6). Planned, Social capital (https://vishalsingh.org/politics/social-capital; planned) is planned to take up these measures and the 2016 to 2020 swing.

The earned income credit share of tax returns keeps its sign, 2.0 (95% CI 0.2 to 3.8) before controls and 1.6 (95% CI 0.1 to 3.0) after. Low mean income per return has the other sign, −2.7 (95% CI −4.3 to −1.1) before controls and −1.7 (95% CI −3.0 to −0.4) after, so ZIP code areas with higher mean income and ZIP code areas with more credit claims both voted more Democratic. Companion 8.1b, Wages, capital and the ZIP code vote (https://vishalsingh.org/politics/wages-capital-and-the-county-vote) documents a U-shaped relation between tax-return shares and the 2020 margin. The share of returns with unemployment compensation goes from 4.8 (95% CI 3.2 to 6.4) to −1.2 (95% CI −2.3 to −0.2).

### The adjusted coefficient differs by surface

Two sets of measures exist on both surfaces, the Area Deprivation Index and the PLACES measures. Table 6 compares their coefficients on tracts and on ZIP code areas. Without controls the two surfaces differ by at most 1.5 points, with a median of 0.6. With the common specification they differ by up to 3.4 points, with a median of 2.0. No leisure-time physical activity has 3.3 (95% CI 2.4 to 4.1) on tracts and −0.2 (95% CI −1.2 to 0.9) on ZIP code areas. The sign of the adjusted coefficient agrees on 7 of the 10 measures.

Table 6. The same measure gives raw coefficients within 1.5 points on tracts and ZIP code areas but adjusted ones up to 3.4 points apart, and up to 2.8 points apart without the college share

The surfaces differ in more than the unit, and the college variable is one reason. The college variable of the ZIP code atlas has a vote-weighted mean of 63% against 37% for the tract college share, and its definition is unresolved: the atlas metadata call it college degree or higher, and Companion 8.1b, Wages, capital and the ZIP code vote (https://vishalsingh.org/politics/wages-capital-and-the-county-vote) finds that its county average is too high for a bachelor's share. Leaving the college share out on both surfaces brings the coefficients together. The sign agrees on 10 of the 10 measures, the median difference is 1.3 points and the largest is 2.8, and every coefficient is negative on both surfaces. The Area Deprivation Index is aggregated differently, an unweighted mean of block-group ranks for tracts and an area aggregation for ZIP code areas, and the PLACES values of ZIP code areas are the 2025 ZIP code estimates for 78% of the areas and a mix with tract aggregates for the rest, against the 2024 tract release.

The ZIP code areas in this comparison are the 29,276 that have an Area Deprivation Index and PLACES values, a set larger than the ZIP-only sample that includes more sparsely populated places than the tracts do. Estimates on the smaller ZIP-only sample differ from these by at most 0.7 points. Lack of health insurance has the largest adjusted coefficient on both surfaces. The unit, the sample and the aggregation of the measures cannot be separated from the college variable with these data.

### Other chapters use a different footing

Table 7 sets the specifications side by side. Companion 8.1d, Air pollution and the vote (https://vishalsingh.org/politics/air-pollution-and-the-vote) reports a margin, controls for median household income, standardizes exposures with an unweighted standard deviation and clusters by county. Its diesel coefficient with race, college share and income held fixed, converted to points of share, is 5.2 (95% CI 4.1 to 6.3) on 81,134 tracts, and 2.5 (95% CI 1.3 to 3.6) with density added. On the footing of this chapter, with state fixed effects and without income, it is 1.1 (95% CI −0.8 to 2.9). Without state effects but with race, education and density it is 2.5 (95% CI 0.2 to 4.8), close to the air chapter's value with density added, so the difference between the two chapters lies mainly in the state effects. The air chapter's within-county estimate, converted to points of share, is 3.5 (95% CI 2.6 to 4.4), and the county-effects estimate on this chapter's footing is 4.1 (95% CI 2.7 to 5.6). Their intervals overlap, and both are larger than the estimate with state effects, so the diesel result depends on the level of the fixed effects.

Table 7. Two existing chapters use a different outcome, sample, weights or controls, so their coefficients cannot be set beside the ones here

Companion 8.1b, Wages, capital and the ZIP code vote (https://vishalsingh.org/politics/wages-capital-and-the-county-vote) uses the change in the margin between 2016 and 2020 as its outcome, on 27,144 ZIP code areas, with poverty, college, Black and Hispanic shares as controls. A coefficient there is a change in the margin and a coefficient here is a level of the share, so the two do not compare, even for the earned income credit share that appears in both.

### The signs hold under the variations tried

Table 8 repeats the tract analysis under 9 variations. They are normal critical values, county clusters, the standard deviation without cutting the tails, percentile ranks in place of standard deviations, every tract counting once, the rural-urban commuting code in place of density, county fixed effects in place of state fixed effects, a higher vote floor, and median household income and the share of older residents added to the controls. The sign of the adjusted estimate agrees with the common specification for at least 21 of the 24 measures in each variation. The groups are less firm than the signs: the pattern agrees for at least 16 of the 24, and it changes most when every tract counts once and when ranks replace standard deviations. Two measures sit close to the line between keeping and losing. Housing built before 1960 keeps 54% (95% CI 42% to 71%) of its raw coefficient and is at or above 50% in 75% of the bootstrap replicates, and incarceration keeps 41% (95% CI 21% to 98%) and is at or above it in 26%.

Table 8. Under each of 9 changes to the specification the adjusted sign agrees with the common specification for at least 21 of the 24 measures

### What these data cannot show

The estimates describe areas in one election. They do not say how any resident of a tract voted. The vote in each area is an allocation of precinct returns by a land-cover model, and several of the measures are modeled as well, so the estimates carry errors that the intervals leave out. The measures are not independent of the controls. The Area Deprivation Index contains education, the PLACES values are built from age, sex, race and ethnicity, education and county, and the Opportunity Atlas and EJScreen values are model estimates whose inputs the atlas does not list, so some overlap with the controls is possible. An adjusted coefficient therefore compares areas on the part of a measure that the controls do not explain, and that part can be small. The data cannot say what the remainder is.

The specification is one choice among several. The controls leave out income and age, which the last table adds. The order in which controls enter changes the size of each step, and the level of the fixed effects changes some coefficients. The coefficients are per standard deviation after the tails are cut, and other scalings change the size of some of them. The 24 tract measures overlap and are not entered together, so the coefficients cannot say which of two related measures carries a pattern. Each interval is for one estimate, and there is no adjustment for the many estimates in the chapter.

The sources differ in vintage and in what they describe. The measures are dated 2019 to 2024 and the vote is from November 2020, so most of the releases came after the election, and the atlas files do not record their dates. The atlas also holds firearm, suicide and overdose rates, which this chapter leaves out because the file does not document their source. Social capital and tax returns exist only for ZIP code areas, and the Social Capital Atlas describes Facebook users. The comparison across measures is therefore made on two surfaces with two samples, and Table 6 shows that the adjusted coefficient differs by surface. Alaska and Hawaii are not in the vote layer, Connecticut's tracts do not join the atlas, and the District of Columbia drops out of the tract sample.

The vote is the 2020 presidential two-party share. The data say nothing about turnout, other offices, other elections or the swing between elections, which Companion 8.1b, Wages, capital and the ZIP code vote (https://vishalsingh.org/politics/wages-capital-and-the-county-vote) takes up for ZIP code areas and Planned, Social capital (https://vishalsingh.org/politics/social-capital; planned) is planned to take up.

## Tables

### Table 1. Raw associations with the Democratic vote split in sign across 24 hardship measures, and adjusted ones are smaller and mostly positive

Democratic share of the 2020 two-party presidential vote, points per standard deviation of each measure, tracts, raw and with race and ethnicity, education, density and state held fixed

| adj_hi | adj_lo | adjusted | group | label | n | pattern | raw | raw_hi | raw_lo | view |
| ---: | ---: | ---: | --- | --- | ---: | --- | ---: | ---: | ---: | --- |
| 5.22 | 2.58 | 3.90 | Deprivation: Area Deprivation Index | Area Deprivation Index rank | 80,873 | Reverses sign | −5.86 | −3.51 | −8.22 | source |
| 4.34 | 2.88 | 3.61 | Childhood outcomes: Opportunity Atlas | Low household income rank in adulthood | 80,873 | Keeps 50 percent or more of the raw coefficient | 3.04 | 4.81 | 1.27 | source |
| 2.70 | 1.26 | 1.98 | Childhood outcomes: Opportunity Atlas | Low individual income rank in adulthood | 80,873 | Reverses sign | −2.37 | −0.695 | −4.04 | source |
| 1.28 | 0.756 | 1.02 | Childhood outcomes: Opportunity Atlas | Incarceration | 80,873 | Loses more than 50 percent of the raw coefficient | 2.46 | 4.12 | 0.798 | source |
| 2.59 | 1.13 | 1.86 | Childhood outcomes: Opportunity Atlas | Teen birth among women | 80,873 | Raw interval includes zero | 0.429 | 2.29 | −1.43 | source |
| 2.93 | −0.774 | 1.08 | Environment: EJScreen | Diesel particulate matter | 80,873 | Loses more than 50 percent of the raw coefficient | 11.63 | 14.63 | 8.63 | source |
| 3.55 | 1.17 | 2.36 | Environment: EJScreen | Traffic proximity | 80,873 | Loses more than 50 percent of the raw coefficient | 11.86 | 15.60 | 8.12 | source |
| 3.14 | 0.801 | 1.97 | Environment: EJScreen | Nitrogen dioxide | 80,873 | Loses more than 50 percent of the raw coefficient | 11.40 | 12.69 | 10.12 | source |
| −0.087 | −3.84 | −1.96 | Environment: EJScreen | Fine particles (PM2.5) | 80,873 | Reverses sign | 4.63 | 6.19 | 3.07 | source |
| −2.09 | −4.28 | −3.18 | Environment: EJScreen | Ozone | 80,873 | Reverses sign | 3.83 | 6.30 | 1.36 | source |
| 0.635 | −0.145 | 0.245 | Environment: EJScreen | Toxic releases to air (RSEI) | 80,873 | Raw interval includes zero | 0.532 | 1.75 | −0.691 | source |
| 4.33 | 2.86 | 3.60 | Environment: EJScreen | Housing built before 1960 | 80,873 | Keeps 50 percent or more of the raw coefficient | 6.67 | 7.81 | 5.54 | source |
| 1.13 | −0.005 | 0.564 | Environment: EJScreen | Proximity to Superfund sites | 80,873 | Loses more than 50 percent of the raw coefficient | 6.88 | 8.01 | 5.75 | source |
| 1.31 | −0.327 | 0.492 | Environment: EJScreen | Proximity to risk management facilities | 80,873 | Loses more than 50 percent of the raw coefficient | 4.95 | 6.71 | 3.20 | source |
| 3.86 | 2.20 | 3.03 | Environment: EJScreen | Proximity to hazardous waste facilities | 80,873 | Loses more than 50 percent of the raw coefficient | 13.14 | 14.40 | 11.88 | source |
| 5.27 | 3.71 | 4.49 | Health: CDC PLACES | Fair or poor health | 80,873 | Raw interval includes zero | 0.221 | 1.60 | −1.16 | source |
| 3.57 | 2.59 | 3.08 | Health: CDC PLACES | Poor mental health | 80,873 | Raw interval includes zero | −0.113 | 1.29 | −1.52 | source |
| 4.14 | 1.98 | 3.06 | Health: CDC PLACES | Depression | 80,873 | Reverses sign | −6.33 | −4.16 | −8.49 | source |
| 2.68 | 1.22 | 1.95 | Health: CDC PLACES | Diabetes | 80,873 | Reverses sign | −1.67 | −0.121 | −3.22 | source |
| 1.58 | −1.50 | 0.036 | Health: CDC PLACES | Obesity | 80,873 | Loses more than 50 percent of the raw coefficient | −4.80 | −2.59 | −7.02 | source |
| 4.12 | 2.56 | 3.34 | Health: CDC PLACES | Current smoking | 80,873 | Reverses sign | −4.70 | −2.81 | −6.58 | source |
| 4.13 | 2.44 | 3.29 | Health: CDC PLACES | No leisure-time physical activity | 80,873 | Reverses sign | −1.88 | −0.282 | −3.49 | source |
| 8.97 | 6.21 | 7.59 | Health: CDC PLACES | No health insurance | 80,873 | Keeps 50 percent or more of the raw coefficient | 1.77 | 3.13 | 0.411 | source |
| 0.385 | −0.636 | −0.125 | Health: CDC PLACES | Arthritis | 80,873 | Loses more than 50 percent of the raw coefficient | −10.37 | −8.95 | −11.80 | source |
| 4.33 | 2.86 | 3.60 | Keeps 50 percent or more of the raw coefficient | Housing built before 1960 | 80,873 | Keeps 50 percent or more of the raw coefficient | 6.67 | 7.81 | 5.54 | pattern |
| 4.34 | 2.88 | 3.61 | Keeps 50 percent or more of the raw coefficient | Low household income rank in adulthood | 80,873 | Keeps 50 percent or more of the raw coefficient | 3.04 | 4.81 | 1.27 | pattern |
| 8.97 | 6.21 | 7.59 | Keeps 50 percent or more of the raw coefficient | No health insurance | 80,873 | Keeps 50 percent or more of the raw coefficient | 1.77 | 3.13 | 0.411 | pattern |
| 3.86 | 2.20 | 3.03 | Loses more than 50 percent of the raw coefficient | Proximity to hazardous waste facilities | 80,873 | Loses more than 50 percent of the raw coefficient | 13.14 | 14.40 | 11.88 | pattern |
| 3.55 | 1.17 | 2.36 | Loses more than 50 percent of the raw coefficient | Traffic proximity | 80,873 | Loses more than 50 percent of the raw coefficient | 11.86 | 15.60 | 8.12 | pattern |
| 2.93 | −0.774 | 1.08 | Loses more than 50 percent of the raw coefficient | Diesel particulate matter | 80,873 | Loses more than 50 percent of the raw coefficient | 11.63 | 14.63 | 8.63 | pattern |
| 3.14 | 0.801 | 1.97 | Loses more than 50 percent of the raw coefficient | Nitrogen dioxide | 80,873 | Loses more than 50 percent of the raw coefficient | 11.40 | 12.69 | 10.12 | pattern |
| 1.13 | −0.005 | 0.564 | Loses more than 50 percent of the raw coefficient | Proximity to Superfund sites | 80,873 | Loses more than 50 percent of the raw coefficient | 6.88 | 8.01 | 5.75 | pattern |
| 1.31 | −0.327 | 0.492 | Loses more than 50 percent of the raw coefficient | Proximity to risk management facilities | 80,873 | Loses more than 50 percent of the raw coefficient | 4.95 | 6.71 | 3.20 | pattern |
| 1.28 | 0.756 | 1.02 | Loses more than 50 percent of the raw coefficient | Incarceration | 80,873 | Loses more than 50 percent of the raw coefficient | 2.46 | 4.12 | 0.798 | pattern |
| 1.58 | −1.50 | 0.036 | Loses more than 50 percent of the raw coefficient | Obesity | 80,873 | Loses more than 50 percent of the raw coefficient | −4.80 | −2.59 | −7.02 | pattern |
| 0.385 | −0.636 | −0.125 | Loses more than 50 percent of the raw coefficient | Arthritis | 80,873 | Loses more than 50 percent of the raw coefficient | −10.37 | −8.95 | −11.80 | pattern |
| −0.087 | −3.84 | −1.96 | Reverses sign | Fine particles (PM2.5) | 80,873 | Reverses sign | 4.63 | 6.19 | 3.07 | pattern |
| −2.09 | −4.28 | −3.18 | Reverses sign | Ozone | 80,873 | Reverses sign | 3.83 | 6.30 | 1.36 | pattern |
| 2.68 | 1.22 | 1.95 | Reverses sign | Diabetes | 80,873 | Reverses sign | −1.67 | −0.121 | −3.22 | pattern |
| 4.13 | 2.44 | 3.29 | Reverses sign | No leisure-time physical activity | 80,873 | Reverses sign | −1.88 | −0.282 | −3.49 | pattern |
| 2.70 | 1.26 | 1.98 | Reverses sign | Low individual income rank in adulthood | 80,873 | Reverses sign | −2.37 | −0.695 | −4.04 | pattern |
| 4.12 | 2.56 | 3.34 | Reverses sign | Current smoking | 80,873 | Reverses sign | −4.70 | −2.81 | −6.58 | pattern |
| 5.22 | 2.58 | 3.90 | Reverses sign | Area Deprivation Index rank | 80,873 | Reverses sign | −5.86 | −3.51 | −8.22 | pattern |
| 4.14 | 1.98 | 3.06 | Reverses sign | Depression | 80,873 | Reverses sign | −6.33 | −4.16 | −8.49 | pattern |
| 0.635 | −0.145 | 0.245 | Raw interval includes zero | Toxic releases to air (RSEI) | 80,873 | Raw interval includes zero | 0.532 | 1.75 | −0.691 | pattern |
| 2.59 | 1.13 | 1.86 | Raw interval includes zero | Teen birth among women | 80,873 | Raw interval includes zero | 0.429 | 2.29 | −1.43 | pattern |
| 5.27 | 3.71 | 4.49 | Raw interval includes zero | Fair or poor health | 80,873 | Raw interval includes zero | 0.221 | 1.60 | −1.16 | pattern |
| 3.57 | 2.59 | 3.08 | Raw interval includes zero | Poor mental health | 80,873 | Raw interval includes zero | −0.113 | 1.29 | −1.52 | pattern |

Views: By data source (view = source); By what the controls do (view = pattern).

Note: Low household income rank and low individual income rank in adulthood are the Opportunity Atlas ranks with the sign reversed, so that a higher value means worse outcomes.

Note: Each measure is cut at its 1st and 99th percentiles across tracts before it is standardized with the vote-weighted mean and standard deviation.

Note: The grouping rule was set after a first run of the estimates, and the methods note gives it.

Note: Votes are estimates allocated from precincts to tracts, not reported counts.

Source: Precinct returns allocated to 2020 census tracts (Fekrazad 2025) with the ADI, Opportunity Atlas, EJScreen, PLACES and ACS values of the project tract atlas; 2020 presidential vote; weighted by tract votes

Data: https://vishalsingh.org/politics/report/measures-of-hardship-compared/figures/raw_vs_adjusted.json

### Table 2. The Social Capital Atlas drops ZIP code areas that voted 40% Democratic against 53% for those kept, and missing controls drop tracts in the District of Columbia

Units dropped at each step of the tract sample and the ZIP code area sample, with the votes they carry and their Democratic share of the two-party vote, 2020

| Sample | Step | Units dropped | Units left | Votes dropped (millions) | Democratic share of dropped votes (%) |
| --- | --- | ---: | ---: | ---: | ---: |
| Tracts | In the 2020 vote layer | n/a | 83,648 | n/a | n/a |
| Tracts | No row in the atlas | 883 | 82,765 | 1.82 | 60 |
| Tracts | 100 or fewer estimated votes | 1,148 | 81,617 | 0.01 | 60 |
| Tracts | Missing a race share, the college share or population density | 218 | 81,399 | 0.36 | 93 |
| Tracts | Missing the Area Deprivation Index | 321 | 81,078 | 0.18 | 61 |
| Tracts | Missing an Opportunity Atlas estimate | 200 | 80,878 | 0.28 | 59 |
| Tracts | Missing an EJScreen indicator | 5 | 80,873 | 0.01 | 48 |
| ZIP code areas | In the 2020 vote layer | n/a | 32,462 | n/a | n/a |
| ZIP code areas | No row in the atlas | 34 | 32,428 | 0.00 | 22 |
| ZIP code areas | 100 or fewer estimated votes | 3,008 | 29,420 | 0.14 | 30 |
| ZIP code areas | Missing a race share, the college share or population density | 96 | 29,324 | 0.03 | 55 |
| ZIP code areas | Missing the Area Deprivation Index | 48 | 29,276 | 0.02 | 41 |
| ZIP code areas | Bridge sample: Area Deprivation Index and PLACES present | n/a | 29,276 | n/a | n/a |
| ZIP code areas | Missing a Social Capital Atlas value | 11,138 | 18,138 | 7.66 | 40 |
| ZIP code areas | Missing an IRS value | 99 | 18,039 | 0.14 | 54 |

Note: Steps that drop no unit are left out: no tract and no ZIP code area lacks a PLACES value.

Note: Alaska and Hawaii are not in the vote layer. The tracts with no atlas row are all in Connecticut, which has votes in the vote layer but is coded by planning region in the atlas.

Note: The ZIP code atlas has Connecticut ZIP code areas, so the ZIP sample covers Connecticut.

Source: Precinct returns allocated to 2020 tracts and ZIP code tabulation areas (Fekrazad 2025) with the project atlases; 2020 presidential vote; counts of units and votes, unweighted sums

Data: https://vishalsingh.org/politics/report/measures-of-hardship-compared/figures/sample_counts.json

### Table 3. Race and education move the coefficients most, and density and state fixed effects move them less

Coefficient of the tract Democratic two-party share on each standardized measure, points per standard deviation, as controls are added from left to right

| family | hi | lo | measure | n | specification | value |
| --- | ---: | ---: | --- | ---: | --- | ---: |
| Deprivation: Area Deprivation Index | −3.51 | −8.22 | Area Deprivation Index rank | 80,873 | No controls | −5.86 |
| Deprivation: Area Deprivation Index | −5.58 | −8.87 | Area Deprivation Index rank | 80,873 | Race and ethnicity | −7.22 |
| Deprivation: Area Deprivation Index | 1.91 | −3.33 | Area Deprivation Index rank | 80,873 | Plus education | −0.712 |
| Deprivation: Area Deprivation Index | 2.34 | −2.27 | Area Deprivation Index rank | 80,873 | Plus density | 0.037 |
| Deprivation: Area Deprivation Index | 5.22 | 2.58 | Area Deprivation Index rank | 80,873 | Plus state effects | 3.90 |
| Childhood outcomes: Opportunity Atlas | 4.81 | 1.27 | Low household income rank in adulthood | 80,873 | No controls | 3.04 |
| Childhood outcomes: Opportunity Atlas | 0.415 | −2.91 | Low household income rank in adulthood | 80,873 | Race and ethnicity | −1.25 |
| Childhood outcomes: Opportunity Atlas | 3.98 | 0.906 | Low household income rank in adulthood | 80,873 | Plus education | 2.45 |
| Childhood outcomes: Opportunity Atlas | 3.52 | 0.596 | Low household income rank in adulthood | 80,873 | Plus density | 2.06 |
| Childhood outcomes: Opportunity Atlas | 4.34 | 2.88 | Low household income rank in adulthood | 80,873 | Plus state effects | 3.61 |
| Childhood outcomes: Opportunity Atlas | −0.695 | −4.04 | Low individual income rank in adulthood | 80,873 | No controls | −2.37 |
| Childhood outcomes: Opportunity Atlas | −2.29 | −5.08 | Low individual income rank in adulthood | 80,873 | Race and ethnicity | −3.68 |
| Childhood outcomes: Opportunity Atlas | 1.51 | −0.940 | Low individual income rank in adulthood | 80,873 | Plus education | 0.286 |
| Childhood outcomes: Opportunity Atlas | 1.53 | −0.850 | Low individual income rank in adulthood | 80,873 | Plus density | 0.340 |
| Childhood outcomes: Opportunity Atlas | 2.70 | 1.26 | Low individual income rank in adulthood | 80,873 | Plus state effects | 1.98 |
| Childhood outcomes: Opportunity Atlas | 4.12 | 0.798 | Incarceration | 80,873 | No controls | 2.46 |
| Childhood outcomes: Opportunity Atlas | 0.212 | −1.43 | Incarceration | 80,873 | Race and ethnicity | −0.610 |
| Childhood outcomes: Opportunity Atlas | 1.03 | −0.316 | Incarceration | 80,873 | Plus education | 0.355 |
| Childhood outcomes: Opportunity Atlas | 0.744 | −0.326 | Incarceration | 80,873 | Plus density | 0.209 |
| Childhood outcomes: Opportunity Atlas | 1.28 | 0.756 | Incarceration | 80,873 | Plus state effects | 1.02 |
| Childhood outcomes: Opportunity Atlas | 2.29 | −1.43 | Teen birth among women | 80,873 | No controls | 0.429 |
| Childhood outcomes: Opportunity Atlas | −3.78 | −6.98 | Teen birth among women | 80,873 | Race and ethnicity | −5.38 |
| Childhood outcomes: Opportunity Atlas | 0.326 | −2.69 | Teen birth among women | 80,873 | Plus education | −1.18 |
| Childhood outcomes: Opportunity Atlas | 0.688 | −1.96 | Teen birth among women | 80,873 | Plus density | −0.636 |
| Childhood outcomes: Opportunity Atlas | 2.59 | 1.13 | Teen birth among women | 80,873 | Plus state effects | 1.86 |
| Environment: EJScreen | 14.63 | 8.63 | Diesel particulate matter | 80,873 | No controls | 11.63 |
| Environment: EJScreen | 10.40 | 5.16 | Diesel particulate matter | 80,873 | Race and ethnicity | 7.78 |
| Environment: EJScreen | 7.82 | 2.73 | Diesel particulate matter | 80,873 | Plus education | 5.27 |
| Environment: EJScreen | 4.79 | 0.207 | Diesel particulate matter | 80,873 | Plus density | 2.50 |
| Environment: EJScreen | 2.93 | −0.774 | Diesel particulate matter | 80,873 | Plus state effects | 1.08 |
| Environment: EJScreen | 15.60 | 8.12 | Traffic proximity | 80,873 | No controls | 11.86 |
| Environment: EJScreen | 11.35 | 5.93 | Traffic proximity | 80,873 | Race and ethnicity | 8.64 |
| Environment: EJScreen | 8.99 | 4.06 | Traffic proximity | 80,873 | Plus education | 6.52 |
| Environment: EJScreen | 6.63 | 2.79 | Traffic proximity | 80,873 | Plus density | 4.71 |
| Environment: EJScreen | 3.55 | 1.17 | Traffic proximity | 80,873 | Plus state effects | 2.36 |
| Environment: EJScreen | 12.69 | 10.12 | Nitrogen dioxide | 80,873 | No controls | 11.40 |
| Environment: EJScreen | 8.87 | 6.43 | Nitrogen dioxide | 80,873 | Race and ethnicity | 7.65 |
| Environment: EJScreen | 6.67 | 3.94 | Nitrogen dioxide | 80,873 | Plus education | 5.31 |
| Environment: EJScreen | 4.34 | 0.115 | Nitrogen dioxide | 80,873 | Plus density | 2.23 |
| Environment: EJScreen | 3.14 | 0.801 | Nitrogen dioxide | 80,873 | Plus state effects | 1.97 |
| Environment: EJScreen | 6.19 | 3.07 | Fine particles (PM2.5) | 80,873 | No controls | 4.63 |
| Environment: EJScreen | 2.47 | −1.15 | Fine particles (PM2.5) | 80,873 | Race and ethnicity | 0.662 |
| Environment: EJScreen | 2.18 | −1.45 | Fine particles (PM2.5) | 80,873 | Plus education | 0.366 |
| Environment: EJScreen | 1.36 | −2.20 | Fine particles (PM2.5) | 80,873 | Plus density | −0.419 |
| Environment: EJScreen | −0.087 | −3.84 | Fine particles (PM2.5) | 80,873 | Plus state effects | −1.96 |
| Environment: EJScreen | 6.30 | 1.36 | Ozone | 80,873 | No controls | 3.83 |
| Environment: EJScreen | 4.61 | −1.76 | Ozone | 80,873 | Race and ethnicity | 1.43 |
| Environment: EJScreen | 3.20 | −2.19 | Ozone | 80,873 | Plus education | 0.502 |
| Environment: EJScreen | 1.52 | −2.67 | Ozone | 80,873 | Plus density | −0.577 |
| Environment: EJScreen | −2.09 | −4.28 | Ozone | 80,873 | Plus state effects | −3.18 |
| Environment: EJScreen | 1.75 | −0.691 | Toxic releases to air (RSEI) | 80,873 | No controls | 0.532 |
| Environment: EJScreen | 0.834 | −1.21 | Toxic releases to air (RSEI) | 80,873 | Race and ethnicity | −0.188 |
| Environment: EJScreen | 0.752 | −1.22 | Toxic releases to air (RSEI) | 80,873 | Plus education | −0.235 |
| Environment: EJScreen | 0.163 | −1.38 | Toxic releases to air (RSEI) | 80,873 | Plus density | −0.610 |
| Environment: EJScreen | 0.635 | −0.145 | Toxic releases to air (RSEI) | 80,873 | Plus state effects | 0.245 |
| Environment: EJScreen | 7.81 | 5.54 | Housing built before 1960 | 80,873 | No controls | 6.67 |
| Environment: EJScreen | 6.98 | 4.95 | Housing built before 1960 | 80,873 | Race and ethnicity | 5.96 |
| Environment: EJScreen | 7.40 | 5.21 | Housing built before 1960 | 80,873 | Plus education | 6.31 |
| Environment: EJScreen | 6.32 | 4.14 | Housing built before 1960 | 80,873 | Plus density | 5.23 |
| Environment: EJScreen | 4.33 | 2.86 | Housing built before 1960 | 80,873 | Plus state effects | 3.60 |
| Environment: EJScreen | 8.01 | 5.75 | Proximity to Superfund sites | 80,873 | No controls | 6.88 |
| Environment: EJScreen | 5.60 | 3.34 | Proximity to Superfund sites | 80,873 | Race and ethnicity | 4.47 |
| Environment: EJScreen | 4.51 | 2.22 | Proximity to Superfund sites | 80,873 | Plus education | 3.36 |
| Environment: EJScreen | 3.08 | 1.18 | Proximity to Superfund sites | 80,873 | Plus density | 2.13 |
| Environment: EJScreen | 1.13 | −0.005 | Proximity to Superfund sites | 80,873 | Plus state effects | 0.564 |
| Environment: EJScreen | 6.71 | 3.20 | Proximity to risk management facilities | 80,873 | No controls | 4.95 |
| Environment: EJScreen | 3.38 | 0.564 | Proximity to risk management facilities | 80,873 | Race and ethnicity | 1.97 |
| Environment: EJScreen | 2.88 | 0.640 | Proximity to risk management facilities | 80,873 | Plus education | 1.76 |
| Environment: EJScreen | 1.66 | −0.431 | Proximity to risk management facilities | 80,873 | Plus density | 0.617 |
| Environment: EJScreen | 1.31 | −0.327 | Proximity to risk management facilities | 80,873 | Plus state effects | 0.492 |
| Environment: EJScreen | 14.40 | 11.88 | Proximity to hazardous waste facilities | 80,873 | No controls | 13.14 |
| Environment: EJScreen | 11.06 | 8.94 | Proximity to hazardous waste facilities | 80,873 | Race and ethnicity | 10.00 |
| Environment: EJScreen | 8.90 | 6.43 | Proximity to hazardous waste facilities | 80,873 | Plus education | 7.67 |
| Environment: EJScreen | 7.10 | 4.56 | Proximity to hazardous waste facilities | 80,873 | Plus density | 5.83 |
| Environment: EJScreen | 3.86 | 2.20 | Proximity to hazardous waste facilities | 80,873 | Plus state effects | 3.03 |
| Health: CDC PLACES | 1.60 | −1.16 | Fair or poor health | 80,873 | No controls | 0.221 |
| Health: CDC PLACES | −5.58 | −8.68 | Fair or poor health | 80,873 | Race and ethnicity | −7.13 |
| Health: CDC PLACES | 3.23 | 0.169 | Fair or poor health | 80,873 | Plus education | 1.70 |
| Health: CDC PLACES | 3.63 | 1.01 | Fair or poor health | 80,873 | Plus density | 2.32 |
| Health: CDC PLACES | 5.27 | 3.71 | Fair or poor health | 80,873 | Plus state effects | 4.49 |
| Health: CDC PLACES | 1.29 | −1.52 | Poor mental health | 80,873 | No controls | −0.113 |
| Health: CDC PLACES | −2.86 | −5.70 | Poor mental health | 80,873 | Race and ethnicity | −4.28 |
| Health: CDC PLACES | 4.70 | 1.53 | Poor mental health | 80,873 | Plus education | 3.12 |
| Health: CDC PLACES | 3.15 | 0.123 | Poor mental health | 80,873 | Plus density | 1.64 |
| Health: CDC PLACES | 3.57 | 2.59 | Poor mental health | 80,873 | Plus state effects | 3.08 |
| Health: CDC PLACES | −4.16 | −8.49 | Depression | 80,873 | No controls | −6.33 |
| Health: CDC PLACES | 0.363 | −3.76 | Depression | 80,873 | Race and ethnicity | −1.70 |
| Health: CDC PLACES | 4.53 | −0.085 | Depression | 80,873 | Plus education | 2.22 |
| Health: CDC PLACES | 3.63 | −0.600 | Depression | 80,873 | Plus density | 1.51 |
| Health: CDC PLACES | 4.14 | 1.98 | Depression | 80,873 | Plus state effects | 3.06 |
| Health: CDC PLACES | −0.121 | −3.22 | Diabetes | 80,873 | No controls | −1.67 |
| Health: CDC PLACES | −6.62 | −9.63 | Diabetes | 80,873 | Race and ethnicity | −8.13 |
| Health: CDC PLACES | −1.84 | −4.23 | Diabetes | 80,873 | Plus education | −3.04 |
| Health: CDC PLACES | 0.097 | −2.35 | Diabetes | 80,873 | Plus density | −1.13 |
| Health: CDC PLACES | 2.68 | 1.22 | Diabetes | 80,873 | Plus state effects | 1.95 |
| Health: CDC PLACES | −2.59 | −7.02 | Obesity | 80,873 | No controls | −4.80 |
| Health: CDC PLACES | −7.44 | −11.41 | Obesity | 80,873 | Race and ethnicity | −9.43 |
| Health: CDC PLACES | −0.618 | −6.02 | Obesity | 80,873 | Plus education | −3.32 |
| Health: CDC PLACES | 0.588 | −4.34 | Obesity | 80,873 | Plus density | −1.88 |
| Health: CDC PLACES | 1.58 | −1.50 | Obesity | 80,873 | Plus state effects | 0.036 |
| Health: CDC PLACES | −2.81 | −6.58 | Current smoking | 80,873 | No controls | −4.70 |
| Health: CDC PLACES | −5.84 | −8.87 | Current smoking | 80,873 | Race and ethnicity | −7.35 |
| Health: CDC PLACES | 2.74 | −0.592 | Current smoking | 80,873 | Plus education | 1.07 |
| Health: CDC PLACES | 2.74 | −0.049 | Current smoking | 80,873 | Plus density | 1.35 |
| Health: CDC PLACES | 4.12 | 2.56 | Current smoking | 80,873 | Plus state effects | 3.34 |
| Health: CDC PLACES | −0.282 | −3.49 | No leisure-time physical activity | 80,873 | No controls | −1.88 |
| Health: CDC PLACES | −7.07 | −9.72 | No leisure-time physical activity | 80,873 | Race and ethnicity | −8.40 |
| Health: CDC PLACES | 0.640 | −3.25 | No leisure-time physical activity | 80,873 | Plus education | −1.30 |
| Health: CDC PLACES | 0.744 | −2.34 | No leisure-time physical activity | 80,873 | Plus density | −0.799 |
| Health: CDC PLACES | 4.13 | 2.44 | No leisure-time physical activity | 80,873 | Plus state effects | 3.29 |
| Health: CDC PLACES | 3.13 | 0.411 | No health insurance | 80,873 | No controls | 1.77 |
| Health: CDC PLACES | −7.70 | −12.78 | No health insurance | 80,873 | Race and ethnicity | −10.24 |
| Health: CDC PLACES | −2.84 | −6.99 | No health insurance | 80,873 | Plus education | −4.91 |
| Health: CDC PLACES | −2.42 | −5.51 | No health insurance | 80,873 | Plus density | −3.96 |
| Health: CDC PLACES | 8.97 | 6.21 | No health insurance | 80,873 | Plus state effects | 7.59 |
| Health: CDC PLACES | −8.95 | −11.80 | Arthritis | 80,873 | No controls | −10.37 |
| Health: CDC PLACES | −6.06 | −9.56 | Arthritis | 80,873 | Race and ethnicity | −7.81 |
| Health: CDC PLACES | −1.48 | −3.91 | Arthritis | 80,873 | Plus education | −2.69 |
| Health: CDC PLACES | 0.759 | −2.40 | Arthritis | 80,873 | Plus density | −0.818 |
| Health: CDC PLACES | 0.385 | −0.636 | Arthritis | 80,873 | Plus state effects | −0.125 |

Note: The order of the columns is one of several; the size of each step depends on the order, so the steps are not shares of a total.

Note: A coefficient of zero is white, and values beyond the ends of the color scale take the color of the end.

Source: Precinct returns allocated to 2020 census tracts (Fekrazad 2025) with the ADI, Opportunity Atlas, EJScreen, PLACES and ACS values of the project tract atlas; 2020 presidential vote; weighted by tract votes

Data: https://vishalsingh.org/politics/report/measures-of-hardship-compared/figures/control_ladder.json

### Table 4. Race, education and density share 40% to 80% of the within-state variance of the PLACES health measures and 2% of the variance of toxic releases

Share of the vote-weighted variance of each measure shared with the controls, in percent: within states for race and ethnicity shares, the college share and density; across all tracts for race, age and county effects in the second view

| family | label | value | view |
| --- | --- | ---: | --- |
| Deprivation | Area Deprivation Index rank | 59.24 | common |
| Childhood outcomes | Low household income rank in adulthood | 38.80 | common |
| Childhood outcomes | Low individual income rank in adulthood | 30.35 | common |
| Childhood outcomes | Incarceration | 13.36 | common |
| Childhood outcomes | Teen birth among women | 41.91 | common |
| Environment | Diesel particulate matter | 46.88 | common |
| Environment | Traffic proximity | 36.42 | common |
| Environment | Nitrogen dioxide | 58.75 | common |
| Environment | Fine particles (PM2.5) | 12.93 | common |
| Environment | Ozone | 9.23 | common |
| Environment | Toxic releases to air (RSEI) | 2.09 | common |
| Environment | Housing built before 1960 | 9.11 | common |
| Environment | Proximity to Superfund sites | 10.08 | common |
| Environment | Proximity to risk management facilities | 15.12 | common |
| Environment | Proximity to hazardous waste facilities | 50.74 | common |
| Health | Fair or poor health | 70.55 | common |
| Health | Poor mental health | 59.95 | common |
| Health | Depression | 40.34 | common |
| Health | Diabetes | 56.23 | common |
| Health | Obesity | 71.20 | common |
| Health | Current smoking | 71.35 | common |
| Health | No leisure-time physical activity | 73.11 | common |
| Health | No health insurance | 80.22 | common |
| Health | Arthritis | 50.24 | common |
| Social capital | Economic connectedness (ZIP code areas) | 71.28 | common |
| Social capital | Economic connectedness among group members (ZIP code areas) | 68.35 | common |
| Social capital | Friend clustering (ZIP code areas) | 50.74 | common |
| Social capital | Friend support ratio (ZIP code areas) | 42.22 | common |
| Social capital | Volunteering rate (ZIP code areas) | 35.73 | common |
| Social capital | Civic organizations per capita (ZIP code areas) | 9.28 | common |
| Tax returns | Earned income credit share of returns (ZIP code areas) | 79.93 | common |
| Tax returns | Unemployment compensation share of returns (ZIP code areas) | 23.71 | common |
| Tax returns | Low mean adjusted gross income per return (ZIP code areas) | 53.73 | common |
| Health | Fair or poor health | 69.26 | places |
| Health | Poor mental health | 67.18 | places |
| Health | Depression | 87.07 | places |
| Health | Diabetes | 76.39 | places |
| Health | Obesity | 89.39 | places |
| Health | Current smoking | 66.46 | places |
| Health | No leisure-time physical activity | 72.75 | places |
| Health | No health insurance | 84.86 | places |
| Health | Arthritis | 85.16 | places |

Views: Race, education and density, within states (view = common); PLACES measures: race, age and county, all tracts (view = places).

Note: R-squared values describe the full sample and carry no interval.

Note: ZIP code rows use the ZIP code sample that has every Social Capital Atlas and IRS value.

Note: Each measure is cut at its 1st and 99th percentiles before the variance is taken, as in the coefficient figures.

Source: Precinct returns allocated to 2020 census tracts and ZIP code tabulation areas (Fekrazad 2025) with the project atlases; 2020 presidential vote; weighted by votes in each unit

Data: https://vishalsingh.org/politics/report/measures-of-hardship-compared/figures/demographic_content.json

### Table 5. Friend clustering, volunteering and the unemployment compensation share change sign once the controls enter, while the earned income credit share keeps its raw sign

Democratic share of the 2020 two-party presidential vote, points per standard deviation of each measure, ZIP code areas, raw and with race and ethnicity, education, density and state held fixed

| adj_hi | adj_lo | adjusted | group | label | n | raw | raw_hi | raw_lo |
| ---: | ---: | ---: | --- | --- | ---: | ---: | ---: | ---: |
| 1.26 | −3.09 | −0.914 | Social capital: Social Capital Atlas (higher means more connection) | Economic connectedness | 18,039 | 0.394 | 2.28 | −1.49 |
| −0.018 | −3.67 | −1.84 | Social capital: Social Capital Atlas (higher means more connection) | Economic connectedness among group members | 18,039 | 1.33 | 3.03 | −0.368 |
| 2.11 | 0.322 | 1.22 | Social capital: Social Capital Atlas (higher means more connection) | Friend clustering | 18,039 | −9.13 | −7.06 | −11.21 |
| −1.06 | −2.97 | −2.01 | Social capital: Social Capital Atlas (higher means more connection) | Friend support ratio | 18,039 | −9.74 | −7.81 | −11.67 |
| 4.59 | 2.86 | 3.72 | Social capital: Social Capital Atlas (higher means more connection) | Volunteering rate | 18,039 | −3.05 | −1.49 | −4.62 |
| 2.72 | 1.79 | 2.26 | Social capital: Social Capital Atlas (higher means more connection) | Civic organizations per capita | 18,039 | −0.433 | 0.445 | −1.31 |
| 3.03 | 0.129 | 1.58 | Tax returns: IRS ZIP code data | Earned income credit share of returns | 18,039 | 2.03 | 3.83 | 0.227 |
| −0.187 | −2.28 | −1.23 | Tax returns: IRS ZIP code data | Unemployment compensation share of returns | 18,039 | 4.80 | 6.37 | 3.23 |
| −0.350 | −2.96 | −1.65 | Tax returns: IRS ZIP code data | Low mean adjusted gross income per return | 18,039 | −2.67 | −1.10 | −4.25 |

Note: Low mean adjusted gross income per return is the mean with its sign reversed, so that a higher value means lower income.

Note: Each measure is cut at its 1st and 99th percentiles across ZIP code areas before it is standardized.

Note: Votes are estimates allocated from precincts to ZIP code tabulation areas, not reported counts.

Source: Precinct returns allocated to ZIP code tabulation areas (Fekrazad 2025) with the ADI, PLACES, Social Capital Atlas, IRS and ACS values of the project ZIP code atlas; 2020 presidential vote; weighted by ZIP code area votes

Data: https://vishalsingh.org/politics/report/measures-of-hardship-compared/figures/zip_measures.json

### Table 6. The same measure gives raw coefficients within 1.5 points on tracts and ZIP code areas but adjusted ones up to 3.4 points apart, and up to 2.8 points apart without the college share

Democratic share of the 2020 two-party presidential vote, points per standard deviation, Area Deprivation Index and nine PLACES measures, tracts and ZIP code areas

| estimate | hi | lo | measure | n | specification | surface |
| ---: | ---: | ---: | --- | ---: | --- | --- |
| −5.86 | −3.51 | −8.22 | Area Deprivation Index rank | 80,873 | No controls | Tracts |
| 3.90 | 5.22 | 2.58 | Area Deprivation Index rank | 80,873 | Common specification | Tracts |
| −3.63 | −2.07 | −5.19 | Area Deprivation Index rank | 80,873 | Without the college share | Tracts |
| −7.15 | −5.16 | −9.14 | Area Deprivation Index rank | 29,276 | No controls | ZIP code areas |
| 1.75 | 4.00 | −0.505 | Area Deprivation Index rank | 29,276 | Common specification | ZIP code areas |
| −3.78 | −1.71 | −5.85 | Area Deprivation Index rank | 29,276 | Without the college share | ZIP code areas |
| 0.221 | 1.60 | −1.16 | Fair or poor health | 80,873 | No controls | Tracts |
| 4.49 | 5.27 | 3.71 | Fair or poor health | 80,873 | Common specification | Tracts |
| −3.32 | −2.34 | −4.30 | Fair or poor health | 80,873 | Without the college share | Tracts |
| −0.317 | 1.41 | −2.05 | Fair or poor health | 29,276 | No controls | ZIP code areas |
| 2.65 | 3.67 | 1.63 | Fair or poor health | 29,276 | Common specification | ZIP code areas |
| −5.22 | −4.07 | −6.37 | Fair or poor health | 29,276 | Without the college share | ZIP code areas |
| −0.113 | 1.29 | −1.52 | Poor mental health | 80,873 | No controls | Tracts |
| 3.08 | 3.57 | 2.59 | Poor mental health | 80,873 | Common specification | Tracts |
| −3.13 | −2.38 | −3.88 | Poor mental health | 80,873 | Without the college share | Tracts |
| −1.49 | 0.106 | −3.09 | Poor mental health | 29,276 | No controls | ZIP code areas |
| 1.35 | 2.54 | 0.159 | Poor mental health | 29,276 | Common specification | ZIP code areas |
| −3.18 | −2.31 | −4.06 | Poor mental health | 29,276 | Without the college share | ZIP code areas |
| −6.33 | −4.16 | −8.49 | Depression | 80,873 | No controls | Tracts |
| 3.06 | 4.14 | 1.98 | Depression | 80,873 | Common specification | Tracts |
| −2.24 | −1.12 | −3.37 | Depression | 80,873 | Without the college share | Tracts |
| −5.98 | −3.10 | −8.86 | Depression | 29,276 | No controls | ZIP code areas |
| 3.83 | 5.57 | 2.09 | Depression | 29,276 | Common specification | ZIP code areas |
| −0.727 | 1.07 | −2.53 | Depression | 29,276 | Without the college share | ZIP code areas |
| −1.67 | −0.121 | −3.22 | Diabetes | 80,873 | No controls | Tracts |
| 1.95 | 2.68 | 1.22 | Diabetes | 80,873 | Common specification | Tracts |
| −3.07 | −1.90 | −4.23 | Diabetes | 80,873 | Without the college share | Tracts |
| −2.36 | −0.770 | −3.95 | Diabetes | 29,276 | No controls | ZIP code areas |
| −0.206 | 0.716 | −1.13 | Diabetes | 29,276 | Common specification | ZIP code areas |
| −4.81 | −3.45 | −6.17 | Diabetes | 29,276 | Without the college share | ZIP code areas |
| −4.80 | −2.59 | −7.02 | Obesity | 80,873 | No controls | Tracts |
| 0.036 | 1.58 | −1.50 | Obesity | 80,873 | Common specification | Tracts |
| −6.59 | −5.20 | −7.99 | Obesity | 80,873 | Without the college share | Tracts |
| −6.04 | −3.97 | −8.12 | Obesity | 29,276 | No controls | ZIP code areas |
| −2.63 | −0.550 | −4.72 | Obesity | 29,276 | Common specification | ZIP code areas |
| −6.77 | −5.14 | −8.41 | Obesity | 29,276 | Without the college share | ZIP code areas |
| −4.70 | −2.81 | −6.58 | Current smoking | 80,873 | No controls | Tracts |
| 3.34 | 4.12 | 2.56 | Current smoking | 80,873 | Common specification | Tracts |
| −4.83 | −3.99 | −5.66 | Current smoking | 80,873 | Without the college share | Tracts |
| −6.19 | −4.37 | −8.00 | Current smoking | 29,276 | No controls | ZIP code areas |
| 0.890 | 2.38 | −0.598 | Current smoking | 29,276 | Common specification | ZIP code areas |
| −5.87 | −5.05 | −6.68 | Current smoking | 29,276 | Without the college share | ZIP code areas |
| −1.88 | −0.282 | −3.49 | No leisure-time physical activity | 80,873 | No controls | Tracts |
| 3.29 | 4.13 | 2.44 | No leisure-time physical activity | 80,873 | Common specification | Tracts |
| −4.74 | −3.78 | −5.69 | No leisure-time physical activity | 80,873 | Without the college share | Tracts |
| −2.14 | −0.438 | −3.83 | No leisure-time physical activity | 29,276 | No controls | ZIP code areas |
| −0.158 | 0.920 | −1.24 | No leisure-time physical activity | 29,276 | Common specification | ZIP code areas |
| −6.35 | −5.27 | −7.42 | No leisure-time physical activity | 29,276 | Without the college share | ZIP code areas |
| 1.77 | 3.13 | 0.411 | No health insurance | 80,873 | No controls | Tracts |
| 7.59 | 8.97 | 6.21 | No health insurance | 80,873 | Common specification | Tracts |
| −2.86 | −0.641 | −5.08 | No health insurance | 80,873 | Without the college share | Tracts |
| 1.66 | 2.98 | 0.333 | No health insurance | 29,276 | No controls | ZIP code areas |
| 6.04 | 8.54 | 3.54 | No health insurance | 29,276 | Common specification | ZIP code areas |
| −5.69 | −3.78 | −7.59 | No health insurance | 29,276 | Without the college share | ZIP code areas |
| −10.37 | −8.95 | −11.80 | Arthritis | 80,873 | No controls | Tracts |
| −0.125 | 0.385 | −0.636 | Arthritis | 80,873 | Common specification | Tracts |
| −3.96 | −2.86 | −5.06 | Arthritis | 80,873 | Without the college share | Tracts |
| −10.79 | −9.16 | −12.42 | Arthritis | 29,276 | No controls | ZIP code areas |
| −1.53 | −0.643 | −2.42 | Arthritis | 29,276 | Common specification | ZIP code areas |
| −4.86 | −3.48 | −6.23 | Arthritis | 29,276 | Without the college share | ZIP code areas |

Note: Tract and ZIP code area samples differ: ZIP code areas are fewer and include more sparsely populated places, so the comparison mixes the unit and the sample.

Note: The surfaces also differ in how the Area Deprivation Index is aggregated and in the PLACES release, so the unit is not the only difference.

Note: Estimates for the ZIP-only sample that also requires every Social Capital Atlas and IRS value differ from these by less than the surface difference.

Source: Precinct returns allocated to 2020 census tracts and ZIP code tabulation areas (Fekrazad 2025) with the ADI and PLACES values of the project atlases; 2020 presidential vote; weighted by votes in each unit

Data: https://vishalsingh.org/politics/report/measures-of-hardship-compared/figures/surface_check.json

### Table 7. Two existing chapters use a different outcome, sample, weights or controls, so their coefficients cannot be set beside the ones here

Outcome, unit, weights, controls and interval method of this chapter and of the two chapters that use the same atlas files

| Chapter | Outcome | Unit and sample | Weights | Controls | Intervals |
| --- | --- | --- | --- | --- | --- |
| This chapter, tracts | Democratic share of the two-party vote, 2020, in points | 80,873 tracts, 3,081 counties | Votes in the tract | White, Black, Asian and Hispanic shares, college share, log density, state effects | State clusters, t distribution |
| This chapter, ZIP code areas | Democratic share of the two-party vote, 2020, in points | 18,039 ZIP code areas (Social Capital Atlas and IRS sample) | Votes in the ZIP code area | Same, with the college variable of the ZIP code atlas | State clusters, t distribution |
| Air pollution and the vote | Democratic two-party margin, 2020, in points (a linear function of the share) | 81,134 tracts, 3,096 counties | Votes in the tract | White, Black and Hispanic shares, college share, median household income; density in one row, county effects in another | County clusters, normal; exposures standardized with the unweighted standard deviation |
| Wages, capital and the ZIP code vote | Swing: 2020 margin minus 2016 margin, in points | 27,144 ZIP code areas, 3,088 counties | 2020 votes in the ZIP code area | Poverty, college, Black and Hispanic shares; the average tax rate in some rows | County clusters, t distribution; state clusters as a check |

Source: Chapter data of this book: tract and ZIP code atlas files (Fekrazad 2025) with 2016 and 2020 presidential votes; descriptions of specifications, with unit counts recomputed from the files; counts are unweighted

Data: https://vishalsingh.org/politics/report/measures-of-hardship-compared/figures/chapter_specs.json

### Table 8. Under each of 9 changes to the specification the adjusted sign agrees with the common specification for at least 21 of the 24 measures

Tract measures, number of measures whose adjusted interval lies above zero, below zero or includes zero, and agreement with the common specification

| Variation | Tracts | Above zero | Below zero | Includes zero | Same sign | Same pattern |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| Common specification | 80,873 | 16 | 2 | 6 | 24 | 24 |
| Normal instead of t critical value | 80,873 | 17 | 2 | 5 | 24 | 24 |
| Intervals clustered by county | 80,873 | 19 | 2 | 3 | 24 | 24 |
| Standard deviation without cutting the tails | 80,873 | 16 | 2 | 6 | 24 | 24 |
| Vote-weighted percentile rank in place of the standard deviation | 80,873 | 17 | 1 | 6 | 21 | 19 |
| Every tract counts once | 80,873 | 18 | 1 | 5 | 24 | 16 |
| Rural-urban commuting area code in place of density | 80,873 | 19 | 2 | 3 | 23 | 23 |
| County fixed effects in place of state fixed effects | 80,873 | 21 | 1 | 2 | 23 | 22 |
| Tracts with more than 500 votes | 78,837 | 16 | 2 | 6 | 23 | 24 |
| Median household income and the share of older residents added | 80,653 | 17 | 2 | 5 | 23 | 22 |

Note: The pattern is the grouping of the first figure; the group labels there state the rule.

Note: The income and age row drops the tracts without a median household income.

Source: Precinct returns allocated to 2020 census tracts (Fekrazad 2025) with the project tract atlas; 2020 presidential vote; weighted by tract votes except where the row says every tract counts once

Data: https://vishalsingh.org/politics/report/measures-of-hardship-compared/figures/robustness.json

## All estimates

Every fact in facts.json (173), sorted by id.

| Fact id | Value | Unit | Estimand | Population | Period | Interval | n | Weights | Source | Note |
| --- | ---: | --- | --- | --- | --- | --- | ---: | --- | --- | --- |
| adi_no_edu | −3.6 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Area Deprivation Index with the college share left out | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI −5.2 to −2.1 | 80,873 | votes cast in the tract (pres_tot) | Area Deprivation Index |   |
| adi_no_fe | 0.0 | points of Democratic two-party vote share per standard deviation of the measure | coefficient of the Area Deprivation Index with race, education and density but no state fixed effects | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI −2.3 to 2.3 | 80,873 | votes cast in the tract (pres_tot) | Area Deprivation Index |   |
| adi_race_only | −7.2 | points of Democratic two-party vote share per standard deviation of the measure | coefficient of the Area Deprivation Index with race and ethnicity shares held fixed | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI −8.9 to −5.6 | 80,873 | votes cast in the tract (pres_tot) | Area Deprivation Index |   |
| air_diesel_ctrl | 5.2 | points of Democratic two-party vote share per standard deviation of diesel exposure | coefficient of the Democratic share on diesel exposure standardized with the unweighted standard deviation, race, college share and median income held fixed | tracts of the air pollution chapter sample | 2020 presidential election | 95% CI 4.1 to 6.3 | 81,134 | votes cast in the tract (pres_tot) | EJScreen |   |
| air_diesel_dens | 2.5 | points of Democratic two-party vote share per standard deviation of diesel exposure | coefficient of the Democratic share on diesel exposure standardized with the unweighted standard deviation, race, college share, median income and density held fixed | tracts of the air pollution chapter sample | 2020 presidential election | 95% CI 1.3 to 3.6 | 81,134 | votes cast in the tract (pres_tot) | EJScreen |   |
| air_diesel_fe | 3.5 | points of Democratic two-party vote share per standard deviation of diesel exposure | within-county coefficient of the Democratic share on diesel exposure with race, college share, median income and density held fixed | tracts of the air pollution chapter sample | 2020 presidential election | 95% CI 2.6 to 4.4 | 81,134 | votes cast in the tract (pres_tot) | EJScreen |   |
| air_n | 81,134 | tracts | count of tracts | tracts of the air pollution chapter sample | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| coll_mean_tract | 37% | percent of residents | vote-weighted mean of the tract college share (pct_college_plus) | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| coll_mean_zip | 63% | percent of residents | vote-weighted mean of the ZIP code area college variable (per_college_above) | ZIP code areas with more than 100 estimated votes, the Area Deprivation Index and every PLACES measure | 2020 presidential election |   |   | votes cast in the ZIP code area (pres_tot_2020) | Precinct votes on census geographies |   |
| dem_not_in_atlas | 60% | percent of the two-party vote | Democratic share of the two-party vote | tracts of the vote layer with no row in the tract atlas | 2020 presidential election |   |   | votes cast (sums of tract votes) | Precinct votes on census geographies |   |
| diesel_cfe | 4.1 | points of Democratic two-party vote share per standard deviation of the measure | coefficient with race, education and density and county fixed effects instead of state fixed effects: diesel particulate matter | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 2.7 to 5.6 | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| diesel_no_fe | 2.5 | points of Democratic two-party vote share per standard deviation of the measure | coefficient with race, education and density but no state fixed effects: diesel particulate matter | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 0.2 to 4.8 | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| drop_controls | 218 | tracts | count of tracts dropped at this step of the sample | tracts with more than 100 votes | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| drop_controls_dc | 203 | tracts | count of such tracts in the District of Columbia | tracts with more than 100 votes and no race share or college share | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| drop_controls_dem | 93% | percent of the two-party vote | Democratic share of the two-party vote | tracts dropped for a missing control | 2020 presidential election |   |   | votes cast (sums of tract votes) | Precinct votes on census geographies |   |
| drop_dens | 0.9 | points of Democratic two-party vote share per standard deviation of the measure | median across measures of the absolute change in the common-specification coefficient when density is left out | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| drop_edu | 3.0 | points of Democratic two-party vote share per standard deviation of the measure | median across measures of the absolute change in the common-specification coefficient when education is left out | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| drop_race | 3.2 | points of Democratic two-party vote share per standard deviation of the measure | median across measures of the absolute change in the common-specification coefficient when race and ethnicity is left out | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| dropped_dem | 74.3% | percent of the two-party vote | Democratic share of the two-party vote in the dropped tracts | dropped tracts with more than 100 votes | 2020 presidential election |   |   | votes cast (sums of tract votes) | Precinct votes on census geographies |   |
| dropped_n | 744 | tracts | count of tracts dropped | tracts with more than 100 votes that lack a measure or control | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| dropped_other_dem | 59% | percent of the two-party vote | Democratic share of the two-party vote | tracts dropped for a missing Area Deprivation Index, Opportunity Atlas or EJScreen value | 2020 presidential election |   |   | votes cast (sums of tract votes) | Precinct votes on census geographies |   |
| dropped_other_n | 526 | tracts | count of tracts dropped | tracts with more than 100 votes and the controls but no value for the Area Deprivation Index, the Opportunity Atlas or EJScreen | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| jail_p50 | 26% | percent of bootstrap replicates | share of 2,000 state bootstrap replicates in which the retained share is at least 50 percent: incarceration | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | Opportunity Atlas |   |
| keep_threshold | 50% | percent of the raw coefficient | share of the raw coefficient that a measure must keep to count as keeping its association | measures with a raw interval that excludes zero | 2020 presidential election |   |   | none (rule) | Precinct votes on census geographies |   |
| kept_diesel | 9% | percent of the raw coefficient | common-specification coefficient divided by the raw coefficient, diesel particulate matter | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI −1% to 28% | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| kept_diesel_cfe | 36% | percent of the raw coefficient | county-fixed-effects coefficient divided by the raw coefficient, diesel particulate matter (a ratio of point estimates) | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| kept_env_max | 23% | percent of the raw coefficient | largest share of the raw coefficient kept among the six indicators | six environmental indicators | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| kept_env_min | 8% | percent of the raw coefficient | smallest share of the raw coefficient kept among the six indicators | six environmental indicators | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| kept_haz | 23% | percent of the raw coefficient | common-specification coefficient divided by the raw coefficient, proximity to hazardous waste facilities | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 17% to 28% | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| kept_jail | 41% | percent of the raw coefficient | common-specification coefficient divided by the raw coefficient, incarceration | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 21% to 98% | 80,873 | votes cast in the tract (pres_tot) | Opportunity Atlas |   |
| kept_kfr | 119% | percent of the raw coefficient | common-specification coefficient divided by the raw coefficient, low household income rank in adulthood | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 70% to 234% | 80,873 | votes cast in the tract (pres_tot) | Opportunity Atlas |   |
| kept_lead | 54% | percent of the raw coefficient | common-specification coefficient divided by the raw coefficient, housing built before 1960 | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 42% to 71% | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| kept_no2 | 17% | percent of the raw coefficient | common-specification coefficient divided by the raw coefficient, nitrogen dioxide | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 7% to 27% | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| kept_traffic | 20% | percent of the raw coefficient | common-specification coefficient divided by the raw coefficient, traffic proximity | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 14% to 28% | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| lead_p50 | 75% | percent of bootstrap replicates | share of 2,000 state bootstrap replicates in which the retained share is at least 50 percent: housing built before 1960 | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| margin_factor | 2 | multiple | factor between the two-party margin in points and the Democratic share minus 50 | tracts | 2020 presidential election |   |   | none (definition) | Precinct votes on census geographies |   |
| med_abs_adj | 2.2 | points of Democratic two-party vote share per standard deviation of the measure | median across measures of the absolute common-specification coefficient | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| med_abs_raw | 4.7 | points of Democratic two-party vote share per standard deviation of the measure | median across measures of the absolute raw coefficient | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| n_adj_neg | 2 | measures | count of measures whose adjusted 95% interval lies below zero | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| n_adj_pos | 16 | measures | count of measures whose adjusted 95% interval lies above zero | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| n_adj_zero | 6 | measures | count of measures whose adjusted 95% interval includes zero | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| n_atlas_tracts | 82,765 | tracts | count of tracts | 2020 census tracts in the tract atlas | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| n_closer | 17 | measures | count of measures whose adjusted coefficient is closer to zero than the raw coefficient | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| n_counties | 3,081 | counties | count of counties containing a tract of the sample | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| n_env | 10 | indicators | count of environmental indicators | EJScreen indicators in the chapter | 2020 presidential election |   |   | none (count) | EJScreen |   |
| n_env_lose | 6 | indicators | count of environmental indicators that keep less than half of the raw coefficient or whose adjusted interval includes zero | EJScreen indicators in the chapter | 2020 presidential election |   |   | none (count) | EJScreen |   |
| n_env_pos_int | 9 | indicators | count of environmental indicators whose raw 95% interval lies above zero | EJScreen indicators in the chapter | 2020 presidential election |   |   | none (count) | EJScreen |   |
| n_health | 9 | measures | count of PLACES measures | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| n_health_pos | 7 | measures | count of PLACES measures whose adjusted 95% interval lies above zero | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| n_keeps | 3 | measures | count of measures that keep their sign and at least half of the raw coefficient | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| n_layer_tracts | 83,648 | tracts | count of tracts | 2020 census tracts in the vote layer | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| n_lose | 9 | measures | count of measures that keep less than half of the raw coefficient or whose adjusted interval includes zero | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| n_meas | 24 | measures | count of measures | tract measures of hardship in the chapter | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| n_not_in_atlas | 883 | tracts | count of tracts | tracts of the vote layer with no row in the tract atlas | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| n_over100 | 81,617 | tracts | count of tracts | tracts in the atlas with more than 100 estimated presidential votes | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| n_raw_neg | 8 | measures | count of measures whose raw 95% interval lies below zero | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| n_raw_nonzero | 20 | measures | count of measures whose raw 95% interval excludes zero | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| n_raw_pos | 12 | measures | count of measures whose raw 95% interval lies above zero | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| n_raw_zero | 4 | measures | count of measures whose raw 95% interval includes zero | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| n_reverses | 8 | measures | count of measures whose adjusted interval lies on the other side of zero from the raw coefficient | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| n_sc_meas | 6 | measures | count of measures | Social Capital Atlas measures | 2020 presidential election |   |   | none (count) | Social Capital Atlas |   |
| n_startzero | 4 | measures | count of measures whose raw interval includes zero | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| n_states | 47 | states | count of states containing a tract of the sample | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| n_surf | 10 | measures | count of measures on both surfaces | ADI and PLACES measures | 2020 presidential election |   |   | none (count) | Precinct votes on census geographies |   |
| n_tracts | 80,873 | tracts | count of tracts in the common sample | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| n_variants | 9 | measures | count of variations of the specification | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| n_zip | 18,039 | ZIP code areas | count of ZIP code areas in the ZIP-only sample | ZIP code areas with more than 100 estimated votes and every measure and control, including the Social Capital Atlas and IRS values | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| n_zip_br | 29,276 | ZIP code areas | count of ZIP code areas in the bridge sample | ZIP code areas with more than 100 estimated votes, the Area Deprivation Index and every PLACES measure | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| n_zip_meas | 9 | measures | count of Social Capital Atlas and IRS measures | ZIP-only measures | 2020 presidential election |   |   | none (count) | Precinct votes on census geographies |   |
| obesity_cfe | 6.7 | points of Democratic two-party vote share per standard deviation of the measure | coefficient with race, education and density and county fixed effects instead of state fixed effects: obesity | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 5.7 to 7.7 | 80,873 | votes cast in the tract (pres_tot) | CDC PLACES |   |
| ozone_cfe | −1.1 | points of Democratic two-party vote share per standard deviation of the measure | coefficient with race, education and density and county fixed effects instead of state fixed effects: ozone | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI −2.1 to −0.2 | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| places_comp_max | 89% | percent of variance | largest share of the variance of a PLACES measure explained by race and ethnicity, age and county effects | tracts with more than 100 votes, race and age shares present | 2020 presidential election |   | 81,400 | votes cast in the tract (pres_tot) | CDC PLACES |   |
| places_comp_min | 66% | percent of variance | smallest share of the variance of a PLACES measure explained by race and ethnicity, age and county effects | tracts with more than 100 votes, race and age shares present | 2020 presidential election |   | 81,400 | votes cast in the tract (pres_tot) | CDC PLACES |   |
| places_county_max | 78% | percent of variance | largest share of the variance of a PLACES measure shared with county fixed effects alone | tracts with more than 100 votes, race and age shares present | 2020 presidential election |   | 81,400 | votes cast in the tract (pres_tot) | CDC PLACES |   |
| places_county_min | 33% | percent of variance | smallest share of the variance of a PLACES measure shared with county fixed effects alone | tracts with more than 100 votes, race and age shares present | 2020 presidential election |   | 81,400 | votes cast in the tract (pres_tot) | CDC PLACES |   |
| places_looked | 19 | measures | count of PLACES measures examined in an exploratory run before the nine of the chapter were chosen | PLACES measures in the tract atlas | 2020 presidential election |   |   | none (count) | CDC PLACES |   |
| places_raceage_max | 63% | percent of variance | largest share of the variance of a PLACES measure shared with race and ethnicity and age shares alone | tracts with more than 100 votes, race and age shares present | 2020 presidential election |   | 81,400 | votes cast in the tract (pres_tot) | CDC PLACES |   |
| places_raceage_min | 25% | percent of variance | smallest share of the variance of a PLACES measure shared with race and ethnicity and age shares alone | tracts with more than 100 votes, race and age shares present | 2020 presidential election |   | 81,400 | votes cast in the tract (pres_tot) | CDC PLACES |   |
| places_total | 40 | measures | count of PLACES measures in the tract atlas | PLACES measures in the tract atlas | 2020 presidential election |   |   | none (count) | CDC PLACES |   |
| pm25_cfe | 0.2 | points of Democratic two-party vote share per standard deviation of the measure | coefficient with race, education and density and county fixed effects instead of state fixed effects: fine particles (pm2.5) | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI −1.5 to 1.9 | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| r2_adi | 59% | percent of within-state variance | share of the within-state variance of the Area Deprivation Index explained by race and ethnicity, college share and density | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | Area Deprivation Index |   |
| r2_diesel | 47% | percent of within-state variance | share of the within-state variance of diesel exposure explained by race and ethnicity, college share and density | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| r2_haz | 51% | percent of within-state variance | share of the within-state variance of hazardous waste proximity explained by race and ethnicity, college share and density | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| r2_health_max | 80% | percent of within-state variance | largest share of the within-state variance of a PLACES measure explained by race and ethnicity, college share and density | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | CDC PLACES |   |
| r2_health_min | 40% | percent of within-state variance | smallest share of the within-state variance of a PLACES measure explained by race and ethnicity, college share and density | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | CDC PLACES |   |
| r2_jail | 13% | percent of within-state variance | share of the within-state variance of childhood incarceration explained by race and ethnicity, college share and density | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | Opportunity Atlas |   |
| r2_lead | 9% | percent of within-state variance | share of the within-state variance of older housing explained by race and ethnicity, college share and density | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| r2_no2 | 59% | percent of within-state variance | share of the within-state variance of nitrogen dioxide explained by race and ethnicity, college share and density | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| r2_toxics | 2% | percent of within-state variance | share of the within-state variance of toxic releases explained by race and ethnicity, college share and density | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| r2_y_within | 72% | percent of within-state variance | share of the vote-weighted within-state variance of the Democratic share explained by race and ethnicity, college share and log density | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| r_age_arthritis | +0.62 | correlation | vote-weighted correlation of arthritis prevalence with the share of residents aged 65 and older | tracts with more than 100 votes, race and age shares present | 2020 presidential election |   | 81,400 | votes cast in the tract (pres_tot) | CDC PLACES |   |
| rob_pattern_min | 16 | measures | smallest count of measures whose pattern matches the common specification across the variations | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| rob_pos_max | 21 | measures | largest count of measures with an adjusted interval above zero across the common specification and its variations | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| rob_pos_min | 16 | measures | smallest count of measures with an adjusted interval above zero across the common specification and its variations | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| rob_sign_min | 21 | measures | smallest count of measures whose adjusted sign matches the common specification across the variations | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| sample_dem | 52.0% | percent of the two-party vote | Democratic share of the two-party vote in the sample | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast (sums of tract votes) | Precinct votes on census geographies |   |
| sd_y | 20.9 | points of Democratic two-party share | vote-weighted standard deviation of the tract Democratic two-party share | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| step_dens | 1.0 | points of Democratic two-party vote share per standard deviation of the measure | median across measures of the absolute change in the coefficient when density enters | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| step_edu | 3.8 | points of Democratic two-party vote share per standard deviation of the measure | median across measures of the absolute change in the coefficient when education enters | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| step_fe | 1.6 | points of Democratic two-party vote share per standard deviation of the measure | median across measures of the absolute change in the coefficient when state fixed effects enters | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| step_race | 3.5 | points of Democratic two-party vote share per standard deviation of the measure | median across measures of the absolute change in the coefficient when race and ethnicity enters | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   | 80,873 | votes cast in the tract (pres_tot) | Precinct votes on census geographies |   |
| surf_adj_max | 3.4 | points of Democratic two-party vote share per standard deviation of the measure | largest absolute difference between the tract and ZIP code area common-specification coefficients across ten measures | ADI and PLACES measures on tracts and on ZIP code areas | 2020 presidential election |   |   | votes cast in the unit | Precinct votes on census geographies |   |
| surf_adj_median | 2.0 | points of Democratic two-party vote share per standard deviation of the measure | median absolute difference between the tract and ZIP code area common-specification coefficients across ten measures | ADI and PLACES measures on tracts and on ZIP code areas | 2020 presidential election |   |   | votes cast in the unit | Precinct votes on census geographies |   |
| surf_nc_max | 2.8 | points of Democratic two-party vote share per standard deviation of the measure | largest absolute difference between the tract and ZIP code area coefficients with race, density and state held fixed and the college share left out | ADI and PLACES measures on tracts and on ZIP code areas | 2020 presidential election |   |   | votes cast in the unit | Precinct votes on census geographies |   |
| surf_nc_median | 1.3 | points of Democratic two-party vote share per standard deviation of the measure | median absolute difference between the tract and ZIP code area coefficients with the college share left out | ADI and PLACES measures on tracts and on ZIP code areas | 2020 presidential election |   |   | votes cast in the unit | Precinct votes on census geographies |   |
| surf_nc_same | 10 | measures | count of the ten measures with the same sign of the coefficient on tracts and on ZIP code areas with the college share left out | ADI and PLACES measures | 2020 presidential election |   |   | votes cast in the unit | Precinct votes on census geographies |   |
| surf_raw_max | 1.5 | points of Democratic two-party vote share per standard deviation of the measure | largest absolute difference between the tract and ZIP code area raw coefficients across ten measures | ADI and PLACES measures on tracts and on ZIP code areas | 2020 presidential election |   |   | votes cast in the unit | Precinct votes on census geographies |   |
| surf_raw_median | 0.6 | points of Democratic two-party vote share per standard deviation of the measure | median absolute difference between the tract and ZIP code area raw coefficients across ten measures | ADI and PLACES measures on tracts and on ZIP code areas | 2020 presidential election |   |   | votes cast in the unit | Precinct votes on census geographies |   |
| surf_same_sign | 7 | measures | count of the ten measures with the same sign of the common-specification coefficient on tracts and on ZIP code areas | ADI and PLACES measures | 2020 presidential election |   |   | votes cast in the unit | Precinct votes on census geographies |   |
| surf_sc_diff | 0.7 | points of Democratic two-party vote share per standard deviation of the measure | largest absolute difference between common-specification coefficients on the bridge sample and the ZIP-only sample across ten measures | ADI and PLACES measures on tracts and on ZIP code areas | 2020 presidential election |   |   | votes cast in the unit | Precinct votes on census geographies |   |
| t_access2_adj | 7.6 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: no health insurance | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 6.2 to 9.0 | 80,873 | votes cast in the tract (pres_tot) | CDC PLACES |   |
| t_access2_raw | 1.8 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: no health insurance | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 0.4 to 3.1 | 80,873 | votes cast in the tract (pres_tot) | CDC PLACES |   |
| t_adi_adj | 3.9 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: area deprivation index rank | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 2.6 to 5.2 | 80,873 | votes cast in the tract (pres_tot) | Area Deprivation Index |   |
| t_adi_raw | −5.9 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: area deprivation index rank | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI −8.2 to −3.5 | 80,873 | votes cast in the tract (pres_tot) | Area Deprivation Index |   |
| t_arthritis_raw | −10.4 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: arthritis | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI −11.8 to −8.9 | 80,873 | votes cast in the tract (pres_tot) | CDC PLACES |   |
| t_depression_raw | −6.3 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: depression | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI −8.5 to −4.2 | 80,873 | votes cast in the tract (pres_tot) | CDC PLACES |   |
| t_diabetes_adj | 1.9 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: diabetes | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 1.2 to 2.7 | 80,873 | votes cast in the tract (pres_tot) | CDC PLACES |   |
| t_diesel_adj | 1.1 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: diesel particulate matter | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI −0.8 to 2.9 | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| t_diesel_raw | 11.6 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: diesel particulate matter | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 8.6 to 14.6 | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| t_ghlth_adj | 4.5 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: fair or poor health | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 3.7 to 5.3 | 80,873 | votes cast in the tract (pres_tot) | CDC PLACES |   |
| t_ghlth_raw | 0.2 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: fair or poor health | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI −1.2 to 1.6 | 80,873 | votes cast in the tract (pres_tot) | CDC PLACES |   |
| t_haz_adj | 3.0 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: proximity to hazardous waste facilities | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 2.2 to 3.9 | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| t_haz_raw | 13.1 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: proximity to hazardous waste facilities | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 11.9 to 14.4 | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| t_jail_adj | 1.0 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: incarceration | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 0.8 to 1.3 | 80,873 | votes cast in the tract (pres_tot) | Opportunity Atlas |   |
| t_jail_raw | 2.5 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: incarceration | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 0.8 to 4.1 | 80,873 | votes cast in the tract (pres_tot) | Opportunity Atlas |   |
| t_kfr_adj | 3.6 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: low household income rank in adulthood | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 2.9 to 4.3 | 80,873 | votes cast in the tract (pres_tot) | Opportunity Atlas |   |
| t_kfr_raw | 3.0 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: low household income rank in adulthood | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 1.3 to 4.8 | 80,873 | votes cast in the tract (pres_tot) | Opportunity Atlas |   |
| t_kir_adj | 2.0 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: low individual income rank in adulthood | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 1.3 to 2.7 | 80,873 | votes cast in the tract (pres_tot) | Opportunity Atlas |   |
| t_kir_raw | −2.4 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: low individual income rank in adulthood | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI −4.0 to −0.7 | 80,873 | votes cast in the tract (pres_tot) | Opportunity Atlas |   |
| t_lead_adj | 3.6 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: housing built before 1960 | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 2.9 to 4.3 | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| t_lpa_adj | 3.3 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: no leisure-time physical activity | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 2.4 to 4.1 | 80,873 | votes cast in the tract (pres_tot) | CDC PLACES |   |
| t_mhlth_raw | −0.1 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: poor mental health | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI −1.5 to 1.3 | 80,873 | votes cast in the tract (pres_tot) | CDC PLACES |   |
| t_no2_adj | 2.0 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: nitrogen dioxide | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 0.8 to 3.1 | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| t_no2_raw | 11.4 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: nitrogen dioxide | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 10.1 to 12.7 | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| t_obesity_adj | 0.0 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: obesity | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI −1.5 to 1.6 | 80,873 | votes cast in the tract (pres_tot) | CDC PLACES |   |
| t_ozone_adj | −3.2 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: ozone | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI −4.3 to −2.1 | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| t_pm25_adj | −2.0 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: fine particles (pm2.5) | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI −3.8 to −0.1 | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| t_rmp_adj | 0.5 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: proximity to risk management facilities | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI −0.3 to 1.3 | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| t_rmp_raw | 5.0 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: proximity to risk management facilities | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 3.2 to 6.7 | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| t_superfund_adj | 0.6 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: proximity to superfund sites | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 0.0 to 1.1 | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| t_superfund_raw | 6.9 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: proximity to superfund sites | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 5.7 to 8.0 | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| t_teen_adj | 1.9 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: teen birth among women | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 1.1 to 2.6 | 80,873 | votes cast in the tract (pres_tot) | Opportunity Atlas |   |
| t_teen_raw | 0.4 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: teen birth among women | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI −1.4 to 2.3 | 80,873 | votes cast in the tract (pres_tot) | Opportunity Atlas |   |
| t_traffic_adj | 2.4 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: traffic proximity | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 1.2 to 3.5 | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| t_traffic_raw | 11.9 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: traffic proximity | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election | 95% CI 8.1 to 15.6 | 80,873 | votes cast in the tract (pres_tot) | EJScreen |   |
| vote_floor | 100 | estimated votes | minimum votes for a unit to enter the sample | tracts and ZIP code areas | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| votes_m | 154.8 million | votes | sum of estimated presidential votes | tracts in the 2020 atlas with more than 100 estimated votes and every measure and control | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| votes_not_in_atlas_m | 1.8 million | votes | sum of estimated presidential votes | tracts of the vote layer with no row in the tract atlas | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| wages_n | 27,144 | ZIP code areas | count of ZIP code areas | ZIP code areas of the wages chapter sample | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| z_agi_adj | −1.7 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: low mean adjusted gross income per return | ZIP code areas with more than 100 estimated votes and every measure and control, including the Social Capital Atlas and IRS values | 2020 presidential election | 95% CI −3.0 to −0.4 | 18,039 | votes cast in the ZIP code area (pres_tot_2020) | IRS SOI ZIP code data |   |
| z_agi_raw | −2.7 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: low mean adjusted gross income per return | ZIP code areas with more than 100 estimated votes and every measure and control, including the Social Capital Atlas and IRS values | 2020 presidential election | 95% CI −4.3 to −1.1 | 18,039 | votes cast in the ZIP code area (pres_tot_2020) | IRS SOI ZIP code data |   |
| z_eitc_adj | 1.6 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: earned income credit share of returns | ZIP code areas with more than 100 estimated votes and every measure and control, including the Social Capital Atlas and IRS values | 2020 presidential election | 95% CI 0.1 to 3.0 | 18,039 | votes cast in the ZIP code area (pres_tot_2020) | IRS SOI ZIP code data |   |
| z_eitc_raw | 2.0 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: earned income credit share of returns | ZIP code areas with more than 100 estimated votes and every measure and control, including the Social Capital Atlas and IRS values | 2020 presidential election | 95% CI 0.2 to 3.8 | 18,039 | votes cast in the ZIP code area (pres_tot_2020) | IRS SOI ZIP code data |   |
| z_sc_clu_adj | 1.2 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: friend clustering | ZIP code areas with more than 100 estimated votes and every measure and control, including the Social Capital Atlas and IRS values | 2020 presidential election | 95% CI 0.3 to 2.1 | 18,039 | votes cast in the ZIP code area (pres_tot_2020) | Social Capital Atlas |   |
| z_sc_clu_raw | −9.1 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: friend clustering | ZIP code areas with more than 100 estimated votes and every measure and control, including the Social Capital Atlas and IRS values | 2020 presidential election | 95% CI −11.2 to −7.1 | 18,039 | votes cast in the ZIP code area (pres_tot_2020) | Social Capital Atlas |   |
| z_sc_ec_adj | −0.9 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: economic connectedness | ZIP code areas with more than 100 estimated votes and every measure and control, including the Social Capital Atlas and IRS values | 2020 presidential election | 95% CI −3.1 to 1.3 | 18,039 | votes cast in the ZIP code area (pres_tot_2020) | Social Capital Atlas |   |
| z_sc_ec_raw | 0.4 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: economic connectedness | ZIP code areas with more than 100 estimated votes and every measure and control, including the Social Capital Atlas and IRS values | 2020 presidential election | 95% CI −1.5 to 2.3 | 18,039 | votes cast in the ZIP code area (pres_tot_2020) | Social Capital Atlas |   |
| z_sc_sup_adj | −2.0 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: friend support ratio | ZIP code areas with more than 100 estimated votes and every measure and control, including the Social Capital Atlas and IRS values | 2020 presidential election | 95% CI −3.0 to −1.1 | 18,039 | votes cast in the ZIP code area (pres_tot_2020) | Social Capital Atlas |   |
| z_sc_sup_raw | −9.7 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: friend support ratio | ZIP code areas with more than 100 estimated votes and every measure and control, including the Social Capital Atlas and IRS values | 2020 presidential election | 95% CI −11.7 to −7.8 | 18,039 | votes cast in the ZIP code area (pres_tot_2020) | Social Capital Atlas |   |
| z_sc_vol_adj | 3.7 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: volunteering rate | ZIP code areas with more than 100 estimated votes and every measure and control, including the Social Capital Atlas and IRS values | 2020 presidential election | 95% CI 2.9 to 4.6 | 18,039 | votes cast in the ZIP code area (pres_tot_2020) | Social Capital Atlas |   |
| z_sc_vol_raw | −3.1 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: volunteering rate | ZIP code areas with more than 100 estimated votes and every measure and control, including the Social Capital Atlas and IRS values | 2020 presidential election | 95% CI −4.6 to −1.5 | 18,039 | votes cast in the ZIP code area (pres_tot_2020) | Social Capital Atlas |   |
| z_unemp_adj | −1.2 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: unemployment compensation share of returns | ZIP code areas with more than 100 estimated votes and every measure and control, including the Social Capital Atlas and IRS values | 2020 presidential election | 95% CI −2.3 to −0.2 | 18,039 | votes cast in the ZIP code area (pres_tot_2020) | IRS SOI ZIP code data |   |
| z_unemp_raw | 4.8 | points of Democratic two-party vote share per standard deviation of the measure | raw coefficient of the Democratic two-party share on the standardized measure: unemployment compensation share of returns | ZIP code areas with more than 100 estimated votes and every measure and control, including the Social Capital Atlas and IRS values | 2020 presidential election | 95% CI 3.2 to 6.4 | 18,039 | votes cast in the ZIP code area (pres_tot_2020) | IRS SOI ZIP code data |   |
| zb_lpa_adj | −0.2 | points of Democratic two-party vote share per standard deviation of the measure | common-specification coefficient of the Democratic two-party share on the standardized measure: no leisure-time physical activity | ZIP code areas with more than 100 estimated votes, the Area Deprivation Index and every PLACES measure | 2020 presidential election | 95% CI −1.2 to 0.9 | 29,276 | votes cast in the ZIP code area (pres_tot_2020) | CDC PLACES |   |
| zip_adj_neg | 4 | measures | count of ZIP-only measures whose adjusted 95% interval lies below zero | ZIP-only measures | 2020 presidential election |   |   | none (count) | Precinct votes on census geographies |   |
| zip_adj_pos | 4 | measures | count of ZIP-only measures whose adjusted 95% interval lies above zero | ZIP-only measures | 2020 presidential election |   |   | none (count) | Precinct votes on census geographies |   |
| zip_health_native | 78% | percent of ZIP code areas | share of ZIP code areas whose PLACES values are native ZIP code tabulation area estimates | ZIP code areas with more than 100 estimated votes, the Area Deprivation Index and every PLACES measure | 2020 presidential election |   |   | none (share of areas) | CDC PLACES |   |
| zip_sample_dem | 53% | percent of the two-party vote | Democratic share of the two-party vote in the sample | ZIP code areas with more than 100 estimated votes and every measure and control, including the Social Capital Atlas and IRS values | 2020 presidential election |   |   | votes cast (sums of ZIP code area votes) | Precinct votes on census geographies |   |
| zip_sc_dropped_dem | 40% | percent of the two-party vote | Democratic share of the two-party vote | ZIP code areas dropped for a missing Social Capital Atlas value | 2020 presidential election |   |   | votes cast (sums of ZIP code area votes) | Precinct votes on census geographies |   |
| zip_sc_dropped_n | 11,138 | ZIP code areas | count of ZIP code areas with no Social Capital Atlas value for at least one of six measures | ZIP code areas with more than 100 votes, controls and ADI | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| zip_sc_dropped_votes_m | 7.7 million | votes | sum of estimated presidential votes | ZIP code areas dropped for a missing Social Capital Atlas value | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| zip_votes_m | 149.4 million | votes | sum of estimated presidential votes | ZIP code areas with more than 100 estimated votes and every measure and control, including the Social Capital Atlas and IRS values | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |
| zip_votes_over100_m | 157.2 million | votes | sum of estimated presidential votes | ZIP code areas with more than 100 votes | 2020 presidential election |   |   | none (counts of units and votes) | Precinct votes on census geographies |   |

## Definitions

- Standard deviation: A measure of how far values typically fall from their average. A larger standard deviation means the values are more spread out.
- Census tract: A Census Bureau neighborhood area, usually home to between 1,200 and 8,000 people. Tract boundaries were redrawn after the 2010 census and again after 2020.
- Ecological inference: Drawing a conclusion about individuals from data on groups or places, such as counties. A pattern across counties can differ from the pattern among the people who live in them.
- Percentage point: The unit for the difference between two percentages. A change from one share to another is stated in points, not in percent, so that absolute and relative change are not confused.
- Fixed effects: Regression terms that give each group, such as each country or each year, its own baseline. The other coefficients then compare respondents within the same group.
- Clustered standard errors: Standard errors that allow answers within the same group, such as the same county or the same week, to be related. They are wider than ordinary errors when members of a group resemble each other.
- Area Deprivation Index: A ranking of neighborhoods built from income, education, employment and housing measures in the American Community Survey. Higher ranks mean more deprived neighborhoods.
- ZCTA: ZIP Code Tabulation Area: the Census Bureau's area approximation of a ZIP code, built from the census blocks that fall inside it. It is the one neighborhood geography that lines up between the 2016 and 2020 vote estimates.

## Methods

Sample. Tracts: the 2020 vote layer covers the contiguous states and the District of Columbia (Alaska and Hawaii are not in it) and holds 83,648 tracts. The tract atlas holds 82,765 of them, in 47 states and the District of Columbia; the 883 tracts with no row in the atlas are all in Connecticut, which the atlas codes by planning region and the vote layer by county. 81,617 atlas tracts have more than 100 estimated presidential votes; the common sample keeps the 80,873 that also have every one of the 24 tract measures, the white, Black, Asian and Hispanic shares of residents, the college share and population density, in 3,081 counties and 47 states, carrying 154.8 million votes. The District of Columbia drops out because the atlas has no white or Asian share for its tracts (203 tracts); 15 tracts in other states lack a race share or the college share, and 526 tracts, carrying 0.47 million votes that went 59 percent Democratic, lack an Area Deprivation Index, Opportunity Atlas or EJScreen value. ZIP code areas: the ZIP code atlas holds 32,428 ZIP code tabulation areas, of the 32,462 in the vote layer; 29,420 have more than 100 estimated votes. The bridge sample keeps the 29,276 that also have the Area Deprivation Index, every PLACES measure and the controls, and the ZIP-only sample keeps the 18,039 that also have all six Social Capital Atlas values and the three IRS values, in 2,892 counties and 48 states and the District of Columbia, carrying 149.4 million votes. The atlas codes a missing American Community Survey value as -1 for some ZIP code controls, which are set to missing. The sample table lists the units dropped at each step in the order given.

Votes and outcome. Precinct returns allocated to census geographies by Regionalized Land Cover Regression (Fekrazad 2025): the 2020 returns of the MIT Election Data and Science Lab, allocated in proportion to household population, as fractional counts. The vote layer reproduces the national two-party Democratic share of the contiguous states (52.24 percent in 2020, for tracts and for ZIP code areas); the tract atlas file lacks the 883 Connecticut tracts of the layer, which carry 1.8 million votes and voted 60.2 percent Democratic, and gives 52.15 percent. The outcome is 100 times the Democratic votes over the sum of the Democratic and Republican votes (pres_dem_2pty; pres_dem2pty_2020 for ZIP code areas). The two-party margin used by some chapters is twice this share minus 50. Weights: total presidential votes of the unit (pres_tot; pres_tot_2020), in the regression, in every vote-weighted mean and standard deviation and in the R-squared values. Units with 100 or fewer votes are dropped.

Measures and signs. Tracts: Area Deprivation Index national rank (adi_national_rank; higher is more deprived); Opportunity Atlas outcomes of children with low-income parents, kfr_pooled_pooled_p25 (household income rank in adulthood) and kir_pooled_pooled_p25 (individual income rank in adulthood), both with the sign reversed so that higher means a lower rank, jail_pooled_pooled_p25 (incarceration) and teenbrth_pooled_female_p25 (teen birth among women); EJScreen tract values in the atlas (ej_diesel_pm_ug_m3, ej_traffic_proximity, ej_no2_ppb, ej_pm25_ug_m3, ej_ozone_ppb, ej_air_toxics_rsei, ej_pct_pre1960_housing, ej_superfund_pctile, ej_rmp_facility_pctile, ej_haz_waste_pctile, the last three being national percentile values); PLACES health_ghlth, health_mhlth, health_depression, health_diabetes, health_obesity, health_csmoking, health_lpa, health_access2 and health_arthritis, chosen to span current illness, risk and access, plus one condition that rises with age, after an exploratory run that looked at 19 of the 40 PLACES measures; the other PLACES measures are left to the health chapter, and seven of them are missing for every tract in ten states. ZIP code areas: the Area Deprivation Index and the same PLACES measures; the Social Capital Atlas columns sc_econ_connectedness, sc_civic_membership_ec, sc_friend_clustering, sc_support_ratio, sc_volunteering_rate and sc_civic_orgs_per_cap, which match the columns ec_zip, ec_grp_mem_zip, clustering_zip, support_ratio_zip, volunteering_rate_zip and civic_organizations_zip of the 2022 release value for value (sc_civic_membership_ec is economic connectedness measured over group and club memberships, according to the atlas build documentation); IRS irs_pct_eitc_returns, irs_pct_unemp_comp_returns and irs_mean_agi_per_return (sign reversed). The Social Capital Atlas keeps its published direction, and every other measure is signed so that a higher value means more hardship. The firearm, suicide and overdose columns of the tract atlas are not used because their source is undocumented. Vintages. The atlas files record none of the following; it comes from the build code and documentation of the atlas in the birth_death project (the tract atlas file here equals that project's analytic atlas on the five columns compared): American Community Survey 2019 to 2023 five-year estimates for the tract controls (the vintage of the ZIP code controls, which come from a file named Zip_All, is not confirmed); Neighborhood Atlas Area Deprivation Index version 4.0.1 (2023), with tract values the unweighted mean of block-group ranks and ZIP code values an area aggregation of them, an approximation; Opportunity Atlas estimates for children born 1978 to 1983, area-interpolated from 2010 to 2020 tracts; EJScreen 2024, version 2.32 in the build code (the air pollution chapter identifies version 2.3 from the values), a community mirror (DOI 10.5281/zenodo.14767363) because EPA removed the tool in 2025; PLACES crude prevalence, the 2024 release for tracts and the 2025 release for ZIP code areas, with native ZIP code area values for 78 percent of the ZIP code areas of the bridge sample and a mix of native and tract-aggregated values for the rest; IRS Statistics of Income tax year 2022; Social Capital Atlas 2022. The measures are dated 2019 to 2024 and the vote is November 2020. Not confirmed: the license terms of the Area Deprivation Index and the definition of per_college_above.

Controls. Tracts: pct_white_alone, pct_black_alone, pct_asian_alone and pct_hispanic, pct_college_plus, and the log of total_population over land area in square kilometers. ZIP code areas: per_white, per_black, per_asian, per_hispanic, per_college_above (labelled college degree or higher in the atlas metadata, but the wages chapter finds a county average of 52.7 percent against 23.6 percent for the county bachelor's share, so its definition is unresolved; its vote-weighted mean is 63 percent in the bridge sample against 37 percent for the tract college share) and the log of population over land area in square miles. State fixed effects: the state of the tract, the state of the county code for ZIP code areas. Median household income and age are not controls in the common specification.

Estimator. Each measure is cut at its 1st and 99th percentile across the units of its sample (unweighted percentiles) and standardized with the vote-weighted mean and standard deviation, so a coefficient is points of Democratic share per standard deviation. Weighted least squares of the Democratic share on the measure, with the controls added cumulatively (race and ethnicity, then education, then density, then state fixed effects); the fixed effects are removed by weighted within-state demeaning, which gives the same coefficients as state indicators. The common specification is the last column. Intervals: 95%, standard errors clustered by state (CR1, the statsmodels default), with the critical value of the t distribution with the number of states minus one degrees of freedom (2.01 for 47 tract states, 2.01 for 49 ZIP code states; the normal value is 1.96) (Cameron and Miller 2015). The code reproduces b3.stats.wls to six decimals for the coefficients and standard errors of two measures in three specifications, and pyfixest with state fixed effects reproduces the estimate and standard error of 28 coefficients. Pattern rule, set after a first run of the estimates and not before: a measure keeps if its raw interval excludes zero and the adjusted coefficient has the raw sign, an interval that excludes zero and at least half of the raw size; it loses if the adjusted interval includes zero or if it has the raw sign and less than half of the raw size; it reverses if the adjusted interval excludes zero on the other side from the raw coefficient; the rest have a raw interval that includes zero. Retained share: the common-specification coefficient divided by the raw one, with a percentile interval from 2,000 state bootstrap replicates (seed 12345, whole states resampled, a state drawn twice keeps its own fixed effect); the share of replicates at or above 50 percent measures how close a measure sits to the line between keeping and losing. Variance explained: the weighted R-squared of a regression of the standardized measure on the controls with state fixed effects, as a share of the within-state variance; for PLACES measures also, over all tracts, on race and ethnicity shares, the 65-and-older and under-18 shares and county fixed effects, on county fixed effects alone and on race and age alone, as shares of the total variance of the measure cut at its 1st and 99th percentiles. Variations: normal critical values; county clusters; no cutting of the tails; vote-weighted percentile rank in place of the standard deviation; every tract counting once; the USDA rural-urban commuting area code in place of density; county fixed effects in place of state fixed effects (clusters still by state); tracts with more than 500 votes; median household income and the 65-and-older share added (tracts with an income only). Intervals are model based: they do not include error in the vote allocation or in the modeled measures, and they are not adjusted for the number of estimates. Replications: the air pollution chapter's diesel rows, including its within-county row, computed here on its own sample of 81,134 tracts, and the wages chapter's sample of 27,144 ZIP code areas, all match those chapters as published.

## What these data cannot show

- The estimates describe areas in one election.
- They do not say how any resident of a tract voted.
- The vote in each area is an allocation of precinct returns by a land-cover model, and several of the measures are modeled as well, so the estimates carry errors that the intervals leave out.
- The measures are not independent of the controls.
- The Area Deprivation Index contains education, the PLACES values are built from age, sex, race and ethnicity, education and county, and the Opportunity Atlas and EJScreen values are model estimates whose inputs the atlas does not list, so some overlap with the controls is possible.
- An adjusted coefficient therefore compares areas on the part of a measure that the controls do not explain, and that part can be small.
- The data cannot say what the remainder is.
- The specification is one choice among several.
- The controls leave out income and age, which the last table adds.
- The order in which controls enter changes the size of each step, and the level of the fixed effects changes some coefficients.
- The coefficients are per standard deviation after the tails are cut, and other scalings change the size of some of them.
- The 24 tract measures overlap and are not entered together, so the coefficients cannot say which of two related measures carries a pattern.
- Each interval is for one estimate, and there is no adjustment for the many estimates in the chapter.
- The sources differ in vintage and in what they describe.
- The measures are dated 2019 to 2024 and the vote is from November 2020, so most of the releases came after the election, and the atlas files do not record their dates.
- The atlas also holds firearm, suicide and overdose rates, which this chapter leaves out because the file does not document their source.
- Social capital and tax returns exist only for ZIP code areas, and the Social Capital Atlas describes Facebook users.
- The comparison across measures is therefore made on two surfaces with two samples, and Table 6 shows that the adjusted coefficient differs by surface.
- Alaska and Hawaii are not in the vote layer, Connecticut's tracts do not join the atlas, and the District of Columbia drops out of the tract sample.
- The vote is the 2020 presidential two-party share.
- The data say nothing about turnout, other offices, other elections or the swing between elections, which Companion 8.1b, Wages, capital and the ZIP code vote (https://vishalsingh.org/politics/wages-capital-and-the-county-vote) takes up for ZIP code areas and Planned, Social capital (https://vishalsingh.org/politics/social-capital; planned) is planned to take up.

## References

1. Fekrazad, Amir (2025). A dataset of US precinct votes allocated to Census geographies with precision. Scientific Data 12: 794. https://doi.org/10.1038/s41597-025-05140-3
2. Robinson, W. S. (1950). Ecological Correlations and the Behavior of Individuals. American Sociological Review 15(3): 351-357. https://doi.org/10.2307/2087176
3. Cameron, A. Colin; Miller, Douglas L. (2015). A Practitioner's Guide to Cluster-Robust Inference. Journal of Human Resources 50(2): 317-372. https://doi.org/10.3368/jhr.50.2.317
4. Kind, Amy J. H.; Buckingham, William R. (2018). Making Neighborhood-Disadvantage Metrics Accessible: The Neighborhood Atlas. New England Journal of Medicine 378: 2456-2458. https://doi.org/10.1056/NEJMp1802313
5. Chetty, Raj; Friedman, John N.; Hendren, Nathaniel; Jones, Maggie R.; Porter, Sonya R. (2018). The Opportunity Atlas: Mapping the Childhood Roots of Social Mobility. NBER Working Paper 25147. https://doi.org/10.3386/w25147
6. Greenlund, Kurt J.; Lu, Hua; Wang, Yan; Matthews, Kevin A.; LeClercq, Jennifer M.; Lee, Benjamin; Carlson, Susan A. (2022). PLACES: Local Data for Better Health. Preventing Chronic Disease 19: 210459. https://doi.org/10.5888/pcd19.210459
7. Chetty, Raj; Jackson, Matthew O.; Kuchler, Theresa; Stroebel, Johannes; and others (2022). Social capital I: measurement and associations with economic mobility. Nature 608: 108-121. https://doi.org/10.1038/s41586-022-04996-4

## Provenance

- Pipeline version: 1.0.0
- Build script: book3/chapters/measures-of-hardship-compared/build.py (sha256 04cd3be028518dd5e3ebf3ea630c48d819a3f927e14dc1db4809f76dd1c22ab4)
- Built on: 2026-10-03
- Site commit: 16414b2c7257546a7042d0b1734657f208999f60

Inputs:

| File | Size (bytes) | SHA-256, first 1 MB | SHA-256, last 1 MB |
| --- | ---: | --- | --- |
| data/precinct/census_estimates/tract_2020.parquet | 11,111,139 | 716f8b605b007e0230d64f3539a5c432d459664e798d03ba96798ef62c63fa25 | e89c06fe8f7d7132a306d72701352907e7d8eaee3c3b34fdf6c3a770953c254b |
| data/precinct/census_estimates/tract_2020_atlas.parquet | 41,025,289 | 8cd40801ba81ac3d5870313f9e8772790afe7917f983dd24c15efc8719651ab8 | 01b796cc4b00f21457d93c96df76db6edfde80c66e1844919fb7510aecd5efe9 |
| data/precinct/census_estimates/zcta_2020.parquet | 4,608,929 | 560cabe4b643241fab4572f4e46599d64297eaa67f987c32ad235c55c045612b | f5f882de2008137295d09c69667751bddd476b861a49292ee4a4a3a3f22b0236 |
| data/precinct/census_estimates/zcta_swing_atlas.parquet | 11,850,164 | ca87f58b5b27fc0ebd644d594a8b93971f85d40f95132ac641ffc84c5021684e | 6db8ad81722c59d7fc7436e5563bfd33b9a60fe03aff344e763af8a25df38651 |
| C:/Users/Vishal Singh/Box/birth_death/data/raw/social_capital_atlas/2022/social_capital_zip.csv | 4,052,257 | 6e4fe2e4b37b666313dd90e8897df45fdc96285fb59c3aa425edcb0fac460c8e | 8ad382b00cc90db64f8592e59177d6eb9e4e9c13476f888d024c7b3f95903510 |

Outputs:

| File | SHA-256 |
| --- | --- |
| facts.json | cc3ff1cdc26f7eaed437edc430e49dcdd3104efee123fc8ead75fcd8f4d8b4d2 |
| figures/chapter_specs.json | 65f82478417b1a7c7bce01405134991af5c874a98624516ae0367f8e6f8a67ed |
| figures/control_ladder.json | dc656b3020df8a18933545ab0c994b7020fb98d1a395fdd7902f56bdf7957693 |
| figures/demographic_content.json | 3e1c8fe4a313dde678cd45d97b4e40d018cd2e10a200428f501830ecb2d44c94 |
| figures/raw_vs_adjusted.json | accea50a6880784d4aa162900c15a078994e9b1e00f78222ce8a3f7e221e14f2 |
| figures/robustness.json | b3719e979fbe5434b8d8e37347eb69ba8eec741a05bd221eb5d5adce68855f6c |
| figures/sample_counts.json | 2e461986729f9afbb7d06f071e12516f35a44b539c841e30c515bfff6ed84ec3 |
| figures/surface_check.json | 79c77c6e74852ed6dd16d3692d5d97d40d272168d18ab3c2a975bde6bac5c122 |
| figures/zip_measures.json | 3d260e4405fb5e8af5a571b586130afe1f2af0ea64abac2d53680443f0f88d64 |
| meta.json | dcfe47a5ec29e99fcba5035681996eac59cd6c84cf97d9c7591bc5055f0a20ec |
| refs.json | c522d0bd024ac5359e632dcba47b5b89186d6294efb6cfd2f3bb343e28b4d9af |

## Machine formats

- Report (HTML): https://vishalsingh.org/politics/measures-of-hardship-compared/report
- Report (Markdown): https://vishalsingh.org/politics/measures-of-hardship-compared/report.md
- Every estimate (JSON): https://vishalsingh.org/politics/report/measures-of-hardship-compared/facts.json
- Table 1, figure "raw_vs_adjusted" (JSON): https://vishalsingh.org/politics/report/measures-of-hardship-compared/figures/raw_vs_adjusted.json
- Table 2, figure "sample_counts" (JSON): https://vishalsingh.org/politics/report/measures-of-hardship-compared/figures/sample_counts.json
- Table 3, figure "control_ladder" (JSON): https://vishalsingh.org/politics/report/measures-of-hardship-compared/figures/control_ladder.json
- Table 4, figure "demographic_content" (JSON): https://vishalsingh.org/politics/report/measures-of-hardship-compared/figures/demographic_content.json
- Table 5, figure "zip_measures" (JSON): https://vishalsingh.org/politics/report/measures-of-hardship-compared/figures/zip_measures.json
- Table 6, figure "surface_check" (JSON): https://vishalsingh.org/politics/report/measures-of-hardship-compared/figures/surface_check.json
- Table 7, figure "chapter_specs" (JSON): https://vishalsingh.org/politics/report/measures-of-hardship-compared/figures/chapter_specs.json
- Table 8, figure "robustness" (JSON): https://vishalsingh.org/politics/report/measures-of-hardship-compared/figures/robustness.json
- Index of every report: https://vishalsingh.org/politics/llms.txt; all reports in one file: https://vishalsingh.org/politics/llms-full.txt
