在S +中存在一个函数arima.filt(),它计算具有已知系数值的ARIMA模型的一步预测和sigma2。示例:
x=1:10
result <- arima.filt(x,model=list(ar=c(0.5),ma=c(0.2)))
result$pred
[1] NA 0.5000000 0.7115385 1.0430108 1.4086385 1.7817295 2.1563460 2.5312692
[9] 2.9062538 3.2812508
我的想法是,可以通过
收到预测fit <- Arima(x,order=c(1,0,1),transform.pars = TRUE,fixed =
c(0.5,0.2,NA),method = c("ML"))
result <- fitted(fit, h=1)
[1] 4.499712 2.700134 3.610877 4.127861 4.724428 5.305114 5.888977 6.472205
[9] 7.055559 7.638888
显然不一样。 arima.filt()函数声明: 将ARIMA模型置于状态空间形式,并应用卡尔曼滤波器以获得预测值和滤波值。特别是,状态空间形式意味着过滤比预期的更复杂。例如,在MA(1)模型中,预测值不仅仅是移动平均系数乘以最后一个残差,参见Harvey(1981,第112页)。
其他人在这里遇到了类似的问题 https://stat.ethz.ch/pipermail/r-help/2003-August/037691.html 但是通过首先用方法卷积过滤然后用方法递归来接收残差的建议解决方案也不起作用。
如何计算这些一步预测?