跳到正文

协整:Johansen 方法

Engle-Granger 一次只能检验一个协整关系。Johansen 把问题反过来:把整个系统写成 VECM,用极大似然同时回答有几个关系、它们是什么、谁在做调整。推导迹检验、最大特征值检验和识别问题。

第 6 篇 · 共 12 篇 约 13 分钟

上一篇讲 Engle-Granger 时留了个尾巴:那个方法最深的局限在协整秩上。KK 个变量的系统最多可以有 K−1K - 1 个协整关系,而 Engle-Granger 一次只检验一个——你选一个变量放到回归左边,实际上是在赌系统里恰好只有一个平稳组合。两个变量时这个赌注是安全的;变量一多,赌输的方式就多了:检验功效下降,而且”选谁放左边”的归一化不再无害,不同选择会落到协整空间里不同的方向上。

Johansen (1988, 1991, 1995) 把问题整个反过来。不是先猜一个关系、再检验它的残差,而是把整个系统写成一个模型,用极大似然同时回答三件事:有几个协整关系(秩检验)、它们是什么(向量估计)、谁在负责调整(调整速度矩阵)。代价是推导重一些——要过一遍降秩回归和一族非标准渐近分布——但换来的是对长期参数的正式推断能力,这是 Engle-Granger 给不了的。多变量的实证工作里它是默认方法,原因就在这。

这篇文章从 VECM 出发推导 Johansen 方法,推导迹检验和最大特征值检验,然后处理一个经常被跳过、但决定结果能不能解读的问题:协整向量的识别。教科书出处是 Hamilton (1994, 第 20 章)、Lütkepohl (2005, 第 6-7 章)、Tsay (2010, 第 8 章)。

从 VAR 到 VECM:一切都压在 Π\Pi 上

从 KK 变量的水平 VAR(pp) 开始:

yt=A1yt−1+⋯+Apyt−p+ΦDt+εt\mathbf{y}_t = \mathbf{A}_1 \mathbf{y}_{t-1} + \cdots + \mathbf{A}_p \mathbf{y}_{t-p} + \boldsymbol{\Phi} \mathbf{D}_t + \boldsymbol{\varepsilon}_t

其中 Dt\mathbf{D}_t 装确定性项(常数、趋势)。两边减 yt−1\mathbf{y}_{t-1},整理滞后项:

Δyt=Πyt−1+∑j=1p−1ΓjΔyt−j+ΦDt+εt\Delta \mathbf{y}_t = \Pi \mathbf{y}_{t-1} + \sum_{j=1}^{p-1} \Gamma_j \Delta \mathbf{y}_{t-j} + \boldsymbol{\Phi} \mathbf{D}_t + \boldsymbol{\varepsilon}_t

其中 Π=∑j=1pAj−I\Pi = \sum_{j=1}^p \mathbf{A}_j - \mathbf{I},Γj=−∑i=j+1pAi\Gamma_j = -\sum_{i=j+1}^p \mathbf{A}_i。这就是 VECM(向量误差修正模型)。注意它只是 VAR 的重新参数化,没有引入任何新信息——但它把协整从隐含性质变成了显式结构。左边 Δyt\Delta \mathbf{y}_t 是平稳的,右边的滞后差分项也是平稳的,所以 Πyt−1\Pi \mathbf{y}_{t-1} 必须平稳。一个非平稳向量乘上一个矩阵得到平稳结果,这个矩阵能装下多少信息,全看它的秩。

Granger 表示定理(Engle & Granger, 1987)把这一点说满了:如果 yt\mathbf{y}_t 是 I(1) 且协整秩为 rr,那么 Π=αβ′\Pi = \boldsymbol{\alpha} \boldsymbol{\beta}',其中 α\boldsymbol{\alpha} 和 β\boldsymbol{\beta} 都是 K×rK \times r 的列满秩矩阵。β\boldsymbol{\beta} 的列是协整向量,α\boldsymbol{\alpha} 的列是调整速度。代回去:

