Hi, i am using NARX to predict a daily stock market index data (Sensex 2003×1 matrix) as target and another daily stock market data(Nifty) as input. I have done it using the example you have shown in:
The code:
%%%newNARX code 24/4/2013
%%1. Importing data
% Matrix of 2003x1 each are
% daily stock market indices data
% of Nifty & Sensex
load Nifty.dat;load Sensex.dat;% %%S = load('magdata');
% %%X = con2seq(S.u);
% %%T = con2seq(S.y);
% To scale the data it is converted to its log value:
lognifty = log(Nifty); logsensex = log(Sensex); X = tonndata(lognifty,false,false); T = tonndata(logsensex,false,false); % X = con2seq(x);
% T = con2seq(t);
%%2. Data preparation
N = 300; % Multi-step ahead prediction
% Input and target series are divided in two groups of data:
% 1st group: used to train the network
inputSeries = X(1:end-N);targetSeries = T(1:end-N);% 2nd group: this is the new data used for simulation. inputSeriesVal will
% be used for predicting new targets. targetSeriesVal will be used for
% network validation after prediction
inputSeriesVal = X(end-N+1:end);targetSeriesVal = T(end-N+1:end); % This is generally not available
%%3. Network Architecture
delay = 2;neuronsHiddenLayer = 50;% Network Creation
net = narxnet(1:delay,1:delay,neuronsHiddenLayer);%%4. Training the network
[Xs,Xi,Ai,Ts] = preparets(net,inputSeries,{},targetSeries); net = train(net,Xs,Ts,Xi,Ai);view(net)Y = net(Xs,Xi,Ai); % Performance for the series-parallel implementation, only
% one-step-ahead prediction
perf = perform(net,Ts,Y);%%5. Multi-step ahead prediction
inputSeriesPred = [inputSeries(end-delay+1:end),inputSeriesVal];targetSeriesPred = [targetSeries(end-delay+1:end), con2seq(nan(1,N))];netc = closeloop(net);view(netc)[Xs,Xi,Ai,Ts] = preparets(netc,inputSeriesPred,{},targetSeriesPred);yPred = netc(Xs,Xi,Ai);perf = perform(net,yPred,targetSeriesVal);figure;plot([cell2mat(targetSeries),nan(1,N); nan(1,length(targetSeries)),cell2mat(yPred); nan(1,length(targetSeries)),cell2mat(targetSeriesVal)]')legend('Original Targets','Network Predictions','Expected Outputs')
Network predictions are coming very bad.. I guess there is some problem with the close loop's initial input states and initial layer states. please help.
Best Answer