`The problem here seems to be the lack of clarity in the econometric
``specification that you want to use.
`

`The way you describe your problem implies a two-stage model in which
``the second stage probit can be estimated using Stata's standard
``-probit- procedure. This method can be modified to deal with the
``case in which the second stage is actually maximising a concentrated
``likelihood function for given values of GAMMA and ALPHA with a first
``stage involving a grid search or iteration over GAMMA and ALPHA using
``the results of the second stage.
`

`Alternatively, you may have in mind a more general model in which you
``want to generate ML estimates of all of the coefficients in b[]. In
``that case, you need to write down the full likelihood function and
``write the appropriate code for -ml-.
`
Gordon Hughes
g.a.hughes@ed.ac.uk
=============

`Im modelling retirement decisions based on an option value framework
``(Gruber and Wise, 2002). Up until now I have constructed a
``microsimulation model calculating the option value for each
``individual in each year. To make it short, the option value is a
``forward-looking variable that summarizes the future options (with
``regard to retirement) of an individual at a certain point in time.
`

`Based on this approach I estimate a binary probit model with
``retirement in the current year as dependent variable and option value
``(OV), social security wealth (SSW), age and some other variables as covariates.
`

`However, since the option value is denoted in utility terms I have to
``assume some exogenous parameters of the utility function. There are
``basically two parameters: GAMMA, which defines marginal utility of
``income, and ALPHA, which is a factor defining the utility gain
``through leisure in retirement (relative to work). Exogenous values
``taken from the literature would be: GAMMA=0.75 and ALPHA=1.36
`

`As a next step I'm writing a maximum likelihood evaluator so that I
``can jointly estimate those two parameters together with the binary
``probit model. Since I wanted to keep it simple I'm using a gf0
``evaluator. Also, I had to make sure that the two parameters stay
``whithin their ranges (0 to 1 for GAMMA and 1 to 2 for ALPHA), so I
``transform parameters b[1,5] (hp_alpha) and b[1,6] (hp_gamma) through
``the use of the normal cdf. Though my program passes ml check, it
``doesn't converge. In fact, it seems to be unable to go on to the next
``iteration (#1) though it keeps on repeating every step in the
``program. Here is a reduced version of the code.
`
program ML_OPV
args todo b lnfj
tempvar alpha gamma
quietly gen double `alpha'=1+normal(`b'[1,5])
quietly gen double `gamma'=normal(`b'[1,6])
*display "ALPHA: " `alpha'
*display "GAMMA: " `gamma'
quietly {
forvalues j=2002(1)2012 {
* Calculate Utility from Retirement based on `alpha' and `gamma'
< CODE OMITTED >
* Calculate Utility from Labour Income based on `gamma'
< CODE OMITTED >
}
* CALC. OPTION VALUE BASED ON UTILITY VALUES FOR DIFFERENT RETIREMENTAGES
< CODE OMITTED >
* DEFINE LIKELIHOOD FUNCTION
tempvar xb
gen double `xb' = `b'[1,1]*SSW + `b'[1,2]*OV + `b'[1,3]*gn_age +`b'[1,4]
replace `lnfj' = ln(normal(`xb')) if $ML_y1 == 1
replace `lnfj' = ln(normal(-1*`xb')) if $ML_y1 == 0
}
end
ml model gf0 ML_OPV (theta: GO = SSW OV gn_age) /hp_alpha /hp_gamma
ml init SSW=.000004 OV=-.0008 gn_age=.16 /hp_alpha=-.001 /hp_gamma=.5
ml max, technique(nr) trace showstep

`I recognize that it might be quite hard to help me out from the
``distance, however, it would be greatly appreciated. Especially, I'm
``wondering whether my approach concerning ALPHA and GAMMA is valid or
``whether there is any easier way to do it.
`
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/