绘制两个配对的历史协整值

4 投票
1 回答
3727 浏览
提问于 2025-04-18 03:46

这里有一个用Python进行ADF测试的示例,目的是检查两个数据对之间的协整关系。不过,最后的结果只给出了一个数字值,表示协整的情况。想知道如何获取协整的历史结果。

内容来源于 http://www.leinenbock.com/adf-test-in-python/

import numpy as np
import statsmodels.api as stat
import statsmodels.tsa.stattools as ts

x = np.random.normal(0,1, 1000)
y = np.random.normal(0,1, 1000)

def cointegration_test(y, x):
    result = stat.OLS(y, x).fit()    
    return ts.adfuller(result.resid)

1 个回答

7

我猜你是想测试扩展的协整关系吧?注意,你应该使用 sm.tsa.coint 来测试协整。你可以用 pandas 来测试实际国内生产总值(realgdp)和实际个人消费支出(realdpi)之间的历史协整关系,方法如下:

import pandas as pd
import statsmodels.api as sm

data = sm.datasets.macrodata.load_pandas().data

def rolling_coint(x, y):
    yy = y[:len(x)]
    # returns only the p-value
    return sm.tsa.coint(x, yy)[1]

historical_coint = pd.expanding_apply(data.realgdp, rolling_coint, 
                                      min_periods=36, 
                                      args=(data.realdpi,))

撰写回答