90-预测分析-R语言实现-时间序列1

Python019

90-预测分析-R语言实现-时间序列1,第1张

时间序列(time series)是随机变量Y 1 、Y 2 、……Y t 的一个序列,它是由等距的时间点序列索引的。

一个时间序列的均值函数就是该时间序列在某个时间索引t上的期望值。一般情况下,某个时间序列在某个时间索引t 1 的均值并不等于该时间序列在另一个不同的时间索引t 2 的均值。

自协方差函数及自相关函数是衡量构成时间序列的随机变量在不同时间点上相互线性依赖性的两个重要函数。自相关函数通常缩略为ACF函数。ACF函数是对称的,但是无单位,其绝对值被数值1约束,即当两个时间序列索引之间的自相关度是1或-1,就代表两者之间存在完全线性依赖或相关,而当相关度是0时,就代表完全线性无关。

平稳性:实质描述的是一个时间序列的概率表现不会随着时间的流逝而改变。常用的平稳性的性质有严格平稳和弱平稳两个版本。tseries包的adf.test()函数可以检验时间序列的平稳性,返回的p值小于0.05则表示是平稳的。

白噪声是一个平稳过程,因为它的均值和方差都是常数。

随机漫步的均值是常数(不带漂移的随机漫步),但它的方差是随着时间的变化而不同的,因此它是不平稳的。

自回归模型(Autoregressive models, AR)来源于要让一个简单模型根据过去有限窗口时间里的最近值来解释某个时间序列当前值的想法。

自回归条件异方差模型:ARIMA模型的关键前提条件是,虽然序列本身是非平稳的,但是我们可以运用某个变换来获得一个平稳的序列。像这样为非平稳时间序列构建模型的方法之一是作出一个假设,假设该模型非平稳的原因是该模型的方差会以一种可预见的方式随时间变化,这样就可以把方差随时间的变化建模为一个自回归过程,这种模型被称为自回归条件异方差模型(ARCH)。加入了移动平均方差成分的ARCH模型称为广义自回归条件异方差模型(GARCH)。

任务:预测强烈地震

数据集:2000-2008年期间在希腊发生的强度大于里氏4.0级地震的时间序列。

不存在缺失值。

将经度和纬度之外的变量转换为数值型。

从图上可以看出,数据在30次左右波动,并且不存在总体向上的趋势。

通过尝试多个不同的组合来找到最优的阶数参数p,d,q,确定最优的准则是使用参数建模,能使模型的AIC值最小。

定义一个函数,它会针对某个阶数参数拟合出一个ARIMA模型,并返回模型的AIC值。如果某组参数导致模型无法收敛,就会产生错误,并且无法返回AIC,这时需要人为设置其AIC为无限大(InF)。

调用函数,选取最合适的模型。

然后找出最优的阶数参数:

得到最合适的模型为ARIMA(1, 1, 1)。再次使用最优参数训练模型。

使用forecast包预测未来值。

带颜色的条带是预测的置信区间,蓝色线表示均值,结果表示在后续的10个月里,地震的数量会有小幅增加。

检查自相关函数:

ACF绘图:虚线显示了一个95%的置信区间,特定延迟对应的ACF函数值如果处于该区间内,就不会被认为具有统计显著性(大于0)。这个ACF轮廓表明,针对本数据集,简单的AR(1)过程可能是一种合适的拟合方式。

PACF为偏自相关函数,是将时间延迟K的PACF定义为在消除了小于K的延迟中存在的任何相关性影响的情况下所产生的相关性。

由第一个方程解得:x=0,或λ=-1, ①x=0,由第三个方程得到y=±2 ②将λ=-1代入第二个方程解得:y=0 由第三个方程得到x=±1 所以有四组解:(0,2)、(0,-2)、(1,0)、(-1,0)

DCC-GARCH(DynamicConditional Corelational Autoregressive Conditional Heteroscedasticity Model)用于研究市场间 波动率 的关系。

接下来我们按照GARCH族模型的发展历程来梳理一遍

研究对象:波动率的时间序列,即研究当期波动率与上一期波动率之间的关系。常用于存在波动急剧现象的时间序列,最简单关系的就是线性方程,即:

