Can a net migration rateby age be calculated for a PUMA county using your variables? Thank you.

I have drawn a table using IPUMS variables on age, migrate1d statefip and countyfip. But I don’t know if the migrate1d categories represent in-flow or out-flow status to the county. Does moved within state different PUMA, Moved between contiguous and non-contiguous mean in-flow or out-flow or both? How are they defined.

The MIGRATE1 variable is an person-level variable that identifies if a person lived in the “same house” or a “different house” since a year ago. If the person indicates moving, information contained in MIGPLAC1 details whether a person moved between states, within the same state, or from abroad. Therefore this variable represents in-flow into the current residence. For out-flow information by PUMA see MIGPUMA1, which identifies the PUMA of residence 1 year ago for person records. Note that this variable is currently only available back until 2005.

Additionally, it sounds like you are looking for aggregated data, if so, you may want to check out IPUMS-NHGIS which provides aggregated data along with geographic boundary files for many topics including migration.

I hope this helps.

Hi! Can you provide additional guidance on how to use the combination of migpuma1, migplac1, and migrate1d in the Analyze Online tool to get net migration (into city/county of San francisco and out of it)? Then also disaggregate by age categories?

  1. In-migration: Would the following filter to migration into SF using filters for (1) migrate1d for movers who change pumas, states, or came from abroad, and (2) city for now live in SF?
    Row: year (2012-2020)
    Column: blank
    Control: blank or city(6290)
    Filter: migrate1d(24,30,40), city (6290)

  2. Would age categories go in row, column, or control (I’ve tried to create age categories, but they don’t group, each age is row or column, like this: age(1-15, 16-24, 25-39, 40-54, 55-64, 65-99)?

  3. Out: Would the following filter to moving out of SF by filtering (1) migrate1d movers, and then (2) migplac1 for living in CA one year ago and migpuma1 for living in SF county one year ago?
    Row: year(2012-2020)
    Column: blank
    Control: blank
    Filter: migrate1d(24, 30, 40), migplac1(06), migpuma(7500)

The above two produced tables, but past posts mention using the migplac1 and migpuma1 together by creating a new variable in Analyze Online. Is that necessary and is it the recode or create new expression option? This post was similar and this post and this post also had some hints.

Thanks!

To estimate the number of people moving into SF, your control field can remain blank. Control generates multiple tables of results depending on the variable entered. By including CITY, you would create two results tables: one for people living in SF county at the time of the survey and one for everyone else. For the filter field, you’ll want to include codes 31 and 32 for MIGRATE1D (the detailed version of the variable does not have a value for moving between states, but breaks them down into moving between contiguous and non-contiguous states). Thus, your input should look like this:

  1. Row: year(2012-2020)
    Column: blank
    Control: blank
    Filter: migrate1d(24,31,32,40), city (6290)

To create age categories, you can recode AGE into intervals and add it to the column field. Your input would look like this:

  1. Row: year(2012-2020)
    Column: age(r: 1-15; 16-24; 25-39; 40-54; 55-64; 65-99)
    Control: blank
    Filter: migrate1d(24,31,32,40), city(6290)

Migration out of SF would then be:

  1. Row: year(2012-2020)
    Column: age(r: 1-15; 16-24; 25-39; 40-54; 55-64; 65-99)
    Control: blank
    Filter: migrate1d(24,31,32,40), migplac1(06), migpuma1(7500)

You shouldn’t need to create a new variable to run this analysis. One thing I do want to bring up is that estimates for individual years may be imprecise due to small sample sizes. This is especially true if you’re disaggregating estimates by age. You can see the confidence intervals for your estimates by selecting for them under the Output Options menu. If you would like to get more precise estimates, you can aggregate years into 3 or 5-year groups by recoding the row field to: year(r: 2012-2014; 2015-2017; 2018-2020).

1 Like

Thanks! This produced what I was looking for.

I posted a separate question about the Confidence Intervals in Output options (re: how to get the CI low and high to refer to the Weighted N and not the percentage of the row or column), but on this topic, I was also thinking it might be better to create a new variable for net (In minus Out) rather than exporting in and out separately, and then subtracting, so that the Analyze Online would output the confidence interval of the new variable.

I’ve figured out how to the do simpler new variables like recoding the age, but how would I do this for a new variable consisting of In minus out: migrate1d(24,31,32,40) and city (6290) minus migrate1d(24,31,32,40 and migplac1 (06) and migpuma(7500)?
Thanks again.

Unfortunately, it’s not possible to create a variable that only shows net migration. Such a variable would require summing across individuals (immigrants minus emigrants), which the SDA system is not equipped to do. You can create a variable that’s an indicator for whether an individual is a migrant to/from San Francisco County and have both values appear in one table, but there’s no way to make the output be solely net migration.

Here’s an example where the new variable, SFMigrate = 1 for immigrants, -1 for emigrants, and 0 for all others.

if (migrate1d eq 24 OR migrate1d eq 31 OR migrate1d eq 32 OR migrate1d eq 40)
   if (city eq 6290)
      SFMigrate = 1
   elseif (migplac1 eq 6 AND migpuma1 eq 7500)
      SFMigrate = -1
   else
       SFMigrate = 0
   Endif
else
   SFMigrate = 0