本篇主要讲解AR,ARMA,ARIMA等传统时间序列模型,包括具体代码操作。并附讲时间序列的一些基础知识点,如果有基础的可以直接跳到模型部分。
1. 时间序列的平稳性
1.1 自协方差、自相关函数
自协方差,指不同时点的变量之间的协方差
自相关函数(autocorrelation function)ACF。自相关函数是指不同时点的变量之间的相关性。
1.2 平稳性定义
通俗理解一下时间序列的平稳性。
平稳可以理解为性质平移不变。时间序列分几种情况,第一种是纯白噪音序列,这个时候就没有分析的必要了。第二种是平稳序列,我们为什么要研究时间序列,就是希望从历史数据中获得一些信息能够用于未来,而平稳代表了某种程度上的时间平移不变性,如果时间序列的性质随着时间的偏移,发生了很大的变化,那么学习历史数据意义就不大了(其实也不是,也有其他办法,但是现在只说传统的时间序列分析)
第三种是非平稳时间序列,非平稳的就可以通过一些操作对序列进行平稳化
严平稳
“强平稳过程: 对于任意的和任意的以及所有可能的k,当的联合分布与的相同时,是强平稳
”
严平稳就是时间序列的严格独立于时间,任何阶矩都不受时间影响
弱平稳
“弱平稳过程:给定一个二阶矩过程,当它满足下列要求
1.对于任意t,=C (常数)
2.对于任意t,协方差函数
”
弱平稳就是时间序列的均值和所有的自协方差都不受时间影响
两者关系
1.一个严平稳过程不一定是弱平稳过程,一个弱平稳过程也不一定严平稳过程。
2.一阶矩和二阶矩存在时,强平稳过程是弱平稳过程,反过来不成立
3.弱平稳的高斯过程一定是强平稳的(正态分布由均值和协方差唯一确定)
“关于强平稳和弱平稳的差别:
- 强平稳是事实上的平稳(同分布);
- 弱平稳是统计量在观测意义上的平稳(均值、方差)。
引自:知乎:傅渥成
https://www.zhihu.com/question/21982358
”
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'])
3.偏自相关
偏自相关图的横坐标表示延迟阶数,纵坐标表示偏自相关系数
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库即可,比较简单,不详述了。
参考
《Forecasting:Principles and Practice》
https://www.statsmodels.org
《应用计量经济学:时间序列分析》