簡體   English   中英

使用 rollapply 在 R 中使用截距預測 AR 模型

[英]forecasting AR models with intercept in R using rollapply

假設我有一個 AR(3) 模擬數據,截距為 3。

set.seed(247)
library(astsa)
sim1 = 3+arima.sim(list(order=c(3,0,0), ar=c(-0.1,-0.3,-0.5)), n=60)
pacf(sim1)

我可以使用以下方法估算系數:

est.1 = arima(x = sim1, order = c(3, 0, 0)) 
est.1

Coefficients:
          ar1      ar2      ar3  intercept
      -0.0614  -0.5098  -0.4286     2.9811

如果我嘗試使用zoo庫的rollapply ,我會發現預測被抵消了:

library(zoo)
library(forecast)  # to compare

f1 = rollapply(zoo(sim1), 4, function(w) {sum(c(1,w[1:3])*rev(est.1$coef))}, 
               align = "right",  partial = T)
plot(sim1,type="l")
lines(f1, col = 2, lwd = 2)  ## use the rollapply
lines(fitted(est.1), col = 3, lwd = 2) ## use the forecast package
legend(0.1, 6, legend=c("rollapply", "forcast fitted"), fill = c(2,3))

在此處輸入圖像描述

想不通為什么會這樣……

你適配的model是

y_t = 3 + x_t

在哪里

x_t = -0.1 x_{t-1} - 0.3 x_{t-2} - 0.5 x_{t-3} + e_t。

這相當於

y_t = 3*(1+0.1+0.3+0.5) - 0.1 y_{t-1} - 0.3 y_{t-2} - 0.5 y_{t-3} + e_t

所以真正的“截距”是 3*(1+0.1+0.3+0.5) = 5.7。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM