# Optimal lag-selection in VAR-model in R

Having troubles with the lag specification of a VAR-model. The purpose of the model is to measure orthogonal impulse/response function of oil price shocks on macroeconomic variables, such as GDP-growth, unemployment rate, inflation-rate and interest-rate. These are quarterly observations from 2001-2019 so a total of 73 observations. The variables have been put in recursively in the set in the following order (oil price, unemployment, GDP, inflation, interest rates).

All the variables (including log oil price) has been checked for stationarity using ADF/KPSS and corrected for if not stationary. The problem comes when it's time to select the lag-length in the VAR-model. I'm doing this in R so by using the command:

VARselect(data, type= "const", lag.max = 10)


AIC suggest a lag-length of 10 which I suppose is not consistent results since it uses up a lot degrees of freedom to estimate all the coefficients in the model. (My guess is that 1-4 lags would be reasonable.) My question is therefore, what I'm I doing wrong here or is it something I have to do/check for in the specification of the variables so that VARselect can "work" properly on the dataset? Any suggestion or guidance would be highly appreciated, thank you!

Cholesky decomposition

            DOIL          DU        BNP        CPI       INT
DOIL 0.1602771091  0.00000000 0.00000000 0.00000000 0.0000000
DU   0.0001141673  0.27248971 0.00000000 0.00000000 0.0000000
BNP  0.2263674542 -0.35994187 1.15985788 0.00000000 0.0000000
CPI  0.1796382036 -0.03355081 0.04371295 0.29855876 0.0000000
INT  0.1645450500 -0.07566300 0.07504165 0.06567306 0.2237841

• what did you do to correct your variables if not stationary? – Martin Oct 23 at 7:38
• @Martin The variables that were not stationary I took their first differences. I got a suggestion to estimate VAR(1) and check if I had any autocorrelation in the residuals, if I had any I would proceed to estimate VAR(2) until there were no autocorrelation. Since AIC suggest VAR(10) but BIC VAR(1) when using VARselect, this seems like an appropriate solution, but I do not know if this violates the “golden middle” of the information criterion – MisterButter Oct 24 at 8:19