我正在用R开发一个向量自回归(VAR)时间序列模型。模型规范包括一个称为“endog”的内生变量的矩阵(xts
类)和一个矩阵(也是{{1} } class)被称为“exog”的外生变量。数据是季节性的,我想要预测季节性,所以我也指定“季节= 12”,因为数据是每月。所以执行var模型的R代码是:
xts
此代码运行顺利。但现在我想预测未来24个时期的数据。所以我的预测代码是:
fit <- var(endog, p = 1, season = 12, type = 'const', exogen = exog)
其中“exog_future”是与exog相同的变量的矩阵(也是predictions <- predict(fit, exo.fcst = exog_future, n.ahead = 24, ci = 0.95)
类),但包括将要预测的24个未来期间。 (我尝试了两个版本:一个是历史数据exog加上接下来24个时期的新数据,另一个版本只包括24个时期。)
我收到以下错误消息:
predict.varest中的错误(VAR(endog,p = 1,season = 12,type =“const”,: 没有提供dumvar的矩阵,但是对象varest包含外生变量。
显然,除了外生变量外,R还需要一个虚拟变量矩阵。除非R将“season = 12”规范视为虚拟变量矩阵,否则模型规范不包含虚拟变量,那么为什么它现在需要虚拟变量呢?如果它确实将季节性规范视为虚拟变量,那么我将“season = 12”添加到我的预测代码中。我收到了同样的错误消息。
我理解如果模型包含外生变量,那么我必须在预测代码中提供这些变量的未来值。我也明白,如果我提供虚拟变量,那么预测将需要这些变量的未来值,原因基本相同。它们是外生变量,只是二元变量。
因此,当模型规范不包含虚拟变量时,R期望我为“dumvar”提供什么?
答案 0 :(得分:0)
事实上,当您在培训中具有外生价值时,您必须在函数exog_future
中包含未来的外生值dumvar
作为predict()
的参数,在您的情况下,您应该设置dumvar=exog_future
以便
predictions <- predict(fit, dumvar = exog_future, n.ahead = 24, ci = 0.95)
在R文档http://127.0.0.1:26594/library/vars/html/predict.html中,它表示函数predict()
的主要参数是object
,n.ahead
,ci
和dumvar
,为了避免混淆,你可以忽略参数exo.fcst
。这很令人困惑,因为似乎exo.fcst
是exog_future
的正确参数,但在实践中,您应该始终使用dumvar
,而不是exo.fcst
。