原文链接:http://tecdat.cn/?p=18860

原文出处:拓端数据部落公众号

简介

工夫序列剖析是统计学中的一个次要分支,次要侧重于剖析数据集以钻研数据的特色并提取有意义的统计信息来预测序列的将来值。时序剖析有两种办法,即频域和时域。前者次要基于傅立叶变换,而后者则钻研序列的自相干,并且应用Box-Jenkins和ARCH / GARCH办法进行序列的预测。

本文将提供应用时域办法对R环境中的金融工夫序列进行剖析和建模的过程。第一局部涵盖了安稳的工夫序列。第二局部为ARIMA和ARCH / GARCH建模提供了指南。接下来,它将钻研组合模型及其在建模和预测工夫序列方面的性能和有效性。最初,将对工夫序列分析方法进行总结。

工夫序列数据集的平稳性和差别:

1.平稳性:

对工夫序列数据建模的第一步是将非安稳工夫序列转换为安稳工夫序列。这是很重要的,因为许多统计和计量经济学办法都基于此假如,并且只能利用于安稳工夫序列。非安稳工夫序列是不稳固且不可预测的,而安稳过程是均值回复的,即它围绕具备恒定方差的恒定均值稳定。此外,随机变量的平稳性和独立性密切相关,因为许多实用于独立随机变量的实践也实用于须要独立性的安稳工夫序列。这些办法大多数都假如随机变量是独立的(或不相干的)。噪声是独立的(或不相干的);变量和噪声彼此独立(或不相干)。那么什么是安稳工夫序列?

粗略地说,安稳工夫序列没有长期趋势,均值和方差不变。更具体地说,平稳性有两种定义:弱平稳性和严格平稳性。

a.平稳性弱:如果满足以下条件,则称工夫序列{Xt,t∈Z}(其中Z是整数集)是安稳的

b.严格安稳:如果(Xt1,Xt2,...,Xtk)的联结散布与(Xt1 + h,Xt2 + h)的联结散布雷同,则工夫序列{Xt. ……Xtk + h),t∈Z}被认为是严格安稳的。 

通常在统计文献中,平稳性是指安稳工夫序列满足三个条件的弱平稳性:恒定均值,恒定方差和自协方差函数仅取决于(ts)(不取决于t或s)。另一方面,严格平稳性意味着工夫序列的概率分布不会随工夫变动。

例如,白噪声是安稳的,意味着随机变量是不相干的,不肯定是独立的。然而,严格的白噪声示意变量之间的独立性。另外,因为高斯分布的特色是前两个时刻,所以高斯白噪声是严格安稳的,因而,不相干也意味着随机变量的独立性。

在严格的白噪声中,噪声项{et}不能线性或非线性地预测。在个别的白噪声中,可能无奈线性预测,但可由稍后探讨的ARCH / GARCH模型非线性预测。有三点须要留神:

•严格的平稳性并不意味着平稳性弱,因为它不须要无限的方差

•平稳性并不意味着严格的平稳性,因为严格的平稳性要求概率分布不会随工夫变动

•严格安稳序列的非线性函数也严格安稳,不适用于弱安稳

2.区别:

为了将非安稳序列转换为安稳序列,能够应用差分办法,从原始序列中减去该序列滞后1期:例如:

在金融工夫序列中,通常会对序列进行转换,而后执行差分。这是因为金融工夫序列通常会经验指数增长,因而对数转换能够使工夫序列平滑(线性化),而差分将有助于稳固工夫序列的方差。以下是苹果股票价格的示例:

•左上方的图表是苹果股票价格从2007年1月1日到2012年7月24日的原始工夫序列,显示出指数级增长。

•左下方的图表显示了苹果股票价格的差分。能够看出,该系列是价格相干的。换句话说,序列的方差随着原始序列的级别减少而减少,因而不是安稳的

•右上角显示Apple的log价格图。与原始序列相比,该序列更线性。

•右下方显示了苹果log价格的差分。该系列仿佛更具备均值回复性,并且方差是恒定的,并且不会随着原始系列级别的变动而显着变动。

 

