当前位置:蜗牛素材网>综合资讯>图文>正文

二次平滑预测matlab:基于MATLAB的三次指数平滑法预测计算GUI界面

人气:269 ℃/2023-12-21 11:04:27

指数平滑的定义及公式

产生背景:指数平滑由布朗提出、他认为时间序列的态势具有稳定性或规则性,所以时间序列可被合理地顺势推延;他认为最近的过去态势,在某种程度上会持续的未来,所以将较大的权数放在最近的资料。

基本原理:指数平滑法是移动平均法中的一种,其特点在于给过去的观测值不一样的权重,即较近期观测值的权数比较远期观测值的权数要大。根据平滑次数不同,指数平滑法分为一次指数平滑法、二次指数平滑法和三次指数平滑法等。但它们的基本思想都是:预测值是以前观测值的加权和,且对不同的数据给予不同的权数,新数据给予较大的权数,旧数据给予较小的权数。

方法应用:指数平滑法是生产预测中常用的一种方法。也用于中短期经济发展趋势预测,所有预测方法中,指数平滑是用得最多的一种。

指数平滑法的基本公式:St=a*yt (1-a)*St-1 式中,

St--时间t的平滑值;

yt--时间t的实际值;

St-1--时间t-1的平滑值;

a--平滑常数,其取值范围为[0,1]

据平滑次数不同,指数平滑法分为:一次指数平滑法、二次指数平滑和三次指数平滑法等。

若时间序列的变动呈现出二次曲线趋势,则需要采用三次指数平滑法进行预测。此外,一般针对波动较大的指标数据单独做预测时,如果采用多项式拟合,很容易过拟合或欠拟合,就算得到了拟合较好的公式也很难准确的计算出下一个数据,在处理此类问题时,可考虑移动平滑法类的时间序列算法。

三次指数平滑法是时间序列算法之一,该算法较为常见,主要基于初始均值,按照三个特定公式计算出相关特征结果,依次向后递推出下一个数据,具体模型如下:

上述公式中有三个有三个参数,alpha和beta影响预测数据的走势是向上还是向下,gamma影响预测数据的波动程度,一般波动较大的数据,三个参数可分别设为0.5 0.5 0.3,波动较小则可设为0.7 0.5 0.3。这两种参数设置适用于大多数指标预测问题。


GUI界面如下:

加载数据——输入模型参数alpha、beta和gamma、预测数据个数、x轴坐标名称、y轴坐标名称——点击开始计算即可出现结果,同时会在当前文件夹下生成预测数据的excel文件和图片预测.jpg。需要完整GUI程序,可以进行赞赏后截图(10元及以上),进行联系,或者在微信公众号“云龙派”内回复截图,几小时内会回复。界面编程不易,还请见谅!

加载数据

输入参数

开始计算

GUI界面主要程序如下

function pushbutton6_Callback(hObject, eventdata, handles)% hObject handle to pushbutton6 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global dataalpha = str2num(get(handles.edit12,'string'));beta = str2num(get(handles.edit13,'string'));gamma= str2num(get(handles.edit14,'string'));fc = str2num(get(handles.edit15,'string'));str1 = get(handles.edit16,'string');str2 = get(handles.edit17,'string');S = data;fc=3;%预测个数k=3;%初始取均值数据个数n=length(S);a(1)=sum(S(1:k))/k;b(1)=(sum(S(k 1:2*k))-sum(S(1:k)))/k;s=S(1)-a(1);y=a(1) b(1) s(1);for i=1:n fc-1 if i==length(S) S(i 1)=a(end) b(end) s(end-k 1); end a(i 1)=alpha*(S(i)-s(i)) (1-alpha)*(a(i) b(i)); b(i 1)=beta*(a(i 1)-a(i)) (1-beta)*b(i);%趋势 s(i 1)=gamma*(S(i)-a(i)-b(i)) (1-gamma)*s(i);%周期 y(i 1)=a(i 1) b(i 1) s(i 1);endfigure;plot(S,'b-*','linewidth',1);hold onplot(n:n fc,S(end-fc:end),'r-o','linewidth',1);grid on;xlabel(str1);ylabel(str2);legend('历史走势','未来走势')saveas(gcf,'预测.jpg');%保存生成的图片close(gcf);axes(handles.axes4);plot(S,'b-*','linewidth',1);hold onplot(n:n fc,S(end-fc:end),'r-o','linewidth',1);grid on;xlabel(str1);ylabel(str2);legend('历史走势','未来走势')xlswrite('预测的数据.xlsx',S);set(handles.uitable2,'data',S);


作 者 | 郭志龙

编 辑 | 郭志龙

校 对 | 郭志龙

本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。

搜索更多有关“二次平滑预测matlab:基于MATLAB的三次指数平滑法预测计算GUI界面”的信息 [百度搜索] [SoGou搜索] [头条搜索] [360搜索]
本网站部分内容、图文来自于网络,如有侵犯您的合法权益,请及时与我们联系,我们将第一时间安排核实及删除!
CopyRight © 2008-2024 蜗牛素材网 All Rights Reserved. 手机版