ARCH和GARCH的含义一样,第一个方程称为均值方程,表示均值和以往均值的关系,第二个方程是条件方差方程,称为ARCH方程,一个表示方差和以往方差的关系。GARCH可以减少待估参数,即AR(q)等价于GARCH(1,1),实际应用中GARCH(1,1)一般可以满足要求。

两个模型要求(1)xt平稳;(2)ut存在arch效应

(1)只有xt平稳,我们才可以从当前状态推导出未来的趋势,如果不平稳,根据当前数据计算出来的东西对未来没有任何意义,两个变量间的相关性不一定真实(伪回归问题)。平稳性展开可以讲很多东西( 如何深入理解时间序列分析中的平稳性?—知乎 ),这里先大致说一下平稳性的数学推导和软件实现。

第二个方程除了要求平稳,还要求系数均大于0(这样才能保证方差的非负性)

(2)ARCH效应的检验有两种方法:Ljung-Box Q检验和arch-LM检验

所谓ARCH效应即残差的异方差性,表现为残差平方项(ut^2)存在自相关,Q检验是直接看自相关系数(p=0存在arch效应),LM检验是看方差方程的系数是否全部为零(p=0存在arch效应)。

Eviews中,做完xt的自回归后,在view下的residual test 可以找到 Qstatistic 和 serial correlation LM test;stata中,Q检验要先搞出来残差序列,命令为:predict r, residual, 然后做自相关Q检验:corrgram r^2,LM检验是做完xt的自回归后,输入命令:estat archlm, lags(p)

(3)有的文献会检验残差的自相关性,看看均值方程是否已经消除了xt的自相关性。

ARCH和GARCH的软件实现

stata: (GARCH(1, 1)): arch xt, arch(1) garch(1)

个人而言,我比较喜欢用stata做ARCH和GARCH

(1)TGARCH称为门限ARCH模型,表示利好消息和利空消息对条件方差的影响不同。

EGARCH,GJR-GARCH,APARCH也是考虑杠杆效应的GARCH衍生模型.

(2)ABSGARCH称为绝对值ARCH模型,把ut^2换成ut的绝对值,减小了ut的幅度

(3)IGARCH称为方差无穷GARCH模型,把GARCH的两个参数合为一个参数,简化了计算

(4)GARCH-M称为均值GARCH模型,在均值方程中加入了一个方差变量,主要是因为风险越大投资回报率越大

……

单变量的GARCH用来分析序列的波动集聚特征,多变量的GARCH用来分析不同序列间的波动是否相关,有多么相关。

所谓多元。就是把原来的一个序列拓展成为包括多个序列的矩阵,于是方差序列也随着拓展成为协方差矩阵(Ht),如何算出矩阵方程的参数这种高深的数学问题不是我等学术菜鸟目前可以解决的问题,我们比较关心怎么用。

按照多元GARCH模型的提出时间,依次是:CCC(1990)、BEKK(1995)、DCC(2001)。DCC的估计包括两个步骤:

DCC的结果中,系数a+β<1说明模型稳定,即动态相关关系有效。a表示残差对不同序列方差相关系数的影响程度,用经济语言来说就是新信息对市场波动相关性的影响程度;β表示以往市场波动相关对现在市场波动相关的影响程度,即市场波动相关性的持续程度。

另外就是看条件动态相关系数图,结合实际情况做出合乎经济学理论的解释。

DCC模型估计完参数后,还要进行假设检验,检验动态相关系数和常相关系数是否有显著差异。(stata的命令为:test _b[Adjustment:lambda1]=_b[Adjustment:lambda2])可以参考论文: DCC-MVGARCH模型计算方法研究及在金融市场中的应用

GARCH常常和Copula函数结合,Copula-GARCH和DCC-GARCH的功能类似,都是看不同市场间的相关性。

1.  R程序包 有几个DCC的实现,需要研究一下文档。

2. Matlab可以用Kevin Sheppard的Matlab  MFE toolbox ;

3. Eviews是菜单式操作,可以实现单序列的garch,不知道能否做多元arch;

4. stata