Как построить VECM для коинтегрированных переменных

#python-3.x #pandas #statmodels

Вопрос:

У меня есть фрейм данных панды df1 временных рядов, и я проверяю, являются ли мои временные ряды стационарными, если нет, я хочу проверить, существует ли коинтеграция, и в случае создания их VECM. Это делается для того, чтобы избежать дифференциации, чтобы сделать их неподвижными:

 from statsmodels.tsa.stattools import adfuller #to check unit root in time series 
threshold=0.05 #significance level
coint = []
for column in df1.columns:
    result=adfuller(df1[column])
    if result[1]>threshold:
        print('P-value for '   column   ' is: '   str(result[1]))
        coint.append(column)
l = coint
combin = [comb for comb in combinations(l, 2)] # this is a list of all the pairwise columns which are non-stationary
 

После того, как я проверю коинтеграцию между попарными столбцами:

 import statsmodels.api as sm
df = df1.copy()
for comb in combin:
    i = comb[0]
    j = comb[1]
    x, y = df[j], df[i]
    var1 = adfuller(df[i])
    var2 = adfuller(df[j])
    x = sm.add_constant(x)
    result = sm.OLS(y,x).fit()
    b = result.params[1]
    x = df[j]
    diff = adfuller(y - b*x)
    print("The p-value for the ADF test on "   i    " is ", var1[1])
    print("The p-value for the ADF test on "   j    " is ", var2[1])
    print("The p-value for the ADF test on the difference is ", diff[1])
    if diff[1]<0.05:
        print('We have cointegration')
    else: print('We do not have cointegration')
 

мой вопрос таков:

  1. Как только проверенные 2 переменные будут объединены, как мне построить из них объединенную переменную? другими словами, как мне создать VECM?
  2. Приведенный выше тест на коинтеграцию выполняется попарно, но у меня может быть несколько коинтеграций, есть ли библиотека, которая позволяет мне тестировать несколько переменных и после создания VECM?