作者 | 追光者
本篇主要讲解AR,ARMA,ARIMA等传统时间序列模型,包括具体代码操作。并附讲时间序列的一些基础知识点,如果有基础的可以直接跳到模型部分。
1. 时间序列的平稳性
1.1 自协方差、自相关函数
自协方差,指不同时点的变量之间的协方差
自相关函数(autocorrelation function)ACF。自相关函数是指不同时点的变量之间的相关性。
1.2 平稳性定义
通俗理解一下时间序列的平稳性。
平稳可以理解为性质平移不变。时间序列分几种情况,第一种是纯白噪音序列,这个时候就没有分析的必要了。第二种是平稳序列,我们为什么要研究时间序列,就是希望从历史数据中获得一些信息能够用于未来,而平稳代表了某种程度上的时间平移不变性,如果时间序列的性质随着时间的偏移,发生了很大的变化,那么学习历史数据意义就不大了(其实也不是,也有其他办法,但是现在只说传统的时间序列分析)
第三种是非平稳时间序列,非平稳的就可以通过一些操作对序列进行平稳化
严平稳
强平稳过程: 对于任意的和任意的以及所有可能的k,当的联合分布与的相同时,是强平稳
严平稳就是时间序列的严格独立于时间,任何阶矩都不受时间影响
弱平稳
弱平稳过程:给定一个二阶矩过程,当它满足下列要求
1.对于任意t,=C (常数)
2.对于任意t,协方差函数
弱平稳就是时间序列的均值和所有的自协方差都不受时间影响
两者关系
1.一个严平稳过程不一定是弱平稳过程,一个弱平稳过程也不一定严平稳过程。
2.一阶矩和二阶矩存在时,强平稳过程是弱平稳过程,反过来不成立
3.弱平稳的高斯过程一定是强平稳的(正态分布由均值和协方差唯一确定)
关于强平稳和弱平稳的差别:
- 强平稳是事实上的平稳(同分布);
- 弱平稳是统计量在观测意义上的平稳(均值、方差)。
引自:知乎:傅渥成
1.3 平稳性检验
时序图、自相关图
1.时序图,如果是平稳的,值会围绕一个均值上下波动
2.自相关图
首先回忆一下自相关代表什么,自相关是由自协方差推导来的,平稳序列要求自协方差不受时间影响,只与时间差有关,所以平稳时间序列的自相关图会随着阶数的递增,自相关函数会降到0附近,反之则可能是非平稳时间序列了。
自相关图是一个平面二维坐标悬垂线图。横坐标表示延迟阶数,纵坐标表示自相关系数
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from statsmodels.tsa.stattools import adfuller
import pandas as pd
import numpy as np
#生成均匀分布数据
data = pd.DataFrame()
data['sample'] = np.random.normal(size=100)
plot_acf(data['sample'])
plot_pacf(data['sample'])
adfuller(data['sample'])
image-20201006150028710
3.偏自相关
偏自相关图的横坐标表示延迟阶数,纵坐标表示偏自相关系数
image-20201006150122092
ADF检验
ADF检验全称是 Augmented Dickey-Fuller test,顾名思义,ADF是 Dickey-Fuller检验的增广形式。DF检验只能应用于一阶情况,当序列存在高阶的滞后相关时,可以使用ADF检验,所以说ADF是对DF检验的扩展。
原理
ADF检验就是判断序列是否存在单位根:如果序列平稳,就不存在单位根;否则,就会存在单位根。
ADF检验的原假设是存在单位根,只要adf检验值小于1%水平下的数字就可以显著的拒绝原假设,如果得到的显著性检验统计量小于三个置信度(10%,5%,1%),则对应有(90%,95,99%)的可能性可以拒绝原假设。
数据检验结果是上面那个随机正态分布的检验结果
(-5.90793453239412,
2.6809844949047407e-07,
1,
98,
{'1%': -3.4989097606014496,
'5%': -2.891516256916761,
'10%': -2.5827604414827157},
261.69717899308966)
返回的分别是
- adf
float
The test statistic.- p-value
float
MacKinnon”s approximate p-value based on MacKinnon (1994, 2010).- usedlag
int
The number of lags used.- nobs
int
The number of observations used for the ADF regression and calculation of the critical values.- critical values
dict
置信区间
Critical values for the test statistic at the 1 %, 5 %, and 10 % levels. Based on MacKinnon (2010).- icbest
float
The maximized information criterion if autolag is not None.- resstore
ResultStore
,optional
A dummy class with results attached as attributes.
这里引用一个对ACF和PACF的解释
滞后k自相关系数p(k)时,实际上得到并不是x(t)与x(t-k)之间单纯的相关关系。因为x(t)同时还会受到中间k-1个随机变量x(t-1)、x(t-2)、……、x(t-k+1)的影响,而这k-1个随机变量又都和x(t-k)具有相关关系,所以自相关系数p(k)里实际掺杂了其他变量对x(t)与x(t-k)的影响。为了能单纯测度x(t-k)对x(t)的影响,引进偏自相关系数的概念。对于平稳时间序列{x(t)},所谓滞后k偏自相关系数指在给定中间k-1个随机变量x(t-1)、x(t-2)、……、x(t-k+1)的条件下,或者说,在剔除了中间k-1个随机变量x(t-1)、x(t-2)、……、x(t-k+1)的干扰之后,x(t-k)对x(t)影响的相关程度。
参考:请高手指点自相关函数和偏自相关函数的区别?- 计量经济学与统计软件 - 经管之家(原人大经济论坛)
1.4 去趋势
1.可以使用log函数,将方差随时间增大的时间序列的方差稳定下来,可以将随时间快速增长的趋势转变为线性趋势
2.差分运算,去季节性的话根据季节性的幅度来差分
2. AR
自回归,顾名思义即对变量自身进行的回归,不用x预测y,而是用x预测 x(自己)
定义p阶自回归过程为AR(p)为:
其中为白噪音序列,
AR模型一般用于平稳序列,但序列并不一定是平稳的,所以在使用AR模型前要进行平稳性检验。
2.1 性质
- 若AR模型满足平稳性条件,则他的均值为0
- AR模型的自相关系数是呈复指数衰减– 有拖尾性(拖尾是 ACF 或 PACF 并不在某阶后均为 0 的性质。)
- AR模型的偏自相关系数有截尾性(截尾,就是在某阶后均为0的性质,或者说在等于零的置信区间以内。)
2.2 条件
1.需要具有自相关性,自相关系数越高越好,自相关系数低于0.5则不应该采用AR模型
2.满足平稳性条件
3.适宜预测受历史因素影响大的东西
2.3 定阶
实际应用中,一个AR序列的阶p是未知的,一般利用偏相关函数**。**
AR(p)序列的样本PACF是滞后p阶后截尾的,截尾的阶数即为AR的阶数。
3. MA
MA与AR不同的地方是,MA是历史白噪声的线性组合(MA模型是计算AR部分累积的误差)。MA模型总是弱平稳的。MA模型的自相关系数是q阶截尾的。
其中为白噪音,
找出过去几期的白噪音影响了当前值,没有趋势性
3.1 可逆性
MA模型具有可逆性,AR和MA之间可以互相转换,任何一个AR(p)模型都可以表示为MA(∞),任何一个可逆的MA(q)模型也表示为一个AR(∞)模型。以AR(1)为例子:
4. ARMA
如果序列的偏自相关函数是截尾的,则用 AR 算法;如果序列的自相关函数是截尾的,则用 MA 算法。
如果序列不满足自相关和偏自相关截尾,则可以采用ARMA模型
ARMA顾名思义是将AR(p)和MA(q)模型结合起来的ARMA(p,q)
定义ARMA(p,q)为:
其中为白噪音,,
ARMA也是平稳性限制模型,需要序列平稳才能使用
小结
模型 | 自相关系数 | 偏自相关系数 |
AR(p) | 拖尾 | P阶截尾 |
MA(q) | q阶截尾 | 拖尾 |
ARMA(p,q) | 拖尾 | 拖尾 |
5. 非季节性ARIMA
上述模型都要求时间序列平稳,而ARIMA则是一种应用于不平稳模型的方法
将差分,AR和MA结合起来便是ARIMA
定义ARIMA(p,d,q)为:
:差分序列
p:自回归阶数
d:差分阶数
q:移动平均阶数
代码部分调用python statsmodels库即可,比较简单,不详述了。