实现测试自己人口预测的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; %自回归阶数
I输入=x; % x是原始序列(行向量)
n=length (I输入;
%准备数据输入和输出
inputs=Zeros(lag,n-lag );
for i=1:n-lag
输入(:I )=输入(I:Ilag-1 );
结束
targets=x(lag1:end;
创建%网络
hiddenLayerSize=10; %隐藏层神经元数
net=fitnet(hiddenlayersize;
%避免过度拟合,划分训练,测试和验证数据比例
net.divide param.train ratio=70/100;
net.divide param.valratio=15/100;
net.divide param.test ratio=15/100;
%培训网络
[net,tr]=train(net,inputs,targets );
根据%%图表判断拟合的好坏
yn=net (输入;
errors=targets-yn;
figure,ploterrcorr (错误) %绘图误差的自相关情况(20lags ) ) )。
figure、parcorr、errors%标绘偏相关
%[h,pValue,stat,cvalue]=lbqtest(Errors ) %Ljung-Box Q检查(20lags ) ) ) ) ) )。
figure,plotresponse(con2seq(targets ),con2seq (yn ) ) %看预测的趋势和原来的趋势
figure,ploterrhist (错误) %误差直方图
图形,打印性能(tr ) %误差下降线
%%以下的预测预测今后几个时间段
fn=7; %预测步骤数为fn
f_in=Iinput(n-lag1: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 );
结束
绘制%预测图
figure,plot(194933602013,iinput,' b ',2013:2020,iinput (结束),f_out],' r ' )
在2014a版matlab中执行的结果如下。
网络结构和各个参数显示如下。
误差直方图
图1自相关图2的误差
图3预测
请注意,在判断结果好坏时,仅查看误差图表是不够的。 如果是好的预测,自相关图中除0阶自相关以外的自相关系数不应该超过上下置信区间。 另外还画了统计量和图表”%“在后面。 请根据需要去除。 最后的预测值是f_out,我的预测值是
138701.065269972139467.632609654140207.209707364141210.109373609141981.28537849142461.332139592143056.0731313056
原文地址: http://www.cn blogs.com/baby Fei/p/7003068.html