I present an example of a cohort component projection using a closed female population (Sweden 1993), taken from Preston et al.’s book (Demography 2001, page 125). I use R and basic matrix algebra to replicate their results. The advantage of this procedure is that allows to compute easily the intrinsic growth rate and age-proportionate distribution of the stable equivalent population. All we need is the population by age at time 0 (from a census), survivorship ratios (from a life table), and age-specific fertility rates.

The data:

As can be seen, the data have five-year-interval age groups, so each projection forward will involve 5 years. The steps are very simple:

1. Project forward the population of each age group (estimation of people alive)
2. Calculate the number of births of each age group based on fertility rates, adjusting by mortality (estimation of children alive)
3. Create a Leslie matrix, and then multiple it by the population vector (population by age at time 0)

### Survivorship ratios

We have to estimate life table survival ratios, that is, proportions of birth cohorts surviving from one age interval to the next in a stationary population. Basically, we are summarizing the mortality experience of different cohorts assuming stationarity. Because census statistics refer to age “last birthday” (rather than exact age), I estimate ratios using $L_x$ (average number of survivors in an age interval) instead of $l_x$.

$S_x = \frac{_5L_x}{_5L_{x-5}}$

I compute the survival ratios using a loop in R. The estimation of the open-ended survival ratio is slightly different but still straightforward:

$\frac{T_{85}}{T_{80}}$

### Number of children

This is the tricky part. Because census statistics refer to age “last birthday”, and we are projecting every 5 years, the estimation of the number of person-years lived by women in each age group consists of the average number of women alive at the beginning and end of the period (assuming a linear change over the period). To take advantage of the Leslie matrix, I define the births in R using a loop as follows:

1/(1+1.05) corresponds to a transformation of age-specific fertility rates (son and daughters) to maternity rates (only daughters), assuming that the ratio of male to female births (SBR) is constant across mothers’ ages. The number of births is also adjusted by the corresponding survival ratio from 0 to 5 years old ($\frac{_5L_0}{5 \times l_0}$), the number 5 goes away due to simplifying).

### Leslie matrix

I construct a Leslie matrix by replacing specific cells of a 18 x 18 matrix (18 age groups) by the vectors defined above (survival ratios and maternity rates):

Here we have the Leslie matrix:

Note that the last survival ratio is repeated in the last column (0.518). This is because the estimation of the open-ended survival ratio is:

$(N_{80} + N_{85}) \times \frac{T_{85}}{T_{80}}$

### Now, let’s do some projections

Using the R multiplication operator for matrices, I do a 5-year projection by simply multiplying the Leslie matrix by the population vector (remember that matrix multiplication is not commutative).

I obtain the same results of the book. Raising this multiplication I can get the projected population of subsequent periods. Because R doesn’t have a power operator for matrices, I define a function called mp to raise matrices (it is not very efficient, but for this example it’s still useful).

Let’s project the initial population for two periods (10 years):

Again, I get the same result of the book. The nice thing of all this is that estimating eigenvalues and eigenvectors, I can obtain the intrinsic growth rate and age-distribution of the “stable equivalent” population. Using the eigen function in R, I can identify the dominant eigenvalue (higher absolute number), and the corresponding eigenvector:

The population is growing but little.

### What about the population momentum?

The population momentum corresponds to the growth of a population after imposing replacement fertility conditions, that is, NRR=1. Thus, the first thing we have to do is to estimate NRR.

We can quickly estimate the intrinsic growth rate using NRR:

Very close to our estimation using cohort component projection. To impose the replacement condition, I just have to divide the first row of the Leslie matrix by NRR.

To get the population momentum we have to project the initial population until the growth is zero (here I raised the matrix 100 times), and then to compute the ratio between the initial population and the non-growing population (stationary).

After imposing the replacement condition, the population grew 1%.