Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: st: mata moptimize with Nelder-Mead option: why does it care about Hessian?
From 
 
[email protected] (Jeff Pitblado, StataCorp LP) 
To 
 
[email protected] 
Subject 
 
Re: st: mata moptimize with Nelder-Mead option: why does it care about Hessian? 
Date 
 
Wed, 30 Jun 2010 11:42:58 -0500 
James Prieger <[email protected]> is getting an unhelpful error
message from -moptimize()- while using the Nelder-Mead technique:
> Does anyone have experience using moptimize in Mata with technique "nm"
> (Nelder-Mead)?  I am trying to use it, but upon execution get the error
> message
> 
> "Hessian is not negative semidefinite"
> 
> Why would moptimize care about the Hessian if I'm using Nelder-Mead?  I
> thought the point of the simplex method was for it to work when the
> likelihood function isn't continuous or differentiable.  Does
> evaluatortype d0 still try to find first and second derivatives anyway?
> 
> Code excerpt:
> 
> mata:
> M = moptimize_init()
> moptimize_init_evaluator(M, &LLiklRenApp())
> moptimize_init_evaluatortype(M, "d0")
> moptimize_init_depvar(M, 1, "y c0 c1 c2 c3 z0 z1 z2 z3 a g tau d") //
> yes, this is a messy problem!
> moptimize_init_depvar(M, 2, "")
> moptimize_init_eq_indepvars(M, 1, "x")
> moptimize_init_eq_indepvars(M, 2, "")
> moptimize_init_eq_indepvars(M, 3, "")
> moptimize_init_technique(M, "nm")
> delta = J(1,4,.1)
> moptimize_init_nmsimplexdeltas(M, delta)
> moptimize(M)
> end
The "nm" technique reported this error message because the likelihood
evaluator returned a missing value while -moptimize()- took the initial step
within an iteration.  It should have returned the message
	"missing values returned by evaluator"
We will fix this in a future ado-file update to Stata.
In looking at James' code, I noticed the following things:
1. The first call to -moptimize_init_depvar()- provides a varlist, which is
   allowed, but the second call provides an empty string.  Although it is
   tolerated, the second call is redundant and unnecessary.
2. There appear to be 3 equations, based on the calls to
   -moptimize_init_eq_indepvars()-.  However James provides a vector of 4
   values to -moptimize_init_nmsimplexdeltas()-.  This should have caused the
   following error message:
	"simplex delta not conformable with parameter vector"
If James provides us with data and the code for his likelihood evaluator, we
might have more to comment on.
--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/