Rune Allnor <email@example.com> wrote in message <firstname.lastname@example.org>... > 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. > > Rune
Thank you for your quick reply.
The sine wave is indeed almost perfectly predicted, and obviously the noisy signal cannot be so perfectly predicted, but what I cannot understand is that why is there a _delay_ in the prediction with the noisy signal? In other words, if I move the prediction signal by 25 steps and calculate the prediction error, sqrt(sum((data.OutputData(1:end-25+1)-yp.OutputData(25:end)).^2)), it is a lot smaller smaller than without moving it, sqrt(sum((data.OutputData(25:end)-yp.OutputData(25:end)).^2)). With the sine wave this is not true.
Should I for example use the 'predict' with the time-reversed signal as well and calculate the average of the two predictions or should I just calculate the prediction error as above or what should I do?