# AIC/BIC values keeps falling as I add more and more lags. How do I select the appropriate lag length?

I am trying to minimize the values of the Akaike and Bayesian Information Criteria to figure out the optimal lag structure for my ARDL error correction model. I am using Stata to run my analysis and am running into the following problem when trying to minimize the Information Criteria:

I am running a loop that estimates the same ARDL model with different lags and then generates the AIC/BIC values for each of these models. The problem is that the AIC/BIC values keep falling as I add more lags. I am not sure how to interpret these results since the AIC will keep falling even if I were to put a 100 or 200 lags in there. How do you minimize the information criteria if just keeps falling and falling until I run out of degrees of freedom? Do you have any suggestions for what I should be doing here to select my lag structure?

Here is the stata code I am using. In this case, I have set the maximum lag at 50. The model with 50 lags gives the lowest AIC and BIC estimates. As I increase this maximum lag to 100, the AIC and BIC is lowest for the model with the largest lags.

*forval i=1/50{
forval j=1/50{
regress D.Y  L(1/i').D.Y  L(1/j').D.X  L(1).X  L(1).X
estimates store est_i'_j'
}
}

estimates stats est_*,n(251)

• Could that be a coding problem or a definition problem? You could try your code on artificially generated data where you know what the true model is and see if AIC/BIC keeps diverging or actually detects the true model. If it does not work on this artificial example, it will indicate problems with the code. Feb 18, 2015 at 7:26

## 1 Answer

Firstly 50 lags is too much. What kind of data are you modeling? Secondly, there is a problem with your code: the D.X must start at 0 not 1. And You wrote L(1).X twice.
You can use this
forval i=1/50{
forval j=1/50{
regress D.Y L(1/i').D.Y L(0/j').D.X L(1).Y L(1).X
estimates store est_i'_j'
}
}
estimates stats est_*,n(251)