Я использовал модель SARIMAX для прогнозирования одного определенного столбца моего фрейма данных pandas. Этот столбец IdCount
. Пока я беру исходный размер прогнозирования фрейма данных, все работает нормально. Смотрите мой код здесь:
model=sm.tsa.statespace.SARIMAX(df1['IdCount'],order=(1, 1, 0),seasonal_order=(1,1,1,28))
results=model.fit()
df1['forecast']=results.predict(start=1100,end=1156,dynamic=True)
df1[['IdCount','forecast']].plot(figsize=(12,8))
Последняя запись в моем кадре данных pandas df1
имеет индекс 1156.
Этот код работает.
Но как только я пытаюсь спрогнозировать будущие значения, я больше не получаю никаких результатов.
Это работает:
future_df['forecast'] = results.predict(start = 1155, end = 1156, dynamic= True)
Этот не работает. Я вообще не получаю результатов для прогноза столбца (Примечание: индекс 1157 будет первым из исходного кадра):
future_df['forecast'] = results.predict(start = 1155, end = 1157, dynamic= True)
Я получаю это предупреждение, которого не получаю при использовании end = 1156
:
/usr/local/lib/python3.6/dist-packages/statsmodels/tsa/base/tsa_model.py:576: ValueWarning: No supported index is available. Prediction results will be given with an integer index beginning at `start`.
ValueWarning)
Примечание. Перед этим я создал новый кадр данных future_df
с одной пустой строкой и временем в качестве индекса: код здесь:
from pandas.tseries.offsets import DateOffset
future_dates=[df1.index[-1] + DateOffset(hours=x*6)for x in range(0,2)]
future_datest_df=pd.DataFrame(index=future_dates[1:],columns=df1.columns)
future_df=pd.concat([df1,future_datest_df])
Возникает ли это предупреждение и, следовательно, отсутствие прогноза, потому что я неправильно применил DateOffset?
После создания это выглядело так:
И после применения results.predict
столбец прогноза был пуст: