Как получить доверительный интервал каждого прогноза в модели ARIMA

#python #arima

#python #arima

Вопрос:

Я пытаюсь получить «нечеткое» предсказание временных рядов, используя модель SARIMA

Мой обучающий набор является prices_train , и модель построена следующим образом:

 model_order = (0, 1, 1)
model_seasonal_order = (2, 1, 1, 24)
    
model = sm.tsa.statespace.SARIMAX(
    prices_train, order=model_order, 
    seasonal_order=model_seasonal_order)
model_fit = model.fit(disp=0)
  

Я знаю, что могу получить точечный прогноз, используя эту инструкцию:

 pred = model_fit.forecast(3) 
  

Но мне не нужен точечный прогноз, мне нужен доверительный интервал каждого прогнозируемого значения, чтобы у меня могли быть нечеткие временные ряды прогнозируемых значений

Я видел такие руководства, как это, где они применяют этот код:

 forecast, stderr, conf = model_fit.forecast(alpha=a)
  

Однако, похоже, библиотека была обновлена с 2017 года, потому что это не работает. Я прочитал statsmodels руководство, но не нашел большой помощи.

Ответ №1:

Что ж, я нашел способ, я опубликую его здесь на случай, если кому-нибудь, читающему это в 2035 году, это понадобится:

Будучи h количеством прогнозов:

 conf_ins = model_fit.get_forecast(h).summary_frame()
  

Он возвращает фрейм данных с доверительным интервалом h прогнозов, указывающий для каждого из них:

  • Среднее
  • Среднеквадратичная ошибка
  • Минимальный
  • Максимальный

Ответ №2:

Ваша подходящая модель должна иметь функцию get_prediction(), которая возвращает прогноз. Затем вы можете вызвать prediction.conf_int(alpha=a) .

Комментарии:

1. Я попробовал ваш ответ, и он работает, но я нашел более элегантный способ. Однако я отмечу это как принятое, спасибо