Как запустить тест ADFuller для данных временных рядов с помощью библиотеки statsmodels?

Я совершенно новичок в языках программирования и выбрал Python для тестирования торговой стратегии (потому что я слышал, что это относительно просто). Я добился определенного прогресса в изучении основ, но в настоящее время я застрял в выполнении тестов ADFuller на фрейме данных временных рядов.

Вот так выглядит мой Dataframe

Теперь мне нужно запустить ADF-тест для столбцов - "A-Btd", "A- Ctd" и т. Д. (У меня есть 66 таких столбцов). Я хотел бы получить статистику теста / вывод для каждого из них.

Я устал, используя такие строки, как cadfs = [ts.adfuller(df1)], Поскольку мне не хватает опыта, я не могу изменить код в соответствии с моим фреймом данных.

Я заранее прошу прощения, если я пропустил важную информацию, которую я должен предоставить. Пожалуйста, оставьте комментарий, и я предоставлю его как можно скорее.

Заранее большое спасибо!

1 ответ

Решение

Если вам придется делать это для очень многих, я бы попытался поместить результаты в текст, подобный этому:

import statsmodels.tsa.stattools as tsa

df = ... #load your dataframe
adf_results = {}

for col in df.columns.values:  #or edit this for a subset of columns first
    adf_results[col] = tsa.adfuller(df[col])

Очевидно, указав другие параметры по желанию, например, tsa.adfuller(df[col], autolag='BIC'), Или, если вы не хотите получать все выходные данные, а просто проанализируете каждый столбец, чтобы определить, является ли он стационарным или нет, тестовая статистика - это первая запись в кортеже, возвращаемая adfuller()так что вы можете просто использовать tsa.adfuller(df[col])[0] и проверьте его на соответствие вашему порогу, чтобы получить логический результат, а затем установите это значение в вашем dict.

Другие вопросы по тегам