Sims (1980) 之前,宏观经济学家建巨型联立方程模型,用”理论”给识别约束找理由。Sims 指出这些理由基本站不住:约束不可检验、模型拟合差、政策结论依赖没人能辩护的假设。他的解法是无约束向量自回归——让每个变量对所有变量的滞后回归,不施加任何”不可信的约束”。这个提议简单到迫使整个领域反思建模方式。
但这篇文章想让你带走的不只是 VAR 怎么推,还有一条贯穿始终的线:“无理论”只是把理论从估计端挪到了解读端 。估计一个 VAR 确实不需要经济学;可你一旦问它有意思的问题——冲击怎么传导、谁驱动谁、政策改变会怎样——识别假设就会从后门回来,而且每一步都得你自己选。看清这一点,就看清了从 Cholesky 排序到符号约束的整个谱系在争什么。参考 Hamilton (1994, 第 11 章)、Lütkepohl (2005)、Tsay (2010, 第 4 章)。
基本 VAR
K K K 变量 p p p 阶 VAR:
y t = c + A 1 y t − 1 + A 2 y t − 2 + ⋯ + A p y t − p + u t \mathbf{y}_t = \mathbf{c} + \mathbf{A}_1 \mathbf{y}_{t-1} + \mathbf{A}_2 \mathbf{y}_{t-2} + \cdots + \mathbf{A}_p \mathbf{y}_{t-p} + \mathbf{u}_t y t = c + A 1 y t − 1 + A 2 y t − 2 + ⋯ + A p y t − p + u t
其中 y t = ( y 1 t , y 2 t , … , y K t ) ′ \mathbf{y}_t = (y_{1t}, y_{2t}, \ldots, y_{Kt})' y t = ( y 1 t , y 2 t , … , y K t ) ′ 是 K K K 维向量,c \mathbf{c} c 是截距向量,A i \mathbf{A}_i A i 是 K × K K \times K K × K 系数矩阵,u t = ( u 1 t , … , u K t ) ′ \mathbf{u}_t = (u_{1t}, \ldots, u_{Kt})' u t = ( u 1 t , … , u K t ) ′ 是创新向量,满足:
E [ u t ] = 0 , E [ u t u t ′ ] = Σ , E [ u t u s ′ ] = 0 for t ≠ s E[\mathbf{u}_t] = \mathbf{0}, \quad E[\mathbf{u}_t \mathbf{u}_t'] = \boldsymbol{\Sigma}, \quad E[\mathbf{u}_t \mathbf{u}_s'] = \mathbf{0} \text{ for } t \neq s E [ u t ] = 0 , E [ u t u t ′ ] = Σ , E [ u t u s ′ ] = 0 for t = s
注意 Σ \boldsymbol{\Sigma} Σ 不要求对角——同期的创新可以相关,这个”可以相关”是后面一半故事的起点。
平稳性条件:det ( I K − A 1 z − ⋯ − A p z p ) = 0 \det(\mathbf{I}_K - \mathbf{A}_1 z - \cdots - \mathbf{A}_p z^p) = 0 det ( I K − A 1 z − ⋯ − A p z p ) = 0 的所有根在单位圆外。伴随形式让这一点变透明。定义 K p × 1 Kp \times 1 K p × 1 状态向量:
ξ t = ( y t ′ , y t − 1 ′ , … , y t − p + 1 ′ ) ′ \boldsymbol{\xi}_t = (\mathbf{y}_t', \mathbf{y}_{t-1}', \ldots, \mathbf{y}_{t-p+1}')' ξ t = ( y t ′ , y t − 1 ′ , … , y t − p + 1 ′ ) ′
那么:
ξ t = F ξ t − 1 + G u t \boldsymbol{\xi}_t = \mathbf{F} \boldsymbol{\xi}_{t-1} + \mathbf{G} \mathbf{u}_t ξ t = F ξ t − 1 + G u t
其中
F = ( A 1 A 2 ⋯ A p − 1 A p I K 0 ⋯ 0 0 0 I K ⋯ 0 0 ⋮ ⋱ ⋮ 0 0 ⋯ I K 0 ) , G = ( I K 0 ⋮ 0 ) \mathbf{F} = \begin{pmatrix} \mathbf{A}_1 & \mathbf{A}_2 & \cdots & \mathbf{A}_{p-1} & \mathbf{A}_p \\ \mathbf{I}_K & \mathbf{0} & \cdots & \mathbf{0} & \mathbf{0} \\ \mathbf{0} & \mathbf{I}_K & \cdots & \mathbf{0} & \mathbf{0} \\ \vdots & & \ddots & & \vdots \\ \mathbf{0} & \mathbf{0} & \cdots & \mathbf{I}_K & \mathbf{0} \end{pmatrix}, \quad \mathbf{G} = \begin{pmatrix} \mathbf{I}_K \\ \mathbf{0} \\ \vdots \\ \mathbf{0} \end{pmatrix} F = A 1 I K 0 ⋮ 0 A 2 0 I K 0 ⋯ ⋯ ⋯ ⋱ ⋯ A p − 1 0 0 I K A p 0 0 ⋮ 0 , G = I K 0 ⋮ 0
任何 VAR(p p p ) 都被压成一个大 VAR(1),平稳当且仅当 F \mathbf{F} F 所有特征值的模小于 1。
平稳的 VAR 可以求逆成 VMA(∞ \infty ∞ ) 表示:
y t = μ + ∑ j = 0 ∞ Ψ j u t − j \mathbf{y}_t = \boldsymbol{\mu} + \sum_{j=0}^\infty \boldsymbol{\Psi}_j \mathbf{u}_{t-j} y t = μ + j = 0 ∑ ∞ Ψ j u t − j
其中 μ = ( I − A 1 − ⋯ − A p ) − 1 c \boldsymbol{\mu} = (\mathbf{I} - \mathbf{A}_1 - \cdots - \mathbf{A}_p)^{-1} \mathbf{c} μ = ( I − A 1 − ⋯ − A p ) − 1 c ,Ψ j \boldsymbol{\Psi}_j Ψ j 满足递推 Ψ j = A 1 Ψ j − 1 + ⋯ + A p Ψ j − p \boldsymbol{\Psi}_j = \mathbf{A}_1 \boldsymbol{\Psi}_{j-1} + \cdots + \mathbf{A}_p \boldsymbol{\Psi}_{j-p} Ψ j = A 1 Ψ j − 1 + ⋯ + A p Ψ j − p ,初始条件 Ψ 0 = I K \boldsymbol{\Psi}_0 = \mathbf{I}_K Ψ 0 = I K 、Ψ j = 0 \boldsymbol{\Psi}_j = \mathbf{0} Ψ j = 0 对 j < 0 j < 0 j < 0 。这些移动平均矩阵 记录 j j j 期前的冲击怎么传到当下——先记住它们,脉冲响应整个建在上面。
估计:便宜得可疑
估计是 VAR 最省心的部分。把 K K K 个方程摆开,逐方程 OLS 就够了,而且逐方程 OLS 等价于系统 GLS ——因为每个方程的回归子完全相同(都是滞后的 y \mathbf{y} y 加截距),跨方程的误差相关不带来效率损失。对每个方程 i i i ,把 y i t y_{it} y i t 对常数和 y t − 1 , … , y t − p \mathbf{y}_{t-1}, \ldots, \mathbf{y}_{t-p} y t − 1 , … , y t − p 回归,得到 A ^ j \hat{\mathbf{A}}_j A ^ j 和残差 u ^ t \hat{\mathbf{u}}_t u ^ t ;协方差矩阵用残差的样本协方差,带自由度修正(每方程 K p + 1 Kp + 1 K p + 1 个回归子):
Σ ^ = 1 T − K p − 1 ∑ t = p + 1 T u ^ t u ^ t ′ \hat{\boldsymbol{\Sigma}} = \frac{1}{T - Kp - 1} \sum_{t=p+1}^T \hat{\mathbf{u}}_t \hat{\mathbf{u}}_t' Σ ^ = T − K p − 1 1 t = p + 1 ∑ T u ^ t u ^ t ′
标准正则条件下估计量一致且渐近正态(Hamilton 1994, 定理 11.4 附近的结果)。堆叠系数向量 β ^ = vec ( [ c ^ , A ^ 1 , … , A ^ p ] ) \hat{\boldsymbol{\beta}} = \text{vec}([\hat{\mathbf{c}}, \hat{\mathbf{A}}_1, \ldots, \hat{\mathbf{A}}_p]) β ^ = vec ([ c ^ , A ^ 1 , … , A ^ p ]) 的渐近协方差:
Var ( β ^ ) = 1 T Γ − 1 ⊗ Σ \text{Var}(\hat{\boldsymbol{\beta}}) = \frac{1}{T} \boldsymbol{\Gamma}^{-1} \otimes \boldsymbol{\Sigma} Var ( β ^ ) = T 1 Γ − 1 ⊗ Σ
其中 Γ = E [ x t x t ′ ] \boldsymbol{\Gamma} = E[\mathbf{x}_t \mathbf{x}_t'] Γ = E [ x t x t ′ ] 是回归子(截距与各期滞后 y \mathbf{y} y 堆叠成的 x t \mathbf{x}_t x t )的二阶矩矩阵,由 y \mathbf{y} y 各滞后的自协方差拼成。实际上这些软件都替你做了——Python 里 statsmodels.tsa.api.VAR,R 里 vars 包。
便宜的地方在参数量上收费。每个方程 K p + 1 Kp + 1 K p + 1 个参数,系统一共 K 2 p + K K^2 p + K K 2 p + K 个,外加协方差矩阵的 K ( K + 1 ) / 2 K(K+1)/2 K ( K + 1 ) /2 个。K = 5 K = 5 K = 5 、p = 4 p = 4 p = 4 就是一百多个系数,自由度立刻紧张。所以滞后阶选择不是走过场:AIC、BIC、HQ 都能用,BIC 倾向于比 AIC 更小的 p p p ;Sims (1980) 的建议是对滞后慷慨一点以避免动态设定偏差,渐近理论 Lütkepohl (2005, 第 4 章) 有综述。参数灾难更彻底的解法是贝叶斯收缩,后面讲。
Granger 因果:VAR 里最容易的检验,最容易被误读的词
变量 y 1 t y_{1t} y 1 t Granger 引起 y 2 t y_{2t} y 2 t ,是说在 y 2 t y_{2t} y 2 t 自身滞后之外,y 1 t y_{1t} y 1 t 的滞后对预测 y 2 t y_{2t} y 2 t 有增量帮助。在 VAR 里这是个直接的系数检验。写出 y 2 t y_{2t} y 2 t 的方程:
y 2 t = c 2 + ∑ j = 1 p ( β 2 , 1 j y 1 , t − j + β 2 , 2 j y 2 , t − j ) + u 2 t y_{2t} = c_2 + \sum_{j=1}^p (\beta_{2,1j} y_{1,t-j} + \beta_{2,2j} y_{2,t-j}) + u_{2t} y 2 t = c 2 + j = 1 ∑ p ( β 2 , 1 j y 1 , t − j + β 2 , 2 j y 2 , t − j ) + u 2 t
零假设是 y 1 t y_{1t} y 1 t 的滞后全不进入:H 0 : β 2 , 1 , 1 = ⋯ = β 2 , 1 , p = 0 H_0: \beta_{2,1,1} = \cdots = \beta_{2,1,p} = 0 H 0 : β 2 , 1 , 1 = ⋯ = β 2 , 1 , p = 0 ,用 Wald 或 F 检验。等价地比较无约束和有约束模型的似然:
L R = 2 ( ℓ unrestricted − ℓ restricted ) → d χ p 2 LR = 2(\ell_{\text{unrestricted}} - \ell_{\text{restricted}}) \xrightarrow{d} \chi^2_p L R = 2 ( ℓ unrestricted − ℓ restricted ) d χ p 2
L R LR L R 大就拒绝。对每个有序对跑一遍,得到完整的 Granger 因果矩阵。另有一个单独的问题叫瞬时因果 :控制动态之后,u 1 t u_{1t} u 1 t 和 u 2 t u_{2t} u 2 t 的同期相关是否为零——看 Σ ^ \hat{\boldsymbol{\Sigma}} Σ ^ 的非对角元,零假设下样本协方差渐近正态、方差量级 1 / T 1/T 1/ T 。
现在说那个词。“Granger 因果”在任何哲学意义上都不是因果,它的全部含义是”对预测有增量信息”。一个变量可以 Granger 引起另一个而不是它的原因(两者被第三个变量共同驱动);一个变量可以是原因却不 Granger 引起结果(效应是瞬时的,被同期相关吃掉了)。这个区分不是学究气——它直接决定检验结果能拿来说什么。实证里的常见问法:货币供给是否 Granger 引起通胀(宏观数据里通常是);收益率曲线是否 Granger 引起衰退(期限利差的预测能力是文献里的稳定发现);油价对股票收益(有争议);成交量对波动率(常见的肯定结果)。每一条都是预测性陈述,不是机制陈述。
检验本身也有几个会咬人的地方。漏掉共同原因,两个变量会显得互相 Granger 引起。变量 I(1) 且不协整时,检验的分布非标准、容易拒绝过多——回到平稳性那块地基。关系还会随样本期漂移:1960-1990 成立的 1990-2020 未必成立。最后,标准检验是线性的,非线性的可预测性它抓不到。
脉冲响应:识别假设从这里进场
IRF 回答的问题:今天给系统一个冲击,所有变量未来 h h h 期怎么走?答案就藏在 VMA 矩阵里。在时刻 0 给创新一个冲击 δ \boldsymbol{\delta} δ 、其余期为零:
E [ y h ∣ u 0 = δ , u − 1 = u − 2 = ⋯ = 0 ] − E [ y h ∣ u 0 = 0 , … ] = Ψ h δ E[\mathbf{y}_h \mid \mathbf{u}_0 = \boldsymbol{\delta}, \mathbf{u}_{-1} = \mathbf{u}_{-2} = \cdots = \mathbf{0}] - E[\mathbf{y}_h \mid \mathbf{u}_0 = \mathbf{0}, \ldots] = \boldsymbol{\Psi}_h \boldsymbol{\delta} E [ y h ∣ u 0 = δ , u − 1 = u − 2 = ⋯ = 0 ] − E [ y h ∣ u 0 = 0 , … ] = Ψ h δ
对第 i i i 个创新的 h h h 期响应就是 Ψ h \boldsymbol{\Psi}_h Ψ h 的第 i i i 列。到这里还不需要任何经济学。
问题马上来了:Σ \boldsymbol{\Sigma} Σ 有非对角元,创新在方程之间同期相关。“只冲击 u 1 t u_{1t} u 1 t 、其他保持为零”这个思想实验在数据里不存在——它们通常一起动。要把冲击掰开,得先让它们正交。标准做法是 Cholesky 分解:
Σ = P P ′ \boldsymbol{\Sigma} = \mathbf{P} \mathbf{P}' Σ = P P ′
P \mathbf{P} P 下三角、对角元为正。定义正交化冲击 e t = P − 1 u t \mathbf{e}_t = \mathbf{P}^{-1} \mathbf{u}_t e t = P − 1 u t ,它们互不相关、方差为单位:
E [ e t e t ′ ] = P − 1 Σ ( P − 1 ) ′ = P − 1 P P ′ ( P ′ ) − 1 = I K E[\mathbf{e}_t \mathbf{e}_t'] = \mathbf{P}^{-1} \boldsymbol{\Sigma} (\mathbf{P}^{-1})' = \mathbf{P}^{-1} \mathbf{P} \mathbf{P}' (\mathbf{P}')^{-1} = \mathbf{I}_K E [ e t e t ′ ] = P − 1 Σ ( P − 1 ) ′ = P − 1 P P ′ ( P ′ ) − 1 = I K
对第 j j j 个正交冲击的 IRF 是 Ψ h P \boldsymbol{\Psi}_h \mathbf{P} Ψ h P 的第 j j j 列。
注意刚刚发生了什么:Cholesky 不是中性的数学变换,它强加了递归 结构——变量 1 的冲击同期影响所有变量,变量 2 的冲击同期影响变量 2 到 K K K 但不影响 1,依此类推。这是一个因果排序:变量 1 同期最”外生”,变量 K K K 最内生。这就是开头说的那件事——“无理论”的 VAR 在你画第一张正交化 IRF 图的瞬间就重新需要理论了,理论就藏在排序里。惯例是按反应速度排:慢变量(实际 GDP、资本存量)在前,快变量(利率、货币总量)在后。但惯例不等于真理:把货币政策放在产出前面和后面,会得到不同的答案。所以拿到 IRF 先做一件事——换几个排序重跑。结果定性不变,识别还算结实;定性翻转,你报告的是排序不是数据。
预测误差方差分解
FEVD 问的是长期账目:变量 i i i 的 h h h 步预测误差方差里,每个正交冲击各占多少?h h h 步预测误差:
y T + h − y ^ T + h ∣ T = ∑ j = 0 h − 1 Ψ j u T + h − j \mathbf{y}_{T+h} - \hat{\mathbf{y}}_{T+h|T} = \sum_{j=0}^{h-1} \boldsymbol{\Psi}_j \mathbf{u}_{T+h-j} y T + h − y ^ T + h ∣ T = j = 0 ∑ h − 1 Ψ j u T + h − j
MSE 矩阵:
MSE ( h ) = ∑ j = 0 h − 1 Ψ j Σ Ψ j ′ \text{MSE}(h) = \sum_{j=0}^{h-1} \boldsymbol{\Psi}_j \boldsymbol{\Sigma} \boldsymbol{\Psi}_j' MSE ( h ) = j = 0 ∑ h − 1 Ψ j Σ Ψ j ′
代入 Σ = P P ′ \boldsymbol{\Sigma} = \mathbf{P}\mathbf{P}' Σ = P P ′ ,用正交冲击改写:
y T + h − y ^ T + h ∣ T = ∑ j = 0 h − 1 Ψ j P e T + h − j \mathbf{y}_{T+h} - \hat{\mathbf{y}}_{T+h|T} = \sum_{j=0}^{h-1} \boldsymbol{\Psi}_j \mathbf{P} \mathbf{e}_{T+h-j} y T + h − y ^ T + h ∣ T = j = 0 ∑ h − 1 Ψ j P e T + h − j
冲击 j j j 对变量 i i i 在 h h h 期 MSE 的占比:
ω i j ( h ) = ∑ k = 0 h − 1 [ ( Ψ k P ) i j ] 2 MSE i i ( h ) \omega_{ij}(h) = \frac{\sum_{k=0}^{h-1} \left[ (\boldsymbol{\Psi}_k \mathbf{P})_{ij} \right]^2}{\text{MSE}_{ii}(h)} ω ij ( h ) = MSE ii ( h ) ∑ k = 0 h − 1 [ ( Ψ k P ) ij ] 2
对 j j j 求和等于 1。解读:ω 1 , 2 ( 24 ) = 0.6 \omega_{1,2}(24) = 0.6 ω 1 , 2 ( 24 ) = 0.6 意味着变量 1 的 24 步预测误差方差有 60% 归到变量 2 的冲击——这就是”变量 2 长期驱动变量 1”这类说法的技术底座。当然,它继承了 IRF 的一切识别依赖:换个排序,分解就换一副面孔。
结构 VAR:把识别摆上台面
Cholesky 只是识别谱系的起点。把问题正式化:结构 VAR 假设存在经济上有含义的结构冲击 ε t \boldsymbol{\varepsilon}_t ε t ,结构形式:
A 0 y t = c + A 1 ∗ y t − 1 + ⋯ + A p ∗ y t − p + B ε t \mathbf{A}_0 \mathbf{y}_t = \mathbf{c} + \mathbf{A}_1^* \mathbf{y}_{t-1} + \cdots + \mathbf{A}_p^* \mathbf{y}_{t-p} + \mathbf{B} \boldsymbol{\varepsilon}_t A 0 y t = c + A 1 ∗ y t − 1 + ⋯ + A p ∗ y t − p + B ε t
其中 E [ ε t ε t ′ ] = I K E[\boldsymbol{\varepsilon}_t \boldsymbol{\varepsilon}_t'] = \mathbf{I}_K E [ ε t ε t ′ ] = I K (正交、单位方差),A 0 \mathbf{A}_0 A 0 捕捉同期交互,B \mathbf{B} B 把结构冲击映射到简化型误差。两边乘 A 0 − 1 \mathbf{A}_0^{-1} A 0 − 1 回到简化型:
y t = c + A 1 y t − 1 + ⋯ + u t \mathbf{y}_t = \mathbf{c} + \mathbf{A}_1 \mathbf{y}_{t-1} + \cdots + \mathbf{u}_t y t = c + A 1 y t − 1 + ⋯ + u t
其中 A i = A 0 − 1 A i ∗ \mathbf{A}_i = \mathbf{A}_0^{-1} \mathbf{A}_i^* A i = A 0 − 1 A i ∗ ,u t = A 0 − 1 B ε t \mathbf{u}_t = \mathbf{A}_0^{-1} \mathbf{B} \boldsymbol{\varepsilon}_t u t = A 0 − 1 B ε t ,于是 Σ = A 0 − 1 B B ′ ( A 0 − 1 ) ′ \boldsymbol{\Sigma} = \mathbf{A}_0^{-1} \mathbf{B} \mathbf{B}' (\mathbf{A}_0^{-1})' Σ = A 0 − 1 B B ′ ( A 0 − 1 ) ′ 。识别的算术:待定的映射有 K 2 K^2 K 2 个自由元,而 Σ \boldsymbol{\Sigma} Σ 只提供 K ( K + 1 ) / 2 K(K+1)/2 K ( K + 1 ) /2 个可识别的量,缺口 K 2 − K ( K + 1 ) / 2 = K ( K − 1 ) / 2 K^2 - K(K+1)/2 = K(K-1)/2 K 2 − K ( K + 1 ) /2 = K ( K − 1 ) /2 个约束——这些约束数据给不了,只能理论给。往哪里要,分出了三大流派。
递归识别 (Sims, 1980):A 0 \mathbf{A}_0 A 0 下三角、对角线为 1,B \mathbf{B} B 对角。这正是 Cholesky——下三角结构天然提供 K ( K − 1 ) / 2 K(K-1)/2 K ( K − 1 ) /2 个约束,前一节的排序问题就是在选这个三角形。
长期约束 (Blanchard & Quah, 1989):不约束同期,约束长期。识别假设是需求冲击对产出没有长期效应,而供给冲击可以有永久效应——约束落在长期乘子 ∑ j = 0 ∞ Ψ j A 0 − 1 B \sum_{j=0}^\infty \boldsymbol{\Psi}_j \mathbf{A}_0^{-1} \mathbf{B} ∑ j = 0 ∞ Ψ j A 0 − 1 B 上。适合理论对”什么是暂时的、什么是永久的”有明确话可说的场景。
符号约束 (Uhlig, 2005):最弱的一档。只要求某些冲击对某些变量在某些期取某些符号——比如紧缩性货币冲击不该让价格上涨。代价是从点识别退到集合识别:与约束相容的是一个冲击区域,贝叶斯方法从中抽样。当前宏观实证里这已是标配。
三派没有免费的:递归识别的排序、长期约束的理论、符号约束的先验,都是你替数据做的选择。VAR 把这些选择从联立方程时代的暗处搬到了明处——这大概才是 Sims 革命真正的遗产。
水平里有单位根:去 VECM
以上全部假设平稳。如果水平 y t \mathbf{y}_t y t 非平稳、但某个线性组合 β ′ y t \boldsymbol{\beta}' \mathbf{y}_t β ′ y t 平稳,那么 y t \mathbf{y}_t y t 是协整的 ,对水平估 VAR 是设定错误,有限样本里标准误也会失真。全差分能救平稳性,但把长期信息扔了;正确的框架是向量误差修正模型 :
Δ y t = α ( β ′ y t − 1 − μ ) + ∑ j = 1 p − 1 Γ j Δ y t − j + u t \Delta \mathbf{y}_t = \boldsymbol{\alpha}(\boldsymbol{\beta}' \mathbf{y}_{t-1} - \boldsymbol{\mu}) + \sum_{j=1}^{p-1} \boldsymbol{\Gamma}_j \Delta \mathbf{y}_{t-j} + \mathbf{u}_t Δ y t = α ( β ′ y t − 1 − μ ) + j = 1 ∑ p − 1 Γ j Δ y t − j + u t
β ′ y t − 1 \boldsymbol{\beta}' \mathbf{y}_{t-1} β ′ y t − 1 是协整关系,α \boldsymbol{\alpha} α 是调整速度。协整值得两篇文章的篇幅,紧接这篇之后。
贝叶斯 VAR:参数灾难的解法
回到估计一节埋的雷:K 2 p + K K^2 p + K K 2 p + K 个参数。K = 10 K = 10 K = 10 、p = 4 p = 4 p = 4 就是 410 个,而宏观数据 T ≈ 200 T \approx 200 T ≈ 200 ——无约束估计根本立不住。Litterman (1986) 和 Sims & Zha (1998) 的贝叶斯 VAR 用先验把系数往合理的默认值收缩。主力是 Minnesota 先验,它的默认信念是”每个变量近似自己的随机游走”:自身一阶滞后的系数先验均值为 1,其余系数先验均值为 0;先验方差随滞后阶增大而收缩(远处的滞后先验上更接近零),交叉变量的滞后再按两个变量残差方差之比缩放,让先验的松紧在不同量纲的变量之间可比。后验均值于是成为 OLS 估计和先验均值的加权平均,权重由先验相对数据的精度决定。效果实打实:BVAR 的样本外预测好,尤其在 T T T 相对参数不富裕时——它绕开了无约束 VAR 的过拟合。
预测与落地
VAR 的 h h h 期预测递推地做:
y ^ T + h = c ^ + ∑ j = 1 p A ^ j y ^ T + h − j \hat{\mathbf{y}}_{T+h} = \hat{\mathbf{c}} + \sum_{j=1}^p \hat{\mathbf{A}}_j \hat{\mathbf{y}}_{T+h-j} y ^ T + h = c ^ + j = 1 ∑ p A ^ j y ^ T + h − j
h ≤ p h \leq p h ≤ p 时右边混着观测值和已算出的预测,h > p h > p h > p 之后全是预测。预测误差:
y T + h − y ^ T + h = ∑ j = 0 h − 1 Ψ j u T + h − j \mathbf{y}_{T+h} - \hat{\mathbf{y}}_{T+h} = \sum_{j=0}^{h-1} \boldsymbol{\Psi}_j \mathbf{u}_{T+h-j} y T + h − y ^ T + h = j = 0 ∑ h − 1 Ψ j u T + h − j
MSE 矩阵还是 MSE ( h ) = ∑ j = 0 h − 1 Ψ j Σ Ψ j ′ \text{MSE}(h) = \sum_{j=0}^{h-1} \boldsymbol{\Psi}_j \boldsymbol{\Sigma} \boldsymbol{\Psi}_j' MSE ( h ) = ∑ j = 0 h − 1 Ψ j Σ Ψ j ′ ,高斯误差下预测区间:
y ^ T + h ± 1.96 ⋅ diag ( MSE ( h ) ) \hat{\mathbf{y}}_{T+h} \pm 1.96 \cdot \sqrt{\text{diag}(\text{MSE}(h))} y ^ T + h ± 1.96 ⋅ diag ( MSE ( h ))
代码上一切都是现成的:
import pandas as pd
from statsmodels . tsa . api import VAR
model = VAR ( y )
lag_order = model . select_order ( maxlags = 8 ). aic
print ( " Selected lag order: " , lag_order )
results = model . fit ( lag_order )
print ( results . summary ())
# Granger 因果
print ( results . test_causality ( ' gdp ' , caused = [ ' inflation ' , ' interest_rate ' ], kind = ' f ' ))
# IRF 和 FEVD
irf = results . irf ( periods = 20 )
irf . plot ( orth = True )
fevd = results . fevd ( periods = 20 )
fevd . plot ()
用在哪。宏观预测:BVAR 是 GDP、通胀、失业 nowcasting 和短期预测的标配,各国央行的研究部门用它做政策分析。货币政策分析:对产出、价格、利率、货币估 VAR,识别一个紧缩性冲击(比如经符号约束),追踪产出和价格的反应——货币政策冲击是现代实证货币经济学的基石。财政政策同理,把政府支出和税收当冲击,乘数估计(政府多花 1 美元,产出反应多少)就出自财政 SVAR。金融这边:对收益率曲线因子(水平、斜率、曲率)跑 VAR 研究期限结构动态,对 Fama-French 因子跑 VAR 研究风险溢价,对收益率和宏观变量跑 VAR 研究收益可预测性。混合频率 VAR(MF-VAR)用周度、月度数据实时更新对当季度变量的估计,这就是 nowcasting 的机器。
不论用在哪,交付结论前把这篇的主线再过一遍:估计端你没用理论,解读端你用了哪些?滞后阶是谁选的、排序换过没有、水平里有没有单位根、“因果”两个字指的是预测还是机制。VAR 的诚实之处在于这些问题都有明确的位置可查——前提是你真的去查。
参考文献
Blanchard, O. J., & Quah, D. (1989). The dynamic effects of aggregate demand and aggregate supply disturbances. American Economic Review , 79(4), 655-673.
Hamilton, J. D. (1994). Time Series Analysis . Princeton University Press. Ch. 11.
Lütkepohl, H. (2005). New Introduction to Multiple Time Series Analysis . Springer.
Sims, C. A. (1980). Macroeconomics and reality. Econometrica , 48(1), 1-48.
Sims, C. A., & Zha, T. (1998). Bayesian methods for dynamic multivariate models. International Economic Review , 39(4), 949-968.
Stock, J. H., & Watson, M. W. (2001). Vector autoregressions. Journal of Economic Perspectives , 15(4), 101-115.
Tsay, R. S. (2010). Analysis of Financial Time Series (3rd ed.). Wiley. Ch. 4.
Uhlig, H. (2005). What are the effects of monetary policy on output? Results from an agnostic identification procedure. Journal of Monetary Economics , 52(2), 381-419.
Litterman, R. B. (1986). Forecasting with Bayesian vector autoregressions. Five years of experience. Journal of Business & Economic Statistics , 4(1), 25-38.