Define optimisers and their control parameters
mltoptim(auglag = list(maxtry = 5, kkt2.check = FALSE),
spg = list(maxit = 10000, quiet = TRUE, checkGrad = FALSE),
nloptr = list(algorithm = "NLOPT_LD_MMA", xtol_rel = 1.0e-8, maxeval = 1000L),
trace = FALSE)
A list of functions with arguments theta
(starting values), f
(log-likelihood),
g
(scores), ui
and ci
(linear inequality constraints).
Adding further such functions is a way to add more optimisers to mlt
.
The first one in this list converging defines the resulting model.
A list with control parameters for the auglag
optimiser.
maxtry
is the number of times the algorithm is started on random starting
values in case it failed with the precomputed ones.
A list with control parameters for the BBoptim
optimiser (calling
spg
internally).
A list with control parameters for the nloptr
family of optimisers.
A logical switching trace reports by the optimisers off.
This function sets-up functions to be called in mlt
internally.
### set-up linear transformation model for conditional
### distribution of dist given speed
dist <- numeric_var("dist", support = c(2.0, 100), bounds = c(0, Inf))
ctmm <- ctm(response = Bernstein_basis(dist, order = 4, ui = "increasing"),
shifting = ~ speed, data = cars)
### use auglag with kkt2.check = TRUE => the numerically determined
### hessian is returned as "optim_hessian" slot
op <- mltoptim(auglag = list(maxtry = 5, kkt2.check = TRUE))[1]
mltm <- mlt(ctmm, data = cars, scale = FALSE, optim = op)
### compare analytical and numerical hessian
all.equal(c(Hessian(mltm)), c(mltm$optim_hessian), tol = 1e-4)
Run the code above in your browser using DataLab