ARIMA时间序列预测

Autoregressive Integrated Moving Average Model

Posted by 石头人m on December 1, 2018

一.常用的时间序列模型

常用的时间序列模型有:自回归模型 AR(p)、移动平均模型 MA(q)、自回归移动平均模型 ARMA(p,q)、自回归差分移动平均模型 ARIMA(p,d,q), 可以说前三种都是 ARIMA(p,d,q)模型的特殊形式。

二.ARIMA

ARIMA模型的全称叫做自回归移动平均模型,全称是(ARIMA, Autoregressive Integrated Moving Average Model)。也记作ARIMA(p,d,q),是统计模型(statistic model)中最常见的一种用来进行时间序列 预测的模型。

1. ARIMA的优缺点

优点: 模型十分简单,只需要内生变量而不需要借助其他外生变量。

缺点:

  1. 要求时序数据是稳定的(stationary),或者是通过差分化(differencing)后是稳定的。
  2. 本质上只能捕捉线性关系,而不能捕捉非线性关系。 注意,采用ARIMA模型预测时序数据,必须是稳定的,如果不稳定的数据,是无法捕捉到规律的。比如股票数据用ARIMA无法预测的原因就是股票数据是非稳定的,常常受政策和新闻的影响而波动。

2. 判断时序数据是稳定的方法。

严谨的定义: 一个时间序列的随机变量是稳定的,当且仅当它的所有统计特征都是独立于时间的(是关于时间的常量)。 判断的方法:

稳定的数据是没有趋势(trend),没有周期性(seasonality)的; 即它的均值,在时间轴上拥有常量的振幅,并且它的方差,在时间轴上是趋于同一个稳定的值的。 可以使用Dickey-Fuller Test进行假设检验。

3. ARIMA的参数与数学形式

ARIMA模型有三个参数:p,d,q。

p--代表预测模型中采用的时序数据本身的滞后数(lags) ,也叫做AR/Auto-Regressive项
d--代表时序数据需要进行几阶差分化,才是稳定的,也叫Integrated项。
q--代表预测模型中采用的预测误差的滞后数(lags),也叫做MA/Moving Average项

差分: 假设y表示t时刻的Y的差分。

if d=0, yt=Yt
if d=1, yt=Yt−Y(t−1)
if d=2, yt=[Yt−Y(t−1)]−[Y(t−1)−Y(t−2)]
		  =Yt−2Y(t−1)+Y(t−2)

ARIMA的预测模型可以表示为:

Y的预测值 = 常量c and/or 一个或多个最近时间的Y的加权和 and/or 一个或多个最近时间的预测误差。

假设p,d,q已知, ARIMA用数学形式表示为:

y(t)ˆ=μ+ϕ1∗y(t−1)+...+ϕp∗y(t−p)+θ1∗e(t−1)+...+θq∗e(t−q)
其中,ϕ表示AR的系数,θ表示MA的系数

4.ARIMA模型的几个特例

  1. ARIMA(0,1,0) = random walk: 当d=1,p和q为0时,叫做random walk,每一个时刻的值,只与上一时刻的值有关。 预测公式如下:

     Y(t)ˆ=μ+Y(t−1)
    
  2. ARIMA(1,0,0) = first-order autoregressive model: p=1, d=0,q=0。说明时序数据是稳定的和自相关的。一个时刻的Y值只与上一个时刻的Y值有关。

     Y(t)ˆ=μ+ϕ1∗Y(t−1).
     where, ϕ∈[−1,1],是一个斜率系数
    
  3. ARIMA(1,1,0) = differenced first-order autoregressive model: p=1,d=1,q=0. 说明时序数据在一阶差分化之后是稳定的和自回归的。即一个时刻的差分(y)只与上一个时刻的差分有关。

     y(t)ˆ=μ+ϕ1∗y(t−1)
     结合一阶差分的定义,也可以表示为:Y(t)ˆ−Y(t−1)=μ+ϕ1∗[Y(t−1)−Y(t−2)]
     或者Y(t)ˆ=μ+Y(t−1)+ϕ1∗[Y(t−1)−Y(t−2)]
    
  4. ARIMA(0,1,1) = simple exponential smoothing with growth: p=0, d=1 ,q=1.说明数据在一阶差分后市稳定的和移动平均的。即一个时刻的估计值的差分与上一个时刻的预测误差有关。

     y(t)ˆ=μ+α1∗e(t−1)
     注意q=1的差分yt与p=1的差分yt的是不一样的
     其中,y(t)ˆ=Y(t)ˆ−Y(t-1)ˆ, e(t−1)=Y(t−1)−Y(t-1)ˆ,设θ1=1−α1
     则也可以写成:Y(t)ˆ=μ+Y(t-1)ˆ+α1[Y(t−1)−Y(t-1)ˆ]=μ+Y(t−1)−θ1∗e(t−1)
    
  5. ARIMA(2,1,2) 在通过上面的例子,可以很轻松的写出它的预测模型:

     y(t)ˆ=μ+ϕ1∗y(t−1)+ϕ2∗y(t−2)−θ1∗e(t−1)−θ2∗e(t−2)
     Y(t)ˆ=μ+ϕ1∗[Y(t−1)−Y(t−2)]+ϕ2∗[Y(t−2)−Y(t−3)]−θ1∗[Y(t−1)−Y(t-1)ˆ)−θ2∗[Y(t−2)−Y(t-2)ˆ]
    
  6. ARIMA(2,2,2)

     y(t)ˆ=μ+ϕ1∗y(t−1)+ϕ2∗y(t−2)−θ1∗e(t−1)−θ2∗e(t−2)
     Y(t)ˆ=μ+ϕ1∗[Y(t−1)−2Y(t−2)+Y(t−3)]+ϕ2∗[Y(t−2)−2Y(t−3)+Y(t−4)]−θ1∗[Y(t−1)−Y(t-1)ˆ)−θ2∗[Y(t−2)−Y(t-2)ˆ]
    

5.ARIMA建模基本步骤

  1. 获取被观测系统时间序列数据;
  2. 对数据绘图,观测是否为平稳时间序列;对于非平稳时间序列要先进行d阶差分运算,化为平稳时间序列;
  3. 经过第二步处理,已经得到平稳时间序列。要对平稳时间序列分别求得其自相关系数ACF 和偏自相关系数PACF,通过对自相关图和偏自相关图的分析,得到最佳的阶层 p 和阶数 q
  4. 由以上得到的d、q、p,得到ARIMA模型。然后开始对得到的模型进行模型检验。
references
  1. https://www.cnblogs.com/bradleon/p/6827109.html
  2. https://www.jianshu.com/p/4130bac8ebec