Тест ADFuller на Python: изучение методов проверки стационарности

При анализе временных рядов крайне важно определить, является ли данный ряд стационарным или нет. Стационарность подразумевает, что статистические свойства ряда, такие как среднее значение, дисперсия и автокорреляция, остаются постоянными во времени. Тест ADFuller, или расширенный тест Дикки-Фуллера, является популярным статистическим тестом, используемым для оценки стационарности. В этой статье мы рассмотрим различные методы выполнения теста ADFuller на Python, сопровождаемые примерами кода.

Методы теста ADFuller в Python:

Метод 1. Использование библиотеки статистических моделей

import pandas as pd
from statsmodels.tsa.stattools import adfuller
# Assuming 'data' is the time series data
result = adfuller(data)
print('ADF Statistic:', result[0])
print('p-value:', result[1])
print('Critical Values:', result[4])

Метод 2. Реализация пользовательской функции

import pandas as pd
import numpy as np
def adfuller_test(data):
    # Calculate rolling statistics
    rolling_mean = data.rolling(window=12).mean()
    rolling_std = data.rolling(window=12).std()
    # Perform the ADFuller test
    dftest = adfuller(data, autolag='AIC')
    # Print the results
    print('ADF Statistic:', dftest[0])
    print('p-value:', dftest[1])
    print('Critical Values:', dftest[4])

Метод 3. Использование библиотеки PyCaret

from pycaret.timeseries import *
import pandas as pd
# Assuming 'data' is the time series data
exp = setup(data=data, session_id=123)
best_model = compare_models()
interpret_model(best_model)

Метод 4. Применение различий

import pandas as pd
import numpy as np
# Assuming 'data' is the time series data
# Calculate the first difference
diff = data.diff().dropna()
# Perform the ADFuller test on the differenced data
result = adfuller(diff)
print('ADF Statistic:', result[0])
print('p-value:', result[1])
print('Critical Values:', result[4])

Метод 5. Использование библиотеки Arch

import pandas as pd
import numpy as np
from arch.unitroot import ADF
# Assuming 'data' is the time series data
adf = ADF(data)
print(adf.summary().as_text())

В этой статье мы рассмотрели несколько методов выполнения теста ADFuller в Python. Мы обсудили использование библиотеки statsmodels, реализацию пользовательской функции, использование библиотеки PyCaret, применение различий и использование библиотеки Arch. Эти методы предоставляют различные подходы к проверке стационарности данных временных рядов. Используя эти методы, аналитики и специалисты по обработке данных могут принимать обоснованные решения при работе с данными, зависящими от времени.