In this guided tour I will explain how to conduct user-defined maximum likelihood analysis, on the basis of the data and model in
During the period of 1980-1985, the National Institute of Justice sponsored a controlled experiment to evaluate the impact of reemployment programs for recent released prisoners. Three well established programs were chosen, in Boston, San Diego and Chicago, to participate in the Employment Services for Ex-Offenders Program, henceforth ESEO. A total of 2,045 prisoners who voluntarily accepted to participate were randomly assigned to either a treatment group (G=1) or a control group (G=0). Those in the first group received, besides the normal services (orientation, screening, evaluation, support services, job development seminar, and job search coaching), special services which consisted of an assignment to a follow-up specialist who provided support during the job search and the 180 days following job placement. The control group received only normal services. The inclusion of special services was a major response to the increasing belief that some past employment programs had failed because ex-inmates lost contact with their original programs.
The dependent variables involved are:
The covariates are
The number of observations is 503.
The model involved and its EasyReg code is explained in ML.PDF. Open "Menu > User-defined nonlinear models > Maximum likelihood", and select the variables in the above order. Then the first relevant EasyReg window is
Click "Continue":
This is the list of initial variables. EasyReg has automatically added the constant 1 to the list.
In maximum likelihood, there is no sharp distinction between dependent variables and covariates. Therefore, all the variables are labeled by Z(.).
Now build-up the EasyReg code according to the steps in ML.PDF, similar to the coding of a nonlinear regression model. The number of code lines, including the initial variables, is 75, and therefore it takes too much space and efforts to explain every step in detail. The EasyReg code can be viewed here.
It is advisable to store the code in a template. Thus, click "Store". Then the model will be stored in template TEMPLATE_ML.001 in the EASYREG.DAT folder.
Click "Model is O.K.".
You need to indicate the lower and upper bounds of the parameters. The bounds for b(1) are specified above, and for the other parameters below:
Click "Bounds O.K.".
You get this window because the model involves integrals that have to be computed numerically. To speed up the computation, I have in first instance reduced the number of grid point to 100:
Thus, choose m = 100.
The initially startvalues have been drawn randomly. However, here I will follow the same procedure as in Bierens and Carvalho (2007) and use startvalues based on preliminary estimation results, namely
Click "Start". I have restarting the simplex iteration until the parameters did not change anymore (which took about half an hour).
However, this may not be the optimal solution, because the computation of the integrals was done with only 100 grid points. Therefore, I will use this solutions as the new start values. Also, we can now narrow down the parameter bounds. Thus, copy the solution, and click "Redo model/bounds". Then TEMPLATE_ML.001 will be loaded, and EasyReg will ask for the parameter bounds. We can now choose these bounds much narrower. For example, choose:
and
Click "Bounds O.K."
Now choose the default m = 500.
Paste the previous solution in the start values box, and click "Start".
At this point I have accepted the solution. Click "Done".
Click "Continue". Then the estimation results appear:
These results can be translated in more readable form as:
These results differ slightly from the results in Bierens and Carvalho (2007). The reason is that the results in the latter paper were obtained by running the computer overnight, using the "Auto restart until manual interruption" option. Indeed, the log-likelihood value in the latter case is slightly higher than in this guided tour.
The output of the last iteration run can be viewed here.