时间序列的R语言实现_Part3

ARIMA模型

前面讲到的指数平滑模型,对于预测误差要求是无相关性并且结果是满足以0为中心的正态分布的。对时间序列作分析是,有些情况下,把相关性考虑进去能做更好的预测。ARIMA模型就包含了对时间序列的无规律部分做预测的模型,在无规律部分,允许出现非零相关性。

 

对时间序列做差分

ARIMA模型是针对稳定时间序列的。若是你的分析对象是非稳定的时间序列,那么你首先就需要对时间序列做差分,直到你得到一个稳定的时间序列。需要做差分时,我们用到的模型是ARIMA(p,d,q),其中d的值是一个大于等于0的整数值,它就是我们对原始时间序列所做差分的次数。

R中有做差分的方法diff(),例如对前面用到的数据,1866年到1911年女性裙子的边缘直径数据,不是一个稳定的时间序列,数据的水平值随时间变化很大。

计算机生成了可选文字: 000一006008S山一J田55七工涅S00卜00919701880159019001910Time

 

对这个数据做差分,过程结果如下:

计算机生成了可选文字: 3klr七s3eriesdiffl<一diff(3kir七33eries,difference3=几)plot.七3(skirtsse:工e3dlffl)>>

 

计算机生成了可选文字: O呷090寸O入00入.L七工pS山一JgSS七一艺S18701880189019001910T1me

diff()差分方法中,用到的两个参数,第一个是做差分的对象,即原始时间序列,后面diferences是所做差分次数

从上面的结果图能看出,该时间序列一次差分的结果依然不是稳定的时间序列。所以对该时间序列做二次差分。

计算机生成了可选文字: 3klrt33erle3dlffZ<一dlff(3klrt33erle3,difference3=2)plot.ts(3klrt33erle3dlffZ)>>

 

计算机生成了可选文字: O甘O入00入.0可闪七工pS山一J山55七一义S18701880189019001910T1me

这一次得到的时间序列,随时间的变化存在不变方差,可以认为是稳定的。所以对1866年到1911年女性裙子的边缘直径数据这个时间序列,需要对其做两次差分以得到稳定的时间序列。它所适用的ARIMA模型就是ARIMA(p,2,q),前面讲到过,2就是需要对时间序列所做的差分的次数,接下来我们需要做的是确定pq的值。

 

另一个时间序列的例子是,前面用到过的英国连续42任国王的逝世年龄。下面是对该时间序列做差分的过程:

计算机生成了可选文字: >k工nqti攻e3erie3d工ff几<一dlff(klnq3t工瓦e3e二le3,dlffe二ence3二1)>plot.t3(klnqtlme3erle3dlffl)

 

计算机生成了可选文字: O入O}p甲L扛工pse工J。s。Lull口u一艺《〕可10203040Time

一次差分后的结果可以看出就基本稳定了,所以这个例子适用的ARIMA模型就是ARIMA(p,1,q)

 

选择候选ARIMA模型

前面讲到了ARIMA(p,d,q)模型d的值就是要得到稳定时间序列所要对原始时间序列做差分的次数。选择合适的pq值则需要对稳定的时间序列做相关和偏自相关的测试。

R中有acf()pacf()方法能得到数据的自相关图和偏自相关图。如果要查看自相关和偏自相关结果的值,设置参数plot=FALSE即可。下面是实际实现过程:

 

英国连续42任国王的例子

自相关过程及结果:

计算机生成了可选文字: acf(klnqtlrne3erle3dlffl,laq.几ax=20)acf(k工nqtirne3e:ie3dlffl,laq.现ax.20,plot=FALSE)>>Autocorrelation3of3erie3、klnqtlrne3erle3dlffl,,bylaq01。0001lO。2061一0。36012一0。01,2一0。162l3一0。2123一0。0501性0。1304560。227一0。042一0。18115161,0。114一0。009一0。192,0。095180。07280。06喂190。1139一0。11620一0。093lO一0。071

计算机生成了可选文字: Serieskingtimeseriesdiffl曾〔〕寸〔〕U-0<9砚二〕寸〔〕nU,」1500〕J飞‘a.L05

自相关的结果图上,只有lag1的结果超过了意义界限,其余都在接线之内。

偏自相关过程及结果如下:

