#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')
мой вопрос таков:
- Как только проверенные 2 переменные будут объединены, как мне построить из них объединенную переменную? другими словами, как мне создать VECM?
- Приведенный выше тест на коинтеграцию выполняется попарно, но у меня может быть несколько коинтеграций, есть ли библиотека, которая позволяет мне тестировать несколько переменных и после создания VECM?