【发布时间】:2021-09-19 07:59:50
【问题描述】:
我希望在不重新估计的情况下编写一个滚动窗口多步预测(我想一直使用 ARIMA(1,0,0) 模型)并在其中实现一个 xreg。
我使用来自 Rob Hyndam 的代码,他的代码如下:
h <- 5
train <- window(hsales,end=1989.99)
test <- window(hsales,start=1990)
n <- length(test) - h + 1
fit <- auto.arima(train)
fc <- ts(numeric(n), start=1990+(h-1)/12, freq=12)
for(i in 1:n)
{
x <- window(hsales, end=1989.99 + (i-1)/12)
refit <- Arima(x, model=fit)
fc[i] <- forecast(refit, h=h)$mean[h]
}
我已经阅读了许多不同的帖子,但许多帖子在实现 xreg 时使用了模型的重新估计,并且在尝试解决问题时,我经常遇到我的 xreg 长度与拟合线。
因此我试图用这段代码解决我的问题:
h <- 5
train <- window(hsales,end=1989.99)
test <- window(hsales,start=1990)
xregtrain <-window(hsales, end=1989.99)
n <- length(test) - h + 1
fit <- arima(train, order= c(1,0,0), xreg = xregtrain)
fc <- ts(numeric(n), start=1990+(h-1)/12, freq=12)
for(i in 1:n)
{
x <- window(hsales, end=1989.99+ (i-1)/12)
y<- window(hsales, end=1989.99 + (i-1)/12)
refit <- Arima(x, order=c(1,0,0), xreg=y)
fc[i] <- forecast(refit, h=h, xreg=y)$mean[h]
}
这应该更新 xreg 的长度以匹配每个新预测的 hsales 长度并且似乎有效,但是我希望有人能告诉我如何检查这是否在每个新预测中更新 xreg 的值或也许有更深入了解的人可以确认它正在做我想让它做的事情。
我的最后一个问题是;如何从中获取预测值并分析该模型的预测能力,例如如何计算该预测的 MAPE?
感谢您的帮助!
【问题讨论】:
标签: r regression forecasting arima