BP神经网络人口预测程序(matlab实现)

 

本身测试人口预测的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    
137510]';
% 该脚本用来作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);

% 避免过拟合,划分训练,测试和验证数据的比例
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 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;  %预测步数为fnide

 

f_in=iinput(n-lag+1:end)';
f_out=zeros(1,fn);  %预测输出
% 多步预测时,用下面的循环将网络输出从新输入
for i=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运行后结果以下:3d

     网络结构和各参数显示以下:orm

                  

                    

                 

                     

                                                                       偏差直方图blog

                  

 

                    

                

 

                

图1  自相关    图2 偏差get

                          

 图3 预测input

 

      注意在对结果好坏的判断中,仅仅看偏差图是不够的,若是是一个好的预测,那么自相关性图中除了0阶自相关外,其余的自相关系数系数都不该该超过上下置信区间。还有其余的统计量和图表都都写在”%“后面了,若是须要,去掉就可用。最后的预测值为f_out,个人预测值为qt

138701.065269972    139467.632609654    140207.209707364    141210.109373609    141981.285378849    142461.332139592    143056.073139776it

相关文章
相关标签/搜索