11.2 向量自回归

到目前为止,我们考虑的所有模型都存在一个强加单向关系的局限性 —— 预测变量受预测因子的影响,但反之不成立。然而,在很多情况下也应该允许相反的情况出现 —— 所有变量都相互影响。在 9.2 节中,个人消费支出的变化( \(C_t\) )是基于个人可支配收入的变化( \(I_t\) )进行预测的,但在该例中,双向影响关系可能会更合适,即: \(I_t\) 的增加会导致 \(C_t\) 的增加,反之亦然。

在2008年至2009年全球金融危机期间,澳大利亚就出现了这种情况。澳大利亚政府在2008年12月推出了包括现金支付在内的一揽子刺激计划,正好赶上圣诞节支出。结果,零售商报告显示销量增加,经济也得到刺激,结果是收入也增加了。

向量自回归( VAR )框架允许这类双向反馈关系。在VAR框架中,所有的变量均被平等对待。在建模过程中,变量之间平等地相互影响。在更正式的术语中,所有变量都被视为“内生的”。为了表示这一点,我们改变记号并将所有变量写成 \(y\)\(y_{1,t}\) 表示变量 \(y_1\) 的第 \(t\) 个观察值, \(y_{2,t}\) 表示变量 \(y_2\) 的第 \(t\) 个观察值,依此类推。

VAR 模型是预测时间序列向量的单变量自回归模型的一般化20。 它由系统中每个变量对应的一个方程组成。每个方程的等式右边都包含一个常数项和系统中所有变量的滞后项。为了简单起见,我们考虑滞后一期的二变量 VAR 模型,于是得到一个二维的 VAR(1) 模型 \[\begin{align} y_{1,t} &= c_1+\phi _{11,1}y_{1,t-1}+\phi _{12,1}y_{2,t-1}+e_{1,t} \tag{11.1}\\ y_{2,t} &= c_2+\phi _{21,1}y_{1,t-1}+\phi _{22,1}y_{2,t-1}+e_{2,t}, \tag{11.2} \end{align}\] 其中 \(e_{1,t}\)\(e_{2,t}\) 都是白噪声过程,且可能存在同期相关。系数 \(\phi_{ii,\ell}\) 表示变量 \(y_i\)\(\ell\) 期滞后项对其自身的影响,系数 \(\phi_{ij,\ell}\) 表示变量 \(y_j\)\(\ell\) 期滞后项对 \(y_i\) 的影响。

如果序列是平稳的,我们直接根据数据拟合 VAR 模型(称为“水平 VAR”)来进行预测;如果序列非平稳,则将数据进行差分使其变得平稳,在此基础上拟合 VAR 模型(称为“差分 VAR”)。在这两种情况下,模型都是利用最小二乘原理对方程逐一进行估计的。对于每个方程,通过最小化 \(e_{i,t}\) 平方和的值来估计参数。

还有一种情况是序列非平稳但是协整,这意味着变量之间存在一个固定的线性组合,这种情况超出了本书的范围,因此我们不在这里探究。这种情况下,应该利用包含误差修正机制的 VAR 设定(通常称为向量误差修正模型),并且使用最小二乘估计的替代估计方法。21

预测以递归的方式从 VAR 模型中得到。 VAR 可以产生系统中包含的每个变量的预测值。为了说明这个过程,假设我们根据直到时刻 \(T\) 的所有观测值拟合了方程 (11.1)(11.2) 所描述的二维 VAR(1) 模型。此时,一步预测由以下公式产生 \[\begin{align*} \hat y_{1,T+1|T} &=\hat{c}_1+\hat\phi_{11,1}y_{1,T}+\hat\phi_{12,1}y_{2,T} \\ \hat y_{2,T+1|T} &=\hat{c}_2+\hat\phi _{21,1}y_{1,T}+\hat\phi_{22,1}y_{2,T}. \end{align*}\] 这与方程 (11.1)(11.2) 的形式相同,只是误差项被设置为0,且参数由它们的估计值替代。当 \(h=2\) 时,预测值为 \[\begin{align*} \hat y_{1,T+2|T} &=\hat{c}_1+\hat\phi_{11,1}\hat y_{1,T+1}+\hat\phi_{12,1}\hat y_{2,T+1}\\ \hat y_{2,T+2|T}&=\hat{c}_2+\hat\phi_{21,1}\hat y_{1,T+1}+\hat\phi_{22,1}\hat y_{2,T+1}. \end{align*}\] 同样地,这与方程 (11.1)(11.2) 的形式相同,只是误差项被设置为0,参数由它们的估计值替代,且未知的 \(y_1\)\(y_2\) 由它们的预测值替代。所有未来时间段的预测值,都可以通过这种方式迭代得到。