要执行R中的差分,请执行以下步骤: 

•读取R中的数据文件并将其存储在变量中

appl.close=appl$Adjclose #在原始文件中读取并存储收盘价

•绘制原始股票价格

plot(ap.close,type='l')

•与原始序列不同

diff.appl=diff(ap.close)

•原始序列的差分序列图

plot(diff.appl,type='l')

•获取原始序列的对数并绘制对数价格

log.appl=log(appl.close)

•不同的log价格和图

difflog.appl=diff(log.appl)

log价格的差分代表收益,与股票价格的百分比变动类似。

ARIMA模型:

模型辨认:

通过观察工夫序列的自相干建设并实现时域办法。因而,自相干和偏自相干是ARIMA模型的外围。BoxJenkins办法提供了一种依据序列的自相干和偏自相干图来辨认ARIMA模型的办法。ARIMA的参数由三局部组成:p(自回归参数),d(差分数)和q(挪动均匀参数)。

辨认ARIMA模型有以下三个规定:

•如果滞后n后ACF(自相干图)被切断,则PACF(偏自相干图)隐没:ARIMA(0,d,n)确定MA(q)

•如果ACF降落,则滞后n阶后PACF切断:ARIMA(n,d,0),辨认AR(p)

•如果ACF和PACF生效:混合ARIMA模型,须要区别 

留神,即便援用雷同的模型,ARIMA中的差别数也用不同的形式书写。例如,原始序列的ARIMA(1,1,0)能够写为差分序列的ARIMA(1,0,0)。同样,有必要查看滞后1阶自相干为负(通常小于-0.5)的过差分。差分过大会导致标准偏差减少。

以下是Apple工夫序列中的一个示例:

•左上方以对数苹果股票价格的ACF示意,显示ACF迟缓降落(而不是降落)。该模型可能须要差分。

•左下角是Log Apple的PACF,示意滞后1处的有效值,而后PACF截止。因而,Log Apple股票价格的模型可能是ARIMA(1,0,0)

•右上方显示对数Apple的差分的ACF,无显著滞后(不思考滞后0)

•右下角是对数Apple差分的PACF,无显著滞后。因而,差分对数Apple序列的模型是白噪声,原始模型相似于随机游走模型ARIMA(0,1,0)

 

在拟合ARIMA模型中,简洁的思维很重要,在该模型中,模型应具备尽可能小的参数,但依然可能解释级数(p和q应该小于或等于2,或者参数总数应小于等于鉴于Box-Jenkins办法3)。参数越多,可引入模型的噪声越大,因而标准差也越大。

因而,当查看模型的AICc时,能够查看p和q为2或更小的模型。要在R中执行ACF和PACF,以下代码:

•对数的ACF和PACF

