时间序列初级理论篇

****:http://blog.****.net/kicilove/article/
github:https://github.com/zhaohuicici?tab=repositories

前言

一说起时间序列大家并不会陌生。每时刻的甲醛浓度变化、每日股票闭盘价格、共享单车每日租车数等等都可以看做一系列时间点上的观测,在一系列时间点上观测获取的数据也就是我们俗称的时间序列数据。本文主要介绍常见的AR、MA、ARMA、ARIMA平稳时间序列模型以及时间序列常见的数学特征以及时间序列建模的流程,此篇相对来说偏于理论、偏于公式,下篇会给出一个关于时间序列的Python实例。

下面我们通过两幅图来简单看看时间序列的样子。
图一是2000-2016年美国消费者信心指数
图二是某地在某段时间pm2.5的浓度变化情况;
图三是1949年到1960年某地某航空公司每月乘客数。

时间序列初级理论篇
时间序列初级理论篇

时间序列初级理论篇

可以看出来时间序列数据的形状真的是千奇百怪,但是不管怎么样,要想预测好数据还得见招拆招,根据不同的数据特点做不同的检验,选择不同的模型,确定不同的参数。

1. 数学特征

在介绍模型之前,先看看时间序列数据有啥部件需要我们知晓,下面介绍时间序列的数学特征。像一般的随机变量一样,时间序列也有随机变量序列,也有相应的均值、自协方差、方差、期望、相关系数等,只不过这里我们要加上函数俩字,也就是均值函数、自协方差函数、方差函数、期望函数、相关系数函数,之所以加上函数二字,是因为时间序列对应的这些数学特征变成了时间的函数。来看看它们具体的数学表达式(公式是一个一个敲上去的,如果有手误请指正):

1.1 一般随机变量的数学特征

1.1.1 期望

对于连续型随机变量X,有概率密度函数f(x),则定义

E(X)=+f(x)dx

X的数学期望。

对于离散型的随机变量XX的数学期望就是随机变量X的取值与发生概率相乘得到的加和,这个是高中知识就不再赘述。

1.1.2 方差

  1. X施一个随机变量,若 E[XE(X)]2存在,则称E[XE(X)]X的方差,记为D(X)Var(X),即D(X)=Var(x)=E[XE(X)]2

  2. D(X)称为X的标准差;

  3. X是离散型随机变量,则D(X)=k=1[xkE(X)]2pk

  4. X是连续型随机变量,则D(X)=[xE(X)]2f(x)dx

补充:

方差的推导关系:
D(X)
=E[XE(X)]2
=EX22XE(X)+[E(X)]2
=E(X2)2E(X)E(X)+[E(X)]2
=E(X2)[E(X)]2

1.1.3 协方差

E(XE(X))(yE(Y))为随机变量XY的协方差,记为Cov(X,Y)

Cov(X,Y)=E(XE(X))(yE(Y))=E(XY)E(X)E(Y)

1.1.4 相关系数


ρX,Y=Cov(X,Y)D(X)D(Y)

为随机变量XY的相关系数。

1.2 随机变量序列的一些数学特征

类比于随机变量的数学特征,下面是随机变量序列的一些数学特征:

1.2.1 随机变量序列

随机变量序列{yt:t=0,1,2,...}称为一个时间序列模型。

1.2.2 均值函数

ut=E(yt)t=0,1,2,

1.2.3 自协方差函数

γ(t,s)=Cov(yt,ys)=E[(ytut)(ysus)]=E(ytys)utus,t,s=0,1,2,

1.2.4 自相关系数

ρk=Cov(yt,ytk)Var(ytk)Var(yt)

2. 平稳性

2.1 平稳性概念

  1. 平稳性就是要求经由样本时间序列所得到的拟合曲线在未来的一段期间内仍能顺着现有的形态“惯性”地延续下去

  2. 平稳性要求序列的均值和方差不发生明显变化

2.1.1 严平稳与宽(弱)平稳

  1. 严平稳:严平稳表示的分布不随时间的改变而改变。
    01

  2. 弱平稳:期望与相关系数(依赖性)不变
    未来某时刻的t的值Yt就要依赖于它的过去信息,所以需要依赖性

