Как запустить тест 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.