二次指数平滑法程序

因论文中要分析旅游时间分布,预测不同年份旅游者人数,从而做了一个Matlab布朗单一参数线性指数平滑法Matlab程序,代码如下:

注:Data-原始数据

      s-一次和二次平滑结果

      at-预测式中的a参数

      bt-预测式中的b参数

      y1-预测结果

本例是取alpha为0.8时的情况

arr=[0;6;8.3;9.8;13;15;13.5;26.1;80.3;86;102.6];
[m,n]=size(arr);
alf=0.2;
for j=1:2
    s(1,j)=arr(1,1)
end
for i=2:m
    for j=1:2
        if j==1
            s(i,j)=alf*arr(i,1)+(1-alf)*s(i-1,j);
        else
            s(i,j)=alf*s(i,j-1)+(1-alf)*s(i-1,j);
        end
    end
end
temp=alf/(1-alf);
for i=1:m
    at(i,1)=2*s(i,1)-s(i,2);
    bt(i,1)=temp*(s(i,1)-s(i,2));
    yy(i+1)=at(i,1)+bt(i,1);
end
for i=2:11
    y1(i-1)=yy(i);
end
for i=2:11
    b(i-1)=arr(i);
end
for i=1:3
    y2(i)=at(m,1)+bt(m,1)*(i+1);
end
year=[1999:2011];
year=year';
y1=y1';
y2=y2';
b=b';
data=cat(1,y1,y2);
data1=cat(1,b,y2);
% plot(year,data,'-rs','markerFaceColor','g', 'MarkerSize',3);
% plot(year,data,'-rs',year,data1,'-rs');

参考http://xmujpkc.xmu.edu.cn/tongjixue/online/6/c8_3.htm

posted on 2009-05-30 17:56  YISONG  阅读(1530)  评论(0编辑  收藏  举报

导航