(python) pmdarima.auto_arima (pyramid.auto_arima) не будет использовать аргументы d и D автоматически - PullRequest
1 голос
/ 19 мая 2019

Я вручную сделал 20 моделей и выяснил, следует использовать d=1 или D=1 для каждой модели , но auto_arima никогда не использовать разностные аргументы (даже у одной модели нетd или D вообще, и все испытания равны (1,0,1) x (0, 0, 1, 52). Я проверил это, установив trace=True).

Я хочу auto_arima выполнить поиск по сетке параметров pdq=(0~3, 0~1, 0~3) и PDQs=(0~3, 0~1, 0~3, 52).

Я устанавливаю параметры следующим образом:

    start_p=0,
    start_q=0,
    max_p=3,
    max_d=1,
    max_q=3,
    start_P=0,
    D=None,
    start_Q=0,
    max_P=2,
    max_D=1,
    max_Q=2,
    max_order=10,
    m=52,
    seasonal=True,
    stationary=False,
    information_criterion='aic',
    alpha=0.05,
    test='kpss',
    seasonal_test='ocsb',
    stepwise=True,
    n_jobs=-1,
    start_params=None,
    trend=None,
    method=None,
    transparams=True,
    maxiter=None,
    n_fits=100,
    with_intercept=True,

Как сделать auto_arima делать поиск по сетке, что я хочу делать?

1 Ответ

1 голос
/ 16 июля 2019

Есть несколько вещей, которые вы должны знать о pmdarima и его реализации auto_arima.Сейчас я немного играю с этим, поэтому постараюсь ответить на ваши вопросы.

  1. Поиск по сетке : Реализация auto_arima использует пошаговый алгоритмопределить оптимальные параметры.Это в ваших параметрах значение stepwise, которое по умолчанию установлено на True API написано:

    Пошаговый алгоритм может быть значительно быстрее, чем подгонка всех комбинаций гиперпараметров, и с меньшей вероятностью будет соответствовать модели.

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

  2. Параметры дифференцирования : при попытке этогоопция (stepwise=False), она должна попробовать все комбинации, кроме двух параметров - d и D.Это потому, что они оценены и не включены в поиск параметров.В параметрах, перечисленных в ваших вопросах, у вас есть два теста - test и seasonal_test.Эти методы используются для выбора значений для d и D соответственно.

    Я бы порекомендовал вам прочитать документацию по Понимание p, d и q .Вы можете немного лучше понять, как они работают с оценкой разностных параметров.

    Вы также можете попробовать протестировать этот метод напрямую (просто измените значение теста):

from pmdarima.arima.utils import ndiffs
ndiffs(y, test='kpss')

Я не знаю, как тестировать d параметров в поиске по сетке, я думаю, что реализация Python и R дают одинаковую или похожую оценку.Таким образом, вы можете сделать это самостоятельно и запустить auto_arima с вручную установленными параметрами разности и оставить остальное при поиске по сетке.В противном случае он автоматически выберет значения для d и D.Вопрос в том, откуда вы знаете, что каждая модель должна использовать d=1 и D=1, когда эти автоматические тесты говорят что-то другое?

...