|
[ Home | GAUSS | GAUSS Engine | GAUSS Apps | 3rd Party Apps | Keywords Index ] Constrained Maximum Likelihood MT 2.0 Overview | New Features | Threading | Structures | Functions | CMLMT 2.0 is a set of procedures for the solution of the constrained maximum likelihood problem. The same procedure computing the log-likelihood or objective function will be used to compute analytical derivatives as well if they are being provided. Its return argument is a results structure with three members, a scalar, or Nx1 vector containing the log-likelihood (or objective), a 1xK vector, or NxK matrix of first derivatives, and a KxK matrix or NxKxK array of second derivatives (it needs to be an array if the log-likelihood is weighted). Of course the derivatives are optional, or even partially optional; i.e., you can compute a subset of the derivatives if you like and the remaining will be computed numerically. This procedure will have an additional argument which tells the function which to compute, the log-likelihood or objective, the first derivatives, or the second derivatives, or all three. This means that calculations in common won't have to be redone. Contrained Maximum Likelihood MT (CMLMT) is the best application for Maximum likelihood estimation both for models with contrained parameters and for models with unconstrained parameters. This is because CMLMT implements a trust region method. This method places a boundary on the direction taken with the parameters during a given iteration. It can add more iterations, but it prevents large deviations in this direction when the estimated Hessian is poorly determined, or when the starting point is poor. Bad strating point and/or bad generally helpful and often can mean the difference between a successful convergence and a failure to converge at all. CMLMT by default applies the trust region method to the problem wheter or not there are constrained parameters in the model. Platforms : Windows, LINUX, Solaris, and Mac. New Features
Threading in CMLMT If you have a multi-core processor you may take advantage of CMLMT's internally threaded functions. An important advantage of threading occurs in computing numerical derivatives. If the derivatives are computed numerically, threading will significantly decrease the time of computation. Example We ran a time trial of a covariance-structure model on a quad-core machine. As is the case for most real world problems, not all sections of the code are able to be run in parallel. Therefore, the theoretical limit for speed increase is much less than (single-threaded execution time)/(number of cores). Even so, the execution time of our program was cut dramatically: Single-threaded execution time: 18.52 minutes That is a nearly 300% speed increase! The new CMLMT uses the DS and PV structures that are available in the GAUSS Run-Time Library and used by Sqpsolvemt. The DS Structure The DS structure is completely flexible, allowing you to pass anything you can think of into your procedure. There is a member of the structure for every GAUSS data type.
struct DS {
scalar type; matrix dataMatrix; array dataArray; string dname; string array vnames; }; The PV Structure The PV structure revolutionizes how you pass the parameters into the procedure. No longer do you have to struggle to get the parameter vector into matrices for calculating the function and its derivatives, trying to remember, or figure out, which parameter is where in the vector. If your log-likelihood uses matrices or arrays,you can store them directly into the PV structure and remove them as matrices or arrays with the parameters already plugged into them. The PV structure can handle matrices and arrays in which some of their elements are fixed and some free. It remembers the fixed parameters and knows where to plug in the current values of the free parameters. It can also handle symmetric matrices in which parameters below the diagonal are repeated above the diagonal.
b0 - Mean paramters.
garch - GARCH parameters. arch - ARCH parameters. omega - Constant in variance equation. There is no longer any need to use global variables. Anything the procedure needs can be passed into it through the DS structure. And these new applications uses control structures rather than global variables. This means, in addition to thread safety, that it is straightforward to nest calls to CMLMT inside of a call to CMLMT, QNewtonmt, QProgmt, or EQsolvemt. Functions CMLMT: Computes estimates of parameters of a constrained maximum likelihood function. CMLMTBayes: Bayesian Inference using weighted maximum likelihood bootstrap. CMLMTBootstrap: Computes bootsrap estimates. CMLMTProfile: Computes profile t plots and likelihood profile traces for constrained maximum likelihood models. CMLMTProfileLimits: Computes confidence limits by inversion of the likelihood ratio statistic. CMLMTInverseWaldLimits: Computes limits by inversion of the Wald statistic. ChiBarSq: Computes the chi-bar-statistic and its probability for an hypothesis regarding parameters under constraints. CMLMTControlCreate: Creates a default instance of type CMLMTControl. CMLMTLagrangeCreate: Creates a default instance of type CMLMTLagrange. CMLMTResultsCreate: Creates a default instance of type CMLMTResultsCreate. ModelResultsCreate: Creates a default instance of type ModelResults. CMLMTPrt: Formats and prints the output form a call to cmlmt. Platform : Windows / Linux / Solaris / Mac |