计算机生成了可选文字: pacf(klnqtl瓦e3erlesdlffl,laq.几ax二20)pacf(klnqtlme3erle3dlffl,laq.max二20,plot二FALSE)>>Partlalautocorrela七lonsof3erle3、klnqti几e3erie3dlffl,,bylaq1一0。360120。0342一O。33513一0。1613一0。321l40。036性0。005l50。06650。025l60。0816一O。144l7一0。0057一0。02218一O。02,8一0。007l9一0。0069一O。14320一0。037l0一O。167ll0。065

 

计算机生成了可选文字: SerieSkingtimeseriesdifflU--0哎一e一七ed内.0·n〕八乙口0a,..L5

偏自相关的结果中,lag1,23的时候,结果超过了意义界限,这三个点都是负值,并且逐渐递减(lag 1: -0.360, lag 2: -0.335, lag 3:-0.321)。偏自相关的结果是3阶截尾的。

这个例子时间序列的自相关图1阶截尾,偏自相关图3阶截尾,就是说,下面的ARMA模型对一次差分后的时间序列都是合适的:

1.ARMA(3,0)模型,相当于AR(3)模型,因为偏自相关图3阶截尾,自相关图可视为拖尾。

2.ARMA(0,1)模型,相当于MA(1)模型,因为自相关图1阶截尾,偏自相关图可视为拖尾。

4.ARMA(p,q)模型,因为自相关图和偏自相关图都可视为拖尾。

模型选择的原则是精简原则,是参数尽量少,所以ARMA(0,1)相比而言是最合适的一个模型。

一次差分后的英国国王逝世年龄时间序列适用ARMA(0,1)模型,也就是说原始时间序列,适用ARIMA(0,1,1)模型。

 

北半球火山尘的例子

这是一个新的例子,来看如何选择合适的ARIMA模型。数据是北半球从1500年到1969年的火山尘指数值。读取存储和查看这个时间序列数据的过程如下:

计算机生成了可选文字: >volcanadu3七<一scan("h七tp://robjhynd血an.com/t3dldata/annual/dvl.da七n,sklp=1)Redd性70lte现日>volcanodus七serles<一ts(volcanodu3t,start=c(1500))>plat.ts(volcanadustserles)

 

计算机生成了可选文字: 00卜00的00内00}OSa一」田S】SnpOUeO一OA15001600170018001900T1me

从上图可以看出,时间序列的随机波动幅度随时间保持在一个稳定的值,所以加性模型可以用来描述这个模型。且该时间序列的差分值大致稳定,所以对这个时间序列不需要做差分处理。也就是ARIMA模型的d值为0

接下来看时间序列的滞后期1-20的自相关图和偏自相关图来确定ARIMA模型的选择:

计算机生成了可选文字: acf(volcanodus七serie3,lag.znax=20)acf(volcanodus七ser工es,lag.rnax=20,plot=FALSE)>>AU七OCOllel己tionSof3elie3、VOIC己nodU3tselle3,bylaq01。000几20。02任.10。666130。07520。37弓1任0。08230。162150。06任40。04616O。03950。0171,O。0056一O。00718O。0287O。016190。1088O。0212OO。18230。006孟U0。010山孟0。00咬

 

计算机生成了可选文字: SeFieSVOICanodUStseFieS?O寸.0J-曰<n〕O〕月..a.L05

自相关图能看出来,在滞后期为1,23时自相关值超出了意义界限,在3之后,自相关值接近0,自相关值在滞后期为1,2,3时值为正值,且逐渐递减。滞后期为1920时,自相关值同样超出了意义界限,但超出很少,可以认为是偶然出现的结果。

计算机生成了可选文字: pacf(volcanodu3七3e:ie3,lag.rnax=20)pacf(volcanodu3七3e:几es,laq.现ax=20,plot=FALSE)>>PaltlalaUtOCOllelat1On3Of3erles,VolCanodUSt3elle3,bylaq工0。666130。0822一O。1261弓一0。0253一O。06任15一0。01弓任一O。005160。0085O。O怪O17一0。0256一0。039180。0737O。058190。1318一0。0162O0。0639一0。0251O0。02811一0。008120。036

 

计算机生成了可选文字: SeFieSVO!CanodUStseFieSU--O<一m一七md八U9一口0a,,.L5

偏自相关的结果是2阶截尾,同样,滞后期为19时,偏自相关值超出意义界限可视为偶然出现结果不考虑其影响。

综上,自相关图3阶截尾,偏自相关图2阶截尾,所以该时间序列适用的模型有下面几种:

1.ARMA(2,0)模型,因为偏自相关图2阶截尾,自相关图可视为拖尾。