acf.appl=acf(log.appl)pacf.appl=pacf(log.appl,main='PACF Apple',lag.max=100

•差分对数的ACF和PACF

acf.appl=acf(difflog.appl,main='ACF Diffe pacf.appl=pacf(difflog.appl,main='PACF D

除了Box-Jenkins办法外,AICc还提供了另一种检查和辨认模型的办法。AICc为赤池信息准则,能够通过以下公式计算:

AICC = N log(SS / N)+ 2(p + q + 1) N /(N – p – q – 2),如果模型中没有常数项

AICC = N log(SS / N)+ 2(p + q + 2) N /(N – p – q – 3),如果模型中为常数项

N:求异后的项目数(N = n – d)

SS:差平方和

p&q:自回归模型和挪动均匀模型的程序 

依据这种办法,将抉择具备最低AICc的模型。在R中执行工夫序列剖析时,程序将提供AICc作为后果的一部分。然而,在其他软件中,可能须要通过计算平方和并遵循上述公式来手动计算数字。当应用不同的软件时,数字可能会略有不同。

Model  AICc 0 1 0  -6493 1 1 0  -6491.020 1 1  -6493.021 1 1  -6489.010 1 2  -6492.841 1 2  -6488.892 1 0  -6491.12 1 1  -6489.142 1 2  -6501.86

基于AICc,咱们应该抉择ARIMA(2,1,2)。这两种办法有时可能会得出不同的后果,因而,一旦取得所有预计,就必须检查和测试模型。以下是在R中执行ARIMA的代码:

 summary(arima212)

参数估计

要估算参数,请执行与先前所示雷同的代码。后果将提供模型每个元素的预计。应用ARIMA(2,1,2)作为选定模型,后果如下:

 Series: log.applARIMA(2,1,2)Coefficients: ar1 ar2 ma1 ma2 -0.0015 -0.9231 0.0032 0.8803s.e. 0.0532 0.0400 0.0661 0.0488sigma^2 estimated as 0.000559: log likelihood=3255.95AIC=-6501.9 AICc=-6501.86 BIC=-6475.68

残缺模型:

(Yt –Yt-1)= -0.0015(Yt-1 – Yt-2)-0.9231(Yt-2 – Yt-3)+0.0032t-1+0.8803t-2+t

留神,当执行带差分的ARIMA模型时,R将疏忽均值。以下是Minitab的输入:

Final Estimates of ParametersType Coef SE Coef T PAR 1 0.0007 0.0430 0.02 0.988AR 2 -0.9259 0.0640 -14.47 0.000MA 1 0.0002 0.0534 0.00 0.998MA 2 -0.8829 0.0768 -11.50 0.000Constant 0.002721 0.001189 2.29 0.022Differencing: 1 regular differenceNumber of observations: Original series 1401, after differencing 1400Residuals: SS = 0.779616 (backforecasts excluded) MS = 0.000559 DF = 1395Modified Box-Pierce (Ljung-Box) Chi-Square statisticLag 12 24 36 48Chi-Square 6.8 21.2 31.9 42.0DF 7 19 31 43P-Value 0.452 0.328 0.419 0.516

请留神,依据咱们编写代码的形式,R将对同一模型给出不同的预计。例如:arima(log.appl,order = c(2,1,2))

arima(difflog.appl,order = c(2,0,2))

从这两条代码行得出的ARIMA(2,1,2)的参数估计值在R中将有所不同,即便它援用的是同一模型。然而,在Minitab中,后果是类似的,因而对用户的混同较少。

诊断查看

该过程包含察看残差图及其ACF和PACF图,并查看Ljung-Box后果。

如果模型残差的ACF和PACF没有显着滞后,则抉择适合的模型。 

 

残差图ACF和PACF没有任何显著的滞后,表明ARIMA(2,1,2)是示意该序列的良好模型。

此外,Ljung-Box测试还提供了另一种办法来仔细检查模型。基本上,Ljung-Box是一种自相干测验,其中它测验工夫序列的自相干是否不同于0。换句话说,如果后果回绝了假如,则意味着数据是独立且不相干的;否则,序列中依然存在序列相关性,须要批改模型。

Modified Box-Pierce (Ljung-Box) Chi-Square statisticLag 12 24 36 48Chi-Square 6.8 21.2 31.9 42.0DF 7 19 31 43P-Value 0.452 0.328 0.419 0.516

 Minitab的输入显示p值均大于0.05,因而咱们不能回绝自相关性不同于0的假如。因而,所选模型是Apple股票价格的适合模型之一。

ARCH / GARCH模型

只管残差的ACF和PACF没有显著的滞后,然而残差的工夫序列图显示出一些波动性。重要的是要记住,ARIMA是一种对数据进行线性建模且预测放弃不变的办法,因为该模型无奈反映最近的变动或合并新信息。换句话说,它为序列提供了最佳的线性预测,因而在非线性模型预测中简直没有作用。为了建模稳定,须要用到ARCH / GARCH办法。咱们如何晓得所关注的工夫序列是否须要ARCH / GARCH?

首先,查看残差图是否显示任何波动性。接下来,察看残差平方。如果存在波动性,则应应用ARCH / GARCH对系列的波动性建模,以反映该系列中更多的近期变动和稳定。最初,平方残差的ACF和PACF将有助于确认残差(噪声项)是否独立且能够预测。如前所述,严格的白噪声不能线性或非线性地预测,而一般的白噪声可能不能线性地预测但仍不能非线性地预测。如果残差是严格的白噪声,则它们与零均值,正态分布无关,并且平方残差的ACF和PACF没有显著的滞后。

以下是平方残差的图:

•残差平方图显示了某些工夫点的波动性

 •滞后10时,PACF仍会截断,即便有些滞后依然很大

 

因而,残差显示了一些能够建模的模式。ARCH / GARCH对模型稳定率建模很有必要。顾名思义,此办法与序列的条件方差无关。ARCH(q)的个别模式:

res.arima212=arima212$ressquared.res.arima212=res.arima212^2

 依据AICc抉择ARCH / GARCH阶数和参数,如下所示:

AICC = -2 log+ 2( q + 1) N /(N  – q – 2),如果模型中没有常数项

AICC = -2 log+ 2( q + 2) N /(N – q – 3),如果模型中为常数项

要计算AICc,咱们须要将ARCH / GARCH模型拟合到残差,而后应用R中的logLik函数计算对数似然。请留神,因为咱们只心愿对ARIMA模型的噪声建模,因而咱们将ARCH拟合到先前抉择的ARIMA模型的残差,而不拟合原始序列或对数或差分对数序列。

Model N q Log&likelihood AICc&no&const AICc&constARCH(0) 1400 0 3256.488 ,6510.973139 ,6508.96741ARCH(1) 1400 1 3314.55 ,6625.09141 ,6623.082808ARCH(2) 1400 2 3331.168 ,6656.318808 ,6654.307326ARCH(3) 1400 3 3355.06 ,6702.091326 ,6700.076958ARCH(4) 1400 4 3370.881 ,6731.718958 ,6729.701698ARCH(5) 1400 5 3394.885 ,6777.709698 ,6775.68954ARCH(6) 1400 6 3396.683 ,6779.28554 ,6777.262477ARCH(7) 1400 7 3403.227 ,6790.350477 ,6788.324504ARCH(8) 1400 8 3410.242 =6802.354504 =6800.325613ARCH(9) 1400 9 3405.803 ,6791.447613 ,6789.415798ARCH(10) 1400 10 3409.187 ,6796.183798 ,6794.149054GARCH(1,"1) 1400 2 3425.365 ,6844.712808 ,6842.701326

下面提供了恒定和非恒定状况的AICc表。请留神,从ARCH 1到ARCH 8 的AICc缩小,而后在ARCH 9和ARCH 10中AICc减少。为什么会产生?示意咱们须要查看模型的收敛性,在前7种状况下,R中的输入给出“绝对函数收敛”,而ARCH 9和ARCH 10具备“假收敛”。当输入蕴含False收敛时,该模型的预测能力值得狐疑,咱们应该从抉择中排除这些模型;只管GARCH 1,1的AICc也最低,然而该模型被谬误地收敛,因而被排除在外。 ARCH 8是所选模型。

此外,咱们在剖析中还包含ARCH 0 ,因为它能够用作查看是否存在任何ARCH效应或残差是否独立。

执行ARCH / GARCH模型的R代码:

loglik08=logLik(arch08)summary(arch08)

留神,R不容许q = 0的阶数,因而咱们无奈从R 取得ARCH 0的对数似然  ;然而咱们须要通过公式进行计算:−.5 N 1 + log 2 pi mean(x) 2
N:相差后的观测次数N = n – d
X:在此思考的数据集状况,残差
ARCH 8的输入:

Call:Model:GARCH(0,8)Residuals: Min 1Q Median 3Q Max-4.40329 -0.48569 0.08897 0.69723 4.07181Coefficient(s): Estimate Std. Error t value Pr(>|t|) a0 1.472e-04 1.432e-05 10.282 < 2e-16 ***a1 1.284e-01 3.532e-02 3.636 0.000277 ***a2 1.335e-01 2.839e-02 4.701 2.59e-06 ***a3 9.388e-02 3.688e-02 2.545 0.010917 *a4 8.678e-02 2.824e-02 3.073 0.002116 **a5 5.667e-02 2.431e-02 2.331 0.019732 *a6 3.972e-02 2.383e-02 1.667 0.095550 .a7 9.034e-02 2.907e-02 3.108 0.001885 **a8 1.126e-01 2.072e-02 5.437 5.41e-08 ***\-\-\-Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Diagnostic Tests:Jarque Bera Testdata: ResidualsX-squared = 75.0928, df = 2, p-value < 2.2e-16Box-Ljung testdata: Squared.ResidualsX-squared = 0.1124, df = 1, p-value = 0.7374

除第六个参数外,所有参数的p“值均小于0.05,表明  它们具备统计学意义。此外,Box” Ljung测验的p“值大于0.05,  因而咱们不能回绝自相干的假如残差的值不同于0。因而该模型足以示意残差。
残缺的ARCH 8模型:
ht = 1.472e-04 +1.284e-012t“ 1 +1.335e-012t” 2 +9.388e-022t“ 3 + 8.678 e-022t“ 4 + 
5.667e-022t” 5 +3.972e-022t“ 6 +9.034e-022t” 7 +1.126e-012t“ 8

ARIMA-ARCH / GARCH

 在本节中,咱们将比拟ARIMA模型和组合的ARIMAARCH / GARCH模型的后果。如前所述,Apple Log价格序列的ARIMA和ARCH模型别离为ARIMA 2,1,2)和ARCH 8)。此外,咱们还将查看Minitab的后果,并将其与R 的后果进行比拟。请记住,在将ARIMA拟合所需的差分序列时,R将排除常数。因而,咱们先前从R生成的后果是ARIMA 2,1,2),没有常数。应用预测函数,依据ARIMA 2,1,2)对系列进行1步预测

