how to generate error terms for idploy or ARMAX models
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Dear Experts,
I would like to convert ARMAX model of idploy form to classical time series equation as given below.
y(t)=[a1 a2 .... an]*[y(t−1)+y(t-2)+...+y(t−n)] + [b1 b2 .... bn]*[u(t−1)+u(t-2)+...+u(t−n)] + [c1 c2 .... cn]*[e(t−1)+e(t-2)+...+e(t−n)] + e(t)
As idploy provides a1...an, b1....bn and c1... cn, please let me know how to generate e(t−1), e(t-2),...,e(t−n)],e(t) terms
Thanking you in advance,
Kind Regards, Kushan
0 Kommentare
Antworten (1)
Jaynik
am 15 Jul. 2024
Hi Kushan,
In the context of an ARMAX model, the terms in the equation are the residuals of the model, that is, the differences between the observed and predicted values of the output variable y(t).
Once you have estimated the ARMAX model using the idpoly function, Generate iddata object using the input u(t) and the output y(t). Then you can generate the residuals using the resid function. Following is a sample code for the same:
% Assume model is your estimated ARMAX model
% Assume y and u are your output and input data
z = iddata(y, u);
% Compute the residuals
residuals = resid(model, z);
% e.OutputData now contains the residuals e(t), e(t-1), ..., e(t-n)
The residuals are returned as an iddata object, and can be accessed through the residuals themselves with the OutputData property of this object.
Please note that the residuals e(t), e(t-1), …, e(t-n) are typically assumed to be white noise. They are normally distributed with zero mean and constant variance, and are uncorrelated with each other and with the input data u(t), u(t-1), …, u(t-n).
If you want to manually compute the output of the model using the ARMAX equation, you can refer the following code:
e = residuals.OutputData;
% Extract coefficients
a = model.A(2:end); % AR coefficients (excluding leading 1)
b = model.B(2:end); % MA coefficients (excluding leading 0)
c = model.C(2:end); % Noise coefficients (excluding leading 1)
y = zeros(N, 1);
for t = (max(length(a), length(b), length(c)) + 1):N
y(t) = -a * y(t-1:-1:t-length(a))' + b * u(t-1:-1:t-length(b))' + c * e(t-1:-1:t-length(c))' + e(t);
end
Hope this helps!
0 Kommentare
Siehe auch
Kategorien
Mehr zu Transfer Function Models finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!