time-series - 如何在VARMAX模型中使用多前一步的外生变量
问题描述
我有一个多变量和多时间步长预测问题。基本上,我有一个预测的目标 y,作为时间序列。和几个外生变量x。它们也是时间序列数据。
我希望使用 4 天的延迟来预测 y 的未来值。所以基本上是这样的。请注意,我也希望使用 x(t) 数据进行预测。
y(t)=f(y(t-4), y(t-3), y(t-2), y(t_1), x(t-4), x(t-3), x(t-2), x(t-1), x(t))
但看起来 statsmodel 的VARMAX模型只考虑 x 的一个时间步长?
另外,当 x 可用时,我如何预测 y 的多步?我认为我应该将 x 视为外生变量。
解决方案
- 要使用 y 的 4 步滞后,p 阶应为 4,即
order = (4,0)
exog=
要使用外生变量 x 的 4 步滞后,您必须手动创建所有滞后外生变量并将它们作为一个数据框传递给 参数。
让 x 是一个包含所有外生变量的 pandas 数据框。
我们可以使用以下代码创建x_lag
将传递给exog=
参数的数据框:
x_list = []
for q in range(5):
x_lagged = x.shift(q).bfill()
x_list.append(x_lagged)
x_lag = pd.concat(x_list,axis=1)
最后,您适合并预测如下:
model = VARMAX(y, order=(4,0), exog=x_lag)
model_fit = model.fit()
# Suppose you have some later observations of the exogenous variables: x_lag_pred
# and you want to forecast 10 steps ahead.
model_fit.forecast(steps=10, exog=x_lag_pred.iloc[:10,:])
推荐阅读
- php - PHP Mysqli 使用密码()函数准备语句
- c# - Linq to SQL,其中两列必须从列表中匹配
- mysql - 在sql上写查询
- python - 运行 conda update --all 时调试 menuinst_win32
- excel - 关于使用多个匹配项的 Excel ifs 语句的问题
- vba - 显示“插入图片”对话框时,“所有图片”文件名过滤器不包含 .svg 文件扩展名
- c - strtok 没有正确拆分字符串?
- java - 如何实现只接受可比较对象的列表类
- flutter - Flutter:Column 子级的背景颜色
- azure - 在 Azure 中,如何配置拉取请求,以便某些任务必须成功运行才能合并 PR?