coint
是 statsmodels
库中的一个函数,用于进行协整检验。具体来说,它实现了Engle-Granger 协整检验,是分析时间序列数据中变量长期均衡关系的重要工具。
主要作用:
通过检验两个或多个时间序列的线性组合是否为平稳序列,来判断这些序列之间是否存在协整关系。如果存在协整关系,表明这些变量之间存在长期的均衡关系,即使它们各自的序列是非平稳的。
参数说明:
-
y
: 因变量(被解释变量)的时间序列数据。 -
X
: 自变量(解释变量)的时间序列数据,可以是一个或多个变量。 trend
: 指定是否在检验回归中包含趋势项,常见的选项有:-
"n"
:不包含趋势项(默认值)。 -
"c"
:包含常数项。 -
"ct"
:包含常数项和线性趋势项。 -
"ctt"
:包含常数项、线性趋势项和二次趋势项。
-
返回值:
返回一个包含三个元素的元组:
-
测试统计量(Test Statistic):用于判断是否存在协整关系的关键指标。
-
临界值(Critical Values):通常包括 1%、5% 和 10% 显著性水平下的临界值,用于与测试统计量比较以确定拒绝域。
-
P 值(P-value):用于判断在给定显著性水平下是否拒绝原假设(即不存在协整关系)。
使用场景:
-
在金融分析中,用于检测不同资产价格之间是否存在长期均衡关系。
-
在经济研究中,分析经济变量(如 GDP、利率、通胀率等)之间的长期关系。
-
构建误差修正模型(ECM)或协整向量自回归模型(CVAR)前的必要步骤。
示例代码:
import numpy as np
import statsmodels.api as sm
from statsmodels.tsa.stattools import coint
# 生成模拟数据
np.random.seed(123)
y = np.random.randn(100).cumsum() # 非平稳序列
X = 0.5 * y + np.random.randn(100) # 与 y 具有协整关系的序列
# 进行协整检验
test_stat, p_value, critical_values = coint(y, X)
print(f"测试统计量: {test_stat}")
print(f"P 值: {p_value}")
print("临界值:")
for sig_level, value in critical_values.items():
print(f" {sig_level}%: {value}")
if p_value < 0.05:
print("拒绝原假设:存在协整关系")
else:
print("不拒绝原假设:不存在协整关系")
输出解释:
假设输出如下:
测试统计量: -3.215
P 值: 0.021
临界值:
1%: -3.95
5%: -3.09
10%: -2.79
拒绝原假设:存在协整关系
-
测试统计量(-3.215) 小于 5% 显著性水平下的临界值(-3.09),并且 P 值(0.021) 小于 0.05,因此在 5% 显著性水平下拒绝原假设,认为变量之间存在协整关系。
总之,coint
函数是分析时间序列数据中变量长期关系的重要工具,在金融和经济领域的数据分析中具有广泛应用。