是否可以使用 FB Prophet 进行多变量多步预测?

新手上路,请多包涵

我正在研究多变量(100 多个变量)多步(t1 到 t30)预测问题,其中时间序列频率为每 1 分钟一次。该问题需要预测 100 多个变量中的一个作为目标。我很想知道是否可以使用 FB Prophet 的 Python API 来做到这一点。我能够仅使用目标变量和日期时间变量以单变量方式完成此操作。任何帮助和指导表示赞赏。如果问题需要任何进一步的输入或澄清,请告诉我。

原文由 Abhishek Arora 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
1 个回答

您可以使用 add_regressor 方法 在 Prophet 中添加其他变量。

例如,如果我们要预测变量 y 还使用附加变量 add1add2 的值。

让我们首先创建一个示例 df:

 import pandas as pd
df = pd.DataFrame(pd.date_range(start="2019-09-01", end="2019-09-30", freq='D', name='ds'))
df["y"] = range(1,31)
df["add1"] = range(101,131)
df["add2"] = range(201,231)
df.head()
            ds  y   add1 add2
0   2019-09-01  1   101 201
1   2019-09-02  2   102 202
2   2019-09-03  3   103 203
3   2019-09-04  4   104 204
4   2019-09-05  5   105 205

并拆分训练和测试:

 df_train = df.loc[df["ds"]<"2019-09-21"]
df_test  = df.loc[df["ds"]>="2019-09-21"]

在训练预测器之前,我们可以添加使用附加变量的回归器。这里 add_regressor 的参数是训练df中附加变量的列名。

 from fbprophet import Prophet
m = Prophet()
m.add_regressor('add1')
m.add_regressor('add2')
m.fit(df_train)

然后 predict 方法将使用附加变量进行预测:

 forecast = m.predict(df_test.drop(columns="y"))

请注意, 附加变量应该具有您未来(测试)数据的值。 If you don’t have them, you could start by predicting add1 and add2 with univariate timeseries, and then predict y with add_regressor 以及预测的 add1add2 作为附加变量的未来值。

从文档中我了解到 y 对于 t+1 的预测将仅使用 add1add2 的值,而不是它们的值+在 t, t-1, …, tn 就像它对 y 所做的那样。如果这对您很重要,您可以使用滞后创建新的附加变量。

另请参阅 此笔记本,其中包含使用天气因素作为自行车使用预测中的额外回归变量的示例。

原文由 queise 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题