Hello people! Please, can you help me?
I want predict One Step beyond original data using NARNET. Original data has 62000 steps. Want know the 62001.
But what I get for prediction is the exact same existing steps in training data. (Same N steps, same curves)
Why network can't predict next future step beyond original data end? I used Removedelay. (Want the N+1)
Attached are: Original data (EURUSD), performance stats. Bellow, the code used.
Thanks, and God bless you all! Eric
% Solve an Autoregression Time-Series Problem with a NAR Neural Network
% Script generated by Neural Time Series app
% This script assumes this variable is defined:
% EURUSD - feedback time series.
T = tonndata(EURUSD,true,false); % Choose a Training Function
trainFcn = 'trainbr'; % Bayesian Regularization backpropagation.
% Create a Nonlinear Autoregressive Network
feedbackDelays = 1:1;hiddenLayerSize = 30;net = narnet(feedbackDelays,hiddenLayerSize,'open',trainFcn); % Choose Feedback Pre/Post-Processing Functions
net.input.processFcns = {'removeconstantrows','mapminmax'};net.trainParam.min_grad = 3e-8; % Prepare the Data for Training and Simulation
[x,xi,ai,t] = preparets(net,{},{},T); % Setup Division of Data for Training, Validation, Testing
net.divideFcn = 'dividetrain';net.divideMode = 'time'; % Divide up every sample
% Choose a Performance Function
net.performFcn = 'mse'; % Mean Squared Error
% Choose Plot Functions
net.plotFcns = {'plotperform','plottrainstate', 'ploterrhist', ... 'plotregression', 'plotresponse', 'ploterrcorr', 'plotinerrcorr'}; % Train the Network
[net,tr] = train(net,x,t,xi,ai); % Test the Network
y = net(x,xi,ai);e = gsubtract(t,y);performance = perform(net,t,y) % Step-Ahead Prediction Network
% For some applications it helps to get the prediction a timestep early.
% The original network returns predicted y(t+1) at the same time it is
% given y(t+1). For some applications such as decision making, it would
% help to have predicted y(t+1) once y(t) is available, but before the
% actual y(t+1) occurs. The network can be made to return its output a
% timestep early by removing one delay so that its minimal tap delay is now
% 0 instead of 1. The new network returns the same outputs as the original
% network, but outputs are shifted left one timestep.
nets = removedelay(net);nets.name = [net.name ' - Predict One Step Ahead'];view(nets)[xs,xis,ais,ts] = preparets(nets,{},{},T);ys = nets(xs,xis,ais);stepAheadPerformance = perform(nets,ts,ys)
Best Answer