python - 基于真实值的 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 只预测接下来的六个步骤,例如,基于最后六个实际值。在预测性步骤之后,它再次获取最后六个真实值并基于它们预测接下来的六个,例如
解决方案
如果可能,您应该切换到使用 SARIMAX 模型,它具有更多功能并且将在未来得到更好的支持(ARIMA 模型将在下一个版本中弃用)。所以你应该使用
from statsmodels.tsa.api import SARIMAX
model = SARIMAX(timeseries, order=(1, 0, 6))
...
然后结果对象将具有调用的方法extend
,append
这将允许您创建一个新的结果对象,该对象使用您的新值进行扩展。这个示例笔记本的“交叉验证”部分有一些使用extend
.
推荐阅读
- python - 使用 Python 更新 DynamoDB 中的项目中的子项目
- r - 如何从 grid.table 窗口中删除空白边距?
- azure - Azure 自动化 DSC 是否尊重 Service Fabric 更新域?
- java - 如何对字符串列表进行排序,其中首先出现的字符串是 startWith 然后是 endWith
- sage - 为什么我在 sage 中将 V 表示转换为 H 表示时获得了大量的数字?
- ios - Xcode 9.3 构建上传错误:为提供程序创建 MZContentProviderUpload 时发生异常。(1004)
- eslint - vue-cli eslint 命令行命令显示规则
- android - 在 Android 9.0(Pie) 中限制屏幕捕获/快照的方式是否有任何变化?
- python - Python3 , Numpy -- 矩阵元素的矩阵
- sqlite - SQLite:ON DELETE CASCADE 无法正常工作