时间序列建模问题,如何准确的建立时间序列模型?

论坛 期权论坛 期权     
秦仪   2018-10-16 00:03   9899   9
新手请教时间序序列建模问题。

这种带趋势的序列是否说明序列是非平稳的??

一阶差分之后的数据如图2:

ACF和PACF图分别为:


看PACF首先想到拿AR(p)建模,由于1,14,15都是显著不为0的,所以考虑建模为:
r(t)=a0+a1*r(t-1)+a14*r(t-14)+a15*r(t-15)


估计出的方程为:
r(t)= 3519.5907+0.8386*r(t-1)+0.2275*r(t-14)-0.1633*r(t-15)


所有的特征根模都大于1,又说明该模型是平稳的?


对该模型的残差使用Ljung-Box进行检验,p值为0.7多,说明该模型不充分。


在此我陷入了一个怪圈,很凌乱,存在趋势的模型是否说明是非平稳的?如果是,为何建立的AR模型又证明是平稳的?
请问,时间序列分析中如何能做到建立合适的模型?
即我为什么要使用AR,MA,ARMA,ARIMA..等等模型,使用的场景如何确定呢?可以直观的通过图像确认或ACF,PACF,AIC这些确认吗?
如何选择出好的模型呢?

谢谢!
分享到 :
0 人收藏

9 个回复

正序浏览
9#
张帅帅  2级吧友 | 2018-10-16 00:03:47 发帖IP地址来自
看了下大家的答案,主要是集中在用AR和MA使不平稳变平稳这方面来提高拟合度。
还想补充一点就是关注序列的均衡性,波动分布的是否平均,是否存在“成群效应”(例如季节、重大节日等时间阶段有可能存在异常),如果是的话用单位根检验进一步确认后,用协整方程使之均衡。
8#
Eli Jiang  2级吧友 | 2018-10-16 00:03:46 发帖IP地址来自
应该涵盖了最常用的时间序列模型了,ARIMA-GARCH的建模过程:
1、根据输入的时间序列的散点图,做一定的数据变换,例如BOX-COX变换。
2、根据样本ACF、PACF来判断数据是否需要一定的差分,检验转换和差分后数据的平稳性。如果1步转换完的数据有单位根(通过单位根检验来判断)则差分至数据没有单位根为止,记d为差分次数。
3、根据差分数据的ACF、PACF以及EACF来判断差分后ARMA模型的阶数,记此时的模型为ARIMA(p,d,q).
4、3步阶数的确定也可以通过AIC、BIC、HQ准则来确定,当然是在ACF、PACF没有明显的误判的情况下。
5、估计该ARIMA(p,d,q)模型。
6、画出上述模型残差的ACF、PACF或者还有Q-Q图来判断残差是否有明显的自相关性,如果没有,ARIMA的阶数和差分数基本就定了。
7、用ARIMA对条件均值建模后,残差平方用ACF、PACF图来判断是否有自相关性,或者用拉格朗日乘子检验来判断是否有ARCH效应。
8、用上述ACF、PACF图来确定GARCH部分的阶数。
9、用QMLE来对ARIMA-GARCH建模和估计。
10、看ARIMA-GARCH的残差,以及残差平方的ACF、PACF图。
11、用Ljung-Box, Mcleod-Li test 来检验模型。
7#
Zheng Jiansen  3级会员 | 2018-10-16 00:03:45 发帖IP地址来自
直接上Recurrent Neural Network.. 逃(
6#
想飞的猫  3级会员 | 2018-10-16 00:03:44 发帖IP地址来自
一: 平稳性判定。在建模前,决定数据预处理步骤。
  • 序列图存在明显的周期性或趋势性。
  • 序列图无明显的周期性或趋势性,查看自相关系数:
  • 若自相关系数很快衰减到0,则序列平稳,同时随机性不强。(k阶截尾表示X(t)与X(t-k)含有一定的关系:短期自相关,k要尽可能小)
  • 若自相关系数一开始便始终处于2倍标准差内波动,则序列平稳,同时具有较强随机性。
  • 若自相关系数长期为同一符号,则具有一定趋势性。
  • 若自相关系数呈三角函数曲线变化,则有一定周期性。


二: 纯随机性检验。
  • 使用ACF和PACF并观察图像,但两者均只考虑是否存在某一特定滞后阶数的相关:
  • 采用ACF和PACF指标对模型定阶并无统一标准,主观性成分居多同时不好程序化
  • 因此,多采用AIC、BIC等统计量对模型定阶。即,采用枚举的方法拟合所有模型,而后分别计算AIC,选取具有最小AIC的模型即可
  • LB检验是基于一些列滞后阶数,判断序列总体的相关性或者随机性是否存在:
  • 建模前,判断原始序列是否具有随机性,若随机则无法分析,若不随机则开始建模。
  • 建模后,判断残差是否随机,对于方差齐性假设的ARIMA模型,如果残差随机则表示模型已提取全部相关组分,模型有效,若不随机则模型无效。


三: ARMA(p,q)模型的平稳性由AR部分决定,可逆性由MA部分决定:
  • AR(p)模型讲求平稳性,引出偏自相关系数。给定X(t-1),.....,X(t-k+1)的情况下,考察X(t)和X(t-k)的关系。AR(p)模型自相关系数拖尾,偏相关系数p阶截尾。
  • MA(q)模型讲求可逆性。MA(q)模型自相关系数q阶截尾,偏自相关系数拖尾。
  • ARMA(p,q)自相关系数不截尾,其可以转化为无穷阶MA模型(传递形式),同时偏自相关系数不截尾,其可以转化为无穷阶AR模型(逆转形式)。
  • 若自相关系数拖尾,偏自相关系数拖尾,则可以采用ARMA模型拟合。


四: ARIMA(p,d,q)模型是指d阶差分后自相关最高阶数为p,表示为自回归项(AR模型部分),移动平均项最高阶数为q的模型(MA模型部分)。


五: 个人总结:
  • 时序模型在分析之余,略有点“套”的嫌疑,尤其是自相关系数与偏相关系数均不太稳定时,ARIMA模型建模尤其如此。正如回归分析采用枚举的方法找最大相关因子一样,目前所接触的统计方法中大抵如此。
  • 直观上,通过ACF和PACF定阶存在一定困难,不会理论上完美截尾。有理论证明,当样本容量n充分大时,样本自相关系数与样本偏自相关系数近似服从正态分布。因此自相关系数与偏自相关系数需满足2倍标准差范围。
  • 个人认为无必要刻意去追求构建ARIMA模型,只需将差分后的序列视作一个时间序列,了解它的内涵,预测时有所注意即可。
  • 方差齐性假设采用ARIMA模型,异方差则采用GARCH模型。但建模前后均要LB检验模型是否符合原假设。


六: 实战:《Matlab Garch Toolbox.pdf》—— 单变量金融时序建模。
  • 数据预处理:ascii2fts读取ascii2文件ibm95xxx.dat,并将其转化为金融时序对象ftsObj。2、ftsObj.X提取ftsObj中的某一列X,并使用fts2mat将其转换为矩阵向量Y。
  • 定性查看序列相关性:收盘价Y必然不平稳,使用price2ret对其进行连续复利差分,将其转化为收益率Z。此处,对价格序列取对数做差分有2点解释,但两者是内在一致的:连续复利(取对数)作差分(价格转化为收益率);异方差消除(取对数)作差分(非平稳转平稳)。使用autocorr和parcorr对收益率Z进行查看,观察ACF和PACF指数,通查发现该序列是纯随机的,ACF和PACF直接截尾,无任何相关性。但无相关性并不代码序列独立,对收益率Z取平方,发现该Z^2的ACF和PACF具有相关性。(若截尾,则Z^2平稳,若拖尾,则可能仍未平稳。)GARCH模型的研究对象之一就是原始序列不相关但不独立的序列,因为对其进行某些变化后,原始序列的变换或许会存在相关性。
  • 定量检测序列相关性
    3.1 相关性的假设检验,例如LBP Q检验和Engles's ARCH检验。(说明文档对这一块论述有误!)
          3.1.1 lbqtest实现LBP Q检验看序列间是否真的有随机性。因为Q检验的虚无假设为残差序列间对于一个固定的滞后水平无自相关性,备择假设为存在某些自相关系数非零,所以经常用于建模后残差检验。但由于GARCH(1,1)默认收益率为一个常数与一个纯随机残差的和,所以此时也能作为建模前的检验。Q检验统计量服从一个渐进的卡方分布。
         3.1.2 archtest实现了Engle's test去探测ARCH效应。虚无假设为序列间无ARCH效应,即残差序列无条件异方差性,备择假设为存在一个特定滞后水平的ARCH模型来描述残差的平方项。(所以archtest在示例中没有看平方项)Engle's test统计量服从一个渐进的卡方分布。
         3.1.3 简言之,如果上述两类检验在0.05的置信度上经过10,15,20滞后水平,lbqtest检验该序列是否有自相关性,是否有可能采用GARCH建模,0表示无可能,1表示有可能。而archtest检验则是直接看该序列是否可以采用GARCH建模,0表示不可以,1表示可以(即在1~lags水平上残差存在ARCH效应,存在不为0建模参数)。故采用archtest较为直观和简洁,不易犯错,注意是残差序列是否具有ARCH效应。因为ARCH检验的是残差是否属于异方差。
    3.2 注意:
         3.2.1 在GARCH(1,1)模型中可以对(序列-序列均值)进行检验。因为 y(t) = C + e(t),所以预测误差e(t) = y(t) - C,此时C即为y(t)的均值。
         3.2.2 正确理解大数定理与中心极限定理。同时,因为任何检验分布的统计方法只能有把握得出“数据不服从某种分布”的结论,而没法说“经检验,数据服从某分布”——零假设可以有很多种,比如我们可以检验出数据不服从正态分布,不服从指数分布,不服从某t分布,等等,唯独不能得出结论说数据服从某分布,很可能最后的结果是“不能拒绝数据服从某Poisson分布、不能拒绝爱尔兰分布、不能拒绝……”。
  • 参数估计
  4.1 模型参数估计。使用garchfit对原始回报序列进行拟合,它使用ARMAX定义条件均值,使用GARCH,EGARCH或GJR定义条件方差,参数估计的过程在于使用最大似然法对残差的推断。若只将回报序列作为残差输入,则仅采用默认的GARCH(1,1)模型+高斯分布假定残差进行建模。
4.2 参数查看。使用garchdisp函数列表查看各参数与参数估计的标准误差,同时还可以使用garch11grid查看在最优LLF下各Gi和Aj的关系。
5.  估计后处理
     5.1 使用garchplot,对比innovation(预测误差),条件标准差和回报序列。预测误差和汇报序列通常具有较强的集群性。
     5.2 画图并比较标准化预测误差的相关性(标准化: 预测误差 / 条件标准差)
标准化后的预测误差通常集群性大大降低,同时标准化受预测误差平方的自相关系数autocorr非常低,通常没有相关性。若此时将该自相关系数与原始回报序列平方的自相关系数相比,该GARCH模型已经充分提取了原始回报序列的自相关性。
     5.3 量化并比较标准化预测误差的相关性
6. 模型定义
若需要采用更复杂的模型对回报序列进行建模,需要定义模型结构,并将定义后的结果作为参数传入到garchfit中。
(1)使用garchset对模型结构参数完全定义。
(2)使用garchget对定义的模型结构进行索引查看。
(3)对定义的模型结构使用域操作符。
7. 使用定义的模型做参数估计、模拟和预测
  7.1 参数估计:garchfit
  7.2 模型预测:garchpred,采用最小均方误差,默认预测单期。
  7.3 使用蒙特卡洛路径模拟:garchsim。可以将garchsim看作是一个过滤器,可以使用它从一个白噪声输入的序列中生成一个可能的相关回报序列。即输入一个白噪声序列,它能使用fit出的模型模拟出相对应的innovations(预测误差),条件标准差和回报序列。初始白噪声序列会发生衰减。
  7.4 使用garchinfer,推断sim模拟回报序列所对应的预测误差和条件标准差,同时可以与garchsim出来的结果进行比照。直接通过最大似然法从回报序列中进行推断。两者的差分体现的是由推断所引入的瞬时效应。
8. 实战总结
  8.1 在时序数据分析中,MATLAB工具盒中的lbqtest检验和archtest都是对残差的检验。前者主要用于建模后的检验,目的是检查所建立的ARMAX模型是否对规律性提取完全(趋势性或季节性),若提取完全,则残差应当是纯随机白噪声的,若提取不完全,残差间仍具有相关性。此时,要么重新建立ARMAX模型,要么做残差自回归建模,即将残差再用时序模型建立一次。而后者,个人理解也应当是建立时序模型后对残差进行检验,毕竟ARCH模型提出的原因就是作者在研究英国通胀时发现无论怎么ARMAX建模都无法很好的预测,最后发现残差是异方差才建立了ARCH模型,由它的经验中我们可以知道,实际上作者本人也是建模之后才发现有ARCH效应的。所以我认为Benlaron的说法是合理的,需要先建模,再看建模后的残差序列。
     8.2 针对MATLAB GARCH TOOLs的说明文档,请注意它采用lbqtest 和archtest检验时的大前提,即假设收益率序列为GARCH(1,1)模型,其中条件均值模型为: Y(t) = C + e(t),在这个大前提下,示例使用了 y - mean(Y)对e(t)来进行检验,mean(Y)就是对C的估计,可以看到,它确实是对建模后残差进行检验的。但为啥lbqtest用了平方,而archtest没有呢,从archtest的help中我们知道,archtest是对输入的残差项的平方检查是否可以建立ARCH(lags)模型,而lbqtest则就是检查输入的残差项是否具有自相关性。同时,我认为说明书中关于archtest检验方法的H0假设说明有误!
     8.3 对于通常的时序序列建模,应该首先考虑是否可以使用常规ARMAX模型,若建模后残差具有自相关性,则需要残差自相关建模,若具有显著异方差性,即ARCH效应,则采用GARCH建模。
5#
匿名用户   | 2018-10-16 00:03:43 发帖IP地址来自
提示: 作者被禁止或删除 内容自动屏蔽
4#
Faaany  1级新秀 | 2018-10-16 00:03:42 发帖IP地址来自
1. 带趋势的序列一定是非平稳的。平稳序列的时序图一般是会在某个常数值附近随机波动,而且波动的范围有边界。
2. 证明序列是否为平稳序列有两种方法,一种就是上面说的图像法,另一种是单位根检验,比如ADF test。
3. 时间序列的建模过程一般是这样的:首先要判断序列的平稳性,对于非平稳性的序列可以进行差分或者去趋势和季节效应,转变成平稳性序列,接下来对平稳性序列进行arma建模,建模首先是看自相关系数和偏相关系数的特征,对模型定阶,然后估计模型中的未知参数,最后对模型的残差进行白噪声检验以确定模型。如果有多个模型都通过检验,那就运用aic和sbc对模型进行删选,选值小的。
4. 想要提高模型的拟合程度,我觉得应该结合确定性分析和随机性分析两种方法,以充分提取观察序列中的有效信息。
3#
李怀俊  2级吧友 | 2018-10-16 00:03:40 发帖IP地址来自
刚学过时间序列分析,过来说一点:直观根据acf、pacf的图确定模型的阶数,有太多的个人主观因素的影响,不确切。
而aic和sbc似乎比较适合后期模型优劣的比较,不合适定阶使用。
上面那位介绍的很好,如果我早看到,说不定期末还能多考两分呢
2#
Guadalupe  1级新秀 | 2018-10-16 00:03:39 发帖IP地址来自
存在趋势的序列都是非平稳的,AR等一系列模型是必须建立在平稳的基础上才有意义…一般时间序列建模的流程是:去除确定性因素(趋势还有季节性),然后对剩下的随机因素进行平稳性检验,检验通过之后进行arima建模,具体的阶数你可以用acf,pacf来确定,比较方便的是R里面的auto.arima直接定阶…然后进行模型的拟合与预测…最后就是对残差进行arch效应检验,如果有arch效应,就进一步用波动率模型进行建模…总的来说就是确定性因素的分解—随机因素的均值建模—波动率建模。
1#
frank hu  4级常客 | 2018-10-16 00:03:38 发帖IP地址来自
题主的时间序列理论基础还并不充足,建议多搜集一些系统知识学习一下。

关于AR,MA,ARMA等模型应该怎么选
要注意对于这几个模型的选择绝对不是IC谁高就选谁。正确的流程:1)根据acf和pacf的特点进行选择。比如题主的图acf缓慢下行,而pacf只有一个lag significant,这样对应的model是AR,相反如果pacf decays而acf cuts off,你就该去选MA。每个model都有对应的acf,pacf的特点,根据对应的特点细节去选model,选lag,增加sessional ar ma,验证残差等等。2)在1)的基础上选出的可能性的model中,用IC和残差的表现来选一个最好的,这时候才用到IC。不谈1)来谈IC没有意义。其中还有很多需要注意的点建议题主自己搜索学习一下。

第二点:
有trend代表一定不stationary,但这并不影响模型,在去除趋势项后,一个时间序列依然可以稳态,这个叫做trend stationary,因此即使有trend,依然可以使用ar等模型来model。

所以不考虑VAR,VECM系统情况下,modelling大致分为以下:
1)model deterministic part
      trend,seasonal effect,break trend
2)unit root test
3)model autocorrelated part
      AR,ARMA,ARIMA……… 7steps
4)model variance
      ATCH GARCH EGARCH TGARCH etc
5)check IGARCH
6)use standardized residual to check mean specification

暂时想起这些
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP