协整:Engle-Granger 两步法
两个都非平稳的序列,什么时候可以放心做水平回归?讲协整的定义、Engle-Granger 两步法、残差单位根检验的临界值坑,以及虚假回归为什么至今还在毁掉实证工作。
先看一个在宏观计量论文里横行了几十年的操作。把美国实际 GNP 对货币供给做回归,取一段几十年的样本,两个都是一路向上的趋势序列。 跑出来 0.95,斜率的 统计量 12.4,于是你写一篇论文,宣称货币供给驱动产出。今天再交出去,审稿人会直接退稿——不是因为结论不讨喜,而是这个回归本身什么都证明不了。
这个关系是胡扯。两个序列都带趋势,而任何两个趋势序列在有限样本里都会显得高度相关,哪怕它们由完全独立的随机游走生成。Granger & Newbold (1974) 证明了这一点:在”无关系”的零假设下,只要两个序列非平稳, 统计量就不服从 分布,它发散到无穷大; 也不收敛到零,而是收敛到一个非退化分布。这就是虚假回归,几十年来毁掉实证工作最多的一类计量错误。
不信的话自己跑一遍。生成两个完全独立的随机游走,把一个对另一个回归:
import numpy as np
import statsmodels.api as sm
rng = np.random.default_rng(42)
T = 200
x = np.cumsum(rng.standard_normal(T))
y = np.cumsum(rng.standard_normal(T))
X = sm.add_constant(x)
res = sm.OLS(y, X).fit()
print(f"R²: {res.rsquared:.3f}")
print(f"Slope t-stat: {res.tvalues[1]:.3f}")
print(f"Slope p-value: {res.pvalues[1]:.4f}")
换不同的种子多跑几次,大约 30% 的情况下你会看到 、 统计量两位数——而 和 完全独立。这不是笔误也不是 bug,是带趋势变量回归的基本性质。以后看到一篇论文把一个 I(1) 变量对另一个 I(1) 变量做回归、又没先检验协整或差分,那篇论文多半是错的。
那水平回归是不是永远不能做?不是。Engle & Granger (1987) 给出了例外成立的条件,这是现代计量经济学最有用的思想之一,也是最常被误用的之一。核心洞见:如果两个或多个 I(1) 序列共享一个长期均衡关系,那么它们的某个特定线性组合是 I(0),即便每个序列在水平上非平稳。回到上面的例子:如果货币供给和 GNP 都被一个共同的长期趋势驱动(经济增长,两者都跟着长),那么”对数货币供给减对数 GNP”这样的线性组合就可能平稳。那个平稳组合叫协整关系,它给你一个平稳的误差修正项,可以放进动态模型——正确建模之后,推断就是有效的。
这篇文章详细讲 Engle-Granger 两步法,包括它出名的弱点。教科书出处是 Hamilton (1994, 第 19 章)、Tsay (2010, 第 7-8 章)、Campbell, Lo & MacKinlay (1997, 第 6 章),下文用到哪条引到哪条。
协整的正式定义
个时间序列 是协整的,如果同时满足:
- 每个 是 I(1),也就是水平非平稳、一阶差分平稳。
- 存在非零向量 使得 是 I(0),也就是平稳。
向量 叫协整向量,组合 就是协整关系。经济上把它读作长期均衡:对它的偏离是平稳的,所以偏离必须最终回到零附近。
一个系统里可以有不止一个这样的组合。如果存在多个协整关系,系统的协整秩 。对 个变量,秩可以从 0(无协整)取到 ;秩为 意味着所有变量本身平稳,跟条件 1 矛盾。记住这个秩的概念——Engle-Granger 方法最深的局限就埋在这里,后面会讲到。
第一步:用 OLS 估计协整向量
把 对 做回归(或者你喜欢的任何归一化):
注意右边没有 :必须有一个变量被归一化(这里是 作为因变量),对应系数设为 1。这只是一个归一化选择,你也可以选别的变量放左边——这个选择后面会回来咬人,先记下。OLS 估计 就是协整向量的估计。
这个估计有一个不寻常的性质:超一致。,比通常的 收敛快得多,原因是 OLS 目标函数在协整下有非标准极限,Stock (1987) 给了证明。直觉是这样的:因变量和自变量都在发散,但被协整关系绑在一起,所以 里的噪声被低阶项主导。超一致性是整个两步法能成立的支柱——第一步的估计误差衰减够快,第二步才能把 当作真残差的合格替身。
第二步:对残差做单位根检验
算出 OLS 残差 ,对它跑 ADF 检验:
零假设 ,残差里有单位根,即无协整;备择 ,残差平稳,即协整。ADF 统计量比临界值更负,就拒绝无协整。
整个方法的成败都压在这一步上,而这一步恰恰是被用错最多的地方。最常见的错:拿标准 ADF 的临界值来判残差。不行。 不是观测到的序列,是第一步估出来的, 的估计误差会让残差”看起来更平稳”,所以残差基检验的临界值绝对值必须更大。Engle & Yoo (1987) 给残差基 ADF 制了表: 时 5% 临界值大约 ,而标准 ADF 是 。用 去判,你会拒绝得太频繁,把不协整的系统判成协整。MacKinnon (1996) 后来用响应面回归给出了更精确的临界值,大多数软件实现的就是它;一般规律是临界值随 增大而更负,但幅度不大。
还有三个容易踩的坑,都出在检验的设定上。其一,滞后差分个数 必须选到让残差白化,通常按 AIC 或 Schwert 规则;滞后不够,残差有自相关,检验的规模就是错的。其二,如果变量本身带确定性趋势,协整回归里要加趋势项,不加则残差设定错误,检验对象就不对。其三,别拿第一步回归的高 当协整证据——开头已经演示过,趋势变量之间没有任何关系 也能很高,能算数的只有残差上的 ADF。
另外注意,这一切都建立在”每个变量都是 I(1)“的前提上。这个前提 Engle-Granger 自己不检验,你得先对每个变量单独跑单位根检验。混进一个 I(0) 变量,检验就无效了。
如果你正确地拒绝了零假设,就有证据表明变量协整,协整向量近似 ,可以进入下一步:建动态模型。
代码:statsmodels 里的 Engle-Granger
statsmodels 把两步都包好了,coint 直接用 MacKinnon 响应面的临界值:
import pandas as pd
import statsmodels.api as sm
from statsmodels.tsa.stattools import adfuller, coint
X = sm.add_constant(y['log_gnp'])
eg_reg = sm.OLS(y['log_money'], X).fit()
print(eg_reg.summary())
residuals = eg_reg.resid
# 来自 MacKinnon 响应面的 Engle-Granger 临界值
eg_stat, eg_p, eg_crit = coint(y['log_money'], y['log_gnp'], trend='c', autolag='aic')[:3]
print(f"Engle-Granger test stat: {eg_stat:.3f}, p-value: {eg_p:.3f}")
# 备选:带自定义临界值的残差 ADF
adf_stat, _, _, _, adf_crit, _ = adfuller(residuals, regression='c', autolag='aic')
print(f"ADF on residuals: {adf_stat:.3f}")
print(f"Standard ADF crit values: {adf_crit}")
# 跟 Engle-Granger 临界值比较(例如 K=3 在 5% 下 -3.37)
手动跑 adfuller 那条路要自己换临界值——adfuller 打印的是标准 ADF 临界值,正是上一节说不能用的那套。留着它是为了让你看清两套临界值差多少。
确立协整之后:误差修正模型
协整确立后,把动态写成 VECM:
以此类推。滞后残差 上的系数 是调整速度:上期偏离均衡一个单位, 在 期修正多少。稳定的误差修正机制要求:对负责修正、恢复均衡的变量(协整回归里的因变量),调整系数应该为负;更一般地,各 的合力必须把偏离往回推,而不是推得更远。只要协整成立,Granger 表示定理就保证至少有一个 非零——误差修正形式不是建模选择,是协整的必然结果(Engle & Granger, 1987)。
外生性:谁在做调整
把 VECM 的前两个方程再摆出来,这次只盯着 :
如果 ,那么 相对于协整参数是弱外生的:它不对均衡偏离做任何调整,均衡全靠别的变量恢复。这时你可以把 建模为单变量过程(比如 ARIMA),不损失任何关于 的信息。
弱外生性重要在哪?注意它对一致性其实不是必需的——协整回归的 OLS 估计在有内生回归子时仍然超一致(Stock, 1987)。它换来的是有效性:若 ,你可以在排除 动态方程的更小系统里估计 VECM,标准误更小。检验方法直接:在 VECM 里对 做 检验或 Wald 检验,不能拒绝就把 当弱外生处理。
还有一个更强的概念叫强外生性:,且 方程里所有滞后 的系数也为零。满足强外生性时整个系统可以拆成一串独立方程来估计,没有跨方程相关。实践中很少见,知道它存在即可。
这个方法哪里不结实
Engle-Granger 概念干净、计算简单——一个 OLS 加一个 ADF,任何软件都能跑。但便宜是有代价的,而且每一条代价都有文献记录在案。
最根本的局限在协整秩上。方法只检验单个协整关系,还记得前面说过 个变量的系统秩可以到 ——如果真有多个协整向量,Engle-Granger 的检验功效会下降,而且第一步那个”选谁放左边”的归一化选择就不再无害了。对唯一的协整关系,不同归一化估出的向量只差一个标量倍数,推断不变;有多个向量时,不同归一化会落到协整空间里不同的方向上,向量不再成比例,结果实质性地依赖于你把哪个变量放左边。二元情形调换变量只是给你一个成比例的向量,变量一多就没这个保障了。处理多个向量要用 Johansen 方法,下一篇文章讲。
小样本也是个实际问题。超一致是渐近性质,Banerjee, Dolado, Hendry & Smith (1986) 表明 时 的偏差可能很大,而且这个偏差会传进 VECM,把调整速度的估计也带得不一致。月度数据三十年才 360 个点,日度数据倒是容易过百,但金融日度数据又有别的毛病——总之样本量要心里有数。
功效方面,Phillips & Ouliaris (1990) 记录了检验对带弱长期系数的协整功效低:关系真实存在但绑得松时,检验经常看不见。前面提过的积分阶数问题在这里再算一笔账:方法假设所有变量 I(1),混进 I(2) 或 I(0) 渐近理论就崩了,而预检验本身也有出错概率,等于给整个流程再加一层噪声。
最后是内生性。协整回归右边的变量在 VECM 里是内生的。这对长期系数没关系——超一致救了你——但动态方程的标准误必须处理内生性,直接用 OLS 标准误是不一致的。
一个金融例子:利率期限结构
看一个协整假设有真实经济含义的例子:短期利率 (比如 3 个月国债)和长期利率 (比如 10 年期国债收益率)。两者都高度持续,都被货币政策和通胀预期驱动。如果它们协整,利差 (或某个缩放版本)就是平稳的。这在经济上说得通:利差是期限溢价,应该随货币政策和通胀预期的调整而随时间均值回归。
流程照前面走:把 对 回归,;算残差 ;对 跑 ADF,用 MacKinnon (1996) 的临界值。残差平稳, 和 就协整,协整向量 描述短期和长期利率的长期关系。
拿美国国债的长月度样本自己跑一遍这个流程,典型结果是:Engle-Granger 检验在 5% 下拒绝无协整,估出的 小于 1——长期利率的变动小于一对一跟随短期利率;残差 高度持续、自相关很高,但平稳。具体数字随样本期变化,别把它们当常数背。翻译成人话:短期和长期利率共享一个长期均衡,利差会偏离,但偏离会回来。
对交易的含义很直接。利差远离均衡值( 大)时,预期它回归,可以构造均值回归交易:利差过低做多利差、过高做空,用 作对冲比率。但要清楚这笔交易赌的是什么:协整关系在状态变化时可能整个崩掉,比如美联储改政策框架。Engle-Granger 检验是纯样本内的,抓不到这种断裂。监控这笔交易,别盲目信检验。
金融里还有哪些协整关系
理论上有均衡关系的地方,就有协整检验的用武之地,而且理论往往直接预测出协整向量长什么样。国际金融里有三个经典:购买力平价(PPP)说实际汇率平稳,等价于名义汇率、国内物价水平、外国物价水平三者协整,检验就是把对数名义汇率对国内价格和外国价格回归、再对残差跑 ADF;无抛补利率平价(UIP)说汇率预期变化等于利率差,意味着对数汇率和利率差协整——但经验证据很弱,UIP 的违反持续存在;费雪效应说名义利率等于实际利率加预期通胀,意味着名义利率和通胀协整。
货币经济学里,对数货币、对数价格、对数收入协整,协整向量就是货币需求函数,这个关系几十年来一直稳定。利率这边有刚讲过的期限结构。资产定价里,在稳定的股息贴现模型下,对数股价和对数股息协整,这是现值模型的检验形式。而对交易者最实际的一条:两个协整的资产就是配对交易策略的基础——上面期限结构例子里那套”偏离做反向、 当对冲比率”的逻辑,搬到任何协整资产对上都成立。
这批例子的价值在于每一个都有理论预测的具体协整向量,实证检验于是变成对理论的表决:PPP、货币需求、期限结构被证实,UIP 和简单费雪被拒绝。
什么时候 Engle-Granger 够用
看完弱点清单,你可能觉得这方法不能用了。不是。两个变量()加单个协整关系,它没有秩的问题,归一化也无害,用它完全合理。探索性分析里只想快速知道协整存不存在,它是成本最低的答案。理论驱动的模型里协整向量有自然解读——比如货币需求方程 常数——它给出的估计直接可读。
超出这个范围就该换工具了:多于两个变量、可能存在多个协整向量、或者要对协整参数做形式推断,用 Johansen 方法。下一篇文章讲它。
参考文献
- Banerjee, A., Dolado, J. J., Hendry, D. F., & Smith, G. W. (1986). Exploring equilibrium relationships in econometrics through static models: Some Monte Carlo evidence. Oxford Bulletin of Economics and Statistics, 48(3), 253-277.
- Campbell, J. Y., Lo, A. W., & MacKinlay, A. C. (1997). The Econometrics of Financial Markets. Princeton University Press. Ch. 6.
- Engle, R. F., & Granger, C. W. J. (1987). Co-integration and error correction: Representation, estimation, and testing. Econometrica, 55(2), 251-276.
- Engle, R. F., & Yoo, B. S. (1987). Forecasting and testing in co-integrated systems. Journal of Econometrics, 35(1), 143-159.
- Granger, C. W. J., & Newbold, P. (1974). Spurious regressions in econometrics. Journal of Econometrics, 2(2), 111-120.
- Hamilton, J. D. (1994). Time Series Analysis. Princeton University Press. Ch. 19.
- MacKinnon, J. G. (1996). Numerical distribution functions for unit root and cointegration tests. Journal of Applied Econometrics, 11(6), 601-618.
- Phillips, P. C. B., & Ouliaris, S. (1990). Asymptotic properties of residual based tests for cointegration. Econometrica, 58(1), 165-193.
- Stock, J. H. (1987). Asymptotic properties of least squares estimators of cointegrating vectors. Econometrica, 55(5), 1035-1056.
- Tsay, R. S. (2010). Analysis of Financial Time Series (3rd ed.). Wiley. Ch. 7-8.