时间序列预测之:ARMA残差计算方法

2019-08-27  本文已影响0人  学无止境也

原创,转载注明出处!

基本知识

考虑以下平稳可逆的ARMA(p,q)模型:

y_t = \phi_0 + \phi_1 y_{t-1} + \ldots + \phi_p y_{t-p} + \varepsilon_t + \theta_1 \varepsilon_{t-1} + \ldots + \theta_q \varepsilon_{t-q}

\phi_0=0时,上面ARMA(p,q)为一中心化模型,即y_t的期望为0。当\phi_0 \neq 0时,可以通过变换转化为中心化模型:
两边同时求均值,有

E y_t = E\phi_0 + E\phi_1 y_{t-1} + \ldots + E\phi_p y_{t-p} +E \varepsilon_t + E\theta_1 \varepsilon_{t-1} + \ldots + E\theta_q \varepsilon_{t-q}

因为\varepsilon_t为白噪声,所以有

E\varepsilon_t = E\varepsilon_{t-1} = \ldots = E\varepsilon_{t-q} = 0

又因为上述ARMA(p,q)模型为平稳的,所以有

Ey_t = Ey_{t-1} = \ldots = Ey_{t-p}

综合以上,有

Ey_t = \frac{\phi_0}{1- \phi_1 - \ldots - \phi_{p}}

x_t = y_t - \frac{\phi_0}{1- \phi_1 - \ldots - \phi_{p}},则可将原非中心化ARMA(p,q)模型转化为中心化模型:

x_t = \phi_1 x_{t-1} + \ldots + \phi_p x_{t-p} + \varepsilon_t + \theta_1 \varepsilon_{t-1} + \ldots + \theta_q \varepsilon_{t-q}

参数回归

假设在时间序列预测之:ARMA方法arma_mod32模型即ARMA(3,2)的参数已经通过极大似然法求出,如下

                              ARMA Model Results                              
==============================================================================
Dep. Variable:                      y   No. Observations:                   89
Model:                     ARMA(3, 2)   Log Likelihood                -804.123
Method:                       css-mle   S.D. of innovations           2016.787
Date:                Tue, 27 Aug 2019   AIC                           1622.245
Time:                        15:02:58   BIC                           1639.666
Sample:                    12-31-2002   HQIC                          1629.267
                         - 12-31-2090                                         
==============================================================================
                 coef    std err          z      P>|z|      [0.025      0.975]
------------------------------------------------------------------------------
const         44.5054     46.003      0.967      0.336     -45.660     134.670
ar.L1.y       -0.3571      0.162     -2.209      0.030      -0.674      -0.040
ar.L2.y        0.2441      0.181      1.349      0.181      -0.111       0.599
ar.L3.y       -0.0450      0.135     -0.334      0.739      -0.309       0.219
ma.L1.y        0.0228      0.130      0.175      0.862      -0.233       0.278
ma.L2.y       -0.8108      0.109     -7.439      0.000      -1.024      -0.597
                                    Roots                                    
=============================================================================
                  Real          Imaginary           Modulus         Frequency
-----------------------------------------------------------------------------
AR.1           -1.3198           -0.0000j            1.3198           -0.5000
AR.2            3.3714           -2.3381j            4.1028           -0.0965
AR.3            3.3714           +2.3381j            4.1028            0.0965
MA.1           -1.0966           +0.0000j            1.0966            0.5000
MA.2            1.1247           +0.0000j            1.1247            0.0000
-----------------------------------------------------------------------------

那么根据公式
\varepsilon_t = y_t - \phi_0 - \phi_1 y_{t-1} - \ldots - \phi_p y_{t-p} - \theta_1 \varepsilon_{t-1} - \ldots - \theta_q \varepsilon_{t-q}
即可求出残差序列\varepsilon_t

计算残差

假设t从下标0开始,那么我们可以假设\varepsilon_{-1} = \varepsilon_{-2} = \ldots = \varepsilon_{-q} = 0,当然在一些方法中也可以假设成其他值。
此外,我们还假设y_{-1} =y_{-2} = \ldots = y_{-p} = 0
则基于上面假设,可以依次求出\varepsilon_{0} , \varepsilon_{1} , \ldots , \varepsilon_{t}

可以看出E列与F列略有区别,但是最终两列趋于一致。这是因为Python模型对\varepsilon_{-1} , \varepsilon_{-2} , \ldots , \varepsilon_{-q}y_{-1} ,y_{-2} , \ldots , y_{-p}的假设不同。

批注 2019-08-27 162804.png
批注 2019-08-27 163850.png

对于in-sample的预测

可直接通过公式{\hat y}_t = y_t - \varepsilon_t计算{\hat y}_t (此时\varepsilon_t已由上面过程求出,为已知),计算结果如下图I列所示。

此外,也可以通过下面公式手动递归计算{\hat y}_t
\hat y_t = \phi_0 + \phi_1 y_{t-1} + \ldots + \phi_p y_{t-p} + \varepsilon_t + \theta_1 \varepsilon_{t-1} + \ldots + \theta_q \varepsilon_{t-q}
(此时\varepsilon_t为未知,设为0,且还假设\varepsilon_{-1} = \varepsilon_{-2} = \ldots = \varepsilon_{-q} = 0,假设y_{-1} =y_{-2} = \ldots = y_{-p} = 0。)
结算结果如下图J列所示。

可以看出I列与J列略有不同,但最终是趋于一致的。这是由于对\varepsilon_{-1} , \varepsilon_{-2} , \ldots , \varepsilon_{-q}y_{-1} ,y_{-2} , \ldots , y_{-p}的假设不同造成的。

批注 2019-08-27 165529.png

参考:

Fitted values of ARMA model
How to Make Manual Predictions for ARIMA Models with Python

上一篇 下一篇

猜你喜欢

热点阅读