Description Usage Arguments Details Value References See Also Examples
This function evaluates a barrier term to be added to the log-likelihood function in order to penalize for parameter values close to the boundaries.
1 2 | barrier.eval(model, type = c("1", "2"), mu = 0.01,
gradient = FALSE, hessian = FALSE)
|
model |
object of class |
type |
a character indicating the type of barrier term. |
mu |
the barrier multiplier. A positive value. |
gradient |
logical. If |
hessian |
logical. If |
A barrier term can be defined in order to penalize against
parameter values close to the boundaries defined in model@lower
and model@upper
. The barrier term is added to the
negative of the log-likelihood function, which is then given by:
-logLik + μ ∑_i q_i(x).
μ is a positive barrier multiplier, the larger it is the stronger the barrier is and, hence, the search is done farther from the boundaries (Rardin, 1998 Fig. 14.8); q_i(x) are the barrier functions that are defined in such a way that the barrier term grows to infinity as the parameters of the model approach to the boundaries. Two types of barrier functions are considered:
type = "1"
:-log(par[i] - bound[i]), for lower bound constraints.
type = "1"
:-log(bound[i] - par[i]), for upper bound constraints.
type = "2"
:1/(par[i] - bound[i]), for lower bound constraints.
type = "2"
:1/(bound[i] - par[i]), for upper bound constraints.
A list containing the barrier term evaluated for the lower and upper bound
constraints, bl
and bu
, respectively, and the first and second
order derivatives of the barrier term, dl1
, du1
,
dl2
, du2
.
Rardin, R.L. (1998). Section 14.5. Optimization in Operations Research. Prentice Hall.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # define local level plus seasonal model for a simulated time series
# and evaluate the barrier term for some parameter values
# the barrier term in the second model is higher since the variances
# are closer to the lower bounds (zero)
data("llmseas")
pars <- c("var1" = 30, "var2" = 1, "var3" = 10)
m1 <- stsm.model(model = "llm+seas", y = llmseas, pars = pars)
bar1 <- barrier.eval(m1, type = "2", mu = 3)
bar1$barrier
pars <- c("var1" = 0.3, "var2" = 0.01, "var3" = 0.1)
m2 <- stsm.model(model = "llm+seas", y = llmseas, pars = pars)
bar2 <- barrier.eval(m2, type = "2", mu = 3)
bar2$barrier
# the barrier term is added to the negative of the likelihood function
# that will be the objective function to be minimized,
# value of minus log-likelihood without barrier
mloglik.fd(model = m2)
# adding a barrier term
mloglik.fd(model = m2) + bar2$barrier
mloglik.fd(model = m2, barrier = list(type = "2", mu = 3))
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.