为第 t+1期的预测值,为第t-i+1期的观测值权数, 为第t-i+1期的观测值,N为权数的个数。其调整权数的公式为
,n为序列数据的个数,为调整前的第i个权数, 为调整后的第i个权数,k为学习常数,为第t+1期的预测误差。
在开始调整权数时,首先要确定权数个数 N 和学习常数 k 。一般说来,当时间序列的观测值呈季节变动时, N 应取季节性长度值。如序列以一年为周期进行季节变动时,若数据是月度的,则取 N = 12 ,若季节是季度的,则取 N = 4 。如果时间序列无明显的周期变动,则可用自相关系数法来确定,即取 N 为最高自相关系数的滞后时期。
自适应滤波法有两个明显的优点:一是技术比较简单,可根据预测意图来选择权数的个数和学习常数,以控制预测。也可以由计算机自动选定。二是它使用了全部历史数据来寻求最佳权系数,并随数据轨迹的变化而不断更新权数,从而不断改进预测。
clc,clear
% yt=[349.46 415.86 199.78 387.11 328.71 284.95 309.12 347.61 274.08 291.70 148.44 ];%水资源总量
% yt=[0.222445127 0.2647088 0.127166453 0.24640993 0.209236155 0.181381286 0.196766391 0.221266709 0.174462126 0.185677912 0.094487588];%单位水资源
% yt=[1400 1400 1416 1426 1411 1387 1365.4997];%供水模数
% yt=[16413 19934 23603.26091 27604.44567 32935.77101 35893.57198 41106 47335 51767.81129 56885 60879];
% ytt=[0.0075 0.007407407 0.006596021 0.00623053 0.005337888 0.005628119 0.011510032 0.006054912 0.004980803 0.004956118 0.005753622];
% ytt=[32.75 19.51 16.64 18.16 15.53 14.62 14.23 13.97 12.33 11.89 11.3];
% ytt=[463.65 432.22 431.35 345.79 289.97 269.19 240.04 208.19 194.1 171.11 159.51];
% ytt=[0.004807399 0.005699067 0.013114525 0.008266384 0.011347388 0.013826987 0.015010352 0.020626564 0.024299475 0.020774769 0.038938292];
ytt=[0.016722533 0.00898415 0.008556512 0.009976957 0.01181254 0.011595863 0.013057352 0.013941948 0.012600637 0.014033927 0.143];
yt=ytt.*10;
m=length(yt);
k=0.1;%学习常数
N=4; %初始化的权值个数
Terr=1000;
w=ones(1,N)/N;
while abs(Terr)>0.4
Terr=[];
for j=N+1:m-1
yhat(j)=w*yt(j-1:-1:j-N)';
err=yt(j)-yhat(j);
Terr=[Terr,abs(err)];
w=w+2*k*err*yt(j-1:-1:j-N);
end
Terr=max(Terr);
end
w, yhat