ARMA模型的拟合值


11

我试图了解如何为ARMA(p,q)模型计算拟合值。我已经在这里找到有关ARMA流程的拟合值的问题,但还没有弄清这一点。

如果我有一个ARMA(1,1)模型,即

XŤ=α1个XŤ-1个+ϵŤ-β1个ϵŤ-1个

并给出了一个(固定的)时间序列,我可以估计这些参数。我将如何使用这些估算值来计算拟合值。对于AR(1)模型,拟合值由下式给出:

XŤ^=α1个^XŤ-1个

由于无法观察到ARMA模型的创新,我将如何使用MA参数的估计值?我是否会忽略MA零件并计算AR零件的拟合值?

Answers:


10

要回答您的问题,您基本上需要知道如何在模型中计算残差即 。因为那样。让我们首先从模型生成假数据()并拟合模型(无平均值):^ X t = X te t X tËŤarmaXŤ^=XŤ-ËŤXŤarima(.5,.6)arma

library(forecast)
n=1000
ts_AR <- arima.sim(n = n, list(ar = 0.5,ma=0.6))
f=arima(ts_AR,order=c(1,0,1),include.mean=FALSE)
summary(f)
    Series: ts_AR 
    ARIMA(1,0,1) with zero mean     

    Coefficients:
             ar1     ma1
          0.4879  0.5595
    s.e.  0.0335  0.0317

    sigma^2 estimated as 1.014:  log likelihood=-1426.7
    AIC=2859.4   AICc=2859.42   BIC=2874.12

    Training set error measures:
                         ME    RMSE       MAE      MPE     MAPE      MASE
    Training set 0.02102758 1.00722 0.8057205 40.05802 160.1078 0.6313145

现在,我按如下方式创建残差:(因为在1处没有残差),对于我们有:,其中和是上述拟合模型中估计的自回归和移动平均部分。这是代码:Ë1个=0Ť=2ñËŤ=XŤ-一种[RXŤ-1个-中号一种ËŤ-1个一种[R中号一种

e = rep(1,n)
e[1] = 0 ##since there is no residual at 1, e1 = 0
for (t in (2 : n)){
  e[t] = ts_AR[t]-coef(f)[1]*ts_AR[t-1]-coef(f)[2]*e[t-1]
}

一旦找到残差,拟合值就是。因此,在下文中,我比较了从R获得的前10个拟合值和可以从我上面创建的(即手动)中计算出的值。ËŤXŤ^=XŤ-ËŤËŤ

cbind(fitted.from.package=fitted(f)[1:10],fitted.calculated.manually=ts_AR[1:10]-e[1:10])
      fitted.from.package fitted.calculated.manually
 [1,]          -0.4193068                 -1.1653515
 [2,]          -0.8395447                 -0.5685977
 [3,]          -0.4386956                 -0.6051324
 [4,]           0.3594109                  0.4403898
 [5,]           2.9358336                  2.9013738
 [6,]           1.3489537                  1.3682191
 [7,]           0.5329436                  0.5219576
 [8,]           1.0221220                  1.0283511
 [9,]           0.6083310                  0.6048668
[10,]          -0.5371484                 -0.5352324

如您所见,它们之间存在接近但并不完全相同。原因是当我创建残差时,我将。但是,还有其他选择。例如,基于帮助文件to ,卡尔曼滤波器找到的残差及其方差以及因此对的计算与我略有不同。但是随着时间的流逝,它们正在融合。 现在用于Ar(1)模型。我拟合了模型(没有平均值),直接向您展示了如何使用系数计算拟合值。这次我没有计算残差。请注意,我报告了前10个拟合值,删除了第一个(因为根据您的定义,它会有所不同)。如您所见,它们是完全相同的。Ë1个=0arimaËŤ

f=arima(ts_AR,order=c(1,0,0),include.mean=FALSE)
cbind(fitted.from.package=fitted(f)[2:10],fitted.calculated.manually=coef(f)*ts_AR[1:9])
      fitted.from.package fitted.calculated.manually
 [1,]          -0.8356307                 -0.8356307
 [2,]          -0.6320580                 -0.6320580
 [3,]           0.0696877                  0.0696877
 [4,]           2.1549019                  2.1549019
 [5,]           2.0480074                  2.0480074
 [6,]           0.8814094                  0.8814094
 [7,]           0.9039184                  0.9039184
 [8,]           0.8079823                  0.8079823
 [9,]          -0.1347165                 -0.1347165

arima他们在帮助文件中说:“(...)卡尔曼滤波器发现的创新及其差异。” 因此,该函数显然以某种方式将卡尔曼滤波器用于初始值。
DatamineR 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.