Point Forecast Lo 95 Hi 951402 6.399541 6.353201 6.445882

ARIMA(2,1,2)– ARCH(8)的残缺模型:


下表总结了所有模型,并在Excel中编辑和计算了点预测和预测区间:

      95% Confident interval    Model  Forecast  Lower  Upper  Actual ARIMA(2,1,2) in R  6.399541 6.353201 6.445882 6.354317866 ARIMA(2,1,2) in Minitab (constant)  6.40099 6.35465 6.44734   ARIMA(2,1,2) in Minitab (no constant)  6.39956 6.35314 6.44597   ARIMA(2,1,2) + ARCH(8) in R  6.39974330  6.35340330  6.44608430    ARIMA(2,1,2) in Minitab (constant) +ARCH(8)  6.40119230  6.35485230  6.44754230    ARIMA(2,1,2) in Minitab (no constant) +ARCH(8)  6.39976230  6.35334230  6.44617230

 将对数价格转换为价格,咱们取得原始序列的预测:
 

      95% Confident interval    Model  Forecast  Lower  Upper  Actual ARIMA(2,1,2) in R  601.5688544  574.3281943  630.1021821  574.9700003 ARIMA(2,1,2) in Minitab (constant)  602.4411595  575.1609991  631.0215411    ARIMA(2,1,2) in Minitab (no constant)  601.5802843  574.2931614  630.1576335    ARIMA(2,1,2) + ARCH(8) in R  601.6905666  574.4443951  630.2296673    ARIMA(2,1,2) in Minitab (constant) +ARCH(8)  602.5630482  575.2773683  631.1492123    ARIMA(2,1,2) in Minitab (no constant) +ARCH(8)  601.7019989  574.409355  630.28513

