如何在 VARMAX 模型中使用多步外生变量
How to use multi previous step of exogenous variables in VARMAX model
我有一个多变量和多时间步长的预测问题。基本上,我有一个预测目标 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)
- 要使用外生变量 x 的 4 步滞后,您必须创建
手动将所有滞后的外生变量传递给
exog=
参数作为一个数据框。
令 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,:])
我有一个多变量和多时间步长的预测问题。基本上,我有一个预测目标 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)
- 要使用外生变量 x 的 4 步滞后,您必须创建
手动将所有滞后的外生变量传递给
exog=
参数作为一个数据框。
令 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,:])