多项式拟合
假设
- 把人口增长看做是一个多项式函数
- 人口增长没有限制,可以一直增长
特点
- 已有数据拟合的很好,不论数据有没有规律可言
- 预测未来一两年比较准确,越往后越不准确
- 预测的人口数量在未来会超出人口限制,且增长速度变快
代码实现
代码实现思路
以年份为x轴变量,当年人口为y轴变量,将两者进行拟合得到人口数模型与时间的关系式
,选取某城市2008到2019年老年人口数量进行模拟测试
代码
首先是将已有的数据拟合成一条曲线,过程代码如下所示
close
clc;
clear all %清除所有
n=5;%拟合多项式的次数
year=2008:2019;
num=[97.42 102.36 105.78 111.16 116.04 121.71 126.26 134.93 137 139 141.89 146];%户籍人口;
p5= polyfit(year,num,n); %5阶拟合
%绘制原始数据和拟合曲线图
figure(1)
hold on;
xlabel('year'); %设置横坐标名
ylabel('num'); %设置纵坐标名
title('2008-2019人口增长曲线'); %设置标题
grid on %网格线
plot(year,num,'r*',year,polyval(p5,year))
legend('人口数量','拟合曲线')
运行结果图
然后预测未来几年的人口增长数
figure(2)
year1=2008:2025;
plot(year1,polyval(p5,year1))
people=polyval(p5,year1);
legend('人口预测数量')
运行的结果图
BP神经网络
特点
- BP神经网络预测人口模型不需要任何假设
- BP神经网络根据已有的数据推算数据内部之间的关系
- BP神经网络是非线性的方法
代码实现
实现思路
采用三层BP神经网络,利用已有数据推算出关系式,然后推算出下一年的人口,然后以下一年的人口为基础继续推算下下一年的人口
代码
clear all
close
clc
%原始数据
P=[97.42 102.36 105.78 111.16 116.04 121.71 126.26 134.93 137;
102.36 105.78 111.16 116.04 121.71 126.26 134.93 137 139;
105.78