首页 > 解决方案 > 基于真实值的 ARIMA 预测

问题描述

我制作了一个 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 只预测接下来的六个步骤,例如,基于最后六个实际值。在预测性步骤之后,它再次获取最后六个真实值并基于它们预测接下来的六个,例如

标签: pythonpredictionstatsmodelsforecastingarima

解决方案


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

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

然后结果对象将具有调用的方法extendappend这将允许您创建一个新的结果对象,该对象使用您的新值进行扩展。这个示例笔记本的“交叉验证”部分有一些使用extend.


推荐阅读