On 4 Nov, 12:00, "Aino" <aino.tietavai...@removeThis.helsinki.fi> wrote: > Hello all! > > I am trying to model my time series with ARMA model and then predict the signal with 'predict'. Here's an example: > > close all;clear all;clc; > k=25;%prediction step > mAR=10;%AR order > mMA=10;%MA order > > %First signal: > y=smooth(rand(1500,1),100); > y=y(250:end-251); > y=y-mean(y); > data=iddata(y,,0.01); > m=armax(data,[mAR,mMA]); > yp=predict(m,data,k); > figure;plot(y);hold on;plot(yp.OutputData,'r') > > %Second signal: > y=sin(1:0.01:10)'; > data=iddata(y,,0.01); > m=armax(data,[mAR,mMA]); > yp=predict(m,data,k); > figure;plot(y);hold on;plot(yp.OutputData,'r') > > The prediction signal (yp.OutputData) seems to have no delay with the second signal (sine wave), but compared to the first signal it is delayed about the prediction step. The signals I use look more like the first one, so this certainly will affect my prediction error, something like sqrt(sum((data.OutputData-yp.OutputData).^2)). > > Where does this delay come from and how can I get rid of it? Why does it only affect the first signal? > > Thank you, > Aino
I don't have the toolbox or functions you use in your simulation, but I see that you in the second example use a noiseless sinusoidal, whereas you in the first example use a random signal.
From a prediction POV that makes all the difference:
1) Sinusoidals are perfectly predictable at the outset. 2) There is no noise to messthings up.
So the second example is so perfect that it is totally useless for anything other than a test of concept or implementation.
The results from your first example are far more representative for how the method will work with random signals.