Hi,
I am trying to replicate the HUD AMI Household income distribution using the 2017-2021 ACS PUMS data for Colorado (see https://www.huduser.gov/portal/datasets/cp.html) . Does anyone have a source for the algorithm used by the Census Bureua to calculate the counts HUD uses?
Specifically, I'd like information estimating the number of households at 30% AMI used by HUD CHAS data
This working paper presents analysis of custom tabulations of the 2006-2010 American Community Survey (ACS), known as the "CHAS data." The CHAS data combine ACS microdata with HUD adjusted median family incomes (HAMFI) to create estimates of the number of households that would qualify for HUD assistance. Using these data, I estimate the number of rental units and ownership units that would be available to prototypical households at specified income levels.
https://www.huduser.gov/portal/publications/workpapr.html?search=program%20evaluation%20division
TIA
AB
Hi, Adam -- several years ago, I got an explanation from Census Bureau staff for how they do this in the CHAS data. Douglas's methods document pretty much captures it, and I've put a more data-focused step-by-step description of how it works below.First, though, it's really important to note that this method does NOT reflect HUD's official income limits, so the estimates coming out of the CHAS calculations will not necessarily show the number of households that were actually eligible for various forms of housing assistance in the year of the PUMS data. Looking at my metro (the Twin Cities) in the 2023 PUMS against the official income limits, the CHAS method underestimates the number of households at or below 60% of AMI by about 8,000 households (2.2%) while overestimating the number of households in the 61%-80% of AMI band by about 17,500 households (3.5%). If you want a more refined estimate of the number of households that are actually eligible for housing assistance, use HUD's official income limits (also outlined below).
Using the CHAS method
Here's how you'd work with the PUMS using the CHAS method:
Step 1 is the most complicated; everything else follows from that. To make it more concrete, here's some SAS code that shows the necessary calculations:
/* Step 1: assign each household the median family income for their AMI area */MFI_AMIAREA = $$$$$$$; /* this varies by AMI area *//* Step 2: adjust those median family incomes based on each household's size */if NP < 4 then MFI_AMIAREA_ADJ = MFI_AMIAREA * (1 - ((4 - NP) * 0.1));else if NP > 4 then MFI_AMIAREA_ADJ = MFI_AMIAREA * (1 + ((NP - 4) * 0.08));else MFI_AMIAREA_ADJ = MFI_AMIAREA;/* Step 3 (change categories to whatever you want) *//* note that this is based on household income, not family income */INCRATIO = (HINCP * ADJINC) / MFI_AMIAREA_ADJ;if INCRATIO <= 0.3 then AMICAT = "1: At or below 30%";else if INCRATIO <= 0.5 then AMICAT = "2: 31%-50%";else if INCRATIO <= 0.6 then AMICAT = "3: 51%-60%";else if INCRATIO <= 0.8 then AMICAT = "4: 61%-80%";else AMICAT = "5: Above 80%";
Using the official income limits
If you want to use the official income limits instead, HUD provides them in Excel format (the link to the 2024 limits is at https://www.huduser.gov/portal/datasets/il.html#data_2024). Using 2024 as the example:
HHINC_ADJ = HINCP * ADJINC * {some factor representing how much you think incomes have changed since the PUMS year};if HHINC_ADJ <= inclimit30 then AMICAT = "1: At or below 30%";else if HHINC_ADJ <= inclimit50 then AMICAT = "2: 31%-50%";else if HHINC_ADJ <= (inclimit50 * 1.2) then AMICAT = "3: 51%-60%" /* for limits not provided by HUD, use multiples of the 50% income limit */else if HHINC_ADJ <= inclimit80 then AMICAT = "4:61%-80%";else AMICAT = "5: Above 80%";
Into the weeds on CHAS calculations vs official income limits
Looking only at methods, there are two primary reasons why CHAS calculations yield different results from official income limits.First, HUD does lots of things in its calculations, so the 30%/50%/80% income limits might not actually be 30%/50%/80% of the AMI area's median family income. Examples include raising (or lowering) the income limits where housing costs are particularly high (or low), capping each AMI area's 80% of AMI income limit at the national median, adopting the HHS poverty guidelines as the 30% of AMI income limit if the former is greater than the latter, limiting year-to-year change, etc.Second, the median family incomes used in HUD's official income limits aren't calculated directly from the PUMS data you're analyzing, as they are in the CHAS method. When HUD is calculating income limits for a given year (usually released sometime in April of that year), they obviously don't have access to income data for that year. So they start with median family incomes from the ACS a couple years prior, then adjust them for (forecasted) inflation. Those official median family incomes reflect the median income that year IF median incomes change right along with inflation -- which may not be the case. Looking at my metro (Minneapolis-Saint Paul-Bloomington), HUD's official median family income in their 2021 income limits (2018 ACS data adjusted upward by 4.5% forecasted inflation) was $104,900; the 2021 ACS later showed an actual median family income of ~$110,800 (median income increased more than the CPI, probably due partly to COVID stimulus funds). Conversely, HUD's official median family income in the 2023 income limits was $124,900 (2021 ACS data increased by 12% forecasted inflation); the 2023 ACS later showed ~$121,900 (median income increased less than prices).
Thanks Matt Schroederand Douglas White
I will review your comments and paper against what I came up with and post my results. I appreciate hearing from you both.
Cheers--
Adam