在使用 VAR 模型进行预测前,首先需要确定两个问题,即系统中应该包含多少个变量(用 \(K\) 表示)以及滞后期应该选多少(用 \(p\) 表示)。此时, VAR 模型中需要估计的系数个数为 \(K+pK^2\) (其中每个方程需要估计的系数个数为 \(1+pK\) )。例如,对于包含变量个数 \(K=5\) 且滞后期为 \(p=3\) 的 VAR 模型,每个方程都包含16个系数,总共需要估计80个系数。需要估计的系数越多,预测值的估计误差越大。

在实践中,通常保持 \(K\) 较小,尽量只包含彼此相关的变量,这样这些变量才能有效地预测彼此。信息准则常用于选择要包含的滞后阶数。

在 R 中, VAR 模型通过 vars 包实现。它包含一个函数VARselect(),该函数可以通过使用四个不同的信息准则( AIC,HQ,SC 和 FPE )选择滞后阶数 \(p\) 。我们之前提到过 AIC ,SC 只是 BIC 的另一种叫法( SC 代表 Schwarz Criterion ,以其提出者 Gideon Schwarz 的名字命名)。 HQ 是 Hannan-Quinn 准则, FPE 是“ Final Prediction Error ”准则。22使用 AIC 准则时需要注意它往往倾向选择较大的滞后阶数。因此,对于 VAR 模型,我们更愿意使用 BIC 准则。

VARs 有时由于它们是非理论性的而被批评,也就是说,它们并不是在某种可以给方程提供理论结构的经济理论基础上提出的。它们假设系统中每个变量之间都相互影响,这使得直接对估计系数进行解释变得非常困难。尽管如此, VARs 在以下几个方面是有用的:

  1. 预测一些不需要明确解释的彼此相关的变量;
  2. 检验一个变量是否有助于另一个变量的预测(格兰杰因果关系检验的基础);
  3. 脉冲响应分析,分析一个变量对另一变量突然但短暂的变化的响应;
  4. 预测误差方差分解,其中每个变量预测方差的占比都由其他变量的影响决定。

案例:预测美国消费的 VAR 模型

library(vars)
#> Loading required package: MASS
#> 
#> Attaching package: 'MASS'
#> The following object is masked from 'package:dplyr':
#> 
#>     select
#> The following objects are masked from 'package:fma':
#> 
#>     cement, housing, petrol
#> Loading required package: strucchange
#> Loading required package: zoo
#> 
#> Attaching package: 'zoo'
#> The following objects are masked from 'package:base':
#> 
#>     as.Date, as.Date.numeric
#> Loading required package: sandwich
#> 
#> Attaching package: 'strucchange'
#> The following object is masked from 'package:stringr':
#> 
#>     boundary
#> Loading required package: lmtest
VARselect(uschange[,1:2], lag.max=8, type="const")[["selection"]]
#> AIC(n)  HQ(n)  SC(n) FPE(n) 
#>      5      1      1      5

R 输出结果显示了在 vars 包中根据每个信息准则选择得到的滞后期长度。由 AIC 选择的 VAR(5) 与 BIC 选择的 VAR(1) 之间存在较大的差异。这种情况并不罕见。因此,我们首先拟合由 BIC 选择的 VAR(1) 。

var1 <- VAR(uschange[,1:2], p=1, type="const")
serial.test(var1, lags.pt=10, type="PT.asymptotic")
var2 <- VAR(uschange[,1:2], p=2, type="const")
serial.test(var2, lags.pt=10, type="PT.asymptotic")

与单变量 ARIMA 方法类似,我们使用混合检验对残差的相关性进行检验23。 VAR(1) 和 VAR(2) 的残差均存在序列相关,因此我们拟合 VAR(3)

var3 <- VAR(uschange[,1:2], p=3, type="const")
serial.test(var3, lags.pt=10, type="PT.asymptotic")
#> 
#>  Portmanteau Test (asymptotic)
#> 
#> data:  Residuals of VAR object var3
#> Chi-squared = 34, df = 28, p-value = 0.2

该模型的残差通过了序列相关的检验。图11.10展示了 VAR(3) 生成的预测值。

forecast(var3) %>%
  autoplot() + xlab("年") 
 VAR(3) 对美国消费和收入的预测。

图 11.10: VAR(3) 对美国消费和收入的预测。


  1. 更灵活的一般化模型是向量 ARMA 过程。然而, VARs 的相对简单性使得它们在预测方法中占据主导地位。有兴趣的读者可以参考 Athanasopoulos, Poskitt, & Vahid (2012)↩︎

  2. 有兴趣的读者应该参考 Hamilton (1994)Lütkepohl (2007)↩︎

  3. 这些信息准则的详细比较,请参照4.3章节 Lütkepohl (2005)↩︎

  4. “vars”包中用于序列相关性的检验是 3.3 节中出现的检验的多元一般化。↩︎