Δyt=αβ′yt−1+∑j=1p−1ΓjΔyt−j+ΦDt+εt\Delta \mathbf{y}_t = \boldsymbol{\alpha} \boldsymbol{\beta}' \mathbf{y}_{t-1} + \sum_{j=1}^{p-1} \Gamma_j \Delta \mathbf{y}_{t-j} + \boldsymbol{\Phi} \mathbf{D}_t + \boldsymbol{\varepsilon}_t

乘积 β′yt−1\boldsymbol{\beta}' \mathbf{y}_{t-1} 是 rr 维的平稳协整关系向量——上一篇里那个标量误差修正项 u^t−1\hat{u}_{t-1} 的多维版本。矩阵 α\boldsymbol{\alpha} 描述每个变量对每条关系的偏离各修正多少。

Π\Pi 的秩决定你手里是哪种系统:

Π\Pi 的秩解读
0无协整。VECM 退化为差分 VAR。
rr,0<r<K0 < r < Krr 个协整关系。每个变量是 I(1)。
KK所有变量在水平上就平稳(或只差确定性趋势),直接估水平 VAR 即可。

所以 Johansen 分析的第一件事不是估计协整向量,而是先回答”rr 等于几”。这就是迹检验和最大特征值检验干的活。但要检验秩,得先能在给定秩的约束下算出似然——所以先讲估计。

极大似然估计:降秩回归

Johansen 的核心一步:把 Π\Pi 当作未知矩阵,在”秩不超过 rr“的约束下最大化高斯似然。听起来像个难搞的约束优化,实际上有闭式解,工具是集中似然加降秩回归。

先把短期动态集中出去。把 VECM 再看一遍:

Δyt=Πyt−1+∑j=1p−1ΓjΔyt−j+ΦDt+εt\Delta \mathbf{y}_t = \Pi \mathbf{y}_{t-1} + \sum_{j=1}^{p-1} \Gamma_j \Delta \mathbf{y}_{t-j} + \boldsymbol{\Phi} \mathbf{D}_t + \boldsymbol{\varepsilon}_t

这是 Δyt\Delta \mathbf{y}_t 对 yt−1\mathbf{y}_{t-1}、各滞后差分和 Dt\mathbf{D}_t 的多元回归。分两步洗掉干扰项:把 Δyt\Delta \mathbf{y}_t 对滞后差分和 Dt\mathbf{D}_t 回归,取残差 R0t\mathbf{R}_{0t};再把 yt−1\mathbf{y}_{t-1} 对同一组回归子回归,取残差 R1t\mathbf{R}_{1t}。现在问题被压缩成 R0t\mathbf{R}_{0t} 和 R1t\mathbf{R}_{1t} 之间的关系。定义矩 S01=T−1∑R0tR1t′\mathbf{S}_{01} = T^{-1} \sum \mathbf{R}_{0t} \mathbf{R}_{1t}',S11=T−1∑R1tR1t′\mathbf{S}_{11} = T^{-1} \sum \mathbf{R}_{1t} \mathbf{R}_{1t}',类似地定义 S00\mathbf{S}_{00} 和 S10\mathbf{S}_{10}。

不加秩约束时,ML 估计就是 OLS:

Π^=S01S11−1\hat{\Pi} = \mathbf{S}_{01} \mathbf{S}_{11}^{-1}

秩为 KK。要施加秩 rr 的约束,解广义特征值问题:

det⁡(λS11−S10S00−1S01)=0\det(\lambda \mathbf{S}_{11} - \mathbf{S}_{10} \mathbf{S}_{00}^{-1} \mathbf{S}_{01}) = 0

