周炳飞
摘 要:动态指数平滑模型的建立依托于指数平滑法优势,以寻找最小误差平方和为目标参数,广泛应用于各类实际问题的解决。本文以二次平滑指数和某景点游客预测问题为基础,探讨如何利用matlab软件建立动态指数平滑模型,结果证实,其可以更加高效准确的找到合适平滑参数,提升模型精确度,有利于实际问题的解决,适宜广泛推广应用。
关键词:指数平滑法;matlab软件;动态指数平滑模型;误差平方和
一、指数平滑法
指数平滑法因自身应用优势可在一定程度上反映现实规律,在越来越广泛的应用中,虽然带来许多便利,但是在模型的建立中却有一个较为典型的问题困扰着其进一步发挥作用,即平滑參数α的选择,在建立动态模型的过程中也会产生极大地影响。在应用中,α的选择通常采取根据经验判断的方式,以数据波动的大小进行取值,偏大时在0.6~0.8之间,偏小时在
0.1~03之间[1]。
正因为取值标准不够明确,对模型的建立和预测精度都产生了较大的影响,尤其是缺乏经验者在使用时有较多不变,本次研究中应用matlab软件建立动态指数平滑模型的侧重点基于误差分析,以最大限度减少预测值和实际值之间的误差为目标函数,完成模型的规划建立,获得动态解,从而提升模型精度,方便参数α的选择。
二、动态指数平滑模型的建立与应用
(一)二次指数平滑。动态指数平滑模型的建立基于二次指数平滑法,基本计算公式表达如下:
St=αyt+(1-■)St-1
Dt=■St+(1-■)Dt-1
其中St与Dt分别为一次与二次平滑数列,α代表平滑系数,取值在0~1之间,通过二者对比可发现二次平滑基于一次生成,公式展开后可得到:
S■=■■(1-■)t=iyi=(1-■)■S0
D■=■■(1-■)t=iyi=(1-■)■D0
其中S0与D0代表平滑初值,在实际应用中将其作为初始值配合参数α的选择,利用展开式进行预测。
假设某著名旅游景点要分析当地游客旅游时间分布情况,从而预测不同年份旅游者数量,利用二次指数平滑法,基于
matlab软件编写程序,参数α的选择分别采用0.3、0.5、0.8三个数值,获得不同预测值和真实值,最终得出α在本次模拟中采取0.5时误差值最小,对精确度影响最小,是较为合适的参数值,由此可见通过对比尝试获得最佳参数值是减小误差、提升精确度的重要方法。
(二)动态平滑指数模型。动态指数平滑模型作为目前广泛应用于解决各类问题的重要方式,它利用指数平滑法适应性强、操作简便、程序编写简单等优势服务于动态模型的建立,通过对历史数据、历史信息的反映贯穿模型,完成历史数据权重的修正,从而达到不断接近实际情况和思路的目的,具有较高的应用价值。本次研究基于以上二次指数平滑法,通过调整参数α获得研究结果。
通过以上二次平滑指数模拟发现,影响指数平滑精度的参数α,在取值较小时平滑能力较强,在取值较大时对模型实际数据反映速度较快,利用差值平方和确定的α同时,如何更快更好的选择一个最佳值事动态指数平滑模型建立和应用的关键[2]。模型应用建立中,预测值和实际值之间的差值平方和决定模型刻画精度,平方和取值越小证明拟合精度越佳,具体可用以下公式表达:
minSSE=■(yt′-yt) 2 (1)
其中yt′代表拟合值即预测值,结合平滑指数公式起可转化为:
minSSE=■yt-■■(1-■)t-iyi-(1-■)■S02 (2)
根据平滑指数离当前越近信息权重越大的原则,在实际应用中S0通常取值初始时刻值或0,利用历史数据是yt已知的优势,完成最佳α值得寻找,从而完成误差最小化问题的解决。动态平滑指数模型正是基于以上二次平滑指数的应用,利用二次规划系数yt的变化求得α的变化,从而完成动态模型的建立。由此,将(1)式与(2)式相结合,从而获得动态平滑指数:
■
我们仍旧以某景点游客旅游时间分布和不同年份旅游者数量预测为例,利用动态指数平滑法做数据预测和模拟,利用(3)式获得动态解,在三个不同α参数值0.3、0.5、0.8下求得预测值和实际值的误差平方和,参数误差数据情况具体见表1。根据表1中α参数值变化情况从而获得最小误差平方和,得到最佳动态参数α=0.3719。
表1 平滑参数α模拟对比值
三、案例操作
我们选择某个具体案例来进行实践,假如某著名旅游景点要分析当地游客旅游时间分布情况,从而预测不同年份旅游者数量,那么利用matlab软件完成动态指数平滑模型的建立。
OD—原始数据,alpha—平滑参数,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');
以上為某景点游客数量预测情况所运行的代码,分别在三个不α同参数值0.3、0.5、0.8下运行,结果发现只有在alpha为0.3719时取得了最小误差平方和,由此证实该动态指数平滑模型建模顺利,且代码运行良好,在α的动态变化中取得了较为精确的景点旅游者不同年份预测结果,证实其在应用于解决实际问题时的可行性、有效性与优越性。
综上所述,利用matlab软件建立动态指数平滑模型,可通过利用二次平滑指数参数α的变化获得动态模型,从而获得误差平方和最小值,达到提升数据精确度的目的,为预测提供更加切实可靠的基础与依据。在本次研究中,利用二次规划寻找最小动态参数值α和误差平方和既可以在保持指数平滑法优势的基础上做到易操作、应用简便,同时可更好的建立动态平滑指数模型,解决实践中多次尝试参数寻找最佳动态参数的问题,达到提升精确度的目的,从而有利用多类实际问题的解决,可以说,利用matlab软件完成动态指数平滑模型的建立适合广泛应用推广,精确度有保障,是一种较佳的解决问题方式。
参考文献:
[1] 冀小明,李方文,沙帆.价格风险测度的指数平滑模型[J].西南民族大学学报(自然科学版). 2010(04)
[2] 王梦东,刘敏.指数平滑模型在能源消费总量预测中的应用[J].武汉船舶职业技术学院学报. 2007(03)
[3]朱冬和,胡晓华,杨帅国.基于二次指数平滑的干预模型在CCI中的应用[J].海南师范大学学报(自然科学版). 2010(02)