原文链接: http://blog.csdn.net/qq_16365849/article/details/50654337
1、时间序列的分类
时间序列分为:非季节性数据和季节性数据
一个非季节性时间序列包含一个趋势部分和一个不规则部分。
一个季节性时间序列包含一个趋势部分,一个季节性部分和一个不规则部分。
在实践操作中,时间序列数据存在着前后关系。例如,今天股票的价格很有可能决定明天股票的价格。明天的温度取决于今天的气温。做天气预报的具体操作方法,是使用已经存在的天气历史记录,比如说今天的气温,昨天的气温,前天的气温等等,来预测明天的气温。当然,在进行预测之前,我们一定要看清时间序列数据中的前后关系结构,清楚哪一个特定的历史数据可以精确预测未来的数据。
在预测的实际应用中,我们总希望用历史数据来预测即将要产生的数据。事实上,已产生的数据相对于即将产生的数据,中间存在着一定的延迟,也就是lag. 比方说在某天凌晨12点开始记录室内温度,每小时记一次,一共连续记录了10个小时。凌晨12点的数据和凌晨3点的数据之间就存在着延迟。12点的数据比3点的早了3个小时,可记作lag3. 3点的数据比12点的晚了3个小时,可记作lead3.
1)指数平滑法对于预测来说是非常有帮助的,它对时间序列上连续的值之间相关性没有要求。但是,如果你想使用指数平滑法计算出预测区间,那么预测误差必须是不相关的,而且必须是服从零均值、方差不变的正态分布。
简单指数平滑法提供了一种方法估计当前时间点上的水平。为了更加准确的估计当前时间的水平,我们使用alpha参数来控制平滑,alpha的取值在0-1之间。当alpha越接近0,临近预测的观测值在预测中的权重就越小。简单指数平滑法只能预测那些处于恒定水平和没有季节变动的时间序列。指数平滑法可以用于时间序列数据的短期预测。
简单指数平滑法:如果你有一个可用相加模型描述的,并且处于恒定水平和没有季节性变动的时间序列,你可以使用简单指数平滑法对其进行短期预测。简单指数平滑法提供了一种方法估计当前时间点上的水平。为了准确的估计当前时间的水平,我们使用alpha参数来控制平滑。Alpha的取值在0到1之间。当alpha越接近0的时候,临近预测的观测值在预测中的权重就越小。
为了能够在R中使用简单指数平滑法进行预测,我们可以使用R中的“HoltWinters()”函数对预测模型进行修正。为了能够在指数平滑法中使用HotlWinters(),我们需要在HoltWinters()函数中设定参数beta=FALSE和gamma=FALSE(beta和gamma是Holt指数平滑法或者是Holt-Winters指数平滑法的参数)
2)非恒定水平即有增长或者降低趋势的,没有季节性可相加模型的时间序列预测算法---霍尔特指数平滑法(Holt)。
Holt 指数平滑法估计当前时间的水平和斜率。其平滑水平是由两个参数控制,alpha:估计当前点水平;beta:估计当前点趋势部分斜率。两个参数都介于0-1之间,当参数越接近0,大部分近期的观测值的权值将较小。
使用R中的HoltWinters()进行霍尔特指数平滑预测(gamma=FALSE)
3)指数平滑法中最复杂的一种时间序列:有增长或者降低趋势并且存在季节性波动的时间序列的预测算法即Holt-Winters。这种序列可以被分解为水平趋势部分、季节波动部分,因此这两个因素应该在算法中有对应的参数来控制。
Holt-Winters算法中提供了alpha、beta和gamma来分别对应当前点的水平、趋势部分和季节部分,参数范围都是0-1之间,并且参数接近0时,近期的观测值的影响权重就越小。
采用R中提供的HoltWinters算法进行预测:预测历史数据的值
4)自回归移动平均模型( ARIMA) 包含一个确定(explicit)的统计模型用于处理时间序列的不规则部分,它也允许不规则部分可以自相关。
ARIMA(p,d,q)模型全称为差分自回归移动平均模型(Autoregressive Integrated Moving Average Model,简记ARIMA),AR是自回归, p为自回归项; MA为移动平均,q为移动平均项数,d为时间序列成为平稳时所做的差分次数。
所谓ARIMA模型,是指将非平稳时间序列转化为平稳时间序列,然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型。ARIMA模型根据原序列是否平稳以及回归中所含部分的不同,包括移动平均过程(MA)、自回归过程(AR)、自回归移动平均过程(ARMA)以及ARIMA过程。
2、关联性
冷饮的销量与天气温度存在关联性:温度越高冷饮销量就越高,温度越低冷饮销量也越低。这种关联性称为正面关联性。又如,人的体重和跑步速度也存在关联性。不过,人的体重越重,跑步速度就会越慢,体重越低,相对来讲,速度就会越快。这种关联性称为负面关联性。
预测应用:如果现在收集的数据与将来的数据之间存在着正面或者是负面的关联性,我们就可以用现在收集的数据来预测未来的数据。因此找到现在收集到的数据与未来数据之间的关联性是最关键的。找到这种关联性的具体技巧被称作延迟图表,也就是lag.plot.
3、分解时间序列
分解一个时间序列是把它拆分成:一个趋势部分、一个不规则部分,如果是一个季节性时间序列,则还有一个季节性部分。
1)分解非季节性数据
一个非季节性时间序列包含一个趋势部分和一个不规则部分。为了估计出一个非季节性时间序列的趋势部分,使之能够用相加模型进行描述,最常用的方法便是平滑法,比如计算时间序列的简单移动平均。
在R的“TTR”包中的SMA()函数可以用简单的移动平均来平滑时间序列数据。
使用“SMA()”函数去平滑时间序列数据。使用SMA()函数时,你需要通过参数“n”指定来简单移动平均的跨度。例如,计算跨度为5的简单易懂平均,我们在SMA()函数中设定n=5。
2)分解季节性数据
一个季节性时间序列包含一个趋势部分,一个季节性部分和一个不规则部分。使用R中“decompose()”函数可以估计出时间序列中趋势的、季节性的和不规则的部分,而此时间序列须是可以用相加模型描述的。
“decompose()”这个函数返回的结果是一个列表对象,里面包含了估计出的季节性部分,趋势部分和不规则部分,他们分别对应的列表对象元素名为“seasonal”、“trend”、和“random”。
结构拆析的R命令是decompose()函数,plot(decompose())函数分解后的图形分别为:图展现出了原始的时间序列图(顶部),估计出的趋势部分图(第二部份),估计出的季节性部分(第三个部分),估计得不规则部分(底部)
3)季节性因素调整
如果这个季节性时间序列可以用相加模型来描述,你可以通过估计季节性部分修正时间序列,也可以从原始序列中去除掉估计得季节性部分。我们可以通过“decompose()”函数使用估计出的季节性部分进行计算。
4、ARIMA差分自回归移动平均集成模型
1)现在来介绍自回归移动平均集成模型,即ARIMA模型。AR指自回归 ,MA指移动平均 ,I指集成/差分。
假定时间序列用X1, X2, …, Xt表示,则一个纯粹的AR (p)模型意味着变量的一个观测值由其以前的p个观测值的线性组合加上随机误差项at(该误差为独立无关的)而得
2)在R语言中,ACF指自动关系性(自相关性),ACF即Auto-CorrelationFunction的简称. 比方说,股票价格今天的价格跟昨天的价格有关系,明天的价格会跟今天的或者昨天的价格有关系。它们之间的关系性便用ACF来衡量。
PACF被称作不完全自动关系性(偏自相关性)。自动关系性ACF中存在着线性关系性和非线性关系性。不完全自动关系性就是把线性关系性从自动关系性中消除。如果在线性关系性被去除以后,两个时间点之间的关系性也就是不完全关系性。当PACF近似于0,这表明两个时间点之间的关系性是完全由线性关系性所造成的。如果不完全关系性在两个时间点之间不近似于0,这表明线性模型是不能够表达这两个时间点之间的关系。
3)ARIMA模型的建立。首先模型建立的前提条件是目标变量的时间序列是平稳的,在这里也就是要求数据的时间序列满足以下条件,数据序列的均值不随时间变化;数据序列的方差不随时间变化;数据序列的自相关系数只与时间间隔有关,而与所处的具体时刻无关。
4)其次就是模型的定阶,根据数据时间序列,得到相应的自相关图和偏自相关图,并观察其自相关系数和偏自相关系数,然后得到确定模型的阶数,即P,Q值,再根据AIC 和SC 准则比较各模型的AIC 和 SC的值,选取其值最小的作为预测模型。
5)估计参数和诊断模型是通过非线性最小二乘回归法或最大似然法得到的。最后当得到估计模型的系数并检验其显著性。
平稳性检验
(1)时序图检验
平稳时间序列均值、方差为常数,因此可以直接用 plot() 检查时序图,平稳时间序列应始终在一个常数值附近随机波动,而且波动范围有界。
(2)自相关图检验
平稳序列通常有短期相关性。因此自相关系数会很快地衰减向零。
5、ARIMA模型定阶:确定p/q的值
模型 | 自相关系数 | 偏自相关系数 |
AR(P) | 拖尾 | P阶截尾 |
MA(q) | q阶截尾 | 拖尾 |
ARMA(p,q) | 拖尾 | 拖尾 |
ARMA模型,其中p和q的值到底如何确定:
① p是自相关AR模型的系数,而q是MA模型的系数;
做出一个时间序列的自相关和偏相关图表,此表是判断p和q值的依据;
所谓拖尾是自相关系数或者偏相关系数趋向于0,这个趋向过程有不同的表现形式,有几何型的衰减为0,有正弦波式的衰减;截尾是指从某阶后自相关或者偏相关系数为0。
② AR模型:自相关系数拖尾,偏自相关系数p阶截尾;
③ MA模型:自相关系数q阶截尾,偏自相关函数拖尾;
④ ARMA模型:自相关函数和偏自相关函数均拖尾。
自相关和偏自相关图是判断拖尾截尾和选择ARIMA模型的基本方法,但这种方法依然比较粗糙。有时会出现自相关和偏自相关均截尾的现象,这是就需要用信息准则来判断了。
时间序列模型参数统计推断有三种方法:矩估计,极大似然估计,最小二乘估计。自回归AR(p)模型的自回归系数是满足Yule-Walker方程的,所以你可以说这里的Yule-Walker方程估计法是矩估计,但是MA ARMA就不能这么说了。矩估计方法一般精度不够,不采用,通常用最小二乘估计法的条件最小二乘估计法。
1)自相关值在滞后1阶(lag 1)之后为0,且偏相关值在滞后3阶(lag 3)之后缩小至 0,那么意味着接下来的ARIMA(自回归移动平均)模型对于一阶时间序列有如下性质:
ARMA(3,0)模型:即偏自相关值在滞后3阶(lag 3)之后缩小至0且自相关值缩小至0(此模型中说自相关值缩小至0有些不太合适),则是一个阶层p=3自回归模型。
ARMA(0,1)模型:即自相关图在滞后1阶(lag 1)之后为0且偏自相关图缩小至0,则是一个阶数q=1的移动平均模型。
ARMA(p,q)模型:即自相关图和偏相关图都缩小至0(此模型中说自相关图缩小至0有些不太合适),则是一个具有p和q大于0的混合模型。
利用简单的原则来确定哪个模型是最好的:即我们认为具有最少参数的模型是最好的。ARMA(3,0)有3个参数,ARMA(0,1)有1个参数,而ARMA(p,q)至少有2个变量。因此ARMA(0,1)模型被认为是做好的模型。
ARMA(0,1)模型是一阶的移动平均模型,或者称作MA(1)。移动平均模型通常用于建模一个时间序列,此序列具有邻项观察值之间短期相关的特征。可以很好理解MA模型可以用来描述英国国王去世年龄的时间序列中不规则的成分,比如期望某位英国国王的去世年龄对接下来的1或2个国王的去世年龄有某种影响,而对更远之后的国王没有太大的影响。
快捷方式:auto.arima() 函数,输出合适的模型是ARIMA(0,1,1).
ARIMA(0,1)被认为是最合适的模型,那么原始的时间序列可以使用ARIMA(0,1,1) (p=0,d=1,q=1,这里d是差分阶层所需要的)来建模。
注意:①auto.arima()确定的阶数也常常和模拟的参数不一样,这就是说auto.arima的结果(即AIC准则结果)经常不准确。②不过,在评价模型结果时,可以采取这样的标准:只要残差序列为纯随机序列,就可以认为模型已经建立成功。
2) ARMA(2,0)是2阶的自回归模型,或者称作AR(2)模型。AR (autoregressive) 模型通常被用来建立一个时间序列模型,此序列在邻项观测值上具有长期相关性。直观地,AR模型可以用描述火山灰覆盖指数的时间序列来很好地理解,如我们可以期望在某一年的火山灰水平将会影响到后面的很多年,既然火山灰并不可能会迅速的消失。
ARMA(2,0)模型(with p=2, q=0)被用于建模火山灰覆盖指数的时间序列,意味着ARIMA(2,0,0) 模型也可以使用。(with p=2, d=0, q=0, 其中d是差分的阶数). 类似地,如果ARMA(p,q) 混合模型可以使用,其中p和q的值均大于0, 那么ARIMA(p,0,q) 模型也可以使用。