Flows from Stocks Methodology

Share:

Description

Estimates migrant transitions flows between two sequential migrant stock tables.

Usage

1
2
ffs(P1, P2, d, b, m = NULL, method = "stocks", b.mat = NULL, d.mat = NULL, 
 b.deduct="native.gt0", ...)

Arguments

P1

Matrix of migrant stock totals at time t. Rows in the matrix correspond to place of birth and columns to place of residence at time t

P2

Matrix of migrant stock totals at time t+1. Rows in the matrix correspond to place of birth and columns to place of residence at time t+1.

d

Number of deaths between time t and t+1 in each region.

b

Number of births between time t and t+1 in each region.

m

Array of auxiliary data. By default set to 1 for all origin-destination-migrant type combinations.

method

Method used to adjust row margin totals of P1 and P2 to equal. By default method="stocks". Can also take values method="outside" or method="deaths". See details for explanation on each method.

b.mat

A matrix containing the number of births during the period in each birthplace (rows) by place of residence (columns) combination created by the user. By default, this argument is NULL, and hence within the function a b.mat is formed as a diagonal matrix of b (i.e. all births happen in their respective place of residence at the end of the period, there are no infant migrants.)

d.mat

A matrix containing the number of deaths during the period in each birthplace (rows) by place of residence (columns) combination created by the user. By default, this argument is NULL, and hence within the function a d.mat is formed as a proportional allocation of d over all populations (i.e. the mortality rate in each place of birth sub-group (native born and all foreign born stocks) is the same.)

b.deduct

Method used to deduct births. By default b.deduct="native.gt0" deducts births from diagonals of stock table (i.e. the native born populations) with the exception of regions where this would lead to a negative adjusted population. In these select regions, births are spread over all population stocks (both native and foreign) thus avoiding potential negative flows. Can also take b.deduct="native.only" in which all births are deducted from the diagonals of stock table (i.e. native born populations only).

...

Additional arguments passes to ipf3.qi.

Details

Estimates migrant transitions flows between two sequential migrant stock tables as shown in Abel (2013), when method="outside". The length of b and d must equal the number of rows in P1 and number of columns in P2.

Setting method="stocks" estimates migration flows using an alternative demographic accounting method to adjusted stock tables to match the row totals of the stock table after demographic accounting. Setting method="deaths" uses the calculation of the deaths by place of residence table to match the row totals of the stock table after demographic accounting. Note, when b and d are equal, the same estimated flows from stocks are obtained regardless of the method argument. Both of these options maintain the net migration flow implied by the population, birth and death data. I still need to write up these methods.

Setting b.deduct="native.gt0" allows estimates to correct for cases where the number of births far exceeds the change in the native born population. Such cases potentially occur where place of birth stock data imply a change in native born population which directly conflict with changes in demographic data unless there is mass migration of all new borns.

Value

Returns a list object with:

mu

Array of indirect estimates of origin-destination matrices by place of birth.

it

Iteration count.

tol

Tolerance level at final iteration.

y

Array of indirect estimates of origin-destination matrices by place of birth with additional rows and columns for births, deaths and moves to other regions.

Author(s)

Guy J. Abel

References

Abel, G. J. (2016). Estimates of Global Bilateral Migration Flows by Gender between 1960 and 2015. Vienna Institute of Demography Working Papers 2/2016.

Abel, G. J. and Sander, N. (2014). Quantifying Global International Migration Flows. Science, 343 (6178) 1520-1522

Abel, G. J. (2013). Estimating Global Migration Flow Tables Using Place of Birth. Demographic Research 28, (18) 505-546

See Also

ipf3.qi, fm

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
## create P1 and P2 stock tables
dn <- LETTERS[1:4]
P1 <- matrix(c(1000, 100, 10, 0, 55, 555, 50, 5, 80, 40, 800, 40, 20, 25, 20, 200), 4, 4, 
        dimnames = list(pob = dn, por = dn), byrow = TRUE)
P2 <- matrix(c(950, 100, 60, 0, 80, 505, 75, 5, 90, 30, 800, 40, 40, 45, 0, 180), 4, 4, 
        dimnames = list(pob = dn, por = dn), byrow = TRUE)
# display with row and col totals
addmargins(P1)
addmargins(P2)

# no births and deaths
b <- rep(0, 4)
d <- rep(0, 4)

y <- ffs(P1, P2, d, b)
# display with row, col and table totals
round(addmargins(y$mu), 1)
# display with row and col totals
round(fm(y$mu), 1)

## alternative offset term
dis <- array(c(1, 2, 3, 4, 2, 1, 5, 6, 3, 4, 1, 7, 4, 6, 7, 1), c(4, 4, 4))
y <- ffs(P1, P2, d, b, dis)
# display with row, col and table totals
round(addmargins(y$mu), 1)
# display with row and col totals
round(fm(y$mu), 1)

## alternative P2 and changes in population from natural increase
P2 <- matrix(c(1060, 60, 10, 10, 45, 540, 40, 0, 70, 75, 770, 70, 30, 30, 20, 230), 4, 4, 
        dimnames = list(pob = dn, por = dn), byrow = TRUE)
# display with row and col totals
addmargins(P2)
b <- c(80, 20, 40, 60)
d <- c(70, 30, 50, 10)

y <- ffs(P1, P2, d, b, method="outside")
# display with row, col and table totals
round(addmargins(y$mu), 1)
# display with row and col totals
round(fm(y$mu), 1)