我正在考虑两个时间序列(未偿还贷款和中央银行储备)的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。然而,这将意味着我将模型与不同的样本大小进行比较。
我的问题是:
是否有客观的方法来确定所考虑的最大滞后数?
这些强烈不同的结果是否表明我的数据存在问题?
答案 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