Energy blog

Demography now

Kimmo Klemola
23.05.2006

Demography deals with populations. It is much more important than democracy.

In 1908, German chemist Fritz Haber made an innovation that probably outplays all other innovations of the 20th century. He succeeded in combining fossil energy in a form of hydrogen steam reformed from natural gas into nitrogen distilled from the air to obtain ammonia. Ammonia is a raw material in the production of  nitric acid that is further manufactured to fertilizers and explosives. Industrial fertilizers enabled industrial agriculture and were the prime reason for population explosion. Without Haber's innovation there would be maybe only half of the current population on earth. World population is growing at a rate of 200,000 a day or 74 million a year twice the population of Poland.

Population projections are estimates of the population for future dates. Population projection math is based on numerical solutions of differential equation systems. Here I present a simple world population projection and a more detailed projection for US population. Initial population data and certain parameters such as birth rates, death rates and net immigration rates are needed. Numerical mathematics programs such as Matlab or Polymath can easily do the numerical integration of the differential equation system.

The difficulty is in determining reliable parameters that may be inherently time dependent and very uncertain. Pandemics such as AIDS, global starvation, peak oil, economic crises etc. can strongly affect birth and death rates and local net immigration rates. The parameters used in this study are obtained from the US Consensus Bureau data.

In 2006, the per capita arable land and permanent crops was 0.416 hectares in the world. The same figure for USA was 0.559 hectares per capita. In 2005, 2,684 million (2.684 billion) hectares land was in food production globally. [CIA Factbook]

If the per capita land area remains unchanged, in 2050 there should be 3,820 million (3.82 billion) hectares land reserved for food production—that is 43% more than today.

Currently about half of world population is malnourished. If the population projections are right, there will be 9.2 billion human beings in 2050, and it will be a huge task to feed them all. The industrial agriculture that feeds the current 6.5 billion is unsustainable—it cannot last forever. I am afraid that we will face some kind of a crash sooner or later.

Practically all biofuels are currently produced from food crops—biofuels compete with food production. Fuel consumption is huge and biofuels can in no way replace fossil fuels unless the human populations is substantially smaller. Biofuels are unsustainable choice. The answer should be lower consumtion with more sustainable living styles. Figure 1. USA population projection 20022050: different age groups. Figure 2. USA population projection 20022050. Figure 3. USA population projection 20022050: net immigration rate, birth rate, death rate. Figure 4. USA population projection 20022050: birth rate - death rate; net immigration rate + birth rate - death rate. Figure 5. USA population projection 20022050: life expectancy at birth. Figure 6. USA population projection 20022050: arable land for food production. Figure 7. World population projection 20052050. Figure 8. World population projection 20052050: arable land for food production. Figure 9. World arable land in 2005 and 2050 assuming that in 2050 20% of 111 million barrels per day of 2025 estimated petroleum production is replaced by wheat ethanol.

World population projection 2005–2050 – problem setup:

Differential equations

 1 d(A)/d(t) = rate / 100 * A World population

Explicit equations

 1 rate = (-5.228E-07 * t ^ 4 + 5.2237E-05 * t ^ 3 - 1.6171E-03 * t ^ 2 - 1.1655E-03 * t + 1.1433) Average annual growth rate of world population, % [US Census Bureau] 2 INCREASE = A - 6451058790 Population change compared to 2005

Matlab code

M-file WORLDpopulation.m:

function dYfuncvecdt = ODEfun(t,Yfuncvec);
A = Yfuncvec(1);
%Average annual growth rate of world population, % [US Census Bureau]
rate = (-5.228E-07 * t ^ 4 + 5.2237E-05 * t ^ 3 - 1.6171E-03 * t ^ 2 - 1.1655E-03 * t + 1.1433);
%Population change compared to 2005
INCREASE = A - 6451058790;
%World population
dAdt = rate / 100 * A;

Command window:

>> tspan = [0 45.]; % Range for the independent variable

>> y0 = [6.451E+09]; % Initial values for the dependent variables

>> [t,y]=ode45('WORLDpopulation',tspan,y0);

>> plot(t,y(:,1));

>>

USA population projection 2002–2050 – problem setup:

