python自回归_【时间序列】自回归模型

昵称 | 追光者

研究 | 机器学习与时间序列

出品 | AI蜗牛车

本篇主要讲解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'])

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

p-value

usedlag

nobs

critical values

icbest

resstoreResultStore, 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也是平稳性限制模型,需要序列平稳才能使用

小结

5. 非季节性ARIMA

上述模型都要求时间序列平稳,而ARIMA则是一种应用于不平稳模型的方法

将差分,AR和MA结合起来便是ARIMA

定义ARIMA(p,d,q)为:

:差分序列

p:自回归阶数

d:差分阶数

q:移动平均阶数

代码部分调用python statsmodels库即可,比较简单,不详述了。

参考《Forecasting:Principles and Practice》

《应用计量经济学:时间序列分析》

你可能感兴趣的:(python自回归)