Я могу делать прогнозы на моих выборочных данных, но когда я пытаюсь сделать из выборочных прогнозов, я получаю сообщение об ошибке:
C:\Users\YannickLECROART\Miniconda3\envs\machinelearning\lib\site-packages\statsmodels\tsa\base\tsa_model.py:531: ValueWarning: No supported index is available. Prediction results will be given with an integer index beginning at `start`.
ValueWarning)
<statsmodels.tsa.statespace.mlemodel.PredictionResultsWrapper object at 0x000001F303476A58>
Вы можете найти набор данных, который я использую, нажав на ссылку ниже.
https://ufile.io/an2cx
import warnings
import itertools
import numpy as np
import matplotlib.pyplot as plt
warnings.filterwarnings("ignore")
plt.style.use('fivethirtyeight')
import pandas as pd
import statsmodels.api as sm
import matplotlib
matplotlib.rcParams['axes.labelsize'] = 14
matplotlib.rcParams['xtick.labelsize'] = 12
matplotlib.rcParams['ytick.labelsize'] = 12
matplotlib.rcParams['text.color'] = 'k'
Прежде всего я извлекаю набор данных из файла Excel.
df = pd.read_excel("C:\\Users\\YannickLECROART\\Desktop\\comedie.xlsx", index_col=0)
Затем я преобразую кадр данных во времясерии.
df.index = pd.to_datetime(df.index)
Я сортирую данные так, чтобы я получал значения только между 9 и 10 утра.
idx_9 = df.between_time('09:00', '09:59')
Я настраиваю параметры SARIMAX
mod = sm.tsa.statespace.SARIMAX(idx_0,
order=(1, 1, 1),
seasonal_order=(1, 1, 0, 12),
enforce_stationarity=False,
enforce_invertibility=False)
results = mod.fit()
Затем я делаю прогнозы на моих выборочных данных, чтобы сравнить их с наблюдаемыми значениями
pred = results.get_prediction(start=1, dynamic=False)
pred_ci = pred.conf_int()
ax = idx_9['2017':].plot(label='Observations')
pred.predicted_mean.plot(ax=ax, label='Prédictions', alpha=.7, figsize=(14, 7))
ax.fill_between(pred_ci.index,
pred_ci.iloc[:, 0],
pred_ci.iloc[:, 1], color='k', alpha=.2)
ax.set_xlabel('Date')
ax.set_ylabel('Places occupées')
plt.legend()
plt.show()
Так выглядит график
Наконец, я хочу сделать выборочные прогнозы, чтобы построить их после наблюдений, и вот где я получаю сообщение об ошибке:
pred_uc = results.get_forecast(steps=100)
pred_ci = pred_uc.conf_int()
ax = idx_0.plot(label='Observations', figsize=(14, 7))
pred_uc.predicted_mean.plot(ax=ax, label='Prédictions')
ax.fill_between(pred_ci.index,
pred_ci.iloc[:, 0],
pred_ci.iloc[:, 1], color='k', alpha=.25)
ax.set_xlabel('Date')
ax.set_ylabel('Places occupées')
plt.legend()
plt.show()
Не могли бы вы сказать мне, почему я получаю эту ошибкусообщение и как я могу это исправить?Заранее спасибо.