2.ARMA(0,3)模型,因为自相关图3阶截尾,偏自相关图可视为拖尾。

3.ARMA(p,q)模型,自相关图和偏自相关图都可视为拖尾。

同样,根据精简原则,参数尽量少的话,ARMA(p,q)参数至少为p+q>=2,所以,ARMA(1,0)模型和ARMA(p,q)模型都可考虑。

对本半球火山尘时间序列数据,适合的ARIMA模型是ARIMA(2,0,0)或者是ARIMA(p,0,q)

说明:ARIMA算法是根据自相关图和偏自相关图的拖尾和截尾的性质来判断如何选择具体的ARIMA模型。但是拖尾和截尾的判断方法我没有找到一个很明确的说法,照这里看来判断过程带有一定的主观性,这个例子中,多个模型都可以用。另外原文中tail off to zero我理解为拖尾,is zero after lag n我理解为n阶截尾,这个不知道确不确切,欢迎大家指正,谢谢!

 

ARIMA模型做预测

前面用到了两个例子,并且已经确定了这两个例子比较适用的ARIMA模型,R中提供了arima()方法。

 

英国连续42任国王的例子

对这个时间序列,前面已经确认过ARIMA(0,1,1)是比较适合的模型。arima()方法中的order参数可定义p,d,q的值,arima()方法创建ARIMA对象过程如下:

计算机生成了可选文字: klnqsti皿e3erie3arizna<一arl几a(kingsti几e3erie3,arde二=c(0,l,klnqs七工lnesellesarllnaCdll:arirna(x=kinqs七1皿eserles,order=c(0,1,1))Coeff1Cien七3:mal一O。7218S。e。0。12083iglna人2e3七ixna七edas230.4:loqlikelihood=一170.06,alc=>>

 

上面显示的kingstimeseriesarima对象,下面的值是ARIMA模型中用到的一些参数的预估值。

forecast包中的forecastArima()方法可用来对arima对象做预测。

计算机生成了可选文字: >klnq3ti几e3erle3foreca3t3>klnq3tlme3erle3foreca3t3PointForeca3tLo804367。75063任8。296任74467。75063怪7。557怪8性567。75063性6。e性460性667。7506346。1552弓4767。75063任5。任8722.<一foreca3t.Arlma(kinq3tlme3erle3arlma,h=5)Hi8087。2047987。9437788。6566589。3弓60190。01404LO9537。9980636。8678835。777623弓。7233333。70168Hi9597。5031998。6333899。72363100。77792101。79958

上面h=5,表示做了5期的预测,原始数据是连续42任英国国王的逝世年龄,所以预测结果是43-475期的值。包括80%置信区间的上限和下限,95%置信区间的上限和下限。

同样,可以在图中查看预测结果:

计算机生成了可选文字: >plo七.foreca3t(k工nq3tlrne3e二le3fo二eca3七3)

 

计算机生成了可选文字: ForecastsfromARIMA《0,1,1)O早吕吕《〕弋丁吕10203040

跟在用指数平滑法做预测一样,我们可以计算预测误差看其是否以0为中心呈正态分布,是否存在不变方差,预测误差是否存在相关性。

所以,我们先看预测误差的相关性图和Ljung-Box测试结果:

计算机生成了可选文字: >acf(klnq3tl几e3erle3fo:ecas七3$re31dual3,laq.几ax=20)>Box.te3t(k工n口3ti几e3e:ie3foreca3t3$re31dua13,laQ留20,七ype,"Ljunq一Box.)日ox一Ljunqte3td己七己:X一3qukinq3time3erie3foreca3t3$re31dual,ared=13.58咬4,df=20,p一value=0.8509

 

计算机生成了可选文字: Serieskingstjmeserjesforecasts$residuals0.}?O?O寸.0U-0<例.0.n〕,乙矛.、J百毛‘月..a.L05

相关性图中可看到,1-20的滞后期中,没有自相关值超出意义界限,Ljung-Box测试p值为0.9,我们可以据此推断预测误差在1-20的滞后期中,不存在非零自相关性。

检验预测误差是否以0为中心呈正态分布,是否存在不变方差,可以在时序图和直方图中查看预测误差。

计算机生成了可选文字: plot.t3(klng3ti几e3eriesforeca3t3车re3idual3)plo七Forecas七Errors(klnqs七王几ese二lesforecas七5导re3idua13)>>

 

计算机生成了可选文字: Serjeskingstimeseriesforecasts$residualsO们O刹O}00}·O入.0川.slenpls。J毋s}se。ajo』sa一J。s。任一】吕C一艺01O203040Time

 

