line-search: Choice of the Step Size in the Scoring Algorithm

Description Usage Arguments Details Value References See Also

Description

These functions are used by the scoring optimization algorithms in order to choose the step size.

Usage

1
2
3
Brent.fmin(a = 0, b, fcn, tol = .Machine$double.eps^0.25, ...)
linesearch(b, fcn, grd, ftol = 0.0001, gtol = 0.9, ...)
step.maxsize(x, xlo, xup, pd, cap = 1)

Arguments

a

a numeric, lower end point of the interval where a line search procedure will search for the optimum step size. It should be zero or a positive value.

b

a numeric, upper end point of the searching interval.

fcn

a function to be optimized with respect to the step size.

tol

the tolerance for convergence of the line search procedure.

grd

a function returning the gradient of fcn.

ftol

a numeric, tolerance of the Wolfe condition related to the value of the function.

gtol

a numeric, tolerance of the Wolfe condition related to the gradient.

x

a numeric containing the current value of the parameters.

xlo

a numeric, lower bounds of the parameters of the model.

xup

a numeric, upper bounds of the parameters of the model.

pd

a numeric, direction vector chosen by the scoring algorithm.

cap

the maximum step size allowed, the default is 1.

...

arguments to be passed to the objective function or the gradient.

Details

These functions are intended to be called by other functions, not to be used directly by the user. For details about how fcn and grd should be defined see the source code of maxlik.fd.scoring and maxlik.td.scoring.

The default line search procedure used by the scoring algorithms is the univariate optimization function optimize from package stats. The functions linesearch and Brent.fmin are used for debugging, didactic and experimental purposes. They provide useful information when testing the scoring algorithm and allowed easy tune of some parameters of the line search procedure. This kind of information and options are not available for example in optim from package stats.

Brent.fmin is a version ported directly from the R sources (procedure Brent_fmin in file ‘optimize.c’). linesearch is based on Nocedal and Wright (2006) chapter 3 and Pollock (1999) Chapter 12. It can be used to test the effect and role of the Wolfe conditions.

The function step.maxsize is not a line search procedure. Given the direction vector chosen by the scoring algorithm, this function returns the upper end of the interval where the line search procedure will search for the optimum step size. It ensures that for any step size inside the interval from 0 to the returned value the updated parameter values abide to the lower and upper bounds. This approach is also used by A. Clausen in his implementation of the BFGS algorithm. The use of this function is a simple alternative to reparameterizations of the model and to the idea implemented in the L-BFGS-B algorithm in order to deal with this kind of constraints.

Value

Brent.fmin and linesearch return a list containing:

vx

a vector containing the optimal value at each iteration during the bracketing.

minimum

the optimal value found in the last iteration.

fx

the value of the function for the optimal step size.

iter

number of iterations employed by the procedure.

counts

number of calls to the objective function. For linesearch it is a two-element vector where the second records the number of calls made to the gradient.

step.maxsize returns a numeric containing the highest possible that is compatible with the arguments passed to the function (direction vector and bounds).

References

Brent, R. (1973) Algorithms for Minimization without Derivatives. Prentice-Hall.

Clausen, A. R code for the BFGS algorithm. http://economics.sas.upenn.edu/~clausen/computing/optim.php.

Nocedal, J. and Wright, J. W. (2006). Numerical Optimization. Springer-Verlag.

Pollock, D.S.G. (1999). A Handbook of Time-Series Analysis Signal Processing and Dynamics. Academic Press.

See Also

maxlik.fd.scoring, maxlik.td.scoring.


stsm documentation built on May 2, 2019, 7:39 a.m.