在时间序列分析中,我们经常会遇到许多变量随时间呈现趋势变化的情况,这意味着它们是非平稳的。在构建统计模型时,这种非平稳性可能会成为一个棘手的问题,因为它可能导致我们得出误导性的结论。然而,有时候两个或多个非平稳的时间序列会以一种特定的方式共同移动,使得它们之间的某种组合变得平稳。这种特殊的关系,我们就称之为协整。
什么是协整?
当两个或多个非平稳的时间序列以某种方式共同移动,导致它们的线性组合呈现平稳性时,我们就说发生了协整。这表明了变量之间存在一种长期的均衡关系,即便其中每个变量单独来看都会随时间产生趋势或漂移。
协整揭示了非平稳变量之间稳定的长期关系。它为我们使用误差修正模型 (ECM),奠定了基础,该模型能够捕捉:
- 短期动态变化
- 长期均衡行为
示例
- 让我们看看 原油价格和汽油价格,这两者通常都是非平稳的,并且随时间呈现趋势。
- 如果它们之间的差值(例如,汽油价格 – 石油价格 × 某个系数)是平稳的,我们就可以说它们是 协整的。
平稳性及其重要性
在深入探讨协整之前,理解 平稳性 至关重要:
- 如果一个时间序列的统计属性(如均值、方差、自相关性)不随时间变化,那么它就是 平稳的。
- 大多数统计模型都假设数据具有平稳性,以进行准确的预测。
- 非平稳序列可能会导致 伪回归,即变量之间仅仅因为具有趋势行为而看似相关,实际上并不存在真正的关联。
进行协整检验前的步骤
步骤 1:检查单个序列的平稳性:
- 使用增强型迪基-富勒检验(ADF)或菲利普斯-佩龙检验(PP)等方法来检查单位根。
- 确保每个变量都是一阶单整的。
步骤 2:目视检查:
- 绘制序列图,观察它们是否看起来随时间同步移动。
步骤 3:执行协整检验:
- 如果序列是非平稳的,但显示出协同移动的迹象,则应用协整检验进行确认。
协整检验的实现
1. 安装必要的库
> pip install statsmodels
2. 导入库
Python
CODEBLOCK_eea2fbd0
3. 生成或加载时间序列数据
Python
CODEBLOCK_db710118
4. 执行协整检验
Python
CODEBLOCK_9df0d279
输出结果:
> Cointegration Test Statistic: -10.54692388951861
>
> P-value: 1.0672395686753919e-17
>
> The series are likely cointegrated (reject null hypothesis).
常见的协整检验方法
1. Engle-Granger 两步法(适用于两个变量)
- 由 Engle 和 Granger (1987) 提出
- 非常适合处理 两个变量 的情况
步骤:
i). 使用普通最小二乘法(OLS)将一个变量对另一个变量进行回归。
> yt = \alpha + \beta xt + \epsilon_t
ii). 对该回归得到的残差 \epsilon_t 进行 ADF 检验以测试其平稳性。
- 如果残差是平稳的,则说明 Y 和 X 存在协整关系。
简单易行;假设只存在一个协整关系,不适合处理超过两个变量的情况,且可能具有较弱的渐近性质。
2. Johansen 检验(适用于多个变量)
- 由 Søren Johansen (1988) 提出
- 适用于 超过两个变量 的复杂情况
基于向量自回归 (VAR):
- 它考察协整矩阵的秩。
- 使用 迹检验 和 最大特征值检验 来确定协整关系的数量。
步骤:
- 确保所有变量均为 I(1) 序列
- 估计向量误差修正模型 (VECM)
- 利用迹检验和特征值统计量来测试协整向量的数量
迹检验公式:
> \text{Trace Statistic} = -T \sum{i=r+1}^{n} \ln(1 – \lambdai)
其中 λ 是特征值,r 是协整关系的数量,T 是观测值数量。
最大特征值检验:
> \text{Max Eigenvalue Statistic} = -T \ln(1 – \lambda_{r+1})
能够处理多个变量,允许测试多个协整向量;但方法更为复杂,且对滞后长度的选择敏感。
3. Phillips-Ouliaris 检验
- 这是