2.1.1.1 弱(宽)平稳时间序列的数学特征

  1. 均值E(Yt)=μ与时间t无关的常数;

  2. 方差Var(Yt)=γ与时间t无关的常数;

  3. 协方差Cov(Yt,Yt+k)=γ0,k只与时间间隔k有关,与时间t无关的常数。

  4. 自相关系数ρk=Cov(yt,ytk)Var(ytk)Var(yt)=Cov(yt,ytk)Var(yt)=γkγ0

2.2 差分法

对于不平稳的时间序列,我们一般会使用差分的方法得到想要的平稳序列,下图是美国消费者信心指数序列,一阶差分和二阶差分后的序列。

绿
时间序列初级理论篇

2.3 其他变换:

除了常见的差分方法外,我们对于特殊的数据也会使用对数变换、幂变换等,用以达到满足模型输入的数据要求。

3. 时间序列影响因素(影响因素的叠加)

  1. 长期趋势Trend:现象在较长时期内受某种根本性因素作用而形成的总的变动趋势;

  2. 循环变动\周期性Cyclic:现象以若干年为周期所呈现出的波浪起伏形态的有规律的变动;

  3. 季节性变化Seasonal variation:现象随着季节的变化而发生的有规律的周期性变动;

  4. 不规则变化Irregular movement:是一种无规律可循的变动,包括严格的随机变动和不规则的突发性影响很大的变动两种类型。

4. 平稳时间序列模型介绍

本部分我们将介绍几个平稳的时间序列模型,包括模型的表达式、模型的限制等等,以更好的了解数据与模型的匹配。

4.1 自回归模型(AR)

  1. 描述当前值与历史值之间的关系,用变量自身的历史时间数据对自身进行预测;

  2. 自回归模型必须满足平稳性的要求;

  3. p阶自回归过程的公式定义:yt=ut+pi=1γiyti+ϵt

  4. yt是当前值 ut是常数项 P 是阶数 γi是自相关系数 ϵ_t是误差

自回归模型的限制:

1.自回归模型是用自身的数据来进行预测;

2.必须具有平稳性;

3.必须具有自相关性,如果自相关系数小于0.5,则不宜采用;

4.自回归只适用于预测与自身前期相关的现象

4.2 移动平均模型(MA)

  1. 移动平均模型关注的是自回归模型中的误差项的累加;

  2. q阶自回归过程的公式定义:yt=u+qi=1θiϵti+ϵt

  3. 移动平均法能有效地消除预测中的随机波动

4.3 自回归移动平均模型(ARMA)

  1. 自回归AR与移动平均MA的结合;

  2. 公式定义:yt=u+pi=1γiyti+qi=1θiϵtiϵt

4.4 ARIMA(p,d,q)模型

  1. 全称为差分自回归移动平均模型(Autoregressive Integrated Moving Average Model,简记ARIMA);

  2. AR是自回归, p为自回归项; MA为移动平均,q为移动平均项数,d为时间序列成为平稳时所做的差分次数,如一阶差分:时间序列在tt1时刻的差值;

  3. 原理:将非平稳时间序列转化为平稳时间序列然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型

4.5 自相关系数(ACF)

  1. 有序的随机变量序列与其自身相比较

  2. 自相关函数反映了同一序列在不同时序的取值之间的相关性

  3. 公式:ACF(k)=ρk=Cov(yt,yt1)Var(yt)

  4. ρk的取值范围为[-1,1]

4.6 偏自相关系数(PACF)

  1. 对于一个平稳AR(p)模型,求出滞后k自相关系数ρk时,实际上得到并不是x(t)x(tk)之间单纯的相关关系;

  2. x(t)同时还会受到中间k1个随机变量x(t1)x(t2)x(tk+1)的影响,而这k1个随机变量又都和x(tk)具有相关关系,所以自相关系数ρk里实际掺杂了其他变量对x(t)x(tk)的影响;

  3. 剔除了中间k1个随机变量x(t1)x(t2)x(tk+1)的干扰之后,x(tk)x(t)影响的相关程度;

  4. ACF还包含了其他变量的影响,而偏自相关系数PACF是严格这两个变量之间的相关性。

