Passage 24 A #5

Age structured population

Human being Homo sapiens has relatively long life span; they usually live up to several decades, or sometines more than one hundred years. A population thus usually consists of people of various ages, from the young to the elder. Such a population is called “age structured” with a certain number of individuals of age 0, 1, 2, ..., etc.

Up to the previous lectures, we have ignored age structure. But its importance for demography is obvious.

An age structured population can be described by a vector with a certain number of elements; each elements represents the number of individuals of a certain age class.

For example, Japanese population by age class (5 years inteval, 0-4 y old, 5-9, 10-14, ..., 85-90) in 1940 and 2014 are given as follows. 

Data from http://www.stat.go.jp/english/data/nenkan/1431-02.htm

ageDist1940={9128,8834,8407,7409,6104,5653,4947,4423,3834,3207,2887,2560,2227,1555,995,546,254,103};

ageDist2014={5213,5307,5713,6005,6203,6678,7466,8670,9793,8608,7791,7654,8980,9154,7928,6269,4869,4779};

Length[ageDist1940]

BarChart[ageDist1940]

BarChart[ageDist2014]

We see a big difference in the age distribution in 1940 and 2014l; We had less elder people in 1940. But more elder people in 2014.

Age distribution is an important indicator of a population because various social activities such as economy, education, and social security, etc. depend on the percentage of children < 15 years old or eldery > 65 years old.

Strictly speaking, numbers of males and females in the real world can be diferent for each age class. But we simplify the complexity and hereafter we only focus on females by assuming that we always has the same number of males as females for all age classes.

How to describe an age structured population

Let (Subscript[n, x])(t) be the number of people aged x in the year t (x = 1, 2, ...). Then an age structured population in year t can be represented by a vector whose elements are (Subscript[n, 1])(t), (Subscript[n, 2])(t), (Subscript[n, 3])(t), ..., (Subscript[n, w])(t) where w is the terminal age that may be well set to be 100. Here we exclude babies aged 0 born in the year t. 

We want to describe the age distribution at year t + 1 using that at year t. We use the following two rules to derive the equation - aging and birth.

Aging

It is obvious that an individual aged x in year t gets older by age one to be aged x + 1 in the next year t + 1. But some unlucky individuals may not surive to the next year because of accident happened in year t. Let (Subscript[P, x]) be the probability of people aged x surviving to the next year. Then this rule of aging is given as.

	(Subscript[n, x])(t+1) = (Subscript[P, x-1])(Subscript[n, x-1])(t)   for   x = 2, 3, 4, ..., w.				(1)

Birth

It is obvious that a baby is born aged 0 (age of all babies is 0). Let (Subscript[m, x])be the number of babies born from a mother whose age is x. Then the total number of babies born in the year t is given as the sum of babies born from each age of mothers in year t.

	(Subscript[m, 1])(Subscript[n, 1])(t)+(Subscript[m, 2])(Subscript[n, 2])(t) +(Subscript[m, 3])(Subscript[n, 3])(t) + ... + (Subscript[m, w])(Subscript[n, w])(t)
	
The number of age 1 in the next year t is these new babies born in the year t who have survived one year with the probability (Subscript[P, 0]). Then, we obtain
	
	(Subscript[n, 1])(t+1)= (Subscript[P, 0])(Subscript[m, 1])(Subscript[n, 1])(t)+(Subscript[P, 0])(Subscript[m, 2])(Subscript[n, 2])(t) +(Subscript[P, 0])(Subscript[m, 3])(Subscript[n, 3])(t) + ... + (Subscript[P, 0])(Subscript[m, w])(Subscript[n, w])(t)
	
Here, we replace (Subscript[P, 0])(Subscript[m, x])with (Subscript[f, x]) to get

	(Subscript[n, 1])(t+1)= (Subscript[f, 1])(Subscript[n, 1])(t)+(Subscript[f, 2])(Subscript[n, 2])(t) +(Subscript[f, 3])(Subscript[n, 3])(t) + ... + (Subscript[f, w])(Subscript[n, w])(t)				(2)

Leslie Model (Matrix model)

Equation (1) and (2) describe the age distriubtion at year t+1 in terms of that at year t.  Although these equations look formidable, these can be readily represented by using matrix and vector notations as

	n(t+1) = A n(t)									(3)	

where n(t) is the column vector ((Subscript[n, 1])(t), (Subscript[n, 2])(t), (Subscript[n, 3])(t), ..., (Subscript[n, w])(t)) and A is a w by w matrix with the first row being ((Subscript[f, 1]),(Subscript[f, 2]),(Subscript[f, 3]), ...,(Subscript[f, w])) and ((Subscript[P, 1]),(Subscript[P, 2]), (Subscript[P, 3]),...,(Subscript[P, w-1])) in the subdiagomal. The matrix A is called Leslie matrix after Patrick H Leslie who first used this matrix notation to describe age structured population.

Age-dependent fertility data (Subscript[f, x]) and annual survival probability (Subscript[P, x]) can be available from various sources.

