fit_par_lag | R Documentation |
hhh4_lag
model using profile likelihoodWrapper around hhh4_lag
to allow for profile likelihood estimation of the scalar parameter
governing the lag structure. hhh4_lag
can fit models with fixed lag decay parameter; fit_par_lag
loops
around it and tries a set of possible parameters provided in the argument range_par
. NOTE: this will
soon be replaced by profile_par_lag
which does the same, but using optim..., method = "Brent", ...)
.
fit_par_lag(
stsObj,
control,
check.analyticals = FALSE,
range_par,
use_update = TRUE
)
range_par |
a vector of values to try for the |
use_update |
should results from previous values in range_par be used as starting value for next iteration (via |
In this modified version of surveillance::hhh4
, distributed lags can be specified by
additional elements control
argument:
funct_lag
Function to compute the lag weights u_q
(see details) depending on a scalar
parameter par_lag
. The function has to take the
following arguments:
par_lag
A scalar parameter to steer u_q
. It should be specified in a way which allows it to
take any value in the real numbers
min_lag,max_lag
Minimum and maximum lags; e.g. min_lag = 3, max_lag = 6
will assign all weights to lags 3 through 6.
Usually min_lag
is set to 1, higher values can be useful for direct forecasting at higher horizons.
max_lag
defaults to 5, which is often reasonable for weekly data, but should likely be increased when using daily data.
min_lag, max_lag
Specification of the arguments passed to funct_lag to compute the distributed lags. Unlike in
hhh4_lag
, par_lag
is not to be specified as it is estimated from the data.
Important: the first element of the subset
argument in control
needs to be larger than
max_lag
(as for the first max_lag
observations the fitted values canot be computed)
Unlike in hhh4_lag
the par_lag argument for funct_lag
is not specified directly
by the user; instead the model is re-fit for each parameter value provided in range_par
.
#' @paramstsObj,control,check.analyticals As in surveillance::hhh4
, but control
allows for some additional elements in order to specify a distributed lag structure:
funct_lag
Function to compute the lag weights u_q
(see details) depending on a scalar
parameter par_lag
. The function has to take the
following arguments:
par_lag
A scalar parameter to steer u_q
. It should be specified in a way which allows it to
take any value in the real numbers
min_lag,max_lag
Minimum and maximum lags; e.g. min_lag = 3, max_lag = 6
will assign all weights to lags 3 through 6.
Usually min_lag
is set to 1, higher values can be useful for direct forecasting at higher horizons.
min_lag, max_lag
Specification of the arguments passed to funct_lag to compute the distributed lags. Unlike in
hhh4_lag
, par_lag
is not to be specified as it is estimated from the data.
A list including the best model among all fitted ones (best_mod
) and a vector of the AIC values obtained for the different
values provided in range_par
(AICs
)
hhh4_lag
for fitting models with fixed par_lag
; profile_par_lag
for optimization using optim
rather than avector range_par
of potential values.
## a simple univariate example:
data("salmonella.agona")
## convert old "disProg" to new "sts" data class
salmonella <- disProg2sts(salmonella.agona)
# specify and fit model: fixed geometric lag structure
control_salmonella <- list(end = list(f = addSeason2formula(~ 1)),
ar = list(f = addSeason2formula(~ 1)),
family = "NegBinM", subset = 6:312)
# get a reasonable range of values for par_lag. par_lag is logit(p) in teh
# geometric lag function
grid_p <- seq(from = 0.01, to = 0.99, by = 0.02)
grid_par_lag <- log(grid_p/(1 - grid_p))
fit_salmonella <- fit_par_lag(salmonella, control_salmonella, range_par = grid_par_lag)
summary(fit_salmonella$best_mod)
plot(fit_salmonella$AICs, xlab = "p", ylab = "AIC")
# 0.56 on first lag
#
# re-fit with Poisson lags:
control_salmonella2 <- control_salmonella
control_salmonella2$funct_lag = poisson_lag
grid_p2 <- seq(from = 0.01, to = 2, by = 0.02)
grid_par_lag2 <- log(grid_p2)
fit_salmonella2 <- fit_par_lag(salmonella, control_salmonella2, range_par = grid_par_lag2)
summary(fit_salmonella2$best_mod)
# leads to somewhat different decay and very slightly better AIC
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.