如何预测具有分布式滞后的时间序列回归模型(使用 dLagM)?
How to forecast a Time Series Regression Models with Distributed Lag (using dLagM)?
我正在尝试预测具有分布式滞后的时间序列(使用 dLagM
)。我想我可以正确地拟合模型,它显示了所有预期的结果。但我无法预测任何价值。这个错误,至少对我来说,是不透明的。
我猜是我的虚拟变量和它的滞后有关,但我自己弄不明白,所以在搁浅几天后我打电话求助!
这是一个可重现的例子。它使用了之前工作提出的虚拟变量和滞后变量。
# data
df <- dplyr::tribble(
~y , ~x, ~dummy1, ~dummy2,
207.414 , 59.717 , 0 , 0 ,
177.416 , 59.576 , 0 , 0 ,
245.526 , 63.288 , 0 , 0 ,
276.641 , 61.801 , 0 , 0 ,
371.803 , 58.529 , 0 , 0 ,
519.777 , 56.790 , 1 , 0 ,
430.641 , 54.012 , 0 , 1 ,
251.612 , 57.151 , 0 , 0 ,
269.787 , 57.480 , 0 , 0 ,
230.034 , 60.042 , 0 , 0 ,
202.376 , 60.280 , 0 , 0 ,
253.497 , 61.323 , 0 , 0 ,
239.166 , 61.235 , 0 , 0 ,
272.894 , 60.206 , 0 , 0 ,
293.951 , 62.020 , 0 , 0 ,
278.437 , 61.393 , 0 , 0 ,
424.190 , 58.876 , 0 , 0 ,
652.256 , 56.978 , 1 , 0 ,
536.587 , 56.381 , 0 , 1 ,
263.116 , 61.193 , 0 , 0 ,
289.288 , 60.123 , 0 , 0 ,
227.690 , 60.957 , 0 , 0 ,
234.306 , 62.563 , 0 , 0 ,
293.728 , 61.540 , 0 , 0 )
# new auxiliary data to be used as input to forecast y for 12 periods
newdata <- dplyr::tribble(
~x, ~dummy1, ~dummy2,
61.903 , 0 , 0 ,
60.594 , 0 , 0 ,
63.358 , 0 , 0 ,
65.178 , 0 , 0 ,
64.275 , 0 , 0 ,
59.872 , 1 , 0 ,
59.273 , 0 , 1 ,
59.665 , 0 , 0 ,
58.643 , 0 , 0 ,
63.354 , 0 , 0 ,
65.743 , 0 , 0 ,
65.158 , 0 , 0 )
# Model ARDL(1,4)
model = dLagM::ardlDlm(formula = y ~ x + dummy1 + dummy2 ,
data = df,
p = 1 , # lag; given by previous analysis
q = 4, # order of autoregressive process; given by previous analysis
remove = list(p = list(dummy1 = c(1:1),
dummy2 = c(1:1)))
)
# transposed (for dLagM::forecast)
transposed_newdata <- t(newdata)
# forecasting
fLeves <- dLagM::forecast(model,
x = transposed_newdata,
h = nrow(newdata),
interval = TRUE,
level = 0.95 ,
nSim = 100)
# Error
# Error in if (n == 0) return(v) : missing value where TRUE/FALSE needed
非常感谢任何帮助!
感谢您发帖。与变量名称相关的代码中存在错误。我在 dLagM 1.1.8 的新版本中修复了这个问题。另外,请注意您需要避免使用 1.1.8 版的嵌套变量名。例如,如果您将“x1”作为变量,请避免使用其中包含“x1”的名称,例如“x11”。我会在下个版本修复这个问题。
我正在尝试预测具有分布式滞后的时间序列(使用 dLagM
)。我想我可以正确地拟合模型,它显示了所有预期的结果。但我无法预测任何价值。这个错误,至少对我来说,是不透明的。
我猜是我的虚拟变量和它的滞后有关,但我自己弄不明白,所以在搁浅几天后我打电话求助!
这是一个可重现的例子。它使用了之前工作提出的虚拟变量和滞后变量。
# data
df <- dplyr::tribble(
~y , ~x, ~dummy1, ~dummy2,
207.414 , 59.717 , 0 , 0 ,
177.416 , 59.576 , 0 , 0 ,
245.526 , 63.288 , 0 , 0 ,
276.641 , 61.801 , 0 , 0 ,
371.803 , 58.529 , 0 , 0 ,
519.777 , 56.790 , 1 , 0 ,
430.641 , 54.012 , 0 , 1 ,
251.612 , 57.151 , 0 , 0 ,
269.787 , 57.480 , 0 , 0 ,
230.034 , 60.042 , 0 , 0 ,
202.376 , 60.280 , 0 , 0 ,
253.497 , 61.323 , 0 , 0 ,
239.166 , 61.235 , 0 , 0 ,
272.894 , 60.206 , 0 , 0 ,
293.951 , 62.020 , 0 , 0 ,
278.437 , 61.393 , 0 , 0 ,
424.190 , 58.876 , 0 , 0 ,
652.256 , 56.978 , 1 , 0 ,
536.587 , 56.381 , 0 , 1 ,
263.116 , 61.193 , 0 , 0 ,
289.288 , 60.123 , 0 , 0 ,
227.690 , 60.957 , 0 , 0 ,
234.306 , 62.563 , 0 , 0 ,
293.728 , 61.540 , 0 , 0 )
# new auxiliary data to be used as input to forecast y for 12 periods
newdata <- dplyr::tribble(
~x, ~dummy1, ~dummy2,
61.903 , 0 , 0 ,
60.594 , 0 , 0 ,
63.358 , 0 , 0 ,
65.178 , 0 , 0 ,
64.275 , 0 , 0 ,
59.872 , 1 , 0 ,
59.273 , 0 , 1 ,
59.665 , 0 , 0 ,
58.643 , 0 , 0 ,
63.354 , 0 , 0 ,
65.743 , 0 , 0 ,
65.158 , 0 , 0 )
# Model ARDL(1,4)
model = dLagM::ardlDlm(formula = y ~ x + dummy1 + dummy2 ,
data = df,
p = 1 , # lag; given by previous analysis
q = 4, # order of autoregressive process; given by previous analysis
remove = list(p = list(dummy1 = c(1:1),
dummy2 = c(1:1)))
)
# transposed (for dLagM::forecast)
transposed_newdata <- t(newdata)
# forecasting
fLeves <- dLagM::forecast(model,
x = transposed_newdata,
h = nrow(newdata),
interval = TRUE,
level = 0.95 ,
nSim = 100)
# Error
# Error in if (n == 0) return(v) : missing value where TRUE/FALSE needed
非常感谢任何帮助!
感谢您发帖。与变量名称相关的代码中存在错误。我在 dLagM 1.1.8 的新版本中修复了这个问题。另外,请注意您需要避免使用 1.1.8 版的嵌套变量名。例如,如果您将“x1”作为变量,请避免使用其中包含“x1”的名称,例如“x11”。我会在下个版本修复这个问题。