Почему Python adf работает хуже чем R adf?

При построении ML-модели возникла необходимость делать проверку данных на стационарность (500к наблюдений).

Вызвал в Python:
from statsmodels.tsa.stattools import adfuller
adfuller(data)

Отожрал 25 Гб памяти и код очень долго отрабатывал (более 10 минут)

Вызвал в R:
library(tseries)
adf.test(data)

Отработал за пару секунд и выдал результат.

У меня ещё нет большого опыта в DS, но меня порой удивляет, что так сложно найти по запросу подходящий метод в Python (например: проверка стационарности, анализ структурных сдвигов), но при этом в R есть как подробная документация с математическими выкладками, так и обилие методов.
При этом, когда я стоял на распутье при выборе между Python и R, то все в окружении поголовно топили за Python, аргументируя, что Python в плане анализа данных уже догнал и перегнал R.

Возможно, конечно, я не там ищу, или применяю устаревшие и никому не нужные методы для работы, что часто возникает проблема как в самом нахождении подходящего готового метода в Python, так и в его эффективном (с точки зрении производительности и качества получаемого результата).
  • Вопрос задан
  • 255 просмотров
Решения вопроса 1
Maksim_64
@Maksim_64
Data Analyst
1. По поводу скорости, даже на дефолтных параметрах функции выглядит подозрительно. 10 минут подозрительно. Что влияет на скорость, параметр maxlag, это параметр на сколько максимально наблюдений назад смотрит алгоритм при проведении теста. по умолчанию он равен. 12 * (количество наблюдений / 100 )**(1/4), в вашем случае это 101 наблюдение. Если уменьшить это значение тест выполнится быстрее. Нужно ли это делать? это зависит от контекста проблемы. Например если бы это была финансовая ts с дневной частотой то maxlag = 101, не имеет никакого смысла его можно было уменьшить скажем до 10 а то и еще меньше.

2. Относительно python vs R. Если брать какие то специфические моменты в особенности тесты, библиотеки R попросту на порядок превзойдут библиотеки python (на сегодняшний момент). Но при создании проекта это далеко не все. Создать поддерживаемую базу кода на python значительно легче чем на R. Коммунити python значительно больше это значит, где будет python а где R скажем через 5 лет, сколько новых фреймворков появится какая новая инфраструктура будет создана и т.д. R крутой нишевый инструмент. И если смотреть на короткие готовые решения скажем в области анализа ts он попросту круче. Если строить проект который включает в себя анализ ts, многие однозначно выберут python.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы