Мне нужна небольшая помощь по созданию al oop в Python. Вот код, который я использую:
import pandas as pd
import numpy as np
import math
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf
from statsmodels.graphics.tsaplots import plot_pacf
%matplotlib inline
df= pd.read_csv('original_data.csv', index_col='1')
from statsmodels.tsa.stattools import adfuller
def adf_test(timeseries):
#Perform Dickey-Fuller test:
test_types = ['nc','c','ct']
for tests in test_types:
print ('\n Results of Dickey-Fuller Test type = {}:\n'.format(tests))
dftest = adfuller(timeseries,regression=tests,autolag='AIC')
dfoutput = pd.Series(dftest[0:4],index=['Test Statistic','p-value','#Lags used','#Observations used'])
# for key, value in dftest[4].items():
# dfoutput['Critical value (%s)'%key] = value
print(dfoutput)
p_value = dftest[1]
if p_value > 0.05:
print('Unit root!')
elif p_value < 0.05:
print('No unit root!')
adf_test(df['2']) #2 is the number of the column in the cvs file
n = 1
df['rates_difference'] = df['2']-df['2'].shift(n)
adf_test(df['rates_difference'].dropna())
n = 1
df['rates_difference2'] = df['rates_difference']-df['rates_difference'].shift(n)
adf_test(df['rates_difference2'].dropna())
Идея состоит в том, что код проверяет, являются ли данные стационарными (значение p <0,05), используя 3 версии теста ADF. Если это не так, то мы должны сделать первое отличие и проверить еще раз. Если он снова не является стационарным, мы должны сделать вторую разницу и проверить значение p. Таким образом, этот процесс должен l oop, пока данные не станут стационарными. </p>
Заранее спасибо.