Equation (3) can be easily solved if the matrix A is a constant matrix, i.e., all elements are constant. The solution is

	n(t) = (A^t)n(0)

For human being, w = 100 and the matrix A can be in huge dimension and calcualtion the power t may be tedious. But Mathematica can do it easily.

Age - dependent fertilities

Fertility (Subscript[f, x]) does depend on age. Females can give birth biologically between age 15 to 50. But actual age of having baby is critically affected by society they live, e.g., age of marriage, etc.

Age - dependent survival probabilities

Annual survival probability (or death probability) does depend on age. Basically it is high for infant and for elder people. Age-dependent death rates (Probability of death at each age) for Japanese women in 2014 for age 0, 1, 2, ..., 104, are available at the Ministry of Health (http://www.mhlw.go.jp/toukei/saikin/hw/life/life14/index.html)

SetDirectory["/Volumes/OSX/Users/takasu/home/情報科学科の仕事/講義/平成２８年度/H28 パサージュ/Presentation/data/"];

dataDeathRate=ReadList["death rate female Japan 2014.csv",Real]

Length[dataDeathRate]

ListPlot[dataDeathRate,Joined->True,AxesLabel->{"Age","Prob. death"}]

ListLogPlot[dataDeathRate,Joined->True,AxesLabel->{"Age","Prob. death"}]

Example 1: Two age classes

Assume a simple case that a biological orgamism who can live maximally two years (no more than two) gives birth and dies according to the below model.
{}
Then, the number of age 1 and 2, (Subscript[n, 1])(t)and (Subscript[n, 2])(t), follows the below equation.

mat={{f1,f2},{P1,0}}

MatrixForm[mat]

Let (Subscript[f, 1]) = 0.5, (Subscript[f, 2]) = 1, (Subscript[P, 1]) = 0.75. How does this organizm grow in size when we start from ((Subscript[n, 1])(0),(Subscript[n, 2])(0)) = (1, 0)?

para={f1->0.5,f2->1,P1->0.75}

matN=mat/.para

MatrixPower[matN,1].{1,0}

MatrixPower[matN,2].{1,0}

MatrixPower[matN,3].{1,0}

MatrixPower[matN,4].{1,0}

seqData=Table[MatrixPower[matN,t].{1,0},{t,0,30}]

seqPopSize=Apply[Plus,Transpose[seqData]]

ListPlot[seqPopSize]

ListLogPlot[seqPopSize]

Eigensystem[matN]

Eventually, the total population increases by a factor 1.15139 (15.139% increase) and the age distribution is (0.8379, 0.5458). In other words, the population increases annually by the principal eigenvalue and the age distribution is given by the eigenvector corresponding to the principal eigenvalue.

Example 2 : A hypothetical scenario for human being

Assume that womens start to give birth with a contant rate f during 21 to 35 years old every year. Let f = 0.08. A woman has roughly 0.08 (35 - 20) = 1.2 children on average in her life.

Annual survival probabilities are assumed to be given those of Japanese women in 2014.

mat=Table[0,{i,1,100},{j,1,100}];

fConst=0.08;

Do[
If[20<j && j<36,mat[[1,j]]=fConst];
mat[[1+j,j]]=1-dataDeathRate[[j+1]],{j,1,99}
];

mat[[100,100]]=1-dataDeathRate[[101]];

MatrixForm[mat]

Eigenvalues[mat]//Chop

The population will eventually increases by 0.64%

tmp=Eigensystem[mat]//Chop

ageDistStable=tmp[[2]][[1]]

ListPlot[ageDistStable,Joined->True]

The stable age distribution is given as the above graph.

Initial population is (1, 0, 0, ... ), i.e., the population starts a youngest age class.

initPop=Table[0,{100}];
initPop[[1]] = 1;
initPop

Population distribution at t - th year. is given as n(t) = (A^t)n(0)

MatrixPower[mat,10].initPop

tEnd=200;
seqData=Table[MatrixPower[mat,t].initPop,{t,1,tEnd}];

seqPopSize=Apply[Plus,Transpose[seqData]]

ListPlot[seqPopSize,Joined->True,AxesLabel->{"Year","Total Pop Size"}]

ListLogPlot[seqPopSize,Joined->True,AxesLabel->{"Year","Total Pop Size"}]

glist={};
Do[
g=BarChart[seqData[[t]],PlotRange->{0,1.2}];
PrintTemporary[t];
PrintTemporary[g];
AppendTo[glist,g],{t,1,tEnd}
]

ListAnimate[glist]

BarChart[seqData[[20]],PlotRange->{0,2}]

BarChart[seqData[[40]]]

BarChart[seqData[[60]]]

BarChart[seqData[[80]]]

BarChart[Last[seqData]]

Question

In the above Example 2, what happens if women start to have babies 10 years later in their lives, e.g., from 31 to 45, not from 21 to 35, while annual survival probabilities remain the same? The total number of children a woman has is the same. But the timing of start having babies is delayed.