我正在 R 中开发向量自回归 (VAR) 时间序列模型。模型规范包括一个称为“endog”的内生变量矩阵(xts
类)和一个称为“exog”的外生变量矩阵(也是xts
类)。数据是季节性的,我希望预测季节性,因此我还指定“season = 12”,因为数据是每月的。所以我执行 var 模型的 R 代码是:
fit <- var(endog, p = 1, season = 12, type = 'const', exogen = exog)
这段代码运行流畅。但现在我想预测未来 24 个时期的数据。所以我的预测代码是:
predictions <- predict(fit, exo.fcst = exog_future, n.ahead = 24, ci = 0.95)
其中“exog_future”是与 exog 中相同变量的矩阵(也是xts
类),但包括要预测的 24 个未来时期。(我尝试了两个版本:一个包含历史数据 exog 加上接下来 24 个时期的新数据,另一个版本只包含 24 个时期。)
我收到以下错误消息:
predict.varest(VAR(endog, p = 1, season = 12, type = "const", : 没有提供 dumvar 的矩阵,但对象 varest 包含外生变量。
显然,除了外生变量之外,R 还需要一个虚拟变量矩阵。除非 R 将“season = 12”规范视为虚拟变量矩阵,否则模型规范不包含虚拟变量,那么为什么它现在需要虚拟变量呢?如果它确实将季节性规范视为虚拟变量,那么我将“season = 12”添加到我的预测代码中。我收到了同样的错误信息。
我知道如果模型包含外生变量,那么我必须在预测代码中为这些变量提供未来值。我也明白,如果我提供了虚拟变量,那么出于基本相同的原因,该预测也需要这些变量的未来值。它们是外生变量,只是二元变量。
因此,当模型规范不包含虚拟变量时,R 期望我为“dumvar”提供什么?