Problem with ident GUI while predicting time-series

2 views (last 30 days)
I used ident GUI in Sys. ident. Toolbpx to model a time series and do 88-step ahead predictions. I tried different orders for the ARMA model and finally realised an ARMA model with some certain order gives satisfactory results. While plotting model output for the validation data (which is of course not used in model estimation), I get zero errors for more than 88 steps ahead and then the output starts to converge from the validation data. But the zero errors in the first couple of hundred time steps made me a bit suspicious, so I made up a new set of validation data which was all zeros. I was expecting to get huge errors (if the output actually tracks the real time-series), instead apart from a bit of chattering in the first time-steps, the model output converges to zero! In other words, no matter what is my validation data, the model seems to track it very well. Clearly, something's wrong in here, but cannot find out what is it. If anybody has any recommendation or comments on how to overcome this dilemma, I'd be grateful.

Answers (2)

Rajiv Singh
Rajiv Singh on 14 Jun 2013
Edited: Rajiv Singh on 14 Jun 2013
When predicting, the results depend upon the initial conditions. The GUI estimates the initial conditions to maximize the fit to the observed data. It does not currently offer any other way of describing/handling initial conditions. The good fit to the start of the data results from the choice of automatically estimated initial conditions.
You can explore various initial condition handling options in the command window using the "predictOptions" command that supplies options to the "predict" command (type "help predict" for more information). For example, you can do something like this:
opt = predictOptions('InitialCondition', 'zero'); % use zero i.c.
% perform 1-step ahead prediction over the time span of available data and using zero initial conditions
output = predict(model, data, 1, opt)
Note that 1-step ahead prediction is not a stringent test of model quality; even a poor model can predict what lies one step ahead given the right initial conditions and knowledge of the past behavior. You may therefore need the "forecast" command which forecasts the output of the model into future (beyond the time span of supplied data).
  1 Comment
Vahid Bokharaie
Vahid Bokharaie on 21 Jun 2013
I found another post of yours in reply to a similar question in here: http://www.mathworks.com/matlabcentral/answers/12186 And as I understand, the forecast function has been added to newer versions of Matlab. Nevertheless, I used the forecast function you have put in the above thread and it works well. The only problem is with the iddata object indexing. Let's say I use 16000 samples for training and ARMA model is of order (336,10). And I have preserved samples 16000-17500 for model validation. Then I used samples 16001-16400 in forecast function which gives me the 88-step ahead prediction but the problem is that the index of forecast output starts from 401 to 489. This makes comparing the results with validation data a bit difficult. Do you have any updated version of forecast that has solved this problem? Thanks again for your help.

Sign in to comment.


Vahid Bokharaie
Vahid Bokharaie on 20 Jun 2013
Thanks a lot for your reply. I tried predict command which seems to be the same function used in GUI tool. I tried setting different values for initial conditions, but I got the same results for all of them. My aim is to do 88-step ahead prediction, and I tried it on my validation data using predict. But it seems to me that the predict command is not actually doing any predictions, cause when plotting the output of this command, the time horizon matches the validation data itself. But if done correctly, it should give you an output with 88-steps more than validation data. And I couldn't find any forecast command. I'd be grateful if you let me know which command did you mean. Thanks again.
  1 Comment
Rajiv Singh
Rajiv Singh on 23 Jun 2013
Forecasting starts one sample after the last time instant of the historical data provided as input. In practice, the time range is affected by the SamplingInstants of the historical data. What is the value of "SamplingInstants" property for your data?

Sign in to comment.

Categories

Find more on Linear Model Identification in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!