Suppose $x_t$ is a hundred dimensional vector, with $(x_t)_i$ denoting the number of people in some population (say, a country) with age $i$ in year $t$, where $t$ is measured starting from some base year, for $i= 1, \dots, 100$. While $(x_t)_i$ is an integer, it is large enough that we simply consider it a real number. In any case, our model certainly is not accurate at the level of individual people. Also, note that the model does not track people older than $100$ years old. The following cell downloads the population data from a country in 2010.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv("https://jonghank.github.io/ase2010/files/population_data.csv", \
header=None).values
x = data[:,0] # population
b = data[:,1] # birth rate
d = data[:,2] # death rate
age = np.arange(100) + 1
The variable x
displayed below represents the distribution (population) of ages from 1 to 100.
plt.figure(figsize=(11, 4), dpi=100)
plt.step(age, x, where="mid")
plt.title("Age distribution in 2010")
plt.xlabel("Age")
plt.ylabel("Populaion (millions)")
plt.grid()
plt.show()
The birth rate is given by a hundred dimensional vector $b$, where $b_i$ is the average number of births per person with age $i$, for $i=1,\dots,100$ (This is half the average number of births per woman with age $i$, assuming equal numbers of men and women in the population). Of course $b_i$ is approximately zero for $i<13$ and $i>50$. The approximate birth rates for the country in year 2010 are shown in below.
plt.figure(figsize=(11, 4), dpi=100)
plt.step(age, b*100, where="mid")
plt.xlabel("Age")
plt.ylabel("Birth rate (%)")
plt.grid()
plt.show()
The death rate is given by a hundred dimensional vector $d$, where $d_i$ is the portion of those aged $i$ who will die this year. The death rates for this country in year 2010 are shown below.
plt.figure(figsize=(11, 4), dpi=100)
plt.step(age, d*100, where="mid")
plt.xlabel("Age")
plt.ylabel("Death rate (%)")
plt.grid()
plt.show()
To derive the dynamical relations, we would like to find $x_{t+1}$ in terms of $x_t$, taking into account only births and deaths, and not immigration. The number of 1-year olds next year is the total number of births this year, so
$$ (x_{t+1})_1 = b^T x_t $$The number of $i+1$ year olds next year is the number of $i$ year olds this year, minus those who die, so
$$ (x_{t+1})_{i+1} = (1-d_i)(x_t)_i, \quad \text{for }i=1,\dots,99 $$(Problem 1) Predict the total population of this country at year 2020, and at year 2040. Display and explain how it changes.
# your code here
# your code here
322.34617815096277
# your code here
329.4727647641986
(Problem 2) Predict the number of elementary school students (ages from 8 to 13) in this country over the next 30 years. Do we need to construct more elementary schools, or do we need to close some? Justify your answer by presenting appropriate computational results.
# your code here
(Problem 3) The country is now in need of population growth, and two political parties claim the following different policies. Both look positive for increasing the population growth rate in the long run.
Party D: We should support the birth promotion campaigns and the children welfare programs, which is expected to increase the birth rate over the entire age band by a factor of 1.01 every year.
Party R: We should support the public health and the disease control systems, which is expected to decrease the death rate over the entire age band by a factor of 0.99 every year.
Which party would you vote for, if the budgets and efforts accompanying these two policies are similar? Justify your answer by presenting appropriate computational results.
# your code here