原创,转载注明出处!
- 通过本教程你可以学会
1、如何手动计算ARMA模型的残差
2、如何手动计算ARMA模型的预测值
3、不同残差、不同预测值计算方法的差异
基本知识
考虑以下平稳可逆的ARMA(p,q)模型:
当时,上面ARMA(p,q)为一中心化模型,即
的期望为0。当
时,可以通过变换转化为中心化模型:
两边同时求均值,有
因为为白噪声,所以有
又因为上述ARMA(p,q)模型为平稳的,所以有
综合以上,有
令,则可将原非中心化ARMA(p,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
-----------------------------------------------------------------------------
那么根据公式
即可求出残差序列
计算残差
假设从下标0开始,那么我们可以假设
,当然在一些方法中也可以假设成其他值。
此外,我们还假设。
则基于上面假设,可以依次求出。
- 计算结果如图所示(B列为y,E列为Python模型给出的残差,F列手动计算的残差)
可以看出E列与F列略有区别,但是最终两列趋于一致。这是因为Python模型对和
的假设不同。


-
计算公式
批注 2019-08-27 162922.png
-
的计算,其中
批注 2019-08-27 163011.png
对于in-sample的预测
可直接通过公式计算
(此时
已由上面过程求出,为已知),计算结果如下图I列所示。
此外,也可以通过下面公式手动递归计算:
(此时为未知,设为0,且还假设
,假设
。)
结算结果如下图J列所示。
可以看出I列与J列略有不同,但最终是趋于一致的。这是由于对和
的假设不同造成的。

参考:
Fitted values of ARMA model
How to Make Manual Predictions for ARIMA Models with Python
网友评论