得到的特征值 λ^1>λ^2>⋯>λ^K\hat{\lambda}_1 > \hat{\lambda}_2 > \cdots > \hat{\lambda}_K 是 R0t\mathbf{R}_{0t} 与 R1t\mathbf{R}_{1t} 之间典型相关的平方——每个 λ^i\hat{\lambda}_i 度量 yt−1\mathbf{y}_{t-1} 的某个线性组合对 Δyt\Delta \mathbf{y}_t 的解释力。协整关系恰好是那些解释力不消失的方向,所以秩为 rr 的 ML 估计就是取前 rr 个特征向量:

β^=(v^1,v^2,…,v^r)\hat{\boldsymbol{\beta}} = (\hat{\mathbf{v}}_1, \hat{\mathbf{v}}_2, \ldots, \hat{\mathbf{v}}_r)

调整速度跟着出来:

α^=S01β^\hat{\boldsymbol{\alpha}} = \mathbf{S}_{01} \hat{\boldsymbol{\beta}}

一个提醒:特征值分解给出的 β^\hat{\boldsymbol{\beta}} 带着数学上方便、经济上任意的归一化(通常 β^′S11β^=I\hat{\boldsymbol{\beta}}' \mathbf{S}_{11} \hat{\boldsymbol{\beta}} = \mathbf{I})。要让系数有经济读法,得重新归一化——这是识别问题,后面专门讲。

秩检验:迹与最大特征值

估计问题解完,秩检验几乎是白送的:不同秩约束下的最大似然值都能用特征值写出来,比较它们就是似然比检验。

迹检验对”秩最多为 rr“的零假设做序贯检验:

H0(r):rank(Π)≤rvs.H1:rank(Π)=KH_0(r): \text{rank}(\Pi) \leq r \quad \text{vs.} \quad H_1: \text{rank}(\Pi) = K

统计量:

Trace(r)=−T∑i=r+1Klog⁡(1−λ^i)=−Tlog⁡∏i=r+1K(1−λ^i)\text{Trace}(r) = -T \sum_{i=r+1}^K \log(1 - \hat{\lambda}_i) = -T \log \prod_{i=r+1}^K (1 - \hat{\lambda}_i)

读法很直观:零假设说第 r+1r+1 个往后的特征值都该是零,统计量把这些”应该是零”的特征值加总,太大就拒绝。序贯流程从下往上走——先检验 H0(0)H_0(0),拒绝说明至少有一个协整关系;再检验 H0(1)H_0(1),拒绝说明至少有两个;一直走到第一次不能拒绝为止,秩就取那次不能拒绝的 rr。渐近分布是非标准的(布朗运动的泛函),Johansen (1988) 和 Osterwald-Lenum (1992) 制了表,临界值依赖 KK 和确定性项的设定。

最大特征值检验一次只走一步:

Max(r)=−Tlog⁡(1−λ^r+1)\text{Max}(r) = -T \log(1 - \hat{\lambda}_{r+1})

检验 H0H_0: 秩 =r= r 对 H1H_1: 秩 =r+1= r + 1。渐近分布同样非标准,且跟迹分布不是一回事。两个检验经常给出相同结论,但可以不一致:迹检验把剩余特征值全加总,对”多个小特征值”的备择更有功效;最大特征值只看下一个,对”单个主导特征值”的备择更有功效。不一致时没有公认的仲裁规则,实践里多数应用工作以迹检验为主判据、拿最大特征值当旁证。

正式流程说完,说点实话:序贯检验自带多重检验问题,统计量的非标准分布在小样本里还会过度拒绝(后面流程一节再算这笔账)。所以定秩不要只看检验表。把特征值画出来,大小特征值之间如果有清晰的断崖,断崖位置就是秩的强提示——五个特征值 0.9、0.85、0.1、0.05、0.02,秩多半是 2。再分别按 r=1,2,3r = 1, 2, 3 估计,看哪组协整向量在经济上说得通:系数巨大、没有任何经济读法的向量,通常说明你把秩定高了。理论有明确预测时直接用——开放经济里 UIP 加 PPP 预测两个协整关系,那就直接检验 H0(2)H_0(2)。也有作者对不同 rr 的 VECM 用 AIC 或 BIC 选秩,但这远不如 VAR 阶数选择里那么标准。

识别:似然只定到一个旋转

现在到了那个决定结果能不能解读的问题。ML 估计 β^\hat{\boldsymbol{\beta}} 只识别到一个旋转:对任意 r×rr \times r 非奇异矩阵 H\mathbf{H},β^H\hat{\boldsymbol{\beta}} \mathbf{H} 张成同一个协整空间、给出完全相同的似然。似然认的是空间,不是具体哪几根向量。所以不加约束,β^\hat{\boldsymbol{\beta}} 的列没有经济含义——你报告的每个系数都可以被一个旋转换掉。

r=1r = 1 时这个问题几乎不存在:协整向量唯一到一个尺度因子,随便挑一个变量把系数归一化成 1 就完了,这正是 Engle-Granger 的归一化。r>1r > 1 时才真正麻烦。标准的恰好识别方案是把 β\boldsymbol{\beta} 的前 r×rr \times r 块归一化为单位阵:每条关系在一个变量上归一化成 1,同时这个变量不进入其他关系。数一数自由度:K×rK \times r 个参数,减去 r2r^2 个约束,剩 r(K−r)r(K - r) 个自由参数——恰好识别,不多不少。但注意这只是让向量在数学上唯一了,“每条关系锚定在哪个变量上”仍是你的选择,选得没有经济道理,估出来的东西照样没法读。

想要更强的结构,路子有几条:Blanchard-Quah 风格的长期约束(施加某些冲击对某些变量无长期效应,需要完整的结构模型)、SVAR 式的符号约束、或者直接把理论、已有实证、机构知识给你的先验写成约束。实践中绝大多数应用工作就用归一化方案,指望理论足够有信息来解读结果——r=1r = 1 时这没问题,r>1r > 1 时要么加结构,要么接受报告出来的向量读不出东西。

识别方案定了,理论就可以上刑场了。理论预测的往往不只是”存在协整”,而是协整向量的具体长相。几个金融和宏观里的经典:货币需求说 log⁡Mt−log⁡Pt−log⁡Yt\log M_t - \log P_t - \log Y_t 平稳(MM 货币供给、PP 价格水平、YY 收入),协整向量 (1,−1,−1)(1, -1, -1);PPP 说 log⁡Et−log⁡Pt+log⁡Pt∗\log E_t - \log P_t + \log P_t^* 平稳(EE 名义汇率,PP、P∗P^* 国内外价格水平),协整向量 (1,−1,1)(1, -1, 1);期限结构说利差 Rt−rtR_t - r_t 平稳,协整向量 (1,−1)(1, -1)——上一篇的金融例子就是它的二元特例;现值模型说 log⁡Pt−log⁡Dt\log P_t - \log D_t 平稳(PP 股价、DD 股息),协整向量 (1,−1)(1, -1)。

这些预测都能拿数据表决。约束模型自由参数更少,最大对数似然只会更低或持平,似然比统计量:

LR=2(ℓunrestricted−ℓrestricted)→dχq2LR = 2(\ell_{\text{unrestricted}} - \ell_{\text{restricted}}) \xrightarrow{d} \chi^2_q

其中 qq 是约束个数。LRLR 太大就拒绝约束。流程是:无约束 Johansen 告诉你数据偏好什么样的 β\boldsymbol{\beta},理论告诉你 β\boldsymbol{\beta} 应该长什么样,LR 检验裁决两者合不合得来。比如你相信协整向量是 (1,−1,0,0)(1, -1, 0, 0)——前两个变量以相反符号、单位系数进入,后两个不进入——这就是 qq 个可检验的约束。渐近分布是标准的 χ2\chi^2,这是 Johansen 框架比 Engle-Granger 值钱的地方之一:对长期参数的假设检验在这里是常规操作。

弱外生性:谁可以不管均衡

上一篇从单方程角度讲过弱外生性,这里它有了矩阵形式。变量 yity_{it} 对协整参数弱外生,如果 α\boldsymbol{\alpha} 的第 ii 行为零:yity_{it} 对任何均衡偏离都不做反应,均衡全靠其他变量恢复。检验直接在 VECM 里对 αi=0\alpha_i = 0 做 tt 检验或 Wald 检验,不能拒绝就可以把 yity_{it} 当条件变量处理,在排除它的动态方程的部分系统里估计协整参数。

这么做图什么?效率。Johansen (1992) 给了正式框架:弱外生约束为真时,部分系统的估计更有效——小样本里少估几个方程实打实地缩标准误;约束为假时长期参数的估计通常仍然一致,但效率损失,基于部分系统的推断也不再可靠。所以这是个”检验通过再用”的工具,不是默认选项。

代码:Python 里的 Johansen

import pandas as pd
from statsmodels.tsa.vector_ar.vecm import coint_johansen


result = coint_johansen(y, det_order=0, k_ar_diff=1)  # det_order=-1: 无确定性项, =0: 常数, =1: 线性趋势

print("Eigenvalues:", result.eig)
print("Trace statistics:", result.lr1)  # 对应 r=0,1,..,K-1
print("Trace critical values (90%, 95%, 99%):\n", result.cvt)
print("Max eigenvalue stats:", result.lr2)
print("Max eigenvalue critical values:\n", result.cvm)

# 协整向量(特征向量)
print("Cointegrating vectors (columns):\n", result.evec)

# 画迹检验图
import matplotlib.pyplot as plt
plt.plot(result.lr1, label='trace stat')
plt.plot(result.cvt[:, 1], label='95% crit')
plt.xlabel('r'); plt.legend(); plt.show()

留意 det_order 的编码:−1-1 是无确定性项,00 是常数,11 是线性趋势。这个参数不是装饰——确定性设定错了,临界值就是错的,下一节讲为什么。

一条能落地的流程

Johansen 的结果对设定敏感,敏感的点主要有三个:滞后阶、确定性项、样本长度。与其在出结果之后怀疑人生,不如把检查做在前面。一个可用的顺序:

  1. 确认积分阶数。对每个变量跑 ADF。方法假设变量是 I(1),这个前提它自己不检验。
  2. 选滞后阶。对水平 VAR 用信息准则(AIC、BIC)选 pp,对应的 VECM 带 p−1p - 1 个滞后差分项。
  3. 选确定性形式。画数据:变量均值为零用无确定性项;有非零均值,常数进协整关系;有线性趋势,加常数和趋势并检验趋势系数。
  4. 跑 Johansen,拿特征值、迹和最大特征值统计量,对临界值。
  5. 定秩。序贯检验加特征值断崖加向量的经济合理性,三方对质。
  6. 识别并检验约束。归一化 β\boldsymbol{\beta},用 LR 检验理论约束。
  7. 估计完整 VECM,检查 α\boldsymbol{\alpha} 的符号和大小说不说得通。
  8. 诊断。残差的自相关(Portmanteau)、正态性、参数稳定性。

第 2 步不是走过场:协整秩可以随 pp 变化,滞后不够残差有自相关,滞后太多小样本里白白烧自由度。第 3 步同理——常数和趋势的设定直接改变检验的分布,不该有的时候加了有偏,该有的时候不加也有偏。一个常见的中间形态是常数进协整关系、无趋势:Δyt=α(β′yt−1+μ)+∑ΓjΔyt−j+εt\Delta \mathbf{y}_t = \boldsymbol{\alpha}(\boldsymbol{\beta}' \mathbf{y}_{t-1} + \mu) + \sum \Gamma_j \Delta \mathbf{y}_{t-j} + \boldsymbol{\varepsilon}_t,即 Johansen (1995) 的 “Case 2”。

第 5 步定秩时记住小样本问题:迹和最大特征值检验在小样本里以过度拒绝出名,秩容易定高。样本短就用 Bartlett 修正或模拟重定临界值,并且更倚重特征值断崖和向量合理性这两条旁证。

还有几种情况会让整个流程失效,值得在动手前排除。结构突变是最阴险的一种:一次性的水平移动在突变前后各自”平稳”,检验会把它误认成协整关系——上一篇期限结构例子里警告过的”美联储改政策框架”就是这类风险,怀疑有突变用 Gregory-Hansen (1996) 这类考虑突变的检验。变量里混进 I(2)(差分两次才平稳)的序列,这里讲的 I(1) 框架整个不适用,要换专门的 I(2) 协整框架。月度、季度数据带强季节性的,先去季节或加季节虚拟变量。最后,单个离群点能主导协整向量的估计——特征值问题对二阶矩敏感——预处理离群点或用稳健估计。

跟 Engle-Granger 摆在一起

上一篇结尾给过 Engle-Granger 的适用边界,现在可以把两个方法完整对起来。两个变量、单个协整关系、对归一化有强理论先验,Engle-Granger 完全够用,一个 OLS 加一个 ADF,成本几乎为零,探索性分析里当快速筛查也合适。三个以上变量、怀疑多个协整关系、要对协整参数做正式推断、或者做识别重要的结构分析——这些正是 Engle-Granger 结构性做不到的事,用 Johansen。多元的金融和宏观系统(期限结构、货币需求、汇率决定)里,Johansen 是默认。

特征Engle-GrangerJohansen
协整向量数仅 1多个
估计效率OLS(超一致)MLE(有效)
协整检验残差 ADF迹、最大特征值
可识别性依赖归一化需要识别方案
小样本偏差较大较小
计算成本非常低中等(特征值问题)
设定稳健性较低(一次性)较高(可重新检验)

两个变量、一个协整向量时,两种方法经常给相似结果——这不奇怪,它们估的是同一个东西。也别忘了 Johansen 不是免费升级:ML 估计的协整向量在有限样本里同样有偏(偏差比 Engle-Granger 小,但不是零),识别问题在 Engle-Granger 里被归一化选择悄悄掩过去,在 Johansen 里你必须正面回答。方法把问题摆上台面,不等于替你解决了问题。

参考文献

  • Engle, R. F., & Granger, C. W. J. (1987). Co-integration and error correction: Representation, estimation, and testing. Econometrica, 55(2), 251-276.
  • Gregory, A. W., & Hansen, B. E. (1996). Residual-based tests for cointegration in models with regime shifts. Journal of Econometrics, 70(1), 99-126.
  • Hamilton, J. D. (1994). Time Series Analysis. Princeton University Press. Ch. 20.
  • Johansen, S. (1988). Statistical analysis of cointegration vectors. Journal of Economic Dynamics and Control, 12(2-3), 231-254.
  • Johansen, S. (1991). Estimation and hypothesis testing of cointegration vectors in Gaussian vector autoregressive models. Econometrica, 59(6), 1551-1580.
  • Johansen, S. (1995). Likelihood-Based Inference in Cointegrated Vector Autoregressive Models. Oxford University Press.
  • Lütkepohl, H. (2005). New Introduction to Multiple Time Series Analysis. Springer. Ch. 6-7.
  • Osterwald-Lenum, M. (1992). A note with quantiles of the asymptotic distribution of the likelihood ratio cointegration rank test statistics. Oxford Bulletin of Economics and Statistics, 54(3), 461-472.
  • Park, J. Y., & Hansen, B. E. (1990). Inference for I(1) cointegrated regression models with trend. Working paper, University of Rochester.
  • Tsay, R. S. (2010). Analysis of Financial Time Series (3rd ed.). Wiley. Ch. 8.