#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. Я попробовал ваш ответ, и он работает, но я нашел более элегантный способ. Однако я отмечу это как принятое, спасибо