Differential equations

 1 d(A0_1)/d(t) = rbirth - rdeath0_1 - r0to1 + A0_1 / population0_45 * m Population below 1 year 2 d(A1_4)/d(t) = r0to1 - rdeath1_4 - r4to5 + A1_4 / population0_45 * m Population at the age of 1-4 3 d(A5_14)/d(t) = r4to5 - rdeath5_14 - r14to15 + A5_14 / population0_45 * m Population at the age of 5-14 4 d(A15_24)/d(t) = r14to15 - rdeath15_24 - r24to25 + A15_24 / population0_45 * m Population at the age of 15-24 5 d(A25_34)/d(t) = r24to25 - rdeath25_34 - r34to35 + A25_34 / population0_45 * m Population at the age of 25-34 6 d(A35_44)/d(t) = r34to35 - rdeath35_44 - r44to45 + A35_44 / population0_45 * m Population at the age of 35-44 7 d(A45_54)/d(t) = r44to45 - rdeath45_54 - r54to55 Population at the age of 45-44 8 d(A55_64)/d(t) = r54to55 - rdeath55_64 - r64to65 Population at the age of 55-64 9 d(A65_74)/d(t) = r64to65 - rdeath65_74 - r74to75 Population at the age of 65-74 10 d(A75_inf)/d(t) = r74to75 - rdeath75_inf Population at the age of 75 and over 11 d(B)/d(t) = rbirth Birth rate 12 d(D)/d(t) = rdeath0_1 + rdeath1_4 + rdeath5_14 + rdeath15_24 + rdeath25_34 + rdeath35_44 + rdeath45_54 + rdeath55_64 + rdeath65_74 + rdeath75_inf Death rate

Explicit equations

 1 population0_45 = A0_1 + A1_4 + A5_14 + A15_24 + A25_34 + A35_44 Population below 45 in USA, immigration is allocated to this group 2 Total_population = A0_1 + A1_4 + A5_14 + A15_24 + A25_34 + A35_44 + A45_54 + A55_64 + A65_74 + A75_inf Total population of USA 3 m = 320.759 * t ^ 2 - 18733.875 * t + 1257197.714 Net immigration (second degree polynomial fitted to US Consensus Bureau prognosis 2002-2050) 4 womanshare10_14 = 0.488 Share of women at age group 10-14. In 2002, there was one woman at age group 10-14 who gave birth to her 4th child. 5 birth_rate10_14 = 0.0007 * womanshare10_14 Birth rate at age group 10-14 [National Vital Statistics Reports, Vol. 52, No. 10, December 17, 2003] 6 womanshare15_44 = 0.495 Share of women at age group 15-44. In 2002, there was one 15 year old woman who gave birth to her 6th child. 7 birth_rate15_44 = 0.0648 * womanshare15_44 Birth rate at age group 15-44 [National Vital Statistics Reports, Vol. 52, No. 10, December 17, 2003] 8 womanshare45_50 = 0.5075 Share of women at age group 45-50. 9 birth_rate45_50 = 0.0005 * womanshare45_50 Birth rate at age group 45-50-vuotiaat [National Vital Statistics Reports, Vol. 52, No. 10, December 17, 2003], In 2002, there were 263 women who had child (63 of them gave their first birth) 10 rbirth = birth_rate10_14 * A5_14 / 2 + birth_rate15_44 * (A15_24 + A25_34 + A35_44) + birth_rate45_50 * A45_54 / 2 Total birth rate 11 Odo = 12.5 + 0.5 / 1.4 * 0.1375 * t Life expectancy at 75, linear fit to US Census Bureau projection 2002-2050. 1.4-year life expectancy increase at birth corresponds to 0.5-year life expectancy increase at 75. 12 r0to1 = 1 * A0_1 Shift from the age group below 1 to the age group 1-4 13 r4to5 = 0.25 * A1_4 Shift from the age group 1-4 to the age group 5-14 14 r14to15 = 0.1 * A5_14 Shift from the age group 5-14 to the age group 15-24 15 r24to25 = 0.1 * A15_24 Shift from the age group 15-24 to the age group 25-34 16 r34to35 = 0.1 * A25_34 Shift from the age group 25-34 to the age group 35-44 17 r44to45 = 0.1 * A35_44 Shift from the age group 35-44 to the age group 45-54 18 r54to55 = 0.1 * A45_54 Shift from the age group 45-54 to the age group 55-64 19 r64to65 = 0.1 * A55_64 Shift from the age group 55-64 to the age group 65-74 20 r74to75 = 0.1 * A65_74 Shift from the age group 65-74 to the age group 75 and over 21 rdeath0_1 = 0.00697 * A0_1 Death rate at the age group below 1 22 rdeath1_4 = 0.00124 / 4 * A1_4 Death rate at the age group 1-4 23 rdeath5_14 = 0.00174 / 10 * A5_14 Death rate at the age group 5-14 24 rdeath15_24 = 0.00814 / 10 * A15_24 Death rate at the age group 15-24 25 rdeath25_34 = 0.01029 / 10 * A25_34 Death rate at the age group 25-34 26 rdeath35_44 = 0.02007 / 10 * A35_44 Death rate at the age group 35-44 27 rdeath45_54 = 0.04315 / 10 * A45_54 Death rate at the age group 45-54 28 rdeath55_64 = 0.09633 / 10 * A55_64 Death rate at the age group 55-64 29 rdeath65_74 = 0.22111 / 10 * A65_74 Death rate at the age group 65-74 30 d75_inf = 1 / Odo Probability of death at the age group 75 and over (during one year) 31 rdeath75_inf = d75_inf * A75_inf Death rate at the age group 75 and over 32 rdeath = rdeath0_1 + rdeath1_4 + rdeath5_14 + rdeath15_24 + rdeath25_34 + rdeath35_44 + rdeath45_54 + rdeath55_64 + rdeath65_74 + rdeath75_inf Total death rate 33 Life_expectancy_at_birth = 77.3 + 0.1375 * t Life expectancy at birth, linear fit to US Census Bureau projection 2002-2050.

