VARselect()依赖于lag.max

时间:2017-10-27 08:55:14

标签: r var

我正在考虑两个时间序列(未偿还贷款和中央银行储备)的VECM。我的数据集包含106个月度数据观察结果。

为了确定适当的滞后长度,我考虑使用vars包中的VARselect()函数。期权lag.max的自然选择是12,代表一年。

但是,我注意到结果很大程度上取决于max.lag选项的值。以下是三个例子:

> VARselect(data, type = "trend", lag.max = 12)
$selection
AIC(n)  HQ(n)  SC(n) FPE(n) 
     7      6      1      7 

> VARselect(data, type = "trend", lag.max = 10)
$selection
AIC(n)  HQ(n)  SC(n) FPE(n) 
     9      7      1      9

> VARselect(data, type = "trend", lag.max = 6)
$selection
AIC(n)  HQ(n)  SC(n) FPE(n) 
     6      1      1      6 

据我了解这个功能,这是因为样本大小根据lag.max而变化,因为VAR(p)都是基于相同的样本大小估计的。

我测试的另一种方法是估算每个滞后的VAR(p),然后计算响应的AIC和BIC。然而,这将意味着我将模型与不同的样本大小进行比较。

我的问题是:

  1. 是否有客观的方法来确定所考虑的最大滞后数?

  2. 这些强烈不同的结果是否表明我的数据存在问题?

2 个答案:

答案 0 :(得分:0)

通常对于ARIMA等时间序列,您可以考虑查看ACF和PACF图:PACF可以帮助您识别滞后期。这里有很好的例子和讨论 - 如果它们可以应用于VECM。 https://stats.stackexchange.com/questions/134487/analyse-acf-and-pacf-plots

答案 1 :(得分:0)

是的,VARselect 取决于 lag.max。 lag.max 越高,n 越高。为构建回归量而牺牲了最初的观察结果。

函数描述说:“该函数返回信息标准和最终预测误差,用于将滞后顺序顺序增加到 VAR(p) 过程。它们基于相同的样本大小。”

例如:

data_bis = data[-c(1,2),]
VARselect(data_bis, type = "trend", lag.max = 10)
$selection

返回与

相同的结果
VARselect(data, type = "trend", lag.max = 12)
$selection