Add the line marked ### so that the environment of loglik.fun is reset to the environment within fit.mle so that it can find y there:
library(stats4) ll <- function(ymax=15, xhalf=6) { -sum(stats::dpois(y, lambda=ymax/(1+x/xhalf), log=TRUE)) } fit.mle <- function(FUN, x, y) { loglik.fun <- match.fun(FUN) environment(loglik.fun) <- environment() ### mle(loglik.fun, method="L-BFGS-B", lower=c(0, 0)) } fit.mle("ll", x=0:10, y=c(26, 17, 13, 12, 20, 5, 9, 8, 5, 4, 8)) On 12/30/06, Sebastian P. Luque <[EMAIL PROTECTED]> wrote: > Hi, > > How can we set the environment for the minuslog function in mle()? The > call in this code fails because the "ll" function cannot find the object > 'y'. Modifying from the example in ?mle: > > > library(stats4) > ll <- function(ymax=15, xhalf=6) { > -sum(stats::dpois(y, lambda=ymax/(1+x/xhalf), log=TRUE)) > } > fit.mle <- function(FUN, x, y) { > loglik.fun <- match.fun(FUN) > mle(loglik.fun, method="L-BFGS-B", lower=c(0, 0)) > } > fit.mle("ll", x=0:10, y=c(26, 17, 13, 12, 20, 5, 9, 8, 5, 4, 8)) > > > How should "fit.mle" be constructed so that "ll" works on the appropriate > environment? Thanks in advance for any advice on this. > > > -- > Seb > > ______________________________________________ > R-help@stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.