Python Прогноз ARIMA показывает плоскую линию - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь прогнозировать S & P 500. Но я получаю фиксированную линию для прогноза (без сезонности или чего-либо еще). Попытка использовать библиотеку python Pyramid Arima. Данные S & P 500 (SPY), ежедневное «закрытие».

Какие-либо предлагаемые изменения в функции auto_arima? Есть ли способ скорректировать это так, чтобы окончательный прогноз показывал тренды и сезонность вместо плоской линии?

import pmdarima as pm

smodel = pm.auto_arima(data, start_p=0, start_q=0,
                         test='adf',
                         max_p=4, max_q=4, m=7,
                         start_P=0, seasonal=True,
                         d=None, D=1, trace=True,
                         error_action='ignore',  
                         suppress_warnings=True, 
                         stepwise=True)

smodel.summary()

enter image description here

# Forecast
n_periods = 52
fitted, confint = smodel.predict(n_periods=n_periods, return_conf_int=True)
index_of_fc = pd.date_range(data.index[-1], periods = n_periods, freq='MS')

# make series for plotting purpose
fitted_series = pd.Series(fitted, index=index_of_fc)
lower_series = pd.Series(confint[:, 0], index=index_of_fc)
upper_series = pd.Series(confint[:, 1], index=index_of_fc)

# Plot
plt.plot(data)
plt.plot(fitted_series, color='darkgreen')
plt.fill_between(lower_series.index, 
                 lower_series, 
                 upper_series, 
                 color='k', alpha=.15)

plt.title("SARIMA - Final Forecast of SPY")
plt.show()

enter image description here

1 Ответ

1 голос
/ 09 января 2020

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

...