基于最小二乘法的人口增长模型拟合

  • 一.问题描述
  • 二.问题分析
  • 三.实验过程
  • 四.实验结果分析



一.问题描述

   全国第七次人口普查正在进行中,为了更好的了解我国人口总数,判断人口数量变化规律,为相关政策的制定与执行提供理论依据。需要一定的数学模型来对人口数量进行估计和预测,需要选择合适的数学方法来实现上述目标。


二.问题分析

  为了对2020年全国总人口有一个较为准确的估计,需要查找2020年之前若干年的全国总人口数据,依据已有的统计数据来估计未知的数据。经过比较与选择,本课题采用最小二乘法的指数增长模型来对数据进行拟合来,进而完成对2020年的总人口进行预测的目标。


三.实验过程

  查阅相关资料可搜集到2000年至2019年我国的人口数据资料如下表所示:

       表1 人口总数统计表

年份

2000

2001

2002

2003

2004

2005

2006

2007

2008

人口

12.65

12.76

12.84

12.92

12.99

13.07

13.14

13.21

13.28

年份

2009

2010

2011

2012

2013

2014

2015

2016

2017

人口

13.34

13.41

13.47

13.54

13.61

13.67

13.74

13.82

13.90

年份

2018

2019

人口

13.95

14.00

  根据已有资料,现对统计数据进行建模,可采用线性增长模型和指数增长模型。现比较两者效果,根据结果选出最合适的模型。


(1) 线性增长模型

观测值的模型:人口增长模型代码python 人口增长模型拟合_动态规划

线性模型:y=a+bx

拟合精度:人口增长模型代码python 人口增长模型拟合_动态规划_02

多项式拟合函数:(程序采用MATLAB实现)

function p=mafit(x,y,m)
format short;
A=zeros(m+1,m+1);
for i=0:m
    for j=0:m
        A(i+1,j+1)=sum(x.^(i+j));
    end
    b(i+1)=sum(x.^i.*y);
end
a=A\b';
p=fliplr(a');
end

输入:(拖动进度条往右划可查看完整)

x=[2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019];

y=[12.65 12.76 12.84 12.92 12.99 13.07 13.14 13.21 13.28 13.34 13.41 13.47 13.54 13.61 13.67 13.74 13.82 13.90 13.95 14.00];

p=mafit(x,y,1)

输出:

p =
     0.0697 -126.7102
所以线性模型为y=0.0697*x-126.7102
预测2020年人口数据:
输入:x=2020;
y=0.0697*x-126.7102;
输出:y =
         14.0838

(2) 指数增长模型(用简单的线性最小二乘法)
输入:

x=[2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019];
y=[12.65 12.76 12.84 12.92 12.99 13.07 13.14 13.21 13.28 13.34 13.41 13.47 13.54 13.61 13.67 13.74 13.82 13.90 13.95 14.00];
p=mafit(x,log(y),1)

输出:

p =
         0.0052   -7.9030
所以指数模型:y=e^(-7.9030+0.0052x)
预测2020年人口数量:
输入:x=2020;
y=exp(-7.9030+0.0052*x)
输出:y =
          13.4772

拟合图形程序:

x=[2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019];
y=[12.65 12.76 12.84 12.92 12.99 13.07 13.14 13.21 13.28 13.34 13.41 13.47 13.54 13.61 13.67 13.74 13.82 13.90 13.95 14.00];

a=mafit(x,y,1);
x1=[2000:1:2019];
y1=a(2)+a(1)*x1;
b=mafit(x,log(y),1);

y2=exp(b(2))*exp(b(1)*x1);
plot(x,y,'*')
hold on
plot(x1,y1,'--r')
hold on
plot(x1,y2,'-k')
legend('原曲线','曲线一','曲线二')

输出结果如下图所示:

人口增长模型代码python 人口增长模型拟合_矩阵_03


     图1 matlab输出结果曲线图

    (注:曲线一为线性模型,曲线二为指数模型)


四.实验结果分析

   由于我国有关人口控制的相关政策的实行,使得人口增长率逐年下降, 到2020
年人口数量不会一直呈线性变化,故模型二更适合我国目前人口变化的模式。虽然数模模型的预测不一定准确,因为要受到数据来源的影响,本设计所搜集到的数据来源不一定非常精准,如若能够保证数据来源的稳定性,那么预测结果有一定的参考价值,可为相关部门参考和借鉴。