bp神经⽹络matlab⼯具箱预测,BP神经⽹络⼈⼝预测程序 (matlab实现)
x=[54167
55196
56300
57482
58796
60266
61465
62828
64653
65994
67207
66207
65859
67295
69172
70499
72538
74542
76368
78534
80671
82992
85229
87177
89211
90859
92420
93717
94974
96259
97542 98705 100072 101654 103008 104357 105851 107507 109300 111026 112704 114333 115823 117171 118517 119850 121121 122389 123626 124761 125786 126743 127627 128453 129227 129988 130756 131448 132129 132802 134480 135030 135770 136460
% 该脚本⽤来做NAR神经⽹络预测
lag=3; % ⾃回归阶数
iinput=x; % x为原始序列(⾏向量)
n=length(iinput);
inputs=zeros(lag,n-lag);
for i=1:n-lag
inputs(:,i)=iinput(i:i+lag-1)‘;
end
targets=x(lag+1:end);
%创建⽹络
hiddenLayerSize = 10; %隐藏层神经元个数
net = fitnet(hiddenLayerSize);
ainRatio = 70/100;
net.divideParam.valRatio = 15/100;
stRatio = 15/100;
%训练⽹络
[net,tr] = train(net,inputs,targets);
%% 根据图表判断拟合好坏
yn=net(inputs);
errors=targets-yn;
figure, ploterrcorr(errors) %绘制误差的⾃相关情况(20lags) figure, parcorr(errors) %绘制偏相关情况 %[h,pValue,stat,cValue]= lbqtest(errors) %Ljung-Box Q检验(20lags) figure,plotresponse(con2seq(targets),con2seq(yn)) %看预测的趋势与原趋势figure, ploterrhist(errors) %误差直⽅图
figure, plotperform(tr) %误差下降线
%% 下⾯预测往后预测⼏个时间段
fn=7; %预测步数为fn
f_in=iinput(n-lag+1:end)‘;
f_out=zeros(1,fn); %预测输出
% 多步预测时,⽤下⾯的循环将⽹络输出重新输⼊
f_out(i)=net(f_in);
f_in=[f_in(2:end);f_out(i)];
end
% 画出预测图
figure,plot(1949:2013,iinput,‘b‘,2013:2020,[iinput(end),f_out],‘r‘)⽤2014a版matlab运⾏后结果如下:
⽹络结构和各参数显⽰如下:
神经网络预测误差直⽅图