s-news
[Top] [All Lists]

[S] Interpreting nlminb convergence

To: s-news@wubios.wustl.edu
Subject: [S] Interpreting nlminb convergence
From: Kevin Brand <kbrand@hsph.harvard.edu>
Date: Mon, 8 Jun 1998 21:14:00 -0400 (EDT)
In-reply-to: <9706052350.AA15688@uhdux2.dt.uh.edu>
Reply-to: Kevin Brand <kbrand@hsph.harvard.edu>
Sender: owner-s-news@wubios.wustl.edu
Dear Splus Group,

I would like to hear from those who use nlminb().   I'm not sure how to
interpret the $message output from nlminb().

My application is MLE fits of a dose-response function.  The dose-response
function is simply a 2-parameter Weibull (sometimes referred to as a
one-hit model).  I've been surprised to find convergence problems given
the simplicity of the dose-response function (and surely comparable
simplicity in the loglikelihood ?).  The model and log-likelihood are
printed below. 

For a variety of data-sets I keep getting the following message,

FALSE CONVERGENCE

Based on inspection of contour plots of the log-likelihood surface, I've
noticed that this message is not helpful for differentiating fairly good
estimates of the MLE from seemingly bad; where `good' or `bad' is based on
comparability with the MLE apparant in the contour plot.

Ultimately I would like to run nlminb() repeatedly within a loop on
re-sampled data-sets, which means I won't be able to confirm whether every
MLE fit is indeed good (i.e., despite what seem to be inevitable FALSE
CONVERGENCE messages).  

I have four questions:
1) Is this a problem with my use of scale ?
2) Any heuristics for setting scale ?
3) What does FALSE CONVERGENCE mean ?
4) Should I be considering another platform/package (note: I do need to
keep non-negative constraints on the parameters)


Thanks for any advice you may have,
[[I am using Splus for Windows version 3.3]]
Kevin

 ---------
# MODEL:
# P(d) = 1-exp(-theta[1]-theta[2]*d)

tmp <- nlminb(theta, obj = likw3, grad= w2.grh, scale=c(1,10000), lower =
c(0.00001, 0.00001), sumdat = sumdat) 

# where,
likw2<-function(theta, sumdat)
{
        d <- sumdat$d # doses
        r <- sumdat$x # number of responses
        n <- sumdat$n # total number of animals 
        prb <- 1-exp(-theta[1]-theta[2]*d])
        lik <- sum(r * log(prb)) + sum((n - r) * log(1 - prb))
        return( - lik)
}
and,
w2.grh was generated with the assistance of deriv3() (VR's MASS library)
-------



-----------------------------------------------------------------------
This message was distributed by s-news@wubios.wustl.edu.  To unsubscribe
send e-mail to s-news-request@wubios.wustl.edu with the BODY of the
message:  unsubscribe s-news

<Prev in Thread] Current Thread [Next in Thread>