时间序列分析之holtwinters和ARIMA
来源:互联网 发布:mac mini性能怎么样 编辑:程序博客网 时间:2024/06/05 23:00
时间序列分析之holtwinters和ARIMA
时间序列是指按时间先后顺序排列的随机序列。所谓时间序列分析,就是根据有序随机变量或观测得到的有序数据之间相互依赖所包含的信息,用概率统计方法定量地建立一个合适的数学模型,并根据这个模型对相应序列所反映的过程或系统作出预报或进行控制。
- 时间序列分析之holtwinters和ARIMA
- 一概述
- 时间序列的平稳性
- 时间序列的组成
- 二时间序列的平滑处理
- 移动平均法
- 指数平滑法Holt-Winters
- 1 一次指数平滑法
- 2 二次指数平滑法
- 3 三次指数平滑法
- 三ARIMA
- ARMA模型
- ARIMA模型
- 四讨论与分析
- 参考文献
- 一概述
一、概述
1.时间序列的平稳性
如果一个时间序列的统计特征不随时间推移而变化,即满足:
1.对于任意的时间t,其均值恒为一常数;
2.对于任意的时间t和s,其自协方差和自相关系数只依赖于时间间隔t-s,而与t和s的起止点无关。
这样的时间序列被称为平稳时间序列。也可以认为,如果一个时间序列无明显的上升或下降趋势,各观察值围绕其均值上下波动,这个均值相对于时间来说是一个常数,那么时间序列为平稳序列(弱平稳(Weak stationarity))。
事实上,有两种关于平稳的定义,还有一种强平稳过程:
强平稳过程(Strict stationarity):对于所有可能的n,所有可能的
两种平稳过程并没有包含关系,弱平稳不一定是强平稳,强平稳也不一定是弱平稳。强平稳是事实上的平稳,而弱平稳是统计量在观测意义上的平稳(均值、方差)。
平稳的基本思想是:时间序列的行为并不随时间改变。平稳性刻画的是时间序列的统计性质关于时间平移的不变性。我们研究时间序列很重要的一个出发点 是希望通过时间序列的历史数据来得到其未来的一些预测,换言之,我们希望时间序列在历史数据上的一些性质,在将来保持不变,这就是时间平移的不变性。反之,如果时间序列不是平稳的,由历史数据得到的统计性质对未来预测毫无意义。
2.时间序列的组成
每个时间序列的主要组成部分:
- 趋势
- 季节性
- 噪音
- 其他
趋势可以是线性或非线性的,可以是上升或者下降趋势;时间序列呈周期性变化,就叫季节性;时间序列采集过程中不可避免地存在一些干扰,称之为噪音;此外还有一些未知的成分,如异常值、丢失的数据等等。
二、时间序列的平滑处理
大部分时间序列都存在一个重要问题:存在噪音,也就是某个值的大小随机变化。消除噪音或至少减小它的影响对时序分析很重要,我们必须寻找让信号变平滑的方法。移动平均法(moving average)是我们所知道的最简单的平滑算法。
1.移动平均法
它的基本原理:对任意奇数个连续的点,将它们最中间的点的值替换为其他点的平均值,假设{
这个简单的方法存在很严重的问题,这和图像处理中的均值滤波是类似的(只不过这里是一维的),采用这样简单粗暴的平滑处理会导致数据变“模糊”,当一个尖峰进入平滑窗口时,当前的数据就会被这个尖峰突然扭曲,直到异常值离开平滑窗口。即因为噪音数据,原始数据丢失了细节。在图像处理中,我们采用高斯滤波来解决这一问题,我们的平滑窗口是带权值的,越靠近中心数据的权重越大,越靠近平滑窗口边缘的点权重越小。这里同样适用,我们通过使用加权移动平均法,公式如下:
这里的
参数
移动平均法存在很多问题:
- 它们都太难计算了。每个点的计算都十分耗时,不能通过之前的计算结果推算出加权移动平均值。
- 移动平均值永远不可能应用于现有的数据集边缘的数据,因为它们的窗口是有限的。然而数据集边缘的变化通常都是我们最感兴趣的部分。
- 移动平均法不能应用于现有数据集的范围之外,因此它们对预测毫无用处。
2.指数平滑法(Holt-Winters)
指数平滑法(exponential smoothing)或Holt-Winters能够避免移动平均法带来的问题。指数平滑法有几种不同形式:一次指数平滑法针对没有趋势和季节性的序列,二次指数平滑法针对有趋势但没有季节性的序列,三次指数平滑法针对有趋势也有季节性的序列。“Holt-Winters”有时特指三次指数平滑法。
所有的指数平滑法都要更新上一时间步长的计算结果,并使用当前时间步长的数据中包含的新信息。它们通过”混合“新信息和旧信息来实现,而相关的新旧信息的权重由一个可调整的参数来控制。
2.1 一次指数平滑法
一次指数平滑法的递推关系如下:
其中,
可以看出,在指数平滑法中,所有先前的观测值都对当前的平滑值产生了影响,但它们所起的作用随着参数
2.2 二次指数平滑法
一次指数平滑法适用于没有总体趋势的时间序列。如果用来处理有总体趋势的序列,平滑值将总是滞后于原始数据,除非
第二个等式描述了平滑后的趋势。当前趋势的未平滑”值“是当前平滑值和上一个平滑值的差;也就是说,当前趋势告诉我们在上一个时间步长里平滑信号改变了多少。要想使趋势平滑,我们用一次指数平滑法对趋势进行处理,并使用参数
若要利用该计算结果进行预测,就取最后那个平滑值,然后每增加一个时间步长就在该平滑值上增加一次最后那个平滑趋势:
2.3 三次指数平滑法
为了描述季节性,我们在二次指数平滑法基础上再添加一个量。公式如下:
其中,
对于三次指数平滑法,我们必须初始化一个完整的”季节“的值。至于如何选择参数
三、ARIMA
ARIMA模型是时间序列分析中应用最广泛的模型之一,ARIMA(p,d,q)由三个部分组成:
- AR(p):AR是autoregressive的缩写,表示自回归模型。含义是当前时间点的值等于过去若干个时间点的回归——因为不依赖与别的解释变量,只依赖于自己过去的历史值,故称为自回归;如果依赖过去最近的p个历史值,称阶数为p,记为AR(p)模型。
其中
- I(d):I是integrated的缩写,含义是模型对时间序列进行差分。因为时间序列分析要求平稳性,不平稳的序列需要通过一定手段转化为平稳序列,一般采用的方法就是差分,d表示差分的阶数。
如果d=0:
如果d=1:
如果d=2:
以此类推。
- MA(q):移动平均模型,和上面的移动平均法不同,这里本质上还是回归,含义是当前时间点的值等于过去若干个时间点的预测误差的回归;预测误差=模型预测值-真实值;如果序列依赖过去最近的q个历史预测误差值,称阶数为q,即为MA(q)模型。
其中
1.ARMA模型
ARMA(p,q)包含了p个自回归项和q个移动平均项,可表示为:
AR(p)模型很好理解,一般而言,时间序列的变量具有时序上的相关性。比如说一列火车的速度,当时间间隔足够小时,上一个时间点速度如果慢,下一个时间点往往也很慢,或许你要称它为惯性,也没什么不可,这种内在的相关性,使得我们可以根据最近几个时间点的观测值来预测下一个时间点的值。
MA(q)有点难以理解,先提出结论吧,MA模型是无穷阶AR模型的等价表示。公式推导如下:
假设有一个特殊的无穷阶的AR模型:
将(1)中的t用t-1替代,得到:
将(2)的左右两边同乘以
将(3)代入(1)得到:
式(4)就是MA(1),注意这里没有
2.ARIMA模型
ARIMA模型是在ARMA模型的基础上加上差分,差分的作用上面说了,是为了得到平稳序列。一般来说,是先对序列进行差分运算,再用自相关图检验其平稳性,得到一个d阶的差分序列,然后对差分时间序列进行ARMA模型预测,再将预测值还原。假设p=1,q=2,且进行了一阶差分后,序列平稳了,那么:
即:
其中,
其中L是滞后算子(Lag operator),d
ARIMA模型运用有一个较为通用的流程,如下所示:
1.根据时间序列的散点图、自相关函数和偏自相关函数图识别其平稳性。
2.对非平稳的时间序列数据进行平稳化处理。直到处理后的自相关函数和偏自相关函数的数值非显著非零。
3.根据所识别出来的特征建立相应的时间序列模型。平稳化处理后,若偏自相关函数是截尾的,而自相关函数是拖尾的,则建立AR模型;若偏自相关函数是拖尾的,而自相关函数是截尾的,则建立MA模型;若偏自相关函数和自相关函数均是拖尾的,则序列适合ARMA模型。
4.参数估计,检验是否具有统计意义。
5.假设检验,判断(诊断)残差序列是否为白噪声序列。
6.利用已通过检验的模型进行预测。
四、讨论与分析
由于良好的统计特性,ARIMA模型是应用最广泛的时间序列模型,各种指数平滑模型都可以用ARIMA模型来实现。即通过Holter-winters建立的模型,用ARIMA同样可以得到。即便ARIMA非常灵活,可以建立各种时间序列模型(AR,MA,ARMA)但是ARIMA也有局限性,最主要的局限在于ARIMA只能建立线性的模型,而现实世界中纯线性模型往往不能令人满意。事实上,用单独一种方法建立的模型往往不能满足需求,参考文献[3]提出用ARIMA和人工神经网络(Artificial Neural Networks,ANNs)结合建立时间序列模型,取得了良好的预测效果。长短期记忆(Long Short-Term Memory,LSTM)是一种时间递归神经网络(RNN),LSTM非常适合于处理和预测时间序列中间隔和延迟非常长的重要事件。利用神经网络可以帮助建立非线性模型,不过神经网络比较适合用于大数据处理,即数据量较大的场景。
通过历史信息,基于回归的方法(ARIMA)基本上能满足需求。这个方法可以提供一个群体的发展趋势,但对于个体的差异带来的预测结果和观测值的波动很难处理。如果这个时候加进去一些额外的特征,使得对不同类型、变化趋势的个体得以区分,从而提高一下性能。这些额外的特征就是RNN之类方法的用武之地了吧。
机器学习上有一个定理,叫没有免费午餐定理(No Free Lunch,NFL),表示的是没有通用的对每个问题都最优的算法,离开具体环境,具体问题,算法都将一文不值!具体问题应该具体分析。
参考文献
1.时间序列预测模型ARIMA
2.维基百科:ARIMA模型
3.Zhang G P. Time series forecasting using a hybrid ARIMA and neural network model[J]. Neurocomputing, 2003, 50: 159-175.
4.ARIMA模型详解
5.《数据之魅——基于开源工具的数据分析》 by Philipp K.Janert
- 时间序列分析之holtwinters和ARIMA
- ARIMA时间序列分析
- ARIMA时间序列分析
- [python] 时间序列分析之ARIMA
- [python] 时间序列分析之ARIMA
- 时间序列分析之ARIMA模型预测
- 时间序列分析之ARIMA上手-Python
- [python] 时间序列分析之ARIMA
- [python] 时间序列分析之ARIMA
- python 时间序列分析之ARIMA
- 时间序列的分析和预测ARIMA
- 时间序列分析--ARIMA模型
- 时间序列分析之 ARIMA 模型的JAVA实现
- R语言时间序列分析之ARIMA模型预测
- 时间序列分析之ARIMA模型预测__R篇
- R语言 时间序列分析之ARIMA模型预测
- ARIMA时间序列
- R学习日记——时间序列分析之ARIMA模型预测
- java进阶知识点
- Java整理(一)基础和常用类
- 播放器测试的测试点
- 二叉树和多叉树
- [Leetcode] 409. Longest Palindrome 解题报告
- 时间序列分析之holtwinters和ARIMA
- git与github
- 26天学通前端开发(配资料)
- display
- 35个毁掉你代码的不良习惯!
- PID算法的理解及实现
- loadrunner接口性能测试分享
- 关于执行命令:sudo apt-get update后的“E: 无法解析或打开软件包的列表或是状态文件”问题解决
- JBoss和Tomcat部署方式的区别