Matlab code

M-file USApopulation.m:

function dYfuncvecdt = ODEfun(t,Yfuncvec);
A0_1 = Yfuncvec(1);
A1_4 = Yfuncvec(2);
A5_14 = Yfuncvec(3);
A15_24 = Yfuncvec(4);
A25_34 = Yfuncvec(5);
A35_44 = Yfuncvec(6);
A45_54 = Yfuncvec(7);
A55_64 = Yfuncvec(8);
A65_74 = Yfuncvec(9);
A75_inf = Yfuncvec(10);
B = Yfuncvec(11);
D = Yfuncvec(12);
%Population below 45 in USA, immigration is allocated to this group
population0_45 = A0_1 + A1_4 + A5_14 + A15_24 + A25_34 + A35_44;
%Total population of USA
Total_population = A0_1 + A1_4 + A5_14 + A15_24 + A25_34 + A35_44 + A45_54 + A55_64 + A65_74 + A75_inf;
%Net immigration (second degree polynomial fitted to US Consensus Bureau prognosis 2002-2050)
m = 320.759 * t ^ 2 - 18733.875 * t + 1257197.714;
%Share of women at age group 10-14. In 2002, there was one woman at age group 10-14 who gave birth to her 4th child.
womanshare10_14 = 0.488;
%Birth rate at age group 10-14 [National Vital Statistics Reports, Vol. 52, No. 10, December 17, 2003]
birth_rate10_14 = 0.0007 * womanshare10_14;
%Share of women at age group 15-44. In 2002, there was one 15 year old woman who gave birth to her 6th child.
womanshare15_44 = 0.495;
%Birth rate at age group 15-44 [National Vital Statistics Reports, Vol. 52, No. 10, December 17, 2003]
birth_rate15_44 = 0.0648 * womanshare15_44;
%Share of women at age group 45-50.
womanshare45_50 = 0.5075;
%Birth rate at age group 45-50-vuotiaat [National Vital Statistics Reports, Vol. 52, No. 10, December 17, 2003],
In 2002, there were 263 women who had child (63 of them gave their first birth)
birth_rate45_50 = 0.0005 * womanshare45_50;
%Total birth rate
rbirth = birth_rate10_14 * A5_14 / 2 + birth_rate15_44 * (A15_24 + A25_34 + A35_44) + birth_rate45_50 * A45_54 / 2;
%Life expectancy at 75, linear fit to US Census Bureau projection 2002-2050. 1.4-year life expectancy increase at birth corresponds to 0.5-year life expectancy increase at 75.
Odo = 12.5 + 0.5 / 1.4 * 0.1375 * t;
%Shift from the age group below 1 to the age group 1-4
r0to1 = 1 * A0_1;
%Shift from the age group 1-4 to the age group 5-14
r4to5 = 0.25 * A1_4;
%Shift from the age group 5-14 to the age group 15-24
r14to15 = 0.1 * A5_14;
%Shift from the age group 15-24 to the age group 25-34
r24to25 = 0.1 * A15_24;
%Shift from the age group 25-34 to the age group 35-44
r34to35 = 0.1 * A25_34;
%Shift from the age group 35-44 to the age group 45-54
r44to45 = 0.1 * A35_44;
%Shift from the age group 45-54 to the age group 55-64
r54to55 = 0.1 * A45_54;
%Shift from the age group 55-64 to the age group 65-74
r64to65 = 0.1 * A55_64;
%Shift from the age group 65-74 to the age group 75 and over
r74to75 = 0.1 * A65_74;
%Death rate at the age group below 1
rdeath0_1 = 0.00697 * A0_1;
%Death rate at the age group 1-4
rdeath1_4 = 0.00124 / 4 * A1_4;
%Death rate at the age group 5-14
rdeath5_14 = 0.00174 / 10 * A5_14;
%Death rate at the age group 15-24
rdeath15_24 = 0.00814 / 10 * A15_24;
%Death rate at the age group 25-34
rdeath25_34 = 0.01029 / 10 * A25_34;
%Death rate at the age group 35-44
rdeath35_44 = 0.02007 / 10 * A35_44;
%Death rate at the age group 45-54
rdeath45_54 = 0.04315 / 10 * A45_54;
%Death rate at the age group 55-64
rdeath55_64 = 0.09633 / 10 * A55_64;
%Death rate at the age group 65-74
rdeath65_74 = 0.22111 / 10 * A65_74;
%Probability of death at the age group 75 and over (during one year)
d75_inf = 1 / Odo;
%Death rate at the age group 75 and over
rdeath75_inf = d75_inf * A75_inf;
%Total death rate
rdeath = rdeath0_1 + rdeath1_4 + rdeath5_14 + rdeath15_24 + rdeath25_34 + rdeath35_44 + rdeath45_54 + rdeath55_64 + rdeath65_74 + rdeath75_inf;
%Life expectancy at birth, linear fit to US Census Bureau projection 2002-2050.
Life_expectancy_at_birth = 77.3 + 0.1375 * t;
%Population below 1 year
dA0_1dt = rbirth - rdeath0_1 - r0to1 + A0_1 / population0_45 * m;
%Population at the age of 1-4
dA1_4dt = r0to1 - rdeath1_4 - r4to5 + A1_4 / population0_45 * m;
%Population at the age of 5-14
dA5_14dt = r4to5 - rdeath5_14 - r14to15 + A5_14 / population0_45 * m;
%Population at the age of 15-24
dA15_24dt = r14to15 - rdeath15_24 - r24to25 + A15_24 / population0_45 * m;
%Population at the age of 25-34
dA25_34dt = r24to25 - rdeath25_34 - r34to35 + A25_34 / population0_45 * m;
%Population at the age of 35-44
dA35_44dt = r34to35 - rdeath35_44 - r44to45 + A35_44 / population0_45 * m;
%Population at the age of 45-44
dA45_54dt = r44to45 - rdeath45_54 - r54to55;
%Population at the age of 55-64
dA55_64dt = r54to55 - rdeath55_64 - r64to65;
%Population at the age of 65-74
dA65_74dt = r64to65 - rdeath65_74 - r74to75;
%Population at the age of 75 and over
dA75_infdt = r74to75 - rdeath75_inf;
%Birth rate
dBdt = rbirth;
%Death rate
dDdt = rdeath0_1 + rdeath1_4 + rdeath5_14 + rdeath15_24 + rdeath25_34 + rdeath35_44 + rdeath45_54 + rdeath55_64 + rdeath65_74 + rdeath75_inf;
dYfuncvecdt = [dA0_1dt; dA1_4dt; dA5_14dt; dA15_24dt; dA25_34dt; dA35_44dt; dA45_54dt; dA55_64dt; dA65_74dt; dA75_infdt; dBdt; dDdt];

Command window:

>> tspan = [0 48.]; % Range for the independent variable

>> y0 = [4.034E+06; 1.558E+07; 4.104E+07; 4.059E+07; 3.993E+07; 4.492E+07; 4.008E+07; 2.66E+07; 1.827E+07; 1.733E+07; 0; 0]; % Initial values for the dependent variables

>> [t,y]=ode45('USApopulation',tspan,y0);

>> plot(t,y(:,1),t,y(:,2),t,y(:,3),t,y(:,4),t,y(:,5),t,y(:,6),t,y(:,7),t,y(:,8),t,y(:,9),t,y(:,10));

>>