计算机生成了可选文字: HistogramofforecasterrorS寸0.0内0.0入0.0必isueo}0.000.0一1005O5OforeCasterrors

从预测误差的时序图可以看出,其方差随时间大致相同;直方图能看出预测误差也是存在不变方差,满足正态分布的。

所以,ARIMA(0,1,1)对连续42任英国国王的逝世年龄的预测是有效的。

 

北半球火山尘的例子

前面对这个例子可适用的ARIMA模型做了判断,ARIMA(2,0,0)是比较合适的一个。得到ARIMA对象的过程如下:

计算机生成了可选文字: volcanodu3t3erle3ar工几a<一arlma(volcanodu3七3e二ie3,orde了=c(2,O,0))VOICanodU3t弓er工esar工几a>>serie3:VOICanodU3t3erie3ARll,认(2,0,0)wi七hnoneeZerOrneanCOeff1ClentS:arlarZ0。7533一O。126e5。e。0。04570。0458Intercept57。527任8。5958319兀a入2e3七ixna七edas任870:loqlikelihaod=一2662.5吸AIC=5333。09AICC二5333。17BIC=5349。7

再对其做预测,过程及结果如下:

计算机生成了可选文字: >VOIC己nodUSt3erle3foreC己3t3>VOIC己nodU3t3erie3foreC己3七3POintFOreC己3tLO80197021。任8131一67。9任860197137。66怪19一74。303051972性7。13261一71。57070197352。21咬32一68。35951197性5任。842任1一66。22681197556。1781任一65。01872197656。85128一6咬。37798197757。18907一6吸。0任83任197857。35822一63。88124197957。任4283一63。7971怪198057。48513一63。75咬97198157。50627一63。73386198257。5168怪一63。72330198357。52212一63。71802198弓57。52弓76一63。71538198557。52607一63。71407198657。526,3一63。713弓l198757。52706一63。71308198857。52723一63。71291198957。52731一63。71283199057。52735一63。71279199157。52737一63。71277199257。52738一63。71276199357。52739一63。71275199457。52739一63。71275199557。52739一63。71275199657。52739一63。71275199757。52739一63。71275199857。52739一63。71275199957。52739一63。71275<一foreca3t.Arlma(volcanodu3t3erie3arl现a,h=3Hi80110。9112149。631任165。8359172。7881175。9116177。3750178。0805178。任265178。5977178。6828178。7252178。746任178。7570178。7623178。76弓9178。7662178。7669178。7672178。767任178。7674178。7675178。7675178。7675178。7675178。7675178。7675178。7675178。7675178。7675178。7675LO95一115。2899一133。5749一134。4084一132。187弓一130。3170一129。1765一128。5529一128。2276一128。0615一127。9777一127。9356一127。9145一127。9040一127。8987一127。8960一127。89任7一127。8941一127。8937一127。8936一127。8935一127。893怪一127。893弓一127。893弓一127。8934一127。893今一127。893弓一127。893弓一127。893任一127。893弓一127。已934Hi95158。2526208。9033228。6737236。6161240。0018241。53272咬2。25542任2。60572任2。7780242。863性2咬2。90592任2。92712怪2。93762性2。9性292弓2。94562任2。9任69242。9任752咬2。94792任2。9咬802任2。9任81242。9任812任2。94822任2。9任822怪2。9任822性2。9性已22弓2。94822任2。9任82242。9任822咬2。9482242。94已2

在图中查看预测结果:

计算机生成了可选文字: 》plo七.farecast(volcanodustserle3forecasts)

 

计算机生成了可选文字: ForecastsfromARIMA(2,0,0)withnon·zeromean00900寸00入150016001700180019002000

结果中,有一个问题,预测存在负值,但是实际的火山尘指数不可能为负值。arima()forecast.Arima()方法无法定义结果只为正值,这是这个方法不太让人满意的地方。

同样,我们需要检验预测误差,看其是否存在非0相关性,并且是否以0为中心呈正态分布。同样看预测误差的自相关图,并给预测误差做Ljung-Box测试:

计算机生成了可选文字: >acf(valcanadu3t3eriesforeca3t3导re3工dual3,lag.几ax=20)>Box.七e3七(valcanodus七serlesforecas七SSresidua13,lag=20,type="Ljunq一Box")Box一Ljunqtestdd七d:X一3quvolcanodus七3erle3forec己5七55工esidua15ared=2任.36性2,df=20,p一value=0.2268

 

计算机生成了可选文字: Seriesvolcanodustseriesforecasts$residuals?O寸.0LJ戈八U,」子.气J.飞」J..a.L0515

结果可以确定预测误差存在非0自相关性可能很小。

接下来看预测误差是否存在不变方差满足正态分布。同样查看预测误差的时序图,并查看其与正态分布做对比的直方图。过程结果如下:

计算机生成了可选文字: plot.t3(volcanodu3t3erle3foreca3七s$re3idua13)platFo:ecas七E二rors(volcanodu3t3e二le3fo二eca3t3$re31dual3)>>

 

计算机生成了可选文字: Seriesvolcanodustseriesforecasts$residuals00的00内00}O00尸·slenpls。J$slse。。Jo』se一」。s}snpoue。一。,15001600170018001900Time

 

