CML) is a set of procedures written in the GAUSS programming language (Schoenberg, 1995) for the estimation of the parameters of models via the maximum likelihood method with general constraints on the parameters
CML solves the general weighted maximum likelihood problem
where N is the number of observations, is a weight.
is the
probability of
given
, a vector of parameters,
subject to the linear constraints,
the nonlinear constraints
and bounds
and
are functions provided by the user and
must be differentiable at least once with respect to
.
CML finds values for the parameters in such that
L is maximized using the Sequential Quadratic Programming
method. In this method the parameters are updated in a series of
iterations beginning with a vector of starting values.
Let
be the current parameter values. Then the succeeding values are
where is a
direction vector, and
a scalar
step length.
Define
and the Jacobians
For the purposes of this exposition, and without loss of generality, we may assume that the linear constraints and bounds have been incorporated into G and H.
The direction, is the solution to the quadratic program
This solution requires that be positive definite
(In practice, CML incorporates a slight modification in the quadratic
programming solution which relaxes this requirement to non-negative definite).
In practice, linear constraints are specified separately from the G and H because their Jacobians are known and easy to compute. And the bounds are more easily handled separately from the linear inequality constraints.
The SQP method requires the calculation of a Hessian, ,
and various gradients and Jacobians,
,
, and
.
CML computes these numerically if procedures to compute them
are not supplied.
Descent Algorithms. The Hessian may be very expensive to compute at every iteration, and poor start values may produce an ill-conditioned Hessian. For these reasons alternative algorithms are provided in CML for updating the Hessian rather than computing it directly at each iteration. These algorithms, as well as step length methods, may be modified during the execution of CML.
The most reliable method given a good starting point is the Gauss-Newton method where the Hessian is directly computed. This method is time-consuming, however, especially if it must be computed numerically which is most often the case. CML also offers two quasi-Newton methods, the BFGS (Broyden, Fletcher, Goldfarb, and Shanno), and the DFP (Davidon, Fletcher, and Powell). These latter methods require far less computation and are generally more useful when the starting points is poor.
In practice a combination of the two methods is the most successful.
Line Search Methods. Define the merit function
where is the j-th row of G,
is the
-th row of H,
is the vector of Lagrangean coefficients of the equality constraints, and
the Lagrangean coefficients of the inequality constraints.
The line search finds a value of
that minimizes or
decreases
where is a constant. Given
and d, this is
function of a single variable
.
Line search methods attempt to find a value for
that
decreases m. Several methods are available in CML,
STEPBT, a polynomial fitting method, BRENT and BHHHSTEP, golden section
methods, and HALF, a step-halving method.