如何使用 nnetar 进行超前一步的样本外预测?

How do I make one-step-ahead out-of-sample forecasts with nnetar?

我想评估 R 中 nnetar 时间序列预测模型的样本外一步超前性能。我正在寻找类似于以下代码的东西,但使用的是 nnetar。

#prepare train and test set
train <- lynx[1:100]
test <- lynx[101:length(lynx)]

# fitting out of sample
train.fit <- auto.arima(train)
plot(forecast(train.fit, h = 20))
test.fit <- Arima(test, model = train.fit)
one.step <- fitted(test.fit)

以下使用 nnetar 的尝试不会引发任何错误,但 one.step 结果有 8 个 NA。

fit <- nnetar(train)
plot(forecast(fit, h = 20))
fit2 <- nnetar(test, model = fit)
one.step <- fitted(fit2)

我的真实数据甚至还达不到那么远,我的真实数据包含 700 个训练点的 5 天频率工作日数据。 test.series 保留 28 天。

fit <- nnetar(train.series)
fit2 <- nnetar(test.series, model = fit)

在上面的 fit2 行,我收到错误:

Error in nnet.default(x = c(0.223628229573182, -0.783157335744087, -0.560497369997497,  : 
  weights vector of incorrect length
In addition: Warning message:
In nnetar(test.series, model = fit) :
  Reducing number of lagged inputs due to short series

任何 help/examples 将不胜感激。

以下使用预测包 v8.3 的作品:

library(forecast)
series <- ts(rnorm(728), freq=5)
train.series <- subset(series, end=700)
test.series <- subset(series, start=701)
fit <- nnetar(train.series)
fit2 <- nnetar(test.series, model = fit)
one.step <- fitted(fit2)

但是,请注意,您无法通过这种方式获得前几个拟合值,因为对 nnetar 的第二次调用对早期数据一无所知。

以下比较好

fit2 <- nnetar(series, model = fit)
one.step <- subset(fitted(fit2), start=701)