计算机生成了可选文字: HistogramofforeCasterrorsO例.0帅r.0O尸.0必工sueo的0.000.0400一200200400600800foreCasterrorS

 

同样这两个图可以大致确认,预测误差是存在不变方差,并且满足以0为中心的正态分布。

所以ARIMA(2,0,0)模型对原时间序列所做的预测是有效的。

说明:前面判断知道这个时间序列可适用ARIMA(2,0,0)模型,也可选择ARIMA(p,0,q)模型,按精简参数原则可以尝试使用ARIMA(1,0,1)模型重复这个过程,得到的预测结果与ARIMA(2,0,0)非常接近。

计算机生成了可选文字: volcanodu3t3erle3arlma<一arlma(volcanodu3t3erle3,orde了=c(l,0,l))VOICanodU3t弓erie弓arina>>serie3:VOICanodU3t3erie3ARll叹A(l,0,l)wi七hnoneeZerOrneanCOeff1Clents:arlmal0。58480。15555。e。0。05260。0613intercept57。5任738。9412siglna人2AIC=5334esti几己tedas43已3:42AICC二5334。5loqlikelihood=一2663.21BIC=5351。03

 

计算机生成了可选文字: >VolC己nodU3tseliesfOleCastS>V01C己nodU3七se二lesfQreCds七3POintFO工eCds七LO80197020。59582一68。96157197135。93925一75。任8902197244。91161一73。06890197350。15836一69。98075197任53。22650一67。6任191197555。02065一66。0961任197656。06981一65。13179197756。68333一6任。5任727197857。04209一64。19841197957。25189一63。99201198057。37弓57一63。87049198157。任任63几一63。7991任198257。任8826一63。75733198357。51279一63。732e4198性57。5271弓一63。71851198557。53552一63。71013198657。5任O任3一63。70522198757。5弓330一63。70236198857。5任任98一63。70068198957。54596一63。69970199057。5任653一63。69912199157。5弓687一63。69879199257。5任706一63。69859199357。5任7几8一63。698任8199457。54724一63。69841199557。5弓728一63。69837199657。5任731一63。69835199757。5任732一63。69833199857。5任733一63。69833199957。5任733一63。69832200057。54733一63。69已32<一farecast.Arima(volcanodu3t3e二ie3ari皿a,h=31)Hi80110。15321任7。3675162。3921170。297517任。09任9176。1374177。271任177。9139178。2826178。任958178。61961,8。6918178。73381,8。,584178。7728178。7812178。7861178。7890178。7906178。7916178。7922178。7925178。7927178。7928178。7929178。7929178。7930178。7930178。7930178。793017e。7930LO95一116。370任一13任。任756一135。52咬O一133。5785一131。6258一130。2115一129。2920一128。7229一128。3793一128。17任6一128。0537一127。9826一127。9任09一127。9164一127。9021一127。8937一127。8888一127。8859一127。88任3一127。8833一127。8827一127。8824一127。8822一127。8820一12,。8820一127。8819一127。8819一127。8819一127。8819一127。8819一12,。已319Hi95157。5620206。35任1225。3472233。8953238。07882任O。2528241。任3172任2。08952怪2。曦63吸2任2。678任2咬2。80292任2。87522任2。917任242。94202咬2。956任2任2。96任72任2。96972咬2。97252任2。97任22怪2。97522任2。97582咬2。97612任2。97632任2。976任242。9,652咬2。97652任2。97652任2。97652咬2。97662任2。9766242。9766

 

计算机生成了可选文字: ForecastsfromARIMA《1,0,1)withnon·zeromean00900寸00入150016001700180019002000

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值