finding the roots of an MA

9 次查看(过去 30 天)
Jean Duchesne
Jean Duchesne 2018-5-31
回答: Shlok 2024-8-28
Hello,
I am simulating an MA process (with definable number of lags) and I would like to encode an invertibility condition on its parameters. I therefore need to find the roots of the MA process I simulated with a set of parameters theta_true so that I can write a "while" condition such as I have done below with the ADfuller test.
Anyway I don't know wether I should apply the roots() command on y or on theta_true. The test of invertibility should be concluant if the absolute value of the real root is higher than 1.
Can someone clue me on how to do so?
sample code:
m=2;
T=m+100;
z=randn(T,1);
theta_true=rand(m+1,1);
p=length(theta_true);
y=MASIM_GEN(theta_true,z);
while adftest(y)==0
theta_true=rand(p,1);
end
theta_true(1)=sqrt(theta_true(1)^2);
sigma2_epsilon=theta_true(1);

回答(1 个)

Shlok
Shlok 2024-8-28
Hi Jean,
I understand that you are working on simulating a Moving Average (MA) process and need to verify its invertibility.
To assess this, you should examine the roots of the characteristic equation derived from the MA parameters, “theta_true. The process is deemed invertible if all the roots of this equation lie outside the unit circle in the complex plane, meaning their absolute values exceed 1.
The “roots()” command should be applied to the characteristic equation based on the model parameters, “theta_true”, rather than to “y”. By focusing on the roots of this characteristic equation, you can effectively ensure that the invertibility condition is met.
You can also refer to the following MATLAB answer, which includes a relevant example:

类别

Help CenterFile Exchange 中查找有关 MATLAB 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by