MATLAB: How to forecast with nonlinear autoregressive neural networks

annsforecastnar

Hello,
I am trying to generate an n-step ahead out of sample forecast for a NAR-ANN.
I used ntstool, Matlab GUI based interface for neural networks, to create a non-linear auto-regressive (NAR) model. I choose this model because I wanted to forecast a series based upon its own past values. Also, ANNs supposed to have better predictive accuracy than ARIMA models.
I imported data for my yt1 variable.
When I opened the ntstool, I choose NAR, i imported my data, I used the default training, testing and validation settings, i specifed 1 delay and 10 neurons.
My code in the script file was as follows. targetSeries = tonndata(yt,true,false); feedbackDelays = 1:1; hiddenLayerSize = 10; net = narnet(feedbackDelays,hiddenLayerSize); [inputs,inputStates,layerStates,targets] = preparets(net,{},{},targetSeries); net.divideParam.trainRatio = 70/100; net.divideParam.valRatio = 15/100; net.divideParam.testRatio = 15/100; [net,tr] = train(net,inputs,targets,inputStates,layerStates); outputs = net(inputs,inputStates,layerStates); errors = gsubtract(targets,outputs); performance = perform(net,targets,outputs) view(net)
I am satisfied with my results, but I want to generate a 20 step ahead forecast. Does any one know how this is done for NAR-ANNs?

Best Answer

This is a highly auto-correlated series. You can get good results with with 1 delay and NO hidden layer :
net = narNET(1,[]);
The significant autocorrelation lags are so numerous you don't even need a time series. I was able to get an Rsquare of 0.925 for predicting 20 lags ahead with fitnet(3).
If you want to use a feedback timeseries you should be able to get equivalent results with
net = narnet(20,3);
Hope this helps.
Thank you for formally accepting my answer
Greg