我试图预测一个带有分布式滞后的时间序列(使用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任何帮助都是非常感谢的!
发布于 2022-05-10 01:43:48
谢谢你发这篇文章。与变量名称相关的代码中有一个错误。我修正了新版本的dLagM 1.1.8中的问题。另外,请注意,您需要避免使用版本1.1.8的嵌套变量名。例如,如果您将"x1“作为变量,请避免使用其中包含"x1”的名称,例如"x11“。我将在下一个版本中解决这个问题。
https://stackoverflow.com/questions/72164350
复制相似问题