You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VARMAX模型中使用多阶滞后外生变量并实现多步预测

问题解答

外生变量处理方式

你提到的x序列完全可以作为外生变量传入VARMAX模型,statsmodels的VARMAX实现原生支持这类已知外生变量的接入,和你的需求完全匹配。

关于“仅支持单步x数据”的误解

你观察到的现象属于参数使用的误解,而非模型能力限制:

  • 训练阶段传入exog参数的x序列需要和内生变量y的时间步完全对齐,模型会根据你设定的滞后阶数自动调取对应时间步的x数据,无需手动做滞后拼接
  • 你公式中用到的x(t)当期值属于合法输入,只要你能提前拿到对应时间步的x值,模型原生支持纳入当期外生变量计算

多步预测实现步骤

1. 模型训练参数配置

你需要预测y(t)用到y滞后4期、x滞后0到4期,对应参数设置如下:

import statsmodels.api as sm
# 假设y是形状为(T, 1)的目标序列,x是形状为(T, k)的外生变量序列,k为x的变量个数
# order=(p, q),p设为4对应y的4阶滞后,q为MA阶数,无残差自相关可设为0即退化为VARX模型
model = sm.tsa.VARMAX(endog=y, exog=x, order=(4, 0), exog_order=[4])
res = model.fit()

注:exog_order=[4]指定外生变量使用滞后0到4期,刚好匹配你公式的输入要求。

2. 多步预测调用

你已提前获取后续的x数据,直接在预测时传入对应步长的x序列即可:

# 假设要预测未来n步,x_future是形状为(n, k)的未来n步的x数据
forecast_res = res.get_forecast(steps=n, exog=x_future)
# 获取预测均值
y_pred = forecast_res.predicted_mean
# 获取置信区间
y_ci = forecast_res.conf_int()

只要x_future的长度和你要预测的步数n一致,即可实现任意步长的多步预测。

注意:训练和预测阶段的外生变量都需要提前做和训练集一致的标准化/归一化处理,避免特征分布偏移导致预测误差过大。

内容的提问来源于stack exchange,提问作者Xudong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 21:12:01