MaxlikMT uses structures for input, control, and output.
Structures add flexibility and help organize information. MaxlikMT uses the DS and PV structures that are available in the GAUSS Run-Time Library.
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
MaxlikMT inside of a call to
MaxlikMT ,
QNewtonmt,
QProgmt, or
EQsolvemt.