我正在处理一个多元(100+变量)多步骤(t1到t30)的预测问题,时间序列频率为每1分钟。这个问题要求预测100+个变量中的一个作为目标。我想知道是否可以使用FB Prophet的Python API来解决这个问题。我已经能够以单变量方式使用目标变量和日期时间变量。非常感谢任何帮助和指导。如有进一步的输入或澄清需要,请告知。
我正在处理一个多元(100+变量)多步骤(t1到t30)的预测问题,时间序列频率为每1分钟。这个问题要求预测100+个变量中的一个作为目标。我想知道是否可以使用FB Prophet的Python API来解决这个问题。我已经能够以单变量方式使用目标变量和日期时间变量。非常感谢任何帮助和指导。如有进一步的输入或澄清需要,请告知。
你可以使用add_regressor方法在Prophet中添加额外的变量。
例如,如果我们想要使用附加变量add1
和add2
的值来预测变量y
。
让我们先创建一个示例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
的参数是训练数据框中附加变量的列名。{{}}from fbprophet import Prophet
m = Prophet()
m.add_regressor('add1')
m.add_regressor('add2')
m.fit(df_train)
预测方法将使用额外的变量进行预测:
forecast = m.predict(df_test.drop(columns="y"))
您可以使用 timemachines 包将 prophet 包装成函数形式的一行代码来完成此操作。请参见 prophet skaters 以了解详细信息。以下是一个使用示例:
from timemachines.skatertools.data import hospital_with_exog
from timemachines.skatertools.visualization.priorplot import prior_plot
import matplotlib.pyplot as plt
k = 11
y, a = hospital_with_exog(k=k, n=450, offset=True)
f = fbprophet_exogenous
err2 = prior_plot(f=f, k=k, y=y, n=450, n_plot=50)
print(err2)
plt.show()
可能有点晚了,但如果你在2019年阅读这篇文章,你可以使用LSTM和Keras实现多元时间序列。
VAR 是一种纯经济计量模型,但在阅读了大量关于预测的文献后,我发现 VAR 也无法捕捉趋势。所以我们的预测不是很准确,但 VAR 仍然是多变量分析的重要模型。我认为 Prophet 并不适用于多元变量,而应该使用像 RF、XGBOOST 和 NNET 等 ML 模型……但请记住,如果你想捕捉趋势,一定要确保哪种模型更好。否则就选择深度学习。
原问题的答案是肯定的!
这里有一个链接,指向具体的神经预言文档,并提供了多个使用多元输入的示例。对于神经预言,这些被称为“滞后回归器”。
https://neuralprophet.com/html/lagged_covariates_energy_ercot.html
是的,我们现在可以应用多元时间序列预测了,以下是解决方案。 https://medium.com/@bobrupakroy/yes-our-favorite-fbprophet-is-back-with-multivariate-forecasting-785fbe412731