compare vs forecast with models

2 visualizaciones (últimos 30 días)
s.p4m
s.p4m el 13 de Sept. de 2016
Comentada: s.p4m el 26 de Sept. de 2016
I'm using ARMA-models to predict a signal. My signal is a timeseries with n points;
input = iddata(signal,[],Ts);
My model is an ARMA-model with p=10 and q=10;
model = armax(input,[10 10]);
After I build my model, I use the compare command to check the performance of my model for 1-step-ahead predictions
[y,fit,xo] = compare(model,input,1);
I also use the forecast command to check the performance of my model
for k = 1:length(input.y)-10
x(k,1) = forecast(model,input.y(k:k+9),1);
end
Both commands check 1-step-ahead forecast, if I'm not mistaken. But when I compare the results from both, they are not equal.
plot(y.y(11:end));
hold on
plot(x);
So here is my question: How come that compare and forecast give two different answers.

Respuesta aceptada

Fei Deng
Fei Deng el 21 de Sept. de 2016
Hi, It is my understanding that you built a ARMA model based on the signal you have and you used function 'compare' and 'forecast' to evaluate the ARAM model. You want the predicted/evaluated output value at time t to be predicted using values in measured output data (input.y) up to time t-1. In order to do that, in the loop you have, change
x(k,1) = forecast(model,input.y(k:k+9),1);
to
x(k,1) = forecast(model,input.y(1:k+9),1);
otherwise, the predicted value at time t will be obtained based on each 10 values in input.y before time t.
If you still don’t get equal results that you expected, here are two suggestions:
1) Check the differences and consider if they are reasonable error by white-noise disturbance value in the model.
2) Consider if the sampling rate is enough for your data.
  2 comentarios
s.p4m
s.p4m el 22 de Sept. de 2016
Editada: s.p4m el 22 de Sept. de 2016
Thank you for your input. You a right my loop is there so I make prediction based on the last 10 values in input.y. But since my ARMA-model only consider the last 10 values, why should I consider more. The parameter of the model are set in:
model = armax(input,[10 10]);
and won't change after that.
For your 2 suggestions:
2) Doesn't matter, because right now I'm not interested in a good forecast but rather want to understand why the outputs are different.
1) This could be the reason. I will check it and come back
s.p4m
s.p4m el 26 de Sept. de 2016
I just checked if the white noise process could be the reason but the difference is far to big.
But I also checked your Input about using all past data instead of only the last 10 and you're right. When changing
x(k,1) = forecast(model,input.y(k:k+9),1);
to
x(k,1) = forecast(model,input.y(1:k+9),1);
the output from forecast and compare are the same. Could you explain the reason for this, because I thought the model only consider the last 10 entries and the parameter were fix.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Time Series Analysis en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by