Я пытаюсь спрогнозировать временной ряд с распределенной задержкой (используя 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". Я исправлю эту проблему в следующей версии.
Маловероятно, что вы делаете что-то не так. Что-то не так с кодом. Я знаю людей/человека, написавших это, очевидно. злой умный, но мы все люди. Например, есть код, который ищет термин y. Они использовали
grepl
и искалиy
. Что, если в имени вашей переменной есть букваy
? (Например,dummy
?) Также похоже, что они могли изменить способ составления прогноза для типа 3. Посмотрите здесь.