预测算法-三次指数平滑法(Holt-Winters)

news/2024/11/29 6:26:48/

指数平滑

一次指数平滑

一次指数平滑法是一种特殊的加权平均法,对本期观察值和本期预测值赋予不同的权重,求得下一期预测值的方法。这种方法既不需要存储全部历史数据,也不需要存储一组数据,从而可以大大减少数据存储问题。其通式为:

 

Ft+1为t+1期的预测值,xt为t期实际观测值,α为权值(也称为平滑系数),α越小,参考之前的时间点越多,α越大,参考之前的时间点越少。

根据通式,迭代计算得到:

 

由于(1−α)的取值在0到1之间,所以(1−α)n的值会越来越小,即离t+1期越久远的观测值,对t+1期的预测值的影响越小。式子中最后一项的F1就是第一期的预测值(初始值),通常可以取第一期的实际值为初值或者取最初几期的平均值为初值(一般分为两种情况:**当样本为大样本时(n>42),F1一般以第一期的观察值代替;当样本为小样本时(n<42),F1一般取前几期的平均值代替**)。当t很大时(1−α)tF1非常接近0,所以F1在式子中的影响并不大。用文字描述该通式就是:

对离预测期较近的观察值赋予较大的权数,对离预测值较远的观察值赋予较小的权数,权数由近到远按指数规律递减,所以叫做指数平滑法。

新预测值是根据预测误差对原预测值进行修正得到的。α的大小表明了修正的幅度。α值愈大,修正的幅度愈大,α值愈小,修正的幅度愈小。 因此,α值既代表了预测模型对时间序列数据变化的反应速度,又体现了预测模型修匀误差的能力。

在实际应用中,α值是根据时间序列的变化特性来选取的。 若时间序列的波动不大,比较平稳,则α应取小一些,如0.1 ~ 0.3 ;若时间序列具有迅速且明显的变动倾向, 则α应取大一些,如0.6 ~ 0.9。实质上,α是一个经验数据,通过多个值进行试算比较而定,哪个α值引起的预测误差小,就采用哪个。

一次指数平滑法比较简单,但也有问题。问题之一便是力图找到最佳的α值,以使均方差最小,这需要通过反复试验确定。预测的时间序列为一条直线,不能反映时间序列的趋势和季节性。

二次指数平滑

给定平滑系数α,那么二次指数平滑的计算公式为:

 

预测未来

 期的值

 的计算公式为:

 

其中:

 

从公式可知,二次指数平滑,将一次平滑的结果作为实际值再次平滑,这样做保留了趋势的信息,使得预测的时间序列可以包含之前数据的趋势,二次指数平滑的预测结果是一条斜的直线,但是效果会比一次指数平滑好很多,也就相当于加强版的一次指数平滑。

三次指数平滑

三次指数平滑在二次指数平滑的基础上保留了季节性的信息,使得其可以预测带有季节性的时间序列。

给定平滑系数

 ,那么三次指数平滑的计算公式为:

 

预测未来

 期的值

 的计算公式为:

 

其中:

 

三次指数平滑可以应用于抛物线型的数据,因为数据在二次平滑过后还是具有斜率,那么可以继续使用三次指数平滑。

应用时间序列平滑法的前提条件是:

(1)所预测的客观事物发展属于渐进式,无跳跃性的变化;

(2)过去和目前影响客观事物发展的因素也决定着客观事物未来的发展。由于客观事物的发展变动受多种因素的影响,而各种影响因素又可能是不断发展或不断变动的,因此,时间序列平滑法在一般情况下仅适用于短期的与近期的预测。当预测如果需要延伸至较远未来,时间序列平滑法则存在较大的局限性。时间序列平滑法在客观影响因素发生较大变化可能产生较大的预测误差。为降低这些可能的预测误差,必须充分研究客观影响因素可能的发展与变动,将定性分析和定量研究结合起来,这样才能提高预测的精度。

Holt Winter线性和季节性指数平滑法

Holt Winter线性指数平滑法

Holt Winter线性指数平滑法本质上就是二次指数平滑法,可以预测具有趋势的时间序列。

通过添加一个新的变量t来表示平滑后的趋势:

 

t_i代表平滑后的趋势,当前趋势的未平滑值是当前平滑值s_i和上一个平滑值s{i-1}的差。s_i为当前平滑值,是在一次指数平滑基础上加入了上一步的趋势信息t{i-1}。利用这种方法做预测,就取最后的平滑值,然后每增加一个时间步长,就在该平滑值上增加一个t_{i}:

 

Holt Winter季节性指数平滑法

Holt Winter季节性指数平滑本质上就是三次指数平滑法,添加了一个新的参数p来表示平滑后的趋势。

Holt Winter季节性指数平滑有累加和累乘两种方法,下面是累加的三次指数平滑

累加模型适用于具有线性趋势且季节效应不随时间变化的序列

 

 ,其中k为周期。

上面的公式可能有错误,可以参考来自Wikipedia的定义,如下:

 

累乘式季节性对应的等式为:

累乘模型适用于具有线性趋势且季节效应随序列量级发生变化的序列

 

上面的公式可能有错误,可以参考来自Wikipedia的定义,如下:

 

其中p_i为周期性的分量,代表周期的长度。x_{i+h}为模型预测的等式。

s,t,p代表着水平、趋势和季节,初始值的选取对于算法整体的影响不是特别大,通常的取值为s0=x0,t0=x1-x0,累加时p=0,累乘时p=1.

α,ß,γ的值都位于[0,1]之间,Google给出了这三个平滑参数的初始值计算方法:

累加模型:

 

上图中的Yt表示t时刻的实际值

累乘模型:

 

参考资料:
http://www.markwaymall.com/College/showcollege/id/175.html
https://www.cnblogs.com/kemaswill/archive/2013/04/01/2993583.html
https://my.oschina.net/hosee/blog/1550128
https://en.wikipedia.org/wiki/Exponential_smoothing


http://www.ppmy.cn/news/662161.html

相关文章

Search

Search 简介 什么时Search Transwarp Search基于开源的Elasticsearch进行开发&#xff0c;在其架构的基础上进行了多种功能优化&#xff0c;并通过Esdrive实现了SQL交互方式。Transwarp Search是一个可扩展的分布式全文搜索和分析引擎。 在TDH中Search主要扮演两个角色。首先…

Sence

■ 关于Scene 一个Scene类(javafx.scene.Scene)对象&#xff0c;是整个Scene的根节点(root) 简单讲&#xff0c;就是所有在窗体里可见的组件都必须包含在scene里 scene只有设置在stage里&#xff0c;它所包含的组件才能显示在窗体 ■ 创建Scene Label lb new Label("t…

huse库

huse笔记 useActionPending(AsyncFunction)返回调用接口以及函数运行状态值 const [waitTime, pendingCount] useActionPending(wait); 接口函数 waitTime 函数运行值 pendingCount 运行时为正 调用异步函数时显示函数运行状态。 useBoolbean(value, methods) method包含on…

HUE

应用场景 按照搭建hadoop2.6.0完全分布式集群博文部署搭建了Hadoop完全分布式集群,发现如果要操作HDFS,HIVE需要到命令行中执行,比较麻烦,而一般情况下命令行是舍不得给业余人士用的,以免把整个环境给弄坏了,所以需要提供一种界面化的操作,来操作HIVE,HDFS,监控MapRed…

eachers

​ eachers的网址&#xff1a;Apache ECharts 定义&#xff1a; 1.一个可以使用javascript实现的开源可视化库。 2.依赖轻量级的矢量图像库&#xff0c;提供直观&#xff0c;交互丰富&#xff0c;可高度个性化定制的数据可视化图标。 使用&#xff1a; 引入js文件 <scr…

hoarse

灰暗哈哈暗暗是搞活是搞活经过决撒工具书吧装甲车经常表侄女名称 好 常常火车现在 大扫除机

VS Code + Conda + Pytorch

系统为W10 安装顺序为&#xff1a;VS code > Conda > Pytorch 一、安装VS code 官网下载其安装包&#xff0c;依次点击安装即可。推荐自定义安装路径。 安装完成后&#xff0c;需要设置系统变量的环境。 验证是否成功&#xff1a; python —version 若显示该python的版…

MySQL面试题1

1. MySQL如何实现索引机制? MySQL中索引分三类: B树索引 Hash索引 全文索引 2. 请简述MySQL中innoDB支持的四种事务隔离级别名称,以及逐级之间的区别? SQL标准定义的四个隔离级别为: read uncommited: 读到未提交数据 在该隔离级别&#xff0c;所有事务都可以看到其他未提…