R中的残差使用auto.arima和预测包

时间:2013-09-06 19:26:39

标签: r regression prediction lm forecasting

我使用包auto.arima中的forecast函数拟合模型。例如,我得到的是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如何计算第一次观察的残差?

1 个答案:

答案 0 :(得分:7)

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