![7fbeca94c4c966ed6c3f6875ed36c06b.png](https://i-blog.csdnimg.cn/blog_migrate/1f2ea7bcc71af943b71cd670daee4d28.png)
今天我们来学习预知未来的算法:时间序列分析。本文主要介绍一些时间序列的基本理论。
未经许可请勿转载
更多数据分析内容参看这里
一、时间序列简介
我们先来看两个例子,一个是上海证券交易所的指数走势,另一个是我国的国内生产总值走势,这两个都是时间序列的例子。
![7475727bc5a81f7c1ab94f3a78509478.png](https://i-blog.csdnimg.cn/blog_migrate/6ab794790a76ab45c5608274b20aedb6.jpeg)
简单来说,时间序列是按照时间顺序,按照一定的时间间隔取得的一系列观测值,比如我们上边提到的国内生产总值,消费者物价指数,利率,汇率,股票价格等等。时间间隔可以是日,周,月,季度,年等。
那么如何进行时间序列分析分析呢?通常来说我们尝试找出序列值在过去所呈现的特征模式,假定这种模式在未来能够持续,进而对未来进行预测。时间序列基本特征包括:趋势性,序列相关性,随机性。
在时间序列的特征模式找到后,就需要用特定的方法把这些特征抓取出来。时间序列模型预测方法包括算数平均法,移动平均法,加权移动平均,指数平滑法,自回归和移动平均法(ARIMA)。我们先来看一下前四种方法,下面是一个利用上年数据来预测而下一年牛仔裤销量的例子。算数平均法就是使用前12个月的算数平均数作为13期的预测值。移动平均法认为远期的数据对于预测未来的数值价值不大,因此选用最近m个月的算数平均数作为预测值。加权移动平均法则则移动平均法的基础上,为每一期的数值加上了权重。指数平滑法则对每一期的权重进行平滑处理,以这个例子为例,12期的权重为0.5,11期的为0.5的平方,依次类推,从而保证了距离预测期越远的数据作用越小。
![576132530cb8502265d82589dde1e7c8.png](https://i-blog.csdnimg.cn/blog_migrate/74105c4964b8415332aa75ce6514ab9b.jpeg)
前面这四种预测方法都比较简单,后面我们会重点介绍第五种方法——自回归和移动平均(ARIMA),该模型的优点是信息浪费最少,集趋势性,相关性和随机性于一身。
二、时间序列基本概念
我们解释一下前面提到的时间序列的几个特征。趋势性是指序列整体上呈现单调性,如平稳、上涨或下跌,先提一句,ARMA模型是平稳的时间序列模型,在建模前必须去除趋势性。序列相关性是指当期的序列值和前期某个或某些序列值线性相关。随机性是指序列在一定程度上呈现不确定性,由于模型并不能捕捉到现实世界中的所有特征,总会有一些噪声的存在,这些噪声我们称之为白噪声。
(1)时间序列的表达
T时刻的时间序列值表示为:
(2)时间序列的差分
一阶差分:
二阶差分:
K步差分:
1阶差分可以剔除趋势型的影响,如下所示,蓝色的上涨趋势曲线在进行一阶差分后变成了比较平稳的黄色线。一般来说,二阶差分后的序列基本会变得水平。
![268d370e0f0cdc4280a1d07c0c081043.png](https://i-blog.csdnimg.cn/blog_migrate/9b87c2692072d2afc63e575350ceb153.png)
k步差分可以剔除季节性的影响,下面是一个羽绒服销售的例子,可以看出每到4季度羽绒服的销量就呈现大幅的增长。为了剔除季节的影响,我们可以进行4步差分,在选取步数时可用用两个波峰之间间隔的周期作为依据。4步差分后的结果已经比较水平。
![5645fae8ffdc20ecfc359fde6db3cd67.png](https://i-blog.csdnimg.cn/blog_migrate/b0d0229be7d52576a5c9ae04b178654c.jpeg)
总而言之,阶次差分可以剔除趋势性影响,而步长差分可以剔除季节性的影响。
(3)序列相关性的衡量
我们使用自相关系数和偏自相关系数来衡量序列之间的相关惯性。自相关系数(ACF)又称全相关系数,用于度量同一事件在不同时期的相关程度。
偏自相关系数(PACF)又称条件相关系数,用于度量去除中间变量影响后的相关程度,假设
(4) 序列平稳
一个时间序列是平稳的,必须满足如下条件:
![ca82f75eeb0604dcb6efe7be13ec83b9.png](https://i-blog.csdnimg.cn/blog_migrate/47bac8a6a6c2a174fc2e38c6c32eaf85.png)
![60b24e0b2797e866f28481f9c5c8ea20.png](https://i-blog.csdnimg.cn/blog_migrate/50e726b558184fde2de1c526a7d18ffe.png)
![e9e9d8c057cc8757232d1bd059cbad88.png](https://i-blog.csdnimg.cn/blog_migrate/0bafb903c0f29f4a50d3b2566b11ce5a.png)
根据一个序列是否平稳,时间序列可以分为平稳序列和非平稳序列。平稳序列包括白噪声序列、 AR(p) 序列 , MA(q)序列 , ARMA(p,q) 序列,非平稳序列比如 ARIMA(p,d,q) 序列。下面是两个例子。
![17cb181103e916fe50195e088d8be994.png](https://i-blog.csdnimg.cn/blog_migrate/aa4c02b7dc078bd2f0d3498392a073e2.jpeg)
三、常用的时间序列模型
(1)白噪声序列
白噪声模型服从均值为0,方差为
白噪声序列无规律可循,在均值处反复震荡,无趋势性
![e6de1f1b907b8fc491874e6e21b869ed.png](https://i-blog.csdnimg.cn/blog_migrate/a70cb21e8fef18524c5fe6e6e86b85fe.png)
对白噪声序列而言,ACF和PACF图中,95%的数值会落入两个标准差的蓝色区域内。
![37701f53672e3989eb8b748b3b4960b8.png](https://i-blog.csdnimg.cn/blog_migrate/5f4231ab67fe9dad49ee6a0782f6ea81.png)
(2)自回归模型
自回归模型是指当前时刻的时序值可由其过去值的线性组合加上一个白噪声,建里自回归模型的目的就是要搞清过去几期的历史值会影响当前值。自回归模型的特征是:没有趋势性,有相关性和随机性。 自回归模型可用如下公式表示:
一阶自回归模型是最简单的自回归模型,AR(1)可以表述为::
![9681af0c2ac797f8e24a299b1bbed8e5.png](https://i-blog.csdnimg.cn/blog_migrate/66fab2f7b8eb2b99586e4aba8f73ff3d.jpeg)
AR(1)模型的ACF 呈现指数下降趋势,而PACF 在一阶处出现峰值,之后截断。比如对于如下的一阶自回归序列,ACF图和PACF图如下所示。
![6e116c7707aa380440f76710bb16672c.png](https://i-blog.csdnimg.cn/blog_migrate/16b52bb4ea4a84a4fb9844a3ef191f75.png)
我们再来看一下AR (2)的ACF和PACF图,同样其自相关图呈现指数下降趋势,而PACF 在二阶处出现峰值,之后截断。
![15e2946f7c4b999830fc84afd1d3b98f.png](https://i-blog.csdnimg.cn/blog_migrate/3e35f9114e74ac63077958d16fb05398.png)
小结一下,自回归模型的 ACF 呈指数下降趋势,PACF 显示出剧烈地下降,并截断在 P 阶,PACF 截尾的阶数即为 AR 模型的阶数。
(3)移动平均模型
移动平均序列指的是当前时刻的时序值是过去 q 阶白噪声的线性组合,建立MA(q)模型的目的在于找出过去几期的白噪声影响了当前值。模型特征是没有趋势性,有相关性和随机性。MA(q)模型可表示为:
MA(1)一阶移动平均模型是最简单的移动平均模型,模型表述为
![35550d136f2f59051f64ee306d5e5199.png](https://i-blog.csdnimg.cn/blog_migrate/c9398a2decd51e6c5f87e2178fb7dbbd.png)
MA(1)时间序列在均值出反复震荡,没有趋势性,如下图所示
![1122030f3c64eea3b5df32aea4267c3f.png](https://i-blog.csdnimg.cn/blog_migrate/d81e320ad7a952c80dacd70c2698e8dc.jpeg)
在ACF和PACF上,MA(1)序列呈现下列特征:ACF在一阶处截断,PACF呈现指数下降趋势。
![5e708f07aa41a5e22bda9db131961620.png](https://i-blog.csdnimg.cn/blog_migrate/06d05e75a3c548342180f2a66d3e5907.png)
推而广之,如何识别一个MA的阶数q呢,如果 ACF 显示出一个剧烈地下降( q 阶截尾),并且 PACF 呈指数下降趋势,即为移动平均模型,ACF 截尾阶数即为 MA 模型阶数。
(4)自回归移动平均模型
ARMA模型是更普遍的一类模型,ARMA(p,q)模型就是AR(p)和MA(q)模型的组合,其公式:
下面我们来看一下最简单的ARMA模型,ARMA(1,1)一阶自回归移动平均模型,
![879f6cbdeedf4fb5854d0bcf5e71d79d.png](https://i-blog.csdnimg.cn/blog_migrate/b7d4c2bc68bda4f9f156b0707eec2018.jpeg)
我们再来看一下它的ACF和PACF图,ACF 呈指数下降趋势,PACF 呈现指数下降趋势。
![362ef6fa2a83b273d08c37e6d4cfadb0.png](https://i-blog.csdnimg.cn/blog_migrate/453dc9427cf8645981f0e3020bdf32df.png)
如何识别一个 ARMA 的阶数 p 和 q,由于 ACF 与 PACF 均呈现指数下降,判断阶数需要靠不断尝试。在模型的不同尝试中,通过选择 AIC 较小的为最优模型。
总结一下,AR,MA和ARMA模型的识别和定阶。
![33b342385d5097f77d3588e85d3d469a.png](https://i-blog.csdnimg.cn/blog_migrate/ea0970c9a58ed05be00caffedd1b82d2.png)
(5)ARIMA模型
前面四个模型都是对平稳序列的拟合,ARIMA则是对非平稳序列的拟合。ARIMA 是在 ARMA 基础上发展而来的更加综合性的模型,其特征包括: 趋势性, 序列相关性和随机性。ARIMA模型更加接近我们生活工作中的实际,因此应用更为普遍。
我们来看一下ARIMA(1,1,0)模型的一些特征。
序列有很强的趋势性。
![f1ad966ee63e8a16d066635fff05bbed.png](https://i-blog.csdnimg.cn/blog_migrate/686b5210095203c90f9f10050509e2e4.png)
ACF下降及其缓慢
![409b0fee6128a2cf4a7f3f9ec3160095.png](https://i-blog.csdnimg.cn/blog_migrate/7900a281a4cc4ace42fe531178cebf73.png)
对于ARIMA模型,我们可以进行差分处理。差分后的 ARIMA 即为一个 ARMA 模型,可以利用 ACF 和 PACF 图像判定阶数。对于ARIMA(1,1,0) 一阶差分后的 ACF 和 PACF如下:
![ecc8ea4f3435ba70a2551828e4261e22.png](https://i-blog.csdnimg.cn/blog_migrate/ec1216147e2ab4beee3ff25d4f9f2c99.png)
一般来说,ARIMA(p,d,q)经过d次差分后的序列就是一个平稳的ARMA(p,q)序列,即
![a05d0c6c50da6871c81a4a44611d0e14.png](https://i-blog.csdnimg.cn/blog_migrate/551ae2fcdef2847f59d6cf9670fe87c6.png)
四、ARIMA预测的评价指标
ME (误差 ): Mean(Actual Predict)
MAE( 绝对误差 ) : Mean(abs(Actual Predict))
MAPE( 百分比误差 ): Mean(abs(Actual Predict)/Actual)
MSE( 均方误差平方和: Mean((Actual Predict)^2)
RMSE( 标准差): Sqrt(Mean((Actual Predict)^2))
在评价指标的选取上,通常会结合分析的需求以及其他的时间序列模型方法,选择某个评价指标进而选择使该评价指标最小的模型方法。R中有专门的预测分析包 forecast 来帮助我们对未来期的数据进行预测。
五. Box-Jenkins建模
ARIMA模型全称为自回归移动平均模型(Autoregressive Integrated Moving Average Model,简记ARIMA),是由博克思(Box)和詹金斯(Jenkins)于70年代初提出的一著名时间序列预测方法,所以又称为box-jenkins模型、博克思-詹金斯法。我们先来看一下Box-Jenkins建模的流程。
![27178bdf9294373e68e0875c44ab1930.png](https://i-blog.csdnimg.cn/blog_migrate/5c86fd5b2ae9cf7c72a55dfc747684cf.jpeg)
首先进行平稳性的判断,如果该序列是平稳的则直接进入第二步模型的识别,否则需要差分处理。在识别模型后,我们估计模型的参数。参数估计出来后我们要判断该模型的是否合理,主要通过检验残差序列是否为白噪声序列进行,白噪声序列是没有相关性的,也就意味着我们的模型已经把相关因素都提取出来了,可以用于后续的预测,否则我们的模型需要调整。最后我么能使用模型进行预测。下面我们具体来看一下每个步骤的细节:
(1)平稳性的检验
除了做时序图,另一种方式就是单位根检验。
• 若p>=α, 则不能拒绝原假设,即存在单位根,序列非平稳
• 若p<α, 则拒绝原假设,即不存在单位根,序列平稳。
下图中,p值为0.6722远大于0.05,因此不能拒绝原假设,即序列非平稳。
![ca7dae018b1710188c1bbc5388ec6ba7.png](https://i-blog.csdnimg.cn/blog_migrate/8a4b7517ab8e1613373be32d5b839fd1.jpeg)
(2)差分
一阶差分后的结果如下,通过时序图和Dickey-Fuller检验,新的序列是平稳的。
![5a6085ff6b8b2e191dfb4c0cafb34f81.png](https://i-blog.csdnimg.cn/blog_migrate/e4845c6962036a12b2bb6024254591df.png)
![b955fb7c0f2b353c32a01a10d161e084.png](https://i-blog.csdnimg.cn/blog_migrate/c398318070200c3a053e4a675c102dcd.png)
(3)模型识别
ACF指数递减,PACF一阶截尾,因此是ARMA(1,0)模型,原始序列就是ARMA(1,1,0)模型。
![2e3cbed1583ccbabb6348bb85e9648ae.png](https://i-blog.csdnimg.cn/blog_migrate/fb416186b9b2463f5d5c9b75809c2644.png)
(4) 模型拟合 ARIMA(1,1,0)& 白噪声检验
白噪声检验 (Ljung Box 检验)。
即原假设为:滞后 m 阶序列值相互独立,自相关函数均为零。备择假设为:滞后m 期的序列之间存在相关性
若p>=α, 则不能拒绝原假设,序列为白噪声
若p<α ,则拒绝原假设,序列为非白噪声
下图中,Ljung-Box检验的p值大于0.05,不能拒绝原假设,序列为白噪声
![c592969f09f3a5b333d9e1aff471b6e4.png](https://i-blog.csdnimg.cn/blog_migrate/bb4ac94458148862cadad93da17e9b8f.jpeg)
(5)预测
![77ca9d94733819d2286d9bbe39d7a8d6.png](https://i-blog.csdnimg.cn/blog_migrate/9d3b8073085ada32d18773bba1c05b1c.png)
![b788b1254c11774aadf2655366fc7384.png](https://i-blog.csdnimg.cn/blog_migrate/95a2e1d94e6973f119f29f5fa1f97ff7.png)