在'neuralnet'的上下文中使用R中的'Forecast'函数?

时间:2015-11-23 05:02:38

标签: r neural-network forecasting r-caret

大家好,                 我在R中使用神经网络包。我使用三个'x'变量来预测'y'变量。我正在处理82个观测的时间序列数据。我将数据集分为训练集和测试集。使用'compute'函数我在测试数据上测试了神经网络拟合模型。             但是,我想预测未来没有x数据的时期。我正在尝试使用'预测'功能。有没有办法在R中使用神经网络包的预测功能。我很欣赏这方面的任何帮助。 找到下面的R代码:

## Creating Training (1:72) and Test Slices (73:82)
library(caret)
timeSlices <- createTimeSlices(1:nrow(data1), 
                           initialWindow = 72, horizon = 10, fixedWindow = TRUE)

共有82个观察结果。我使用了来自caret包的createTimeSlices来创建训练集(1:72)和测试集(73:82)。现在我使用神经网络包来训练模型,如下所示:

library(neuralnet)

set.seed(101)

Model1 <- neuralnet(ppy ~ ppx1+ppx2+ppx3,data=mytraindata,
                hidden=4, threshold=0.001, stepmax = 2e+05, rep = 1, 
                lifesign = "full", lifesign.step = 1000, 
                algorithm = "rprop+", err.fct = "sse", 
                act.fct = "logistic", linear.output = TRUE)

现在我在测试集(73:82)上预测模型,使用以下代码

Predmodel1 <- compute(Model1, Ntestdata)

直到这一刻,一切都很酷。但是,我需要预测未来的y变量。我尝试使用'预测'功能来预测未来7个时期(即83:89期)的y值,如下所示

library(forecast)
predmodel2 <- forecast(Model1$net.result[[1]], 7)

我收到以下错误:

  

ets中的错误(对象,lambda = lambda,允许。乘法。趋势=允许。乘法。趋势,:y应该是单变量时间序列

有关如何将y预测到未来7个时期(83:89)的任何想法?为了预测未来的7个时期,让我们假设模型1是根据观察1:82进行训练的。非常感谢您的反馈。谢谢。

1 个答案:

答案 0 :(得分:0)

forecast()函数仅适用于单变量数据,不适用于多变量方法