2012年7月25日苹果公布了低于预期的收益报告,此布告影响了公司股价,导致该股票从2012年7月24日的600.92美元跌至2012年7月24日的574.97美元。公司公布侧面或负面新闻时,这是常常产生的意外危险。然而,因为理论价格在咱们95%的置信区间内并且十分靠近上限,因而咱们的模型仿佛能够胜利预测该危险。

须要留神的是,ARIMA(2,1,2)的95%置信区间比ARIMA(2,1,2)– ARCH(8)组合模型的置信区间宽。这是因为后者通过剖析残差及其条件方差(随着新信息的呈现而受到影响的方差)来反映并纳入股价的近期变动和稳定。
那么如何计算ARCH(8)的条件方差ht?
•生成1步预测,100步预测,预测图:

forecast212step1=forecast(arima212,1,level=95)

•计算ht,条件方差:

ht.arch08=arch08$fit\[,1\]^2 #应用拟合的第一栏

•生成对数价格,下限和上限95%的图

plot(log.appl,type='l',main='Log Apple,Low,High')lines(low,col='red')lines(high,col='blue')

为了计算ht,咱们首先在一列中列出模型的所有参数,而后查找与这些系数关联的残差,将这些残差平方,将ht系数乘以残差平方,而后对这些数字求和以得出ht。例如,要预计点1402(咱们的数据集有1401个观测值),咱们须要最初8天的残差,因为咱们的模型是ARCH(8)。以下是生成的表:
 

      ht coeff  res  squared res  ht components const  1.47E-04                   1.47E,04 a1  1.28E-01 ,5.18E,03  2.69E,05  3.45E,06 a2  1.34E-01 4.21E,04  1.77E,07  2.37E,08 a3  9.39E-02 ,1.68E,02  2.84E,04  2.66E,05 a4  8.68E-02 1.25E,02  1.57E,04  1.36E,05 a5  5.67E-02 ,7.41E,04  5.49E,07  3.11E,08 a6  3.97E-02 8.33E,04  6.93E,07  2.75E,08 a7  9.03E-02 2.92E,03  8.54E,06  7.72E,07 a8  1.13E-01 9.68E,03  9.37E,05  1.05E,05          ht  2.02E,04

