Calculating home ownership rates by generation

Hello! I am looking to calculate home ownership rates for 18+ adults by generation over time from the ASEC CPS supplement. I was planning on inputing generation from the age and survey year variables and using it as a grouping variable.

From my understanding there would be two ways to calculate this:

  1. Take the proportion of owner households within each generation to the number of total occupied households within each generation (this is how the Census Housing Vacancy Survey calculates homeownership rates).

  1. Take the proportion of individuals in each age group who own homes to the number of total individuals within each age group.

In terms of the former method I found this IPUMS forum answer which states I can filter on the ownership and relationship variables like this OWNERSHP == 10 and RELATE == 0101 (from this follow-up answer it looks like using PERNUM == 1 is another way to restrict the universe to only the head/householder). My understanding is the home ownership proportion in R once the generation grouping variable is applied and filtering to householders would go something like summarize(OWN_HOME = weighted.mean(OWNERSHP == 10, ASECWTH).

Taking the second route I would assume one would just apply the generation grouping variable and then use summarize(OWN_HOME = weighted.mean(OWNERSHP == 10, ASECWT) based on the methodology in this IPUMS in R exercise.

I don’t have too much experience working with the CPS ASEC microdata in IPUMS but assuming my understanding of the variables and data manipulation is correct is one of these methods a more appropriate way to calculate home ownership rates for an age group than the other?

Thank you in advance for reviewing this and any advice you’re able to give!

It sounds like you’re calculating two different measures. The first is the proportion of households, while the latter is the proportion of individuals who own their home. While each measure may be appropriate in the correct context, CPS data are better suited to the former for two reasons. First is that since all individuals within a household will have the same code for OWNERSHP, this variable does not indicate whether the specific respondent owned their own home, but only if the household they resided in did. Calculating a person-level measure would then bias your estimates for younger respondents who live with a family homeowner. Second is that the household head is likely to be the person whose age you want to filter on since they must be a resident in whose name the housing unit is owned or rented. Otherwise, your code for calculating each of these seems correct to me; for household-level measures you should filter observations to the household head and then use ASECWTH for your weight (as opposed to using ASECWT for person-level estimates).

1 Like

Hi Ivan, thank you for your answer!

My hunch was that the former method would be more appropriate for the CPS/ASEC since it’s a household survey. I’ll definitely filter down to the householder (still a bit unsure if the correct way to do that would be PERNUM == 1 or RELATE == 0101?) and then create the generation groupings based on the householder age & survey year and get the OWNERSHP proportion with the ASECWTH.

The way I understand this calculation is that it’s expressing home ownership rate as the proportion of households where the owner occupies the household to the total number of households for each generational cohort based on the age of the household’s householder. Let me know if that understanding isn’t correct or complete in some way as I want to make sure I describe this calculation as accurately as possible when I write about it. From my brush it mirrors the way home ownership rates are calculated in the Census HVS, which I was trying to follow as closely as possible with the CPS data.

Thank you again for your counsel, the work you & the folks at IPUMS do is greatly appreciated!

Hi Adrian, your interpretation sounds right to me.

Note that RELATE contains two coding structures, one more general and the other more detailed. Adding RELATE to your extract will add both the general and detailed codes in the variables RELATE and RELATED, respectively. You can then use either RELATE = 1 or identically RELATED = 0101 in the detailed codes to the same effect in order to identify the householder, rather than using PERNUM. PERNUM = 1 doesn’t necessarily get you the householder as filtering by PERNUM = 1 will, in addition to heads of households, also include individuals living in group quarters.

1 Like