[R] Error optimizing Poisson log-likelihood with L-BFGS-B
Ben Bolker
bolker at ufl.edu
Wed Oct 31 18:47:26 CET 2007
Sergey Goriatchev wrote:
>
>
> [snip]
>
> I cannot run this because I always get an error message:
>
> Error in optim(par = 1, poisson.loglik, lower = 0, method = "L-BFGS-B", :
> non-finite finite-difference value [1]
>
> Could someone enlighten me what that means and why this happens?
>
> THanks in advance,
> Sergey
>
>
It happens because "L-BFGS-B" is willing to try points that are exactly on
the boundary.
## modify likelihood function to allow debug option
poisson.loglik <- function(mu, y,debug=FALSE){
n <- NROW(y)
logl <- sum(y)*log(mu)-n*mu
v = -logl
if (debug) cat(mu,v,"\n")
return(v)
}
estimates <- numeric(1e5)
## try the loop, but save yval every time so we can replicate the problem
for (i in 1:1000) {
yval = rpois(10,lambda=2)
estimates[i] <- optim(par=1, poisson.loglik, method="L-BFGS-B",
lower=0, y=yval)$par
}
## now see what crashed (stopped after rep 33 for me)
optim(par=1, poisson.loglik, method="L-BFGS-B",
lower=0, y=yval)$par
## yes, it crashed. Try debugging.
optim(par=1, poisson.loglik, method="L-BFGS-B",
lower=0, y=yval, debug=TRUE)$par
## increase lower bound value ...
optim(par=1, poisson.loglik, method="L-BFGS-B",
lower=0.002, y=yval, debug=TRUE)$par
for (i in 1:10000) {
yval = rpois(10,lambda=2)
estimates[i] <- optim(par=1, poisson.loglik, method="L-BFGS-B",
lower=0.002, y=yval)$par
}
## works (and minimum estimate is not on the boundary)
--
View this message in context: http://www.nabble.com/Error-optimizing-Poisson-log-likelihood-with-L-BFGS-B-tf4726144.html#a13514904
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list