基于真实值的 ARIMA 预测

ARIMA Forecasting based on real values

我做了一个ARIMA模型来预测用电量。我还检测到最好的 AR I 和 AM 系数 (1,0,6)。这些值每五分钟测量一次,并导入为 csv 文件。 一天是对时间序列建模,另一天是预测。 我的代码如下:

from statsmodels.tsa.arima_model import ARIMA
rcParams['figure.figsize'] = 15, 10
timeseries = df_5min['2010-07-06']
model = ARIMA(timeseries, order=(1,0,6))
result_AR = model.fit(disp=-1)
time_series_df = result_AR.fittedvalues

result_AR.plot_predict(1,600, alpha=0.05)
x = result_AR.forecast(steps=600)
plt.plot(linewidth=1, legend=None)
plt.ylabel('Verbrauch (W)')
plt.xlabel('Zeit (t)')
plt.show()

输出为

如你所见,天气预报真的很糟糕。 ARIMA 适用于回归,因此它采用最后一个值并根据它们预测下一个值。

我现在的问题是: 我还有预测日(7 月 7 日至 8 日)的实际值。 现在我希望 ARIMA 仅预测接下来的六个步骤,例如,基于最后六个实数值。在预测性别步骤后,它再次采用最后六个真实值并根据它们预测接下来的六个,例如

如果可能,您应该改用 SARIMAX 模型,该模型具有更多功能,并且会在未来得到更好的支持(ARIMA 模型将在下一版本中弃用)。所以你应该使用

from statsmodels.tsa.api import SARIMAX
model = SARIMAX(timeseries, order=(1, 0, 6))
...

结果对象随后将具有名为 extendappend 的方法,这将允许您创建一个使用新值扩展的新结果对象。 "Cross-validation" section of this example notebook 有一些使用 extend.

的例子