时间序列教程R_第1页
时间序列教程R_第2页
时间序列教程R_第3页
时间序列教程R_第4页
时间序列教程R_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

时间序列完整教程(R)简介在商业应用中,时间是最重要的因素,能够提升成功率。然而绝大多数公司很难跟上时间的脚步。但是随着技术的开展,出现了很多有效的方法,能够让我们预测未来。不要担忧,本文并不会讨论时间机器,讨论的都是很实用的东西。本文将要讨论关于预测的方法。有一种预测是跟时间相关的,而这种处理与时间相关数据的方法叫做时间序列模型。这个模型能够在与时间相关的数据中,找到一些隐藏的信息来辅助决策。当我们处理时间序列数据的时候,时间序列模型是非常有用的模型。大多数公司都是基于时间序列数据来分析第二年的销售量,流量,竞争地位和更多的东西。然而很多人并不了解时间序列分析这个领域。所以,如果你不了解时间序列模型。这篇文章将会向你介绍时间序列模型的处理步骤以及它的相关技术。本文包含的容如下所示:目录*1、时间序列模型介绍*2、使用R语言来探索时间序列数据*3、介绍ARMA时间序列模型*4、ARIMA时间序列模型的框架与应用1、时间序列模型介绍本节包括平稳序列,随机游走,Rho系数,DickeyFuller检验平稳性。如果这些知识你都不知道,不用担忧-接下来这些概念本节都会进展详细的介绍,我敢打赌你很喜欢我的介绍的。平稳序列判断一个序列是不是平稳序列有三个评判标准:1.均值,是与时间t无关的常数。下列图〔左〕满足平稳序列的条件,下列图〔右〕很明显具有时间依赖。方差,是与时间t无关的常数。这个特性叫做方差齐性。下列图显示了什么是方差对齐,什么不是方差对齐。〔注意右图的不同分布。〕协方差,只与时期间隔k有关,与时间t无关的常数。如下列图〔右〕,可以注意到随着时间的增加,曲线变得越来越近。因此红色序列的协方差并不是恒定的。我们为什么要关心平稳时间序列呢?除非你的时间序列是平稳的,否则不能建立一个时间序列模型。在很多案例中时间平稳条件常常是不满足的,所以首先要做的就是让时间序列变得平稳,然后尝试使用随机模型预测这个时间序列。有很多方法来平稳数据,比方消除长期趋势,差分化。随机游走这是时间序列最根本的概念。你可能很了解这个概念。但是,很多工业界的人仍然将随机游走看作一个平稳序列。在这一节中,我会使用一些数学工具,帮助理解这个概念。我们先看一个例子例子:想想一个女孩在一个巨型棋盘上面随意移动。这里,下一个位置只取决于上一个位置。现在想象一下,你在一个封闭的房间里,不能看见这个女孩。但是你想要预测不同时刻这个女孩的位置。怎么才能预测的准一点?当然随着时间的推移你预测的越来越不准。在t=0时刻,你肯定知道这个女孩在哪里。下一个时刻女孩移动到8块方格中的一块,这个时候,你预测到的可能性已经降为1/8。继续往下继续预测,现在我们将这个序列公式化:$*(t)=*(t-1)+Er(t)$这里的$Er_t$代表这这个时间点随机干扰项。这个就是女孩在每一个时间点带来的随机性。现在我们递归所有*时间点,最后我们将得到下面的等式:$*(t)=*(0)+Sum(Er(1),Er(2),Er(3).....Er(t))$现在,让我们尝试验证一下随机游走的平稳性假设:1.是否均值为常数?E[*(t)]=E[*(0)]+Sum(E[Er(1)],E[Er(2)],E[Er(3)].....E[Er(t)])我们知道由于随机过程的随机干扰项的期望值为0.到目前为止:E[*(t)]=E[*(0)]=常数2.是否方差为常数?Var[*(t)]=Var[*(0)]+Sum(Var[Er(1)],Var[Er(2)],Var[Er(3)].....Var[Er(t)])Var[*(t)]=t*Var(Error)=时间相关因此,我们推断,随机游走不是一个平稳的过程,因为它有一个时变方差。此外,如果我们检查的协方差,我们看到协方差依赖于时间。我们看一个更有趣的东西我们已经知道一个随机游走是一个非平稳的过程。让我们在方程中引入一个新的系数,看看我们是否能制定一个检查平稳性的公式。Rho系数*(t)=Rho**(t-1)+Er(t)1现在,我们将改变Rho看看我们可不可以让这个序列变的平稳。这里我们只是看,并不进展平稳性检验。让我们从一个Rho=0的完全平稳序列开场。这里是时间序列的图:将Rho的值增加到0.5,我们将会得到如下列图:你可能会注意到,我们的周期变长了,但根本上似乎没有一个严重违反平稳性的假设。现在让我们采取更极端的情况下ρ=0.9我们仍然看到,在一定的时间间隔后,从极端值返回到零。这一系列也不违反非平稳性。现在,让我们用ρ=1随机游走看看这显然是违反固定条件。是什么使rho=1变得这么特殊的呢?这种情况并不满足平稳性测试?我们来找找这个数学的原因公式*(t)=Rho**(t-1)+Er(t)的期望为:E[*(t)]=Rho*E[*(t-1)]这个公式很有意义。下一个*(或者时间点t)被拉到Rho*上一个*的值。例如,如果*〔t–1〕=1,E[*〔T〕]=0.5〔Rho=0.5〕。现在,如果从零移动到任何方向下一步想要期望为0。唯一可以让期望变得更大的就是错误率。当Rho变成1呢?下一步没有任何可能下降。DickeyFullerTest平稳性这里学习的最后一个知识点是DickeyFuller检验。在统计学里,Dickey-Fuller检验是测试一个自回归模型是否存在单位根。这里根据上面Rho系数有一个调整,将公式转换为Dickey-Fuller检验*(t)=Rho**(t-1)+Er(t)=>*(t)-*(t-1)=(Rho-1)*(t-1)+Er(t)我们要测试如果Rho–1=0是否差异显著。如果零假设不成立,我们将得到一个平稳时间序列。平稳性测试和将一个序列转换为平稳性序列是时间序列模型中最重要的局部。接下来就看看时间序列的例子。2、使用R探索时间序列本节我们将学习如何使用R处理时间序列。这里我们只是探索时间序列,并不会建立时间序列模型。本节使用的数据是R中的置数据:AirPassengers。这个数据集是1949-1960年每个月国际航空的乘客数量的数据。载入数据集下面的代码将帮助我们载入数据集并且能够看到一些少量的数据集。>data(AirPassengers)*载入数据>class(AirPassengers)[1]"ts"*查看AirPassengers数据类型,这里是时间序列数据>start(AirPassengers)[1]19491*这个是Airpassengers数据开场的时间>end(AirPassengers)[1]196012*这个是Airpassengers数据完毕的时间>frequency(AirPassengers)[1]12*时间序列的频率是一年12个月>summary(AirPassengers)Min.1stQu.MedianMean3rdQu.Ma*.104.0180.0265.5280.3360.5622.0矩阵中详细数据*Thenumberofpassengersaredistributedacrossthespectrum>plot(AirPassengers)*绘制出时间序列>abline(reg=lm(AirPassengers~time(AirPassengers)))*拟合一条直线>cycle(AirPassengers)JanFebMarAprMayJunJulAugSepOctNovDec194912345678910111219501234567891011121951123456789101112195212345678910111219531234567891011121954123456789101112195512345678910111219561234567891011121957123456789101112195812345678910111219591234567891011121960123456789101112*打印每年的周期>plot(aggregate(AirPassengers,FUN=mean))*绘制>bo*plot(AirPassengers~cycle(AirPassengers))*绘制盒图重要推论每年的趋势显示旅客的数量每年都在增加;七八月的均值和方差比其他月份要高很多;每个月的平均值并不一样,但是方差差异很小。因此,可以看出具有很强的周期性,一个周期为12个月或更少。查看数据,试探数据是建立时间序列模型最重要的一部-如果没有这一步,你将不知道这个序列是不是平稳序列。就像这个例子一样,我们已经知道了关于这个模型的很多细节。接下来我们会建立一些时间序列模型以及这些模型的特征,也会做一些预测。3、ARMA时间序列模型ARMA也叫自回归移动平均混合模型。ARMA模型经常在时间序列中使用。在ARMA模型中,AR代表自回归,MA代表移动平均。如果这些术语听起来很复杂,不用担忧-下面将会用几分钟的时间简单介绍这些概念。我们现在就会介绍这些模型的特点。在开场之前,你首先要记住,AR或者MA并不是应用在非平稳序列上的。在实际应用中可能会得到一个非平稳序列,你首先要做的就是将这个序列变成平稳序列〔通过差分/转换〕,然后选择可以使用的时间序列模型。首先,本文将分开介绍两个模型〔AR&MA〕。接下来我们看一看这些模型的特点。自回归时间序列模型让我们从下面的例子理解AR模型:假设一个国家的GDP〔*(t)〕依赖与去年的GDP〔*(t-1))。这个假设说明,一个国家今年的GDP总值依赖于去年的GDP总值和今年的新开的工厂和效劳。但是GDP的主要依赖于去年的GDP。则,GDP的公式为:*(t)=alpha**(t–1)+error(t)〔1〕这个等式就是AR公式。公式〔1〕表示下一个点完全依赖与前面一个点。alpha是一个系数,希望能够找到alpha最小化错误率。*(t-1)同样依赖*(t)。例如,*(t)代表一个城市在*一天的果汁的销售量。在冬天,极少的供给商进果汁。突然有一天,温度上升了,果汁的需求猛增到1000.然而过了几天,气温又下降了。但是众所周知,人们在热天会喝果汁,这些人会有50%在冷天仍然喝果汁。在接下来的几天,这个比例降到了25%(50%的50%〕,然后几天后逐渐降到一个很小的数。下列图解释了AR序列的惯性:移动平均时间序列模型接下来另一个关于移动平均的例子。一个公司生产*种类型的包,这个很容易理解。作为一个竞争的市场,包的销售量是从零开场增加的。有一天他做了一个实验,设计并制作了不同的包,这种包并不会被随时购置。假设市场上总需1000个这种包。在*一天,这个包的需求特别高,很快库存快用完了。这天完毕了还有100个包没卖掉。我们把这个误差称为时间点误差。接下来的几天仍有几个客户购置这种包。下面通过一个简单的公式来描述这个场景:*(t)=beta*error(t-1)+error(t)1尝试把这个图画出来,就是这个样子的:注意到MA和AR模型的不同了没?在MA模型中,噪声/冲击迅速消失。在AR模型中会受到长时间的影响。AR模型与MA模型的不同AR与MA模型的主要不同在于时间序列对象在不同时间点的相关性。MA模型用过去各个时期的随机干扰或预测误差的线性组合来表达当前预测值。当n>*一个值时,*(t)与*(t-n)的相关性总为0.AM模型仅通过时间序列变量的自身历史观测值来反映有关因素对预测目标的影响和作用,步骤模型变量相对独立的假设条件约束,所构成的模型可以消除普通回退预测方法中由于自变量选择、多重共线性等造成的困难。即AM模型中*(t)与*(t-1)的相关性随着时间的推移变得越来越小。这个差异要好好利用起来。利用ACF和PACF绘图一旦我们得到一个平稳的时间序列。我们必须要答复两个最重要的问题;Q1:这个是AR或者MA过程?Q2:我们需要利用的AR或者MA过程的顺序是什么?解决这两个问题我们要借助两个系数:时间序列*(t)滞后k阶的样本自相关系数〔ACF〕和滞后k期的情况下样本偏自相关系数〔PACF〕,公式省略。AR模型的ACF和PACF:通过计算证明可知:-AR的ACF为拖尾序列,即无论滞后期k取多大,ACF的计算值均与其1到p阶滞后的自相关函数有关。-AR的PACF为截尾序列,即当滞后期k>p时PACF=0的现象。上图蓝线显示值与0具有显著的差异。很显然上面PACF图显示截尾于第二个滞后,这意味这是一个AR〔2〕过程。MA模型的ACF和PACF:-MA的ACF为截尾序列,即当滞后期k>p时PACF=0的现象。-MR的PACF为拖尾序列,即无论滞后期k取多大,ACF的计算值均与其1到p阶滞后的自相关函数有关。很显然,上面ACF图截尾于第二个滞后,这应该是一个MA〔2〕过程。目前,本文已经介绍了关于使用ACF&PACF图识别平稳序列的类型,现在,我将介绍一个时间序列模型的整体框架。此外,还将讨论时间序列模型的实际应用。4、ARIMA时间序列模型的框架与应用到此,本文快速介绍了时间序列模型的根底概念、使用R探索时间序列和ARMA模型。现在我们将这些零散的东西组织起来,做一件很有趣的事情。框架下列图的框架展示了如何一步一步地“做一个时间序列分析〞

前三步我们在前文已经讨论了。尽管如此,这里还是需要简单说明一下:第一步:时间序列可视化在构建任何类型的时间序列模型之前,分析其趋势是至关重要的。我们感兴趣的细节包括序列中的各种趋势、周期\季节性或者随机行为。在本文的第二局部已经介绍了。第二步:序列平稳一旦我们知道了模式、趋势、周期。我们就可以检查序列是否平稳。Dicky-Fuller是一种很流行的检验方式。在第一局部已经介绍了这种检验方式,在这里还没有完毕!如果发现序列是非平稳序列怎么办?这里有三种比拟常用的技术来让一个时间序列平稳。1消除趋势:这里我们简单的删除时间序列中的趋势成分。例如,我的时间序列的方程是:*(t)=(mean+trend*t)+error1这里我简单的删除上述公式中的trend*t局部,建立*(t)=mean+error模型2差分:这个技术常常用来消除非平稳性。这里我们是对序列的差分的结果建立模型而不是真正的序列。例如:*(t)–*(t-1)=ARMA(p,q)1这个差分也是ARIMA的局部。现在我们有3个参数了:p:ARd:Iq:MA3季节性:季节性直接被纳入ARIMA模型中,下面的应用局部我们再讨论这个。第三步:找到最优参数参数p,q可以使用ACF和PACF图发现。除了这种方法,如果相关系数ACF和偏相关系数PACF逐渐减小,这说明我们需要进展时间序列平稳并引入d参数。第四步:建立ARIMA模型找到了这些参数,我们现在就可以尝试建立ARIMA模型了。从上一步找到的值可能只是一个近似估计的值,我们需要探索更多(p,d,q〕的组合。最小的BIC和AIC的模型参数才是我们需要的。我们也可以尝试一些季节性成分。在这里,在ACF/PACF图中我们会注意到一些季节性的东西。第五步:预测到这步,我们就有了ARIMA模型,我们现在就可以做预测了。我们也可以将这种趋势可视化,进展穿插验证。时间序列模型的应用这里我们用前面的例子,使用这个时间序列做预测。我们建议你在进展下一步之前,先观察这个数据。我们从哪里开场呢?下列图是这些年的乘客数的图。在往下看之前,观察这个图。这里是我的观察:1.乘客有着逐年增加的趋势。2.这看起来有季节性,每一个周期不超过12个月。3.数据的方差逐年增加。在我们进展平稳性测试之前我们需要解决两个问题。第一,我们需要消除方差不齐。这里我们对这个序列取对数。第二我们需要解决序列的趋势性。我们通过对时序序列做差分。现在,我们来检验最终序列的平稳性。adf.test(diff(log(AirPassengers)),alternative="stationar

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论