二次指数平滑法程序
因论文中要分析旅游时间分布,预测不同年份旅游者人数,从而做了一个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