How to automate ARIMA model 'order' selection based on ACF and PACF plots?

27 views (last 30 days)
While modeling in MATLAB, we have to provide values of p, d and q in arima(p,d,q) implementation, by observing ACF - PACF plots and may be differencing the data afterwards. Is there a way so that these values can be assigned automatically from ACF - PACF plots and AIC test? I know, there are some other factors affecting these input argument values. But, for beginning I would be focusing on ACF - PACF plot, AIC test and need of differentiating the data only. The aim of this procedure is to get best fit possible.

Accepted Answer

Asad (Mehrzad) Khoddam
Asad (Mehrzad) Khoddam on 3 Oct 2016
Edited: Asad (Mehrzad) Khoddam on 3 Oct 2016
I am not sure that it is your answer or not. But I have used this function to find the best values for p and q for a given time series y
function ar=checkArima(y,pp,qq)
% pp is the maximum for p
% qq is the maximum for q
LOGL = zeros(pp+1,qq+1); %Initialize
PQ = zeros(pp+1,qq+1);
for p = 1:pp+1
for q = 1:qq+1
mod = arima(p-1,0,q-1)
[fit,~,logL] = estimate(mod,y,'print',false);
LOGL(p,q) = logL;
PQ(p,q) = p+q;
end
end
LOGL = reshape(LOGL,(pp+1)*(qq+1),1);
PQ = reshape(PQ,(pp+1)*(qq+1),1);
[~,bic] = aicbic(LOGL,PQ+1,100);
ar=reshape(bic,pp+1,qq+1);
% the rows correspond to the AR degree (p) and the
% columns correspond to the MA degree (q). The smallest value is best
  3 Comments
Hamed Majidiyan
Hamed Majidiyan on 7 Mar 2022
Hi Asad,
Thanks for the code in advance. I ran the code and I got the following results, even though I don't know how to intrepret the outcomes, so any help would be highly appreciated
ARMA=checkarma(datac_chunk,2,1,2)
ARMA(:,:,1) =
1.0e+05 *
-0.9306 -1.7988 -0.9305
-1.7988 -2.5917 -1.6927
-2.6918 -3.0212 -0.0683
ARMA(:,:,2) =
1.0e+05 *
-1.7987 -0.9305 -1.7987
-2.5914 -1.6966 -2.5907
-1.7986 -1.5608 -3.1177
Hamed Majidiyan
Hamed Majidiyan on 8 Mar 2022
Hi Asad,
Thanks for the code in advance. I ran the code and I got the following results, even though I don't know how to intrepret the outcomes, so any help would be highly appreciated
ARMA=checkarma(datac_chunk,2,1,2)
ARMA(:,:,1) =
1.0e+05 *
-0.9306 -1.7988 -0.9305
-1.7988 -2.5917 -1.6927
-2.6918 -3.0212 -0.0683
ARMA(:,:,2) =
1.0e+05 *
-1.7987 -0.9305 -1.7987
-2.5914 -1.6966 -2.5907
-1.7986 -1.5608 -3.1177

Sign in to comment.

More Answers (0)

Categories

Find more on Conditional Mean Models in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!