Why are percentiles for inflation- and size-adjusted household incomes the same for 2005 through 2018?


I adjusted the hhincome variable for inflation and household size.

The method I used for the inflation adjustment is shown here:


The method I used for the household size adjustment is shown here:


After those two adjustments, I have a new variable called adjhinc.

I then svyset the data, and use the epctile command with the svy option to ask for the 20th, 50th, and 80th percentile of adjhinc in each year. I use subpops for each year of: “year==20xx” & “relate==0101” & “gq==1”.

But then my results for 2005 through 2018 give me the same exact 20th, 50th, and 80th percentiles for each year. All the way down to the penny. The subpopulation sizes are each unique values, so I know I’m not mistakenly running the same year each time. And the standard errors are different for each year.

I’m having trouble comprehending this result. Literally, it seems as though it’s saying that the variation in household income percentile cutoffs each year is fully explained by changes in average household size, and inflation. But that’s obviously not true - the distribution of income changes from year to year and so should the income percentile cutoffs.

Am I missing something in the technical setup?

Here is my code:


gen CPIadjinc=.

replace CPIadjinc=hhincome*(361/277.5) if year==2005

replace CPIadjinc=hhincome*(361/286.9) if year==2006

replace CPIadjinc=hhincome*(361/296.2) if year==2007

replace CPIadjinc=hhincome*(361/304.6) if year==2008

replace CPIadjinc=hhincome*(361/316.3) if year==2009

replace CPIadjinc=hhincome*(361/315.2) if year==2010

replace CPIadjinc=hhincome*(361/320.4) if year==2011

replace CPIadjinc=hhincome*(361/330.5) if year==2012

replace CPIadjinc=hhincome*(361/337.5) if year==2013

replace CPIadjinc=hhincome*(361/342.5) if year==2014

replace CPIadjinc=hhincome*(361/348.3) if year==2015

replace CPIadjinc=hhincome*(361/348.9) if year==2016

replace CPIadjinc=hhincome*(361/353.4) if year==2017

replace CPIadjinc=hhincome*(361/361.0) if year==2018

gen CPIandSIZEhinc=.

replace CPIandSIZEhinc=CPIadjinc/(numprec^.5)

gen CPIhincTHREE=.

replace CPIhincTHREE=CPIandSIZEhinc*(3^.5)

forvalues i=2005/2018 {

gen hincin`i’=.


forvalues j=2005/2018 {

replace hincinj'=1 if year==j’ & gq==1 & relate==0101


svyset [iw=asecwth], sdrweight(repwt1-repwt160) vce(sdr) mse

forvalues r = 2005/2018 {

epctile CPIhincTHREE, p(20 50 80) subpop(hincin`r’) svy




I’m not able to identify the issue with your calculations, although I agree that your outcome does seem strange. One bit of information that might be helpful is that IPUMS CPS has a variable specifically designed to aid in this sort of task (see CPI99). It provides CPI multiplier values, provided by the BLS, to convert dollar figures into constant 1999 dollars (e.g. the values used in the 2000 CPS survey) or to any other base year. Additional information and documentation is available on this page.