[R] log(0) problem in max likelihood estimation
Prof Brian Ripley
ripley at stats.ox.ac.uk
Tue Jan 9 17:57:19 CET 2001
On Tue, 9 Jan 2001, Bill Simpson wrote:
> This practical problem in maximum likelihood estimation must be
> encountered quite a bit. What do you do when a data point has a
> probability that comes out in numerical evaluation to zero? In calculating
> the log likelihood you then have a log(0) problem.
> Here is a simple example (probit) which illustrates the problem:
> yes<-round(ntrials*pnorm((x-3)/1)) #points fall on normal CDF mean=3, sd=1
> py<-function(b,x) pnorm((x-b)/b)
> loglike<-function(b) -sum( yes*log(py(b,x)) + no*log(1-py(b,x)) )
> In this example the right-most point gives a p(yes) of 1; 1-1=0; log(0)
> gives "NA/Inf replaced by maximum positive value"
> Please tell me how to deal with this problem. Thanks very much for any
Calculate your log-likelihood correctly! 0*log(0) is 0, not NaN.
It is an example of good S programming on page 94 of V&R3.
More generally, I think you should be using the full 5-arg form of pnorm,
pnorm(x, 3, 1, FALSE, TRUE)
is a lot more accurate than your calculation.
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272860 (secr)
Oxford OX1 3TG, UK Fax: +44 1865 272595
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
More information about the R-help