协整:Johansen 方法
Engle-Granger 一次只能检验一个协整关系。Johansen 把问题反过来:把整个系统写成 VECM,用极大似然同时回答有几个关系、它们是什么、谁在做调整。推导迹检验、最大特征值检验和识别问题。
上一篇讲 Engle-Granger 时留了个尾巴:那个方法最深的局限在协整秩上。 个变量的系统最多可以有 个协整关系,而 Engle-Granger 一次只检验一个——你选一个变量放到回归左边,实际上是在赌系统里恰好只有一个平稳组合。两个变量时这个赌注是安全的;变量一多,赌输的方式就多了:检验功效下降,而且”选谁放左边”的归一化不再无害,不同选择会落到协整空间里不同的方向上。
Johansen (1988, 1991, 1995) 把问题整个反过来。不是先猜一个关系、再检验它的残差,而是把整个系统写成一个模型,用极大似然同时回答三件事:有几个协整关系(秩检验)、它们是什么(向量估计)、谁在负责调整(调整速度矩阵)。代价是推导重一些——要过一遍降秩回归和一族非标准渐近分布——但换来的是对长期参数的正式推断能力,这是 Engle-Granger 给不了的。多变量的实证工作里它是默认方法,原因就在这。
这篇文章从 VECM 出发推导 Johansen 方法,推导迹检验和最大特征值检验,然后处理一个经常被跳过、但决定结果能不能解读的问题:协整向量的识别。教科书出处是 Hamilton (1994, 第 20 章)、Lütkepohl (2005, 第 6-7 章)、Tsay (2010, 第 8 章)。
从 VAR 到 VECM:一切都压在 上
从 变量的水平 VAR() 开始:
其中 装确定性项(常数、趋势)。两边减 ,整理滞后项:
其中 ,。这就是 VECM(向量误差修正模型)。注意它只是 VAR 的重新参数化,没有引入任何新信息——但它把协整从隐含性质变成了显式结构。左边 是平稳的,右边的滞后差分项也是平稳的,所以 必须平稳。一个非平稳向量乘上一个矩阵得到平稳结果,这个矩阵能装下多少信息,全看它的秩。
Granger 表示定理(Engle & Granger, 1987)把这一点说满了:如果 是 I(1) 且协整秩为 ,那么 ,其中 和 都是 的列满秩矩阵。 的列是协整向量, 的列是调整速度。代回去:
乘积 是 维的平稳协整关系向量——上一篇里那个标量误差修正项 的多维版本。矩阵 描述每个变量对每条关系的偏离各修正多少。
的秩决定你手里是哪种系统:
| 的秩 | 解读 |
|---|---|
| 0 | 无协整。VECM 退化为差分 VAR。 |
| , | 个协整关系。每个变量是 I(1)。 |
| 所有变量在水平上就平稳(或只差确定性趋势),直接估水平 VAR 即可。 |
所以 Johansen 分析的第一件事不是估计协整向量,而是先回答” 等于几”。这就是迹检验和最大特征值检验干的活。但要检验秩,得先能在给定秩的约束下算出似然——所以先讲估计。
极大似然估计:降秩回归
Johansen 的核心一步:把 当作未知矩阵,在”秩不超过 “的约束下最大化高斯似然。听起来像个难搞的约束优化,实际上有闭式解,工具是集中似然加降秩回归。
先把短期动态集中出去。把 VECM 再看一遍:
这是 对 、各滞后差分和 的多元回归。分两步洗掉干扰项:把 对滞后差分和 回归,取残差 ;再把 对同一组回归子回归,取残差 。现在问题被压缩成 和 之间的关系。定义矩 ,,类似地定义 和 。
不加秩约束时,ML 估计就是 OLS:
秩为 。要施加秩 的约束,解广义特征值问题:
得到的特征值 是 与 之间典型相关的平方——每个 度量 的某个线性组合对 的解释力。协整关系恰好是那些解释力不消失的方向,所以秩为 的 ML 估计就是取前 个特征向量:
调整速度跟着出来:
一个提醒:特征值分解给出的 带着数学上方便、经济上任意的归一化(通常 )。要让系数有经济读法,得重新归一化——这是识别问题,后面专门讲。
秩检验:迹与最大特征值
估计问题解完,秩检验几乎是白送的:不同秩约束下的最大似然值都能用特征值写出来,比较它们就是似然比检验。
迹检验对”秩最多为 “的零假设做序贯检验:
统计量:
读法很直观:零假设说第 个往后的特征值都该是零,统计量把这些”应该是零”的特征值加总,太大就拒绝。序贯流程从下往上走——先检验 ,拒绝说明至少有一个协整关系;再检验 ,拒绝说明至少有两个;一直走到第一次不能拒绝为止,秩就取那次不能拒绝的 。渐近分布是非标准的(布朗运动的泛函),Johansen (1988) 和 Osterwald-Lenum (1992) 制了表,临界值依赖 和确定性项的设定。
最大特征值检验一次只走一步:
检验 : 秩 对 : 秩 。渐近分布同样非标准,且跟迹分布不是一回事。两个检验经常给出相同结论,但可以不一致:迹检验把剩余特征值全加总,对”多个小特征值”的备择更有功效;最大特征值只看下一个,对”单个主导特征值”的备择更有功效。不一致时没有公认的仲裁规则,实践里多数应用工作以迹检验为主判据、拿最大特征值当旁证。
正式流程说完,说点实话:序贯检验自带多重检验问题,统计量的非标准分布在小样本里还会过度拒绝(后面流程一节再算这笔账)。所以定秩不要只看检验表。把特征值画出来,大小特征值之间如果有清晰的断崖,断崖位置就是秩的强提示——五个特征值 0.9、0.85、0.1、0.05、0.02,秩多半是 2。再分别按 估计,看哪组协整向量在经济上说得通:系数巨大、没有任何经济读法的向量,通常说明你把秩定高了。理论有明确预测时直接用——开放经济里 UIP 加 PPP 预测两个协整关系,那就直接检验 。也有作者对不同 的 VECM 用 AIC 或 BIC 选秩,但这远不如 VAR 阶数选择里那么标准。
识别:似然只定到一个旋转
现在到了那个决定结果能不能解读的问题。ML 估计 只识别到一个旋转:对任意 非奇异矩阵 , 张成同一个协整空间、给出完全相同的似然。似然认的是空间,不是具体哪几根向量。所以不加约束, 的列没有经济含义——你报告的每个系数都可以被一个旋转换掉。
时这个问题几乎不存在:协整向量唯一到一个尺度因子,随便挑一个变量把系数归一化成 1 就完了,这正是 Engle-Granger 的归一化。 时才真正麻烦。标准的恰好识别方案是把 的前 块归一化为单位阵:每条关系在一个变量上归一化成 1,同时这个变量不进入其他关系。数一数自由度: 个参数,减去 个约束,剩 个自由参数——恰好识别,不多不少。但注意这只是让向量在数学上唯一了,“每条关系锚定在哪个变量上”仍是你的选择,选得没有经济道理,估出来的东西照样没法读。
想要更强的结构,路子有几条:Blanchard-Quah 风格的长期约束(施加某些冲击对某些变量无长期效应,需要完整的结构模型)、SVAR 式的符号约束、或者直接把理论、已有实证、机构知识给你的先验写成约束。实践中绝大多数应用工作就用归一化方案,指望理论足够有信息来解读结果—— 时这没问题, 时要么加结构,要么接受报告出来的向量读不出东西。
识别方案定了,理论就可以上刑场了。理论预测的往往不只是”存在协整”,而是协整向量的具体长相。几个金融和宏观里的经典:货币需求说 平稳( 货币供给、 价格水平、 收入),协整向量 ;PPP 说 平稳( 名义汇率,、 国内外价格水平),协整向量 ;期限结构说利差 平稳,协整向量 ——上一篇的金融例子就是它的二元特例;现值模型说 平稳( 股价、 股息),协整向量 。
这些预测都能拿数据表决。约束模型自由参数更少,最大对数似然只会更低或持平,似然比统计量:
其中 是约束个数。 太大就拒绝约束。流程是:无约束 Johansen 告诉你数据偏好什么样的 ,理论告诉你 应该长什么样,LR 检验裁决两者合不合得来。比如你相信协整向量是 ——前两个变量以相反符号、单位系数进入,后两个不进入——这就是 个可检验的约束。渐近分布是标准的 ,这是 Johansen 框架比 Engle-Granger 值钱的地方之一:对长期参数的假设检验在这里是常规操作。
弱外生性:谁可以不管均衡
上一篇从单方程角度讲过弱外生性,这里它有了矩阵形式。变量 对协整参数弱外生,如果 的第 行为零: 对任何均衡偏离都不做反应,均衡全靠其他变量恢复。检验直接在 VECM 里对 做 检验或 Wald 检验,不能拒绝就可以把 当条件变量处理,在排除它的动态方程的部分系统里估计协整参数。
这么做图什么?效率。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 的编码: 是无确定性项, 是常数, 是线性趋势。这个参数不是装饰——确定性设定错了,临界值就是错的,下一节讲为什么。
一条能落地的流程
Johansen 的结果对设定敏感,敏感的点主要有三个:滞后阶、确定性项、样本长度。与其在出结果之后怀疑人生,不如把检查做在前面。一个可用的顺序:
- 确认积分阶数。对每个变量跑 ADF。方法假设变量是 I(1),这个前提它自己不检验。
- 选滞后阶。对水平 VAR 用信息准则(AIC、BIC)选 ,对应的 VECM 带 个滞后差分项。
- 选确定性形式。画数据:变量均值为零用无确定性项;有非零均值,常数进协整关系;有线性趋势,加常数和趋势并检验趋势系数。
- 跑 Johansen,拿特征值、迹和最大特征值统计量,对临界值。
- 定秩。序贯检验加特征值断崖加向量的经济合理性,三方对质。
- 识别并检验约束。归一化 ,用 LR 检验理论约束。
- 估计完整 VECM,检查 的符号和大小说不说得通。
- 诊断。残差的自相关(Portmanteau)、正态性、参数稳定性。
第 2 步不是走过场:协整秩可以随 变化,滞后不够残差有自相关,滞后太多小样本里白白烧自由度。第 3 步同理——常数和趋势的设定直接改变检验的分布,不该有的时候加了有偏,该有的时候不加也有偏。一个常见的中间形态是常数进协整关系、无趋势:,即 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-Granger | Johansen |
|---|---|---|
| 协整向量数 | 仅 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.