python statsmodels coint协整关系检验与结果分析
在满足数据的平稳性后,使用原时间序列进行coint协整检验。(如果前面有进行一阶差分,也不能用一阶差分的序列,切记)
statsmodels.tsa.stattools.coint
-
statsmodels.tsa.stattools.coint(y0,y1,trend ='c',method ='aeg',maxlag = None,autolag ='aic',return_results = None)
- 测试单变量方程的非协整性
零假设不是协整。假设y0和y1中的变量是阶数1,I(1)的积分。
这使用增强的Engle-Granger两步协整检验。常数或趋势包括在第一阶段回归中,即在协整方程中。
警告:与statsmodels 0.8相比,autolag默认值已更改。在0.8 autolag始终为None,没有使用关键字,默认为’aic’。使用autolag = None可以避免滞后搜索。
- 参数
-
- y1 (array_like,1d)
- 协整向量中的第一个元素
- y2 (array_like)
- 协整向量中的剩余元素
- trend (str {‘c’,’ct’})
- 趋势项包括在回归中用于协整方程
- ‘c’:不变
- ‘ct’:恒定和线性趋势
- 也有二次趋势’ctt’,没有常数’nc’
- method (string)
- 目前只有“aeg”用于增强的Engle-Granger测试。默认可能会改变。
- maxlag (无或int)
- adfuller的关键字,最大或给定滞后数
- autolag (string)
- adfuller的关键字,滞后选择标准。
- 如果为None,则使用maxlag滞后而不进行滞后搜索
- 如果是’AIC’(默认值)或’BIC’,则选择滞后数以最小化相应的信息标准
- 基于’t-stat’的maxlag选择。从maxlag开始并使用5%大小的测试来降低滞后,直到最后一个滞后长度的t统计量显着为止
- return_results (bool)
- 为了将来的兼容性,目前只有元组可用。如果为True,则返回结果实例。否则,返回包含测试结果的元组。设置return_results = False以避免将来的更改返回。
- 返回
-
- coint_t (float)
- 残差单位根检验的t统计量
- pvalue (float)
- MacKinnon基于MacKinnon的近似渐近p值(1994)
- crit_value (dict)
- 基于回归曲线的1%,5%和10%水平的检验统计量的临界值。这取决于观察的数量。
coint(price_A, price_B) (-3.5596060078230063, 0.0274647420557733, array([-3.89666127, -3.33625344, -3.04453569]))
statsmodels coint协整关系结果分析:
1、coint_t 值小于5%的临界值,说明有95%的把握拒绝原假设;
2、p-value的值也小于0.05也比较小;
可以判断两个时间序列协整关系。
协整关系
协整(Cointegration)理论是恩格尔(Engle)和格兰杰(Granger)在1978年提出的。平稳性是进行时间序列分析的一个很重要的前提,很多模型都是基于平稳下进行的,而现实中,很多时间序列都是非平稳的,所以协整是从分析时间序列的非平稳性入手的。
如果两组序列都是非平稳的,但是经过一阶差分后是平稳的,且这两组序列经过某种线性组合也是平稳的,则它们之间就存在协整关系。
协整理论的意义在于:
首先,因为或许单个序列是非平稳的,但是通过协整我们可以建立起两个或者多个序列之间的平稳关系,进而充分应用平稳性的性质。
其次,可以避免伪回归。如果一组非平稳的时间序列不存在协整关系,那么根据它们构造的回归模型就可能是伪回归。
区别变量之间长期均衡关系和短期波动关系。