【问题标题】:residuals in R using auto.arima and forecast packageR中的残差使用auto.arima和预测包
【发布时间】:2013-09-10 23:46:05
【问题描述】:

我正在使用包forecast 中的auto.arima 函数来拟合模型。例如,我得到一个 AR(1) 模型。然后我从这个模型中提取残差。这如何产生与原始向量相同数量的残差?如果这是一个 AR(1) 模型,那么残差的数量应该比原始时间序列的维度少 1。我错过了什么?

例子:

require(forecast)
arprocess = as.numeric(arima.sim(model = list(ar=.5), n=100))
#auto.arima(arprocess, d=0, D=0, ic="bic", stationary=T)
#  Series: arprocess 
#  ARIMA(1,0,0) with zero mean     

#  Coefficients:
#          ar1
#       0.5198
# s.e.  0.0867

# sigma^2 estimated as 1.403:  log likelihood=-158.99
# AIC=321.97   AICc=322.1   BIC=327.18
r = resid(auto.arima(arprocess, d=0, D=0, ic="bic", stationary=T))
> length(r)
  [1] 100

更新:深入研究auto.arima 的代码,我发现它使用了Arima,而stats:::arima 又使用了stats:::arima。因此,问题实际上是stats:::arima 如何计算第一次观察的残差?

【问题讨论】:

  • 您的模型是 ARIMA(1,0,1) with zero mean 而不是均值为零的 ARIMA(1,0,0)。您需要设置max.q=0 以获取 ARIMA(1,0,0)
  • 您能解释一下为什么您认为会出现这种情况吗?不管问题保持不变,即使它是ARIMA(1,0,1)
  • 是的,还是一样。我会通过那个。
  • 我检查了 ARMA (1,0,0) 的残差,发现它们在周期 2 到 100 (y(t)-b*y(t-1)) 的计算正确。但是,我不知道它是如何计算第 1 期的残差的。但是,我认为(在 R 中)残差的长度通常与观察值保持一致(如第 5 页here 中所述)。在 ARMA(1,0,0) 的情况下,我认为重点应该是如何计算第一期的残差。
  • 同意。我怀疑它只是将t=-1 的值等于0。如果包作者对此发表评论会很好。

标签: r regression prediction lm forecasting


【解决方案1】:

残差是实际值减去拟合值。对于第一次观察,拟合值是过程的估计平均值。对于后续观察,拟合值是先前观察的 $\phi$ 倍,假设已经估计了一个 AR(1) 过程。

【讨论】:

  • 您能否解释一下使用过程的估计平均值进行第一次观察的基本原理?文档中包含吗?
  • @RobHyndman:谢谢,我们怀疑是这种情况,但我猜在验证时都犯了错误。感谢您的帮助。
  • 拟合值是给定所有先前信息的最佳预测器。对于第一次观察,没有先前的信息。所以对于一个平稳的过程,最好的预测是过程的平均值。
  • 感谢您的澄清。
  • @RobHyndman 你在这里指的是auto::arima 还是这个逻辑也适用于stats::arima?我阅读了 OP 的问题,但我只是想确认一下……非常感谢!
猜你喜欢
  • 2020-02-21
  • 1970-01-01
  • 1970-01-01
  • 2020-10-22
  • 2016-09-28
  • 1970-01-01
  • 2018-07-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多