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. % 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)
John Williams answered .
2025-11-20
Do not use the REMOVEDELAY command
It is not necessary and it is too confusing.
If you need detailed help, use one of the MATLAB example sets
help nndatasets
and/or
doc nndatasets.
Almost anything you need to do is in a former post. Try searching in BOTH the NEWSGROUP and ANSWERS using