Thanks, Jeff. Glad I helped debugging :))
On 10/5/09, Jeff Pitblado, StataCorp LP <[email protected]> wrote:
> Stas Kolenikov <[email protected]> is using -_optimize_evaluate()- after
> calling -optimize_init_params()- with a different set of parameter values than
> the original starting values:
>
>
> > I try to implement some sort of random search over the parameter space
> > to supply good starting values in my Mata -optimize- problem, and I
> > was hoping to use -optimize_evaluate()- for that purpose. My
> > understanding, from the manual, was that it takes the initial values
> > (supplied by -optimize_init_params()-), computes the function and
> > posts the results into (the Mata structure visible as)
> > -optimize_result*()-. As it does not perform any optimization, the
> > init_params and result_params should be the same. However, they are
> > not:
> >
> > : optimize_init_params(Sth, uniform(1,2) )
> >
> > : optimize_init_params(Sth )
> > 1 2
> > +-----------------------------+
> > 1 | .0087578271 .3072360181 |
> > +-----------------------------+
> >
> > : _optimize_evaluate(Sth)
> > b12 = .0581941, b13 = .690081, theta1 = -.0485678, log-likelihood =
> > -7.07196
> > 0
> >
> > : optimize_result_params( Sth )
> > 1 2
> > +-----------------------------+
> > 1 | .0581940888 .6900808689 |
> > +-----------------------------+
> >
> > : optimize_init_params(Sth, uniform(1,2) )
> >
> > : optimize_init_params(Sth )
> > 1 2
> > +-----------------------------+
> > 1 | .4972361468 .8971257419 |
> > +-----------------------------+
> >
> > : _optimize_evaluate(Sth)
> > b12 = .0581941, b13 = .690081, theta1 = -.0485678, log-likelihood =
> > -7.07196
> > 0
> >
> > : optimize_result_params( Sth )
> > 1 2
> > +-----------------------------+
> > 1 | .0581940888 .6900808689 |
> > +-----------------------------+
> >
> > The vector (0.058, 0.690) is what was there before (after a painful
> > non-convergent minimization attempt with lots of problematic numeric
> > derivatives), and it looks like -optimize_evaluate()- just ignored the
> > starting values I gave.
> >
> > Am I missing something, or is it a bug? Stata 11 is fully up to date.
>
>
> This is unintentional behavior (Stata 11 only), and should be fixed in the
> next ado-file update.
>
> You are unlikely to encounter this unless you are doing something
> sophisticated with -optimize()-, namely using -optimize_evaluate()- to search
> for alternative starting values like Stas intends.
>
> In the mean time, Stas can use the following NOT-documented function
>
> (void) optimize_reset_params(S, params)
>
> This function resets the parameters used in the call to the evaluator,
> where-as -optimze_init_params()- was only changing the "initial" parameter
> values.
>
> The "initial" parameter values are stored separately so that
>
> -optimize_init_params()-
>
> returns the original "initial" parameter values, and
>
> -optimize_result_params()-
>
> returns the current value of the parameters after attempting to optimize
> the objective function.
>
>
> > Oh, and one more thing: when I try -optimize_evaluate()- without any
> > previous optimization attempts, it breaks down as follows:
> >
> > opt__eval(): 3010 attempt to dereference NULL pointer
> > _optimize_evaluate(): - function returned error
>
>
> This too is unintended (Stata 11 only), and will be fixed in a future ado-file
> update.
>
> --Jeff
> [email protected]
>
> *
> * 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/
>
--
Stas Kolenikov, also found at http://stas.kolenikov.name
Small print: I use this email account for mailing lists only.
*
* 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/