How we calculate household income after housing costs

A reproducible 2024 ACS microdata calculation, with household weights, 80 replicate weights, explicit exclusions and distribution estimates.

Reviewed October 4, 2026 · Rank the States

The calculation uses each household’s own records

Subtracting a state’s median rent from its median household income does not tell us what any household has left. The two medians may represent different households. We instead calculate annual income less annualized housing costs for each occupied housing record in the 2024 ACS 1-year Public Use Microdata Sample, then summarize those household-level results separately by tenure.

For cash-rent tenants, residual = HINCP × ADJINC / 1,000,000 − 12 × GRNTP × ADJHSG / 1,000,000. For owners, replace GRNTP with SMOCP. The Census income and housing adjustment factors put interview amounts on their respective source-year bases. HINCP is household money income before taxes; gross rent and selected monthly owner costs follow Census definitions. Income covers the past 12 months and monthly costs are annualized, so this is not a contemporaneous cash-flow diary.

Three populations, kept separate

Renters are TEN = 3, owners with a mortgage or similar debt are TEN = 1, and mortgage-free owners are TEN = 2. Records must be housing units (TYPEHUGQ = 1), occupied (NP > 0), and have a positive full household weight (WGTP). No-cash-rent units, vacant units and group quarters are excluded. Zero and negative income are retained. No household-size equivalence adjustment is made.

The ranking is a weighted mean: sum of residual × WGTP divided by sum of WGTP. High-income households can pull it upward. We therefore also publish the weighted median, 25th and 75th percentiles, and the weighted share below zero. Percentiles use the first observed residual where cumulative full household weight reaches the requested share, without interpolation. They are point estimates; we do not claim confidence intervals for them.

Replicate-weight uncertainty

We repeat the mean calculation with each of WGTP1 through WGTP80, retaining negative replicate weights as Census instructs. Each replicate uses its own weighted denominator. Variance = (4 / 80) × sum of squared differences between each replicate mean and the full-weight mean. The 90% margin of error is 1.645 times the square root of that variance. The full weight, used for the percentiles, remains nonnegative.

Every state-tenure cell has at least 100 sampled records and a nonzero calculated margin; those checks are validation floors, not guarantees of precision. The tables expose sample counts and margins so a reader can assess precision. National estimates have not been computed. DC is a reference jurisdiction. Puerto Rico is not included in this calculation.

What the result leaves out

The residual is before taxes, food, transport, childcare, healthcare and other non-housing costs. It is not savings or disposable income. ACS allocated responses and top/bottom coding remain in the data; we do not attempt to reverse them. State means conceal variation by household size, geography and income. These are experimental independent estimates, not official Census tabulations, and they have not been independently peer-reviewed.

Reproduce and inspect

Download the calculation script, Python dependencies, and aggregate results with state-file SHA-256 checksums. Place the script at scripts/research-pums.py and provide the registry at src/data/registry.json. Install the pinned dependencies in a virtual environment and run python scripts/research-pums.py. It downloads the 51 Census housing ZIPs to .research-cache, checks their pinned hashes, and writes research/pums-results.json. The directory research must exist. No private household files are used.

Automated checks validate state identifiers, nonmissing inputs, positive replicate denominators, all 50 states, percentile order and finite results. A separate weighted-sum calculation checks the mean. This checks arithmetic consistency; it does not replace expert review of the estimator or source assumptions.

Primary documentation: 2024 data dictionary, accuracy and replicate-weight guidance, and release schedule. The 2024 PUMS release date was December 4, 2025.

Renters · Owners with a mortgage · Mortgage-free owners.

What can we help you find?

Type at least two letters to start searching.

Browse guides Esc to close