# The Log-likelihood Function#

CMLMT is a set of procedures for estimating the parameters of models via the maximum likelihood method with general constraints on the parameters, along with an additional set of procedures for statistical inference.

CMLMT solves the general weighted maximum likelihood problem

$L = \sum^N_{i=1} log P(Y_i;\theta)^{\omega_i}$

where $$N$$ is the number of observations, $$omega_i$$ is a weight, $$P(Y_i, \theta)$$ is the probability of $$Y_i$$ given $$\theta$$, a vector of parameters, subject to the linear constraints

$A(\theta) = B$
$C(\theta) \geq D$

the nonlinear constraints

$G(\theta) = 0$
$H(\theta) \geq 0$

and bounds,

$\theta_L \leq \theta \leq \theta_u$

$$G(\theta)$$ and $$H(\theta)$$ are functions provided by the user and must be differentiable at least once with respect to the parameters.

The procedure cmlmt() finds values for the parameters in $$\theta$$ such that $$L$$ is maximized. In fact cmlmt() minimizes $$-L$$. It is important to note, however, that the user must specify the log-probability to be maximized. CMLMT transforms the function into the form to be minimized.

CMLMT has been designed to make the specification of the function and the handling of the data convenient. The user supplies a procedure that computes $$log P(Y_i; \theta)$$ i.e., the log-likelihood, given the parameters in $$\theta$$, for either an individual observation or set of observations (i.e., it must return either the log-likelihood for an individual observation or a vector of log-likelihoods for a matrix of observations). CMLMT uses this procedure to construct the function to be minimized.