You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am trying to estimate an ARDL(p,q). I have used the ARDL package for estimating such models in the past, but would like to use fable's scenario forecasting and bootstrapping tools. ARDL's are just linear models so, lacking a specific ARDL model I should be able to estimate using TSLM.
If I use TSLM I cannot use the order special from AR. While I can estimate a model using dplyr::lag, TSLM doesn't know this is a lag of the dependent variable and so cannot generate a dynamic forecast.
I can estimate any ARDL(p, 0) using AR, but that is only useful when the lag q on the exogenous regressor(s) is zero. The order() special cannot (as far as I know) create lags of an exogenous regressor.
A related issue occurs using scenario, where scenarios featuring lagged regressors created using lag are not recognised.
Is there a way around this without diving into fabletools and creating a new model class (and presumably, fable.ARDL)?
== Edit (28/3):
If one uses I() to wrap any lagged values, e.g. TSLM(y ~ I(lag(y)) + x + I(lag(x)) correctly estimates an ARDL(1,1). The forecast function can then correctly generate the lagged values of x, but then only generates static forecasts as it doesn't know that I(lag(y)) is a lagged dependent variable. However, it seems we can use the order() special from AR which allows us to get a dynamic forecast conditioned on the path(s) of the exogenous variable(s):
library(fable)
library(tsibble)
library(tidyverse)
set.seed(123)
df = tibble(
time = yearquarter(seq.Date(from = yq("1960-01"), to = yq("1986-04"), by = "quarter")),
y = as.double(UKgas),
x = cumprod(c(1, 1 + rnorm(length(y)-1, mean = 0.03, sd = 0.02)))
) %>%
as_tsibble(index = time)
train = filter(df, as.Date(time) <= yq("1980-01"))
test = filter(df, as.Date(time) > yq("1980-01")) %>%
select(-y)
fit <- train %>%
model(
ar = AR(y ~ order(1) + xreg(I(x)) + xreg(I(lag(x))))
)
forecast(fit, test) %>%
autoplot(train)
The text was updated successfully, but these errors were encountered:
I am trying to estimate an ARDL(p,q). I have used the
ARDL
package for estimating such models in the past, but would like to usefable
's scenario forecasting and bootstrapping tools. ARDL's are just linear models so, lacking a specific ARDL model I should be able to estimate usingTSLM
.If I use
TSLM
I cannot use theorder
special fromAR
. While I can estimate a model usingdplyr::lag
,TSLM
doesn't know this is a lag of the dependent variable and so cannot generate a dynamic forecast.I can estimate any ARDL(p, 0) using
AR
, but that is only useful when the lagq
on the exogenous regressor(s) is zero. Theorder()
special cannot (as far as I know) create lags of an exogenous regressor.A related issue occurs using
scenario
, where scenarios featuring lagged regressors created usinglag
are not recognised.Is there a way around this without diving into
fabletools
and creating a new model class (and presumably,fable.ARDL
)?== Edit (28/3):
If one uses
I()
to wrap any lagged values, e.g.TSLM(y ~ I(lag(y)) + x + I(lag(x))
correctly estimates an ARDL(1,1). The forecast function can then correctly generate the lagged values ofx
, but then only generates static forecasts as it doesn't know thatI(lag(y))
is a lagged dependent variable. However, it seems we can use theorder()
special fromAR
which allows us to get a dynamic forecast conditioned on the path(s) of the exogenous variable(s):The text was updated successfully, but these errors were encountered: