[英]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.