【问题标题】:How do I make one-step-ahead out-of-sample forecasts with nnetar?如何使用 nnetar 进行超前一步的样本外预测?
【发布时间】:2018-04-09 19:27:16
【问题描述】:

我想评估 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

任何帮助/示例将不胜感激。

【问题讨论】:

标签: r time-series forecasting


【解决方案1】:

以下使用预测包的 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-29
    • 2013-09-08
    • 2021-04-27
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-01
    相关资源
    最近更新 更多