如何预测具有分布式滞后的时间序列回归模型(使用 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”。我会在下个版本修复这个问题。