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: [ml tolerance (originally)]
From
[email protected] (Jeff Pitblado, StataCorp LP)
To
[email protected]
Subject
Re: st: [ml tolerance (originally)]
Date
Tue, 25 Jan 2011 08:54:26 -0600
Christian Gregory <[email protected]> had two follow-up questions
regarding the convergence tolerances used by -ml-:
> 1. Jeff, when you say relative difference for, say, ptol, is this (p for
> this iteration - p for the last iteration) - ptolerance?
>
> 2. Can you say something about the relevance of the g*(-inv(H))g'
> criterion? Does it do something other than make sure the 1st and second
> derivatives are zero?
Klauss Pforr <[email protected]> pointed Christian to a section
of the -moptimize()- help file that answers the first question. The specific
information is:
Let
b = full set of coefficients
b_prior = value of b from prior iteration
then define
C_ptol: mreldif(b, b_prior) <= ptol
As for
C_nrtol: g*invsym(-H)*g' < nrtol
this criterion checks that the Hessian scaled gradient values are sufficiently
close to zero.
C_ntrol and C_ptol are similar in spirit, they both check on some measure of
change in the coefficient values between iterations.
You may be asking: So where does C_nrtol come from?
Why do we need C_nrtol?
b_prior is a rowvector, so the update vector is
d = g_prior*invsym(-H_prior)
where g_prior and H_prior are the gradient vector and Hessian matrix computed
at b_prior. The standard Newton-Raphson step is then
b = b_prior + d
however, -ml- may perform telescoped or contracted steps depending on which
yields a better log likelihood value. As detailed in Gould, et.al. (2010)
page 15 (paraphrased using the above notation instead of that of the book):
...
3. Calculate a new guess b = b_prior +s*d, where s is a scalar, for
instance:
a. Start with s = 1.
b. If f(b_prior+d) > f(b_prior), try s = 2 ...
c. if f(b_prior+d) <= f(b_prior), back up and try s = 0.5 ...
The gradient and Hessian in C_ntrol are computed at b, so that -ml- can
determine if the next iteration is necessary.
Determining convergence solely based on C_ptol is not sufficient since -ml-
could have performed a contracted step; similarly, using only C_vtol is not
sufficient since -ml- could have performed a telescoped step that yielded a
relatively small improvement in the log-likelihood value.
Checking C_nrtol is expensive and unnecessary if neither C_ptol nor C_vtol are
satisfied, so -ml- conditions a check of C_nrtol on a concave Hessian matrix
and the result of at least one of C_ptol or C_vtol being satisfied.
References:
StataCorp. 2009. Mata Reference Manual, Release 11. '[M-5] moptimize()'.
College Station, TX: StataCorp LP. pp. 591--625.
Gould, W., J. Pitblado, and B. Poi. 2010. Maximum likelihood estimation with
Stata, 4th ed. Colleg Station, TX: Stata Press.
--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/