为了如上所述预计混合模型的1步预测和95%置信区间,咱们应用从R或Minitab取得的ARIMA预测,而后将ht增加到ARIMA预测中。记录对数价格和条件方差:
•条件方差图胜利反映了整个工夫序列的波动性•高波动性与股价暴涨的期间密切相关

价格的95%预测间隔:

 对模型的最终查看是查看ARIMA-ARCH模型的残差的QQ图,即et =t/ sqrt(ht)=残差/ sqrt(条件方差)。咱们能够间接从R计算出来,而后绘制QQ图以查看残差的正态性。以下是代码和QQ图:

qqline(archres)

该图表明,残差仿佛大抵呈正态分布,只管有些点不在直线上。然而,与ARIMA模型的残差相比,混合模型的残差更靠近正态分布。
 

论断

 
时域办法是剖析金融工夫序列的有用办法。基于ARIM-ARCH / GARCH模型的预测中有一些须要思考的方面:
首先,ARIMA模型专一于线性剖析工夫序列,并且因为新信息的存在,它无奈反映最近的变动。因而,为了更新模型,用户须要合并新数据并再次预计参数。ARIMA模型中的方差是无条件方差,并且放弃恒定。ARIMA实用于安稳序列,因而,应变换非安稳序列(例如对数变换)。
此外,ARIMA通常与ARCH / GARCH模型一起应用。ARCH / GARCH是一种测量序列波动性的办法,或更具体地说,是对ARIMA模型的噪声项建模的办法。ARCH / GARCH联合了新信息,并依据条件方差分析了序列,用户能够应用最新信息来预测将来价值。混合模型的预测区间比纯ARIMA模型的预测区间短。


最受欢迎的见解

1.在python中应用lstm和pytorch进行工夫序列预测

2.python中利用长短期记忆模型lstm进行工夫序列预测剖析

3.应用r语言进行工夫序列(arima,指数平滑)剖析

4.r语言多元copula-garch-模型工夫序列预测

5.r语言copulas和金融工夫序列案例

6.应用r语言随机稳定模型sv解决工夫序列中的随机稳定

7.r语言工夫序列tar阈值自回归模型

8.r语言k-shape工夫序列聚类办法对股票价格工夫序列聚类

9.python3用arima模型进行工夫序列预测