zoukankan      html  css  js  c++  java
  • 时间序列预测之--ARIMA模型

    什么是 ARIMA模型

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

    1. ARIMA的优缺点

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

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

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

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

    1. 稳定的数据是没有趋势(trend),没有周期性(seasonality)的; 即它的均值,在时间轴上拥有常量的振幅,并且它的方差,在时间轴上是趋于同一个稳定的值的。
    2. 可以使用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 , y_t = Y_t \[2ex] if d=1 , y_t = Y_t-Y_{t-1} \[2ex] if d=2 , y_t = (Y_t-Y_{t-1}) -(Y_{t-1}-Y_{t-2}) \ =Y_t-2Y_{t-1}+Y_{t-2}]

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

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

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

    [widehat{y_t} = mu + phi_1*y_{t-1} + ...+ phi_p*y_{t-p} + heta_1*e_{t-1} +...+ heta_q*e_{t-q} ]

    [其中, phi表示AR的系数, heta表示MA的系数 ]

    4.ARIMA模型的几个特例

    1.ARIMA(0,1,0) = random walk:

    当d=1,p和q为0时,叫做random walk,如图所示,每一个时刻的位置,只与上一时刻的位置有关。
    file-list
    预测公式如下:

    [widehat Y_t = mu + Y_{t-1} ]

    2. ARIMA(1,0,0) = first-order autoregressive model:

    p=1, d=0,q=0。说明时序数据是稳定的和自相关的。一个时刻的Y值只与上一个时刻的Y值有关。

    [widehat Y_t = mu + phi_1*Y_{t-1}. \ where, phi in [-1,1] , 是一个斜率系数 ]

    3. ARIMA(1,1,0) = differenced first-order autoregressive model:

    p=1,d=1,q=0. 说明时序数据在一阶差分化之后是稳定的和自回归的。即一个时刻的差分(y)只与上一个时刻的差分有关。

    [ widehat y_t = mu +phi_1*y_{t-1} \ 结合一阶差分的定义,也可以表示为:widehat Y_t-Y_{t-1} = mu+ phi_1 * (Y_{t-1} - Y_{t-2})\ 或者 widehat Y_t = mu +Y_{t-1} + phi_1 * (Y_{t-1} - Y_{t-2}) ]

    4. ARIMA(0,1,1) = simple exponential smoothing with growth.

    p=0, d=1 ,q=1.说明数据在一阶差分后市稳定的和移动平均的。即一个时刻的估计值的差分与上一个时刻的预测误差有关。

    [ widehat y_t = mu + alpha_1*e_{t-1} \ 注意q=1的差分y_t与p=1的差分y_t的是不一样的 \ 其中,widehat y_t = widehat Y_t-widehat Y_{t-1} , e_{t-1}={Y_{t-1} - widehat Y_{t-1}} , 设 heta_1 = 1- alpha_1 \ 则也可以写成: widehat Y_t = mu + widehat Y_{t-1} + alpha_1 ({Y_{t-1} - widehat Y_{t-1}}) \ = mu +Y_{t-1} - heta_1*e_{t-1}]

    5. ARIMA(2,1,2)

    在通过上面的例子,可以很轻松的写出它的预测模型:

    [ widehat y_t = mu + phi_1 * y_{t-1} + phi_2 * y_{t-2} - heta_1 * e_{t-1} - heta_2* e_{t-2} \ 也可以写成: widehat Y_t = mu + phi_1 * (Y_{t-1} - Y_{t-2}) + phi_2 * (Y_{t-2} - Y_{t-3}) - heta_1 *(Y_{t-1} - widehat Y_{t-1}) - heta_2 *(Y_{t-2} - widehat Y_{t-2}) ]

    6. ARIMA(2,2,2)

    [ widehat y_t = mu + phi_1 * y_{t-1} + phi_2 * y_{t-2} - heta_1 * e_{t-1} - heta_2* e_{t-2} \ widehat Y_t = mu + phi_1 * (Y_{t-1}-2Y_{t-2} + Y_{t-3}) + phi_2 * (Y_{t-2}-2Y_{t-3} + Y_{t-4}) - heta_1 *(Y_{t-1} - widehat Y_{t-1})- heta_2* (Y_{t-2} - widehat Y_{t-2}) ]

    7. ARIMA建模基本步骤

    1. 获取被观测系统时间序列数据;
    2. 对数据绘图,观测是否为平稳时间序列;对于非平稳时间序列要先进行d阶差分运算,化为平稳时间序列;
    3. 经过第二步处理,已经得到平稳时间序列。要对平稳时间序列分别求得其自相关系数ACF 和偏自相关系数PACF,通过对自相关图和偏自相关图的分析,得到最佳的阶层 p 和阶数 q
    4. 由以上得到的d、q、p,得到ARIMA模型。然后开始对得到的模型进行模型检验。
      具体例子会在另一篇文章中给出。
  • 相关阅读:
    原生js螺旋运动
    拉美电子游戏市场创收45亿美元
    ZOJ 3229 Shoot the Bullet
    Java的压缩、解压及压缩加密、解密解压 样例
    java环境变量配置
    git在myelispse中的安装
    java注解
    Python测试框架doctest
    python中的协程
    Flask log配置,实现按照日期自动生成日志文件
  • 原文地址:https://www.cnblogs.com/bradleon/p/6827109.html
Copyright © 2011-2022 走看看