4.7 ARIMA(p,d,q)参数确定

模型 ACF PACF
AR(p) 拖尾,衰减趋于零 P阶后截尾
MA(q) q阶后截尾 拖尾,衰减趋于零
ARMA(p,q) 拖尾,q阶后衰减趋于零 拖尾,P阶后衰减趋于零

截尾:落在置信区间内(95%的点都符合该规则)

AR(p)PACF
MA(q)ACF

下图是Python做出的ACF和PACF图:
时间序列初级理论篇

5. ARIMA建模流程

1.将序列平稳(差分法确定d
2. p和q阶数确定:ACF与PACF
3.得到模型ARIMAp,d,q

6. 模型选择AIC与BIC:选择更简单的模型

1.AIC:赤池信息准则(Akaike Information Criterion,AIC

AIC=2k2ln(L)

2.BIC:贝叶斯信息准则(Bayesian Information Criterion,BIC

BIC=kln(n)2ln(L)

其中:k为模型参数个数,n为样本数量,L为似然函数

7. 模型诊断

我们对于某个预想为目标的模型判断是否结果可用,就需要对模型进行诊断,如果诊断不合格,这时候需要重新选择模型,如果模型可用,就可以进行下一步的预测操作,其中模型诊断一般包括两个方面,一个是残差的检验分析,一个是关于模型过度拟合和参数冗余的问题,总体原则是尽量选择简单的模型。

7.1 残差检验分析

对于残差检验分析还有很多的方法,这里只列出常见的方法以及要检验的内容:

  1. 残差图肉眼简单查看;

  2. ARIMA模型的残差是否是平均值为0且方差为常数的正态分布;

  3. QQ图:线性即正态分布;

  4. Ljung-Box检验:独立性

7.2 过度拟合和参数冗余

对于统计建模或者是机器学习,我们一般都需要模型过拟合的问题,同样的,于时间序列而言,过度拟合和参数冗余也是不容忽视的问题:

  1. 在过度拟合时,不要同时增加AR和MA部分的阶数

  2. 例如:如果拟合了MA(1)模型后,残差在2阶滞后处仍存在明显的相关性,那么应该尝试MA(2),而不是ARMA(1,1)模型。

8. 预测

当上面的步骤走完之后,就可以对数据进行预测了,也就是时间序列建模的主要目标之一,预测该序列未来的取值,此外我们要评估预测的精度。一般采用最小均方误差标准。

9. 总结

本文从时间序列的例子说起,然后从随机变量的数学特征引入随机变量序列的数学特征,之后介绍了平稳性,包括严平稳和宽平稳的概念及特点,对于非平稳时间序列的处理策略,接着给出时间序列的影响因素介绍,随后重点介绍了平稳时间序列的模型,包括AR、MA、ARMA和ARIMA,给出ARIMA的建模流程以及相应的参数p, q由PACF、ACF的确立,以及差分阶数d的确立。对于模型一般采用AIC 、BIC,此外Python也给出了HQIC的标准。一个完整的时间序列建模还需要对模型进行诊断,包括残差的正态性、独立性等检验,文中给出检验方法策略;为了避免过度拟合及参数冗余也给出一点建模技巧。最后就是对于时间序列的未来值进行预测。对于时间序列理论篇我们给出一些时间序列的相关模型和概念,在下一篇的实践篇,我们给出Python时间序列建模的一个案例分析。

10. 拓展

时间序列除了文中给出的AR、 MA、ARMA、ARIMA还有季节性的ARIMA模型、乘法季节ARMA模型、非平稳季节ARIMA模型,此外在金融领域也有异方差时间序列模型:ARCH、GARCH,门限模型等等,当然啦,像多元线性回归一样,也存在着多元时间序列。此外,对于时间序列数据来说又有面板数据、截面数据、函数型数据等,对于不同的数据又存在着对应的模型,这里就不再详细说明了。

更多信息请移步:
github:https://github.com/zhaohuicici?tab=repositories