Как найти значение параметров [p, d, q] для модели ARIMA в python? - PullRequest
0 голосов
/ 08 декабря 2018

Как правильно предсказать значения p, d и q для параметров для модели ARIMA.

Как Grid Search помогает найти эти параметры?

Как сделать нестационарные данные стационарными для применения ARIMA?

Я уже упоминал эту статью

1 Ответ

0 голосов
/ 01 июля 2019

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

  1. Оценить модель ARIMA.
    • Разделите набор данных на обучающий и тестовый наборы.
    • Пройдите временные шаги в наборе тестовых данных.
      • Обучение модели ARIMA.
      • Создание одношагового прогноза.
      • Прогноз магазина;получить и сохранить фактическое наблюдение.
    • Рассчитать оценку ошибки для прогнозов по сравнению с ожидаемыми значениями

этот код:

# evaluate an ARIMA model for a given order (p,d,q)
def evaluate_arima_model(X, arima_order):
    # prepare training dataset
    train_size = int(len(X) * 0.66)
    train, test = X[0:train_size], X[train_size:]
    history = [x for x in train]
    # make predictions
    predictions = list()
    for t in range(len(test)):
        model = ARIMA(history, order=arima_order)
        model_fit = model.fit(disp=0)
        yhat = model_fit.forecast()[0]
        predictions.append(yhat)
        history.append(test[t])
    # calculate out of sample error
    error = mean_squared_error(test, predictions)
    return error
Оцените наборы параметров ARIMA, это код:
# evaluate combinations of p, d and q values for an ARIMA model
def evaluate_models(dataset, p_values, d_values, q_values):
    dataset = dataset.astype('float32')
    best_score, best_cfg = float("inf"), None
    for p in p_values:
        for d in d_values:
            for q in q_values:
                order = (p,d,q)
                try:
                    mse = evaluate_arima_model(dataset, order)
                    if mse < best_score:
                        best_score, best_cfg = mse, order
                    print('ARIMA%s MSE=%.3f' % (order,mse))
                except:
                    continue
    print('Best ARIMA%s MSE=%.3f' % (best_cfg, best_score)) 

Для получения более подробной информации вы можете найти в этой ссылке учебник, в котором сетка поиска гиперпараметров ARIMA для одностадийного скользящего прогнозаразработан, https://machinelearningmastery.com/grid-search-arima-hyperparameters-with-python/

...