ARIMA
(一)ARIMA解决的问题,为什么选ARIMA进行预测数据序列,优势与不足
时间序列分析分为两大类:频域分析和时域分析,频域分析也称为谱分析,是一种非常有用的纵向数据分析方法;时域分析主要关心从序列值之间的相关关系对时间序列发展规律;
经典的回归模型中,主要是通过回归分析来建立不同变量之间的函数关系(因果关系),以考察事物之间的联系;对于某些变量来说,影响其发展变化的因素太多,或者是主要影响变量的数据难以收集,以至于难以建立回归模型来发现其变化发展规律,此时,时间序列分析模型就显现其优势——因为这类模型不需要建立因果关系模型,仅需要其变量本身的数据就可以建模;
时间序列模型有四种:自回归模型 AR(p)、移动平均模型 MA(q)、自回归移动平均模型 ARMA(p,q)、自回归差分移动平均模型 ARIMA(p,d,q), 可以说前三种都是 ARIMA(p,d,q)模型的特殊形式。
ARIMA是当前时间序列分析中最通用的方法,它是先通过差分运算,把长期趋势、固定周期等信息提取出来,将非平稳序列变为平稳序列后进行分析的过程;
AR模型,本质上说就是n阶差分方程,差分方程的解是数列,当数列收敛时,时间序列就是平稳的,模型就是稳定的。通过了解差分方程解的结构我们可以知道,当且仅当特征方程的根在单位圆内时,差分方程有收敛解。
某些时间序列是依赖于时间t的一组随机变量,构成该时序的单个序列值虽然具有不确定性,但整个序列的变化却有一定的规律性。ARIMA模型实际上就是差分运算与ARMA模型的组合,因为任何一个序列的波动都可以被视为同时受到了确定性因素和随机性因素的综合作用。ARIMA也称为Box-Jenkins模型。
时间序列模型通常适用于做短期预测,即统计序列过去的变化模式还未发生根本性变化。
若导致非平稳的原因是确定的,可以用的方法主要有趋势拟合模型、季节调整模型、移动平均、指数平滑等方法;
如果导致序列非平稳的原因是随机的,方法主要有ARIMA(autoregressive integrated moving average)及自回归条件异方差模型;
优点:
1、模型十分简单,只需要内生变量而不需要借助其他外生变量。
缺点:
1、要求时序数据是稳定的(stationary),或者是通过差分化(differencing)后是稳定的。
2、本质上只能捕捉线性关系,而不能捕捉非线性关系。
3、预测的效果随时期的向前推进而下降。对任意平稳ARMA模型,Y(j)的条件预测随j趋于无穷大。
注意,采用ARIMA模型预测时序数据,必须是稳定的,如果不稳定的数据,是无法捕捉到规律的。比如股票数据用ARIMA无法预测的原因就是股票数据是非稳定的,常常受政策和新闻的影响而波动。
(二)数学语言阐述ARIMA内核逻辑
ARIMA用数学形式表示为:
yt?=μ ?1?yt?1 ... ?p?yt?p θ1?et?1 ... θq?et?q
(三)模型建立的整体步骤与解读
1、ARIMA 模型是在平稳的时间序列基础上建立起来的,因此时间序列的平稳性是建模的重要前提。检验时间序列模型平稳的方法一般采用 ADF 单位根检验模型去检验。
随机过程的特征随着时间变化,则此过程是非平稳的;相反,如果随机过程的特征不随时间而变化,就称此过程是平稳的;
当然如果时间序列不稳定,也可以通过一些操作去使得时间序列稳定(比如取对数,差分),然后进行 ARIMA 模型预测,得到稳定的时间序列的预测结果,然后对预测结果进行之前使序列稳定的操作的逆操作(取指数,差分的逆操作),就可以得到原始数据的预测结果。
严谨的定义: 一个时间序列的随机变量是稳定的,当且仅当它的所有统计特征都是独立于时间的(是关于时间的常量)。
判断的方法:
稳定的数据是没有趋势(trend),没有周期性(seasonality)的; 即它的均值,在时间轴上拥有常量的振幅,并且它的方差,在时间轴上是趋于同一个稳定的值的。均值,方差,自方差与时间无关,数据是稳定的。
通常可以画出时间序列的散点图或折线图,来对所研究的时间序列进行大致的平稳性判断。对非平稳的时间序列,一般取对数处理或进行差分处理,然后判断修正后的数据序列的平稳性。若采取差分的形式,此时进行差分的次数就是ARIMA(p,d,q)模型中的阶数d。在差分运算过程中,阶数并不是越大越好,差分运算的过程是信息加工提取的过程,因此,一般差分次数不超过2次。时间序列数据被平稳化处理后,ARIMA(p,d,q)模型就转化为ARMA(p,q)模型。
2、ARIMA模型有三个参数:p,d,q。
p--代表预测模型中采用的时序数据本身的滞后数(lags) ,也叫做AR/Auto-Regressive项
d--代表时序数据需要进行几阶差分化,才是稳定的,也叫Integrated项
q--代表预测模型中采用的预测误差的滞后数(lags),也叫做MA/Moving Average项
对数据绘图,观测是否为平稳时间序列;对于非平稳时间序列要先进行d阶差分运算,化为平稳时间序列;
经过第二步处理,已经得到平稳时间序列。要对平稳时间序列分别求得其自相关系数ACF 和偏自相关系数PACF,通过对自相关图和偏自相关图的分析,得到最佳的阶层 p 和阶数 q。
这里的 p和q 参数可以调整,然后找出最佳的(AIC最小,BIC最小),经过比较, p=0,q=1 为理想阶数。
ARIMA模型识别的工具为自相关系数(AC)和偏自相关系数(PAC)。
自相关系数:时间序列滞后k阶的自相关系数由下式估计:
其中是序列的样本均值,这是相距k期值的相关系数。称为时间序列的自相关系数,自相关系数可以部分的刻画一个随机过程的形式。它表明序列的邻近数据之间存在多大程度的相关性。
偏自相关系数:偏自相关系数是在给定的条件下,之间的条件相关性。其相关程度用偏自相关系数度量。在k阶滞后下估计偏自相关系数的计算公式为:
其中是在k阶滞后时的自相关系数估计值。称为偏相关是因为它度量了k期间距的相关而不考虑k-1期的相关。如果这种自相关的形式可由滞后小于k阶的自相关表示,那么偏相关在k期滞后下的值趋于0。
识别:
AR(p)模型的自相关系数是随着k的增加而呈现指数衰减或者震荡式的衰减,具体的衰减形式取决于AR(p)模型滞后项的系数;AR(p)模型的偏自相关系数是p阶截尾的。因此可以通过识别AR(p)模型的偏自相关系数的个数来确定AR(p)模型的阶数p。
MA(q)模型的自相关系数在q步以后是截尾的。MA(q)模型的偏自相关系数一定呈现出拖尾的衰减形式。
ARMA(p,q)模型是AR(p)模型和MA(q)模型的组合模型,因此ARMA(p,q)的自相关系数是AR(p)自相关系数和MA(q)的自相关系数的混合物。当p=0时,它具有截尾性质;当q=0时,它具有拖尾性质;当p,q都不为0,它具有拖尾性质。
通常,ARMA(p,q)过程的偏自相关系数可能在p阶滞后前有几项明显的尖柱,但从p阶滞后项开始逐渐趋于0;而它的自相关系数则是在q阶滞后前有几项明显的尖柱,从q阶滞后项开始逐渐趋于0。
3、通过示例数据进行计算,观测相关数据得到:
ARMA(0,1)模型:即自相关图在滞后1阶之后缩小为0,且偏自相关缩小至0,则是一个阶数q=1的移动平均模型;
ARMA(7,0)模型:即偏自相关图在滞后7阶之后缩小为0,且自相关缩小至0,则是一个阶层p=3的自回归模型;
ARMA(7,1)模型:即使得自相关和偏自相关都缩小至零。则是一个混合模型。
AIC=-2 ln(L) 2 k 中文名字:赤池信息量 akaike information criterion
BIC=-2 ln(L) ln(n)k 中文名字:贝叶斯信息量 bayesian information criterion
HQ=-2 ln(L) ln(ln(n))k hannan-quinn criterion
构造这些统计量所遵循的统计思想是一致的,就是在考虑拟合残差的同时,依自变量个数施加“惩罚”。
但要注意的是,这些准则不能说明某一个模型的精确度,也即是说,对于三个模型A,B,C
我们能够判断出C模型是最好的,但不能保证C模型能够很好地刻画数据,因为有可能三个模型都是糟糕的。
我们又如何确定多个合理的模型中的哪个模型的预测效果最好呢?解决这个问题的方法之一是对备选模型进行直接检验。因为序列的未来值未知,所以,可以在检验过程时预先保留一部分观测值。这样,就能用一个较短的数据期检验
来备选模型,然后用非保留期的数据通过备选模型预测保留期的数据,得到预测值序列,再将保留期的数据的预测值和实际值进行比较,进而选择出预测误差较小的模型。
4、模型检验
在指数平滑模型下,观察ARIMA模型的残差是否是平均值为0且方差为常数的正态分布(服从零均值、方差不变的正态分布),同时也要观察连续残差是否(自)相关。
时间序列中一个最基本的模型就是高斯白噪声序列。而对于ARIMA模型,其残差被假定为高斯白噪声序列,所以当我们用ARIMA模型去拟合数据时,拟合后我们要对残差的估计序列进行LB检验,判断其是否是高斯白噪声,如果不是,那么就说明ARIMA模型也许并不是一个适合样本的模型。
一般看最后一列前十二行的检验概率(一般观察滞后1~12阶),如果检验概率小于给定的显著性水平,比如0.05、0.10等就拒绝原假设,其原假设是相关系数为零。就结果来看,如果取显著性水平为0.05,那么相关系数与零没有显著差异,即为白噪声序列。
观察 ARIMA 模型的预测误差是否是平均值为 0 且方差为常数的正态分布,同时也要观察连续预测误差是否自相关。这里正态分布我们用qqlot函数进行检测。
误差是白噪音的时候,model就ok了,就可以预测。
5、预测
模型确定之后,就可以开始进行预测了,python代码实践中我们对未来十年的数据进行预测。
(四)python代码对应相对的模块
详细见arima.py python文件,内涵注释和代码
(五)后续相关投资品种的应用构想和完备工作
1、对有季节周期的期货品种、农作物股票等交易物进行历史测试;
2、计算相关品种(指数、外汇、期权)长周期的预测成功率,行情是否在时空的大尺度下有规律可循?
3、对模型进行完备化处理,包括选择模型的自动优化、机器学习嵌入调参等操作。