# VAR Stability - Lag Order Selection

I followed this excellent tutorial on the implementation of Granger causality: http://davegiles.blogspot.de/2011/04/testing-for-granger-causality.html and applied the method with an R script.

My date is monthly data with 48 observations. The time series can be identified as constant and trend. The information criteria of my VAR model suggest:

VARselect(data,lag.max=12, type="both")

AIC(n)  HQ(n)  SC(n) FPE(n)
12     12     12     12


When testing for residuals, it appears lag=12 is actually not a good idea. All lags from 8-12 seem to be serial correlated:

Portmanteau Test (asymptotic)

Vlag.1<-VAR(dara,p=1, type="both")
serial.test(V.1)

data:  Residuals of VAR object Vlag.1
Chi-squared = 39.668501, df = 60, p-value = 0.980
...

data:  Residuals of VAR object Vlag.2
Chi-squared = 37.818541, df = 56, p-value = 0.970

data:  Residuals of VAR object Vlag.3
Chi-squared = 35.150102, df = 52, p-value = 0.964

data:  Residuals of VAR object Vlag.4
Chi-squared = 33.71279, df = 48, p-value = 0.941

data:  Residuals of VAR object Vlag.5
Chi-squared = 35.475514, df = 44, p-value = 0.816

data:  Residuals of VAR object Vlag.6
Chi-squared = 30.101814, df = 40, p-value = 0.872

data:  Residuals of VAR object Vlag.7
Chi-squared = 34.133994, df = 36, p-value = 0.557

data:  Residuals of VAR object Vlag.8
Chi-squared = 44.646799, df = 32, p-value = 0.067

data:  Residuals of VAR object Vlag.9
Chi-squared = 46.735289, df = 28, p-value = 0.014

data:  Residuals of VAR object Vlag.10
Chi-squared = 40.488608, df = 24, p-value = 0.018

data:  Residuals of VAR object Vlag.11
Chi-squared = 73.879557, df = 20, p-value = 0.000

data:  Residuals of VAR object Vlag.12
Chi-squared = 75.586448, df = 16, p-value = 0.000


As I understand the results, lag = 7 (p-value = 0.557), is different enough from the critical 5% level to avoid serial correlation problems.

Now, we have a look at dynamic stability with Inverse Roots of AR characteristic polynomial (if < 1, then stable):

roots(Vlag.1)[[1]]
[1] 0.3436322
roots(Vlag.1)[[2]]
[1] 0.08627817

roots(Vlag.2)[[1]]
[1] 0.5973787
roots(Vlag.2)[[2]]
[1] 0.5973787

roots(Vlag.3)[[1]]
[1] 0.6117323
roots(Vlag.3)[[2]]
[1] 0.6117323

roots(Vlag.4)[[1]]
[1] 0.8245237
roots(Vlag.4)[[2]]
[1] 0.8245237

roots(Vlag.5)[[1]]
[1] 0.9154875
roots(Vlag.5)[[2]]
[1] 0.9154875

roots(Vlag.6)[[1]]
[1] 0.972209
roots(Vlag.6)[[2]]
[1] 0.972209

roots(Vlag.7)[[1]]
[1] 0.9501737
roots(Vlag.7)[[2]]
[1] 0.9501737

roots(Vlag.8)[[1]]
[1] 1.018177
roots(Vlag.8)[[2]]
[1] 1.018177

roots(Vlag.9)[[1]]
[1] 1.039217
roots(Vlag.9)[[2]]
[1] 1.039217

roots(Vlag.10)[[1]]
[1] 1.039219
roots(Vlag.10)[[2]]
[1] 1.039219

roots(Vlag.11)[[1]]
[1] 1.072194
roots(Vlag.11)[[2]]
[1] 1.072194

roots(Vlag.12)[[1]]
[1] 1.261509
roots(Vlag.12)[[2]]
[1] 1.261509


It seems that lag = 7 is the first stable value. Is it okay to go with lag 7 then or do I have to choose a lower lag?

I do know that the lag order selection will have consequences for my following Granger causality analysis and will either make or break the model.

• It seems that lag = 7 is the first stable value -- counting backwards from lag=12, yes (but not counting forward from lag=1). It looks like based on serial correlations and dynamic stability lag=7 is indeed a reasonable choice. However, you could try models with a lower lag order but also the seasonal lag which is lag=12. That is, you would estimated a restricted VAR(12) model where all lags above some $p$ -- except for lag=12 -- would be restricted to zero. This is a common approach, I believe. – Richard Hardy Oct 18 '15 at 13:54