Получение результатов от модели ARIMA - PullRequest
0 голосов
/ 17 декабря 2018

Я использую следующий код из Kaggle, чтобы оценить параметры, создать модель, используя лучшие из них, как определено самым низким AIC, и затем вывести сводку попыток.Это работает без ошибок, пока я не создаю информационный кадр и не пытаюсь заполнить результаты.Когда я запускаю строки для создания results_table, я получаю сообщение об ошибке: ValueError: Несоответствие длины: ожидаемая ось имеет 0 элементов, новые значения имеют 2 элемента.Если я создаю пустой df, столбцы появляются, но тогда переменная best_model не определена, и я не могу получить свое резюме.Как будто что-то не так с данными результатов, которые я пытаюсь создать и передать.Мысли?

Спасибо, Бенни

# Initial approximation of ARIMA parameters
Qs = range(0, 2)
qs = range(0, 3)
Ps = range(0, 3)
ps = range(0, 3)
D=1
d=1
parameters = product(ps, qs, Ps, Qs)
parameters_list = list(parameters)
len(parameters_list)

# Model Creation - Parameter Selection done using the X_train dataset which has gone through scaling
results = []

best_aic = float("inf")
warnings.filterwarnings('ignore')
for param in parameters_list:
    try:
        model=sm.tsa.statespace.SARIMAX(X_train, order=(param[0], d, param[1]),
                                        seasonal_order=(param[2], D, param[3], 12)).fit(disp=-1)
    except ValueError:
        print('Sub-optimal parameters:', param)
        continue
    aic = model.aic
    if aic < best_aic:
        best_model = model
        best_aic = aic
        best_param = param
    results.append([param, model.aic])

# Best ARIMA models/parameter review

result_table = pd.DataFrame(results)
result_table.columns = ['parameters', 'aic']

print(result_table.sort_values(by = 'aic', ascending=True).head())
print(best_model.summary())
...