使用 Johansen 方法获取协整向量

机器算法验证 自习 协整 矢量纠错模型
2022-03-01 21:09:29

我试图更好地理解 Johansen 方法,所以我开发了一个示例 3.1,由Likelihood-Based-Inference-Cointegrated-Autoregressive-Econometrics一书给出, 其中我们有三个过程:

X1t=i=1tϵ1i+ϵ2t

X2t=αi=1tϵ1i+ϵ3t

X3t=ϵ4t

所以协整向量应该是 [a, -1, 0] 和 [0, 0 1],但是当我运行 Johansen 方法时,我无法得到它们。

我正在尝试的代码如下:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from statsmodels.tsa.stattools import adfuller
from statsmodels.tsa.johansen import coint_johansen

mu, sigma = 0, 1 # mean and standard deviation
n = 1000

s1 = np.random.normal(mu, sigma, n)
s2 = np.random.normal(mu, sigma, n)
s3 = np.random.normal(mu, sigma, n)

x_1t = np.cumsum(s1)+s2
x_2t = 7*np.cumsum(s1)+s3
x_3t = s3

#Creating Pandas object
todays_date = datetime.datetime.now().date()
index = pd.date_range(todays_date-datetime.timedelta(10), periods=n, freq='D')
y = pd.DataFrame(index=index, data={'col1': x_1t, 'col2': x_2t, 'col3':x_3t} )

p = 4
jres = coint_johansen(y, 0, p)

我已经尝试了几个 p 值,但我无法获得协整向量,我知道我做错了什么。谢谢。

1个回答

我找到了答案。如果对某人有帮助,可以查看以下笔记本:

http://nbviewer.ipython.org/github/mapsa/seminario-doc-2014/blob/master/cointegration-example.ipynb