# Tim Miller (tmiller@demog.berkeley.edu) # August 8, 2000 # # Estimating the "immigrant stock" of the U.S. # I have population estimates for the U.S. based on a closed-model # (assuming no immigration) from 1800 through 2000. # I compare the actual population growth to that predicted by my # closed-population model and assume the difference represents the # impact of immigration. # To do: A much stronger case could be made if I included immigration # in the model. Currently, all the difference in population growth # between actual and closed-population is atttributed to immigration. # In fact, some part of this could be due to errors in the age-specific # rates or in the initial age distribution of the population. # (For example, the actual age distribution in 1900 is probably younger # than that of a population closed to immigration since 1800.) # So, one reason why the closed-population model shows slower population # growth is that it start with a population with an older age structure. # Attach Population Module attach ("/home/davis/lee1/TIM.DATA/Splus.Data.Dirs/pop.module.usa",pos=1) attach ("/home/davis/lee1/TIM.DATA/Splus.Data.Dirs/pop.module.functions",pos=2) # Actual population size based on historical stats and # most recent Census population clock # Series A 1-5, Hist. Stats of the US) actual.pop.1800.2000 <- c(5.3,23,76,151,275) # in millions # Population size in 2000 if no immigration occured over the # period in question (post-1800, post-1850, etc) closed.pop.2000 <- actual.pop.1800.2000* (pop.size[2000-1800+1])/ pop.size[(seq(1800,2000,50)-1800+1)] # Percent of population in 2000 that could be attributed to # immigration since 1800, 1850, ..., 2000 pct.due.to.immigration <- 1 - (closed.pop.2000/actual.pop.1800.2000[5]) # Attribute the current population to immigrant arrivals # for time-periods: pre-1800, 1800-49, 1850-99, 1900-49, # and post-1950 immigrant.stock <- -diff(c(1,pct.due.to.immigration)) names (immigrant.stock) <- c("pre-1800", "1800-1849", "1850-1899", "1900-1949", "post-1950") round (100*immigrant.stock) pre-1800 1800-1849 1850-1899 1900-1949 post-1950 33 12 26 12 17 # Let's try this for 1990 actual.pop.1800.1990 <- c(5.3,23,76,151,249) # in millions # Population size in 1990 if no immigration occured over the # period in question (post-1800, post-1850, etc) closed.pop.1990 <- actual.pop.1800.1990* (pop.size[1990-1800+1])/ pop.size[(c(seq(1800,1950,50),1990)-1800+1)] # Percent of population in 2000 that could be attributed to # immigration since 1800, 1850, ..., 2000 pct.due.to.immigration.1990 <- 1 - (closed.pop.1990/actual.pop.1800.1990[5]) # Attribute the current population to immigrant arrivals # for time-periods: pre-1800, 1800-49, 1850-99, 1900-49, # and post-1950 immigrant.stock.1990 <- -diff(c(1,pct.due.to.immigration.1990)) names (immigrant.stock.1990) <- c("pre-1800", "1800-1849", "1850-1899", "1900-1949", "post-1950") round (100*immigrant.stock.1990) pre-1800 1800-1849 1850-1899 1900-1949 post-1950 34 12 27 13 13 # Compare this to Gibson (1992) closed.pop.1990.gibson <- c(123.005,144.963,200.791,229.015,248.710) pct.due.to.immigration.1990.gibson <- 1 - (closed.pop.1990.gibson/actual.pop.1800.1990[5]) # Attribute the current population to immigrant arrivals # for time-periods: pre-1800, 1800-49, 1850-99, 1900-49, # and post-1950 immigrant.stock.1990.gibson <- -diff(c(1,pct.due.to.immigration.1990.gibson)) names (immigrant.stock.1990.gibson) <- c("pre-1800", "1800-1849", "1850-1899", "1900-1949", "post-1950") round (100*immigrant.stock.1990.gibson) pre-1800 1800-1849 1850-1899 1900-1949 post-1950 49 9 22 11 8