ARIMA时间序列预测
原文链接 http://www.stormstone.xin/2018/12/01/ARIMA%E6%97%B6%E9%97%B4%E5%BA%8F%E5%88%97%E9%A2%84%E6%B5%8B/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。
一.常用的时间序列模型
常用的时间序列模型有:自回归模型 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的优缺点
优点: 模型十分简单,只需要内生变量而不需要借助其他外生变量。
缺点:
- 要求时序数据是稳定的(stationary),或者是通过差分化(differencing)后是稳定的。
- 本质上只能捕捉线性关系,而不能捕捉非线性关系。 注意,采用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模型的几个特例
ARIMA(0,1,0) = random walk: 当d=1,p和q为0时,叫做random walk,每一个时刻的值,只与上一时刻的值有关。 预测公式如下:
Y(t)ˆ=μ+Y(t−1)
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],是一个斜率系数
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)]
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)
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)ˆ]
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建模基本步骤
- 获取被观测系统时间序列数据;
- 对数据绘图,观测是否为平稳时间序列;对于非平稳时间序列要先进行d阶差分运算,化为平稳时间序列;
- 经过第二步处理,已经得到平稳时间序列。要对平稳时间序列分别求得其自相关系数ACF 和偏自相关系数PACF,通过对自相关图和偏自相关图的分析,得到最佳的阶层 p 和阶数 q
- 由以上得到的d、q、p,得到ARIMA模型。然后开始对得到的模型进行模型检验。
references
- https://www.cnblogs.com/bradleon/p/6827109.html
- https://www.jianshu.com/p/4130bac8ebec