Gabor Grothendieck
2010-Aug-22 11:30 UTC
[Rd] nls.control(warnOnly = TRUE) gives error rather than warning
In ?nls.control it says: warnOnly a logical specifying whether nls() should return instead of signalling an error in the case of termination before convergence. Termination before convergence happens upon completion of maxiter iterations, in the case of a singular gradient, and in the case that the step-size factor is reduced below minFactor. however, 1. here we have a singular gradient but it gave an error rather than the expected behavior of returning:> set.seed(1) > y <- exp(x) + rnorm(10) > > nls(y ~ a * exp(b * x), start = c(a = 0, b = 0),+ control = nls.control(warnOnly = TRUE)) Error in nlsModel(formula, mf, start, wts) : singular gradient matrix at initial parameter estimates 2. and here we have a failure in numericDeriv and although that is not documented as one of the conditions I think it would be desirable that it be included as something that does not result in an error when warnOnly = TRUE:> nls(y ~ a * exp(b * x), start = c(a = 10, b = 0),+ control = nls.control(warnOnly = TRUE)) Error in numericDeriv(form[[3L]], names(ind), env) : Missing value or an infinity produced when evaluating the model
Gabor Grothendieck
2010-Aug-22 11:32 UTC
[Rd] nls.control(warnOnly = TRUE) gives error rather than warning
On Sun, Aug 22, 2010 at 7:30 AM, Gabor Grothendieck <ggrothendieck at gmail.com> wrote:> In ?nls.control it says: > > warnOnly a logical specifying whether nls() should return instead of > signalling an error in the case of termination before convergence. > Termination before convergence happens upon completion of maxiter > iterations, in the case of a singular gradient, and in the case that > the step-size factor is reduced below minFactor. > > however, > > 1. here we have a singular gradient but it gave an error rather than > the expected behavior of returning: > >> set.seed(1) >> y <- exp(x) + rnorm(10) >> >> nls(y ~ a * exp(b * x), start = c(a = 0, b = 0), > + control = nls.control(warnOnly = TRUE)) > Error in nlsModel(formula, mf, start, wts) : > ?singular gradient matrix at initial parameter estimates > > 2. and here we have a failure in numericDeriv and although that is not > documented as one of the conditions I think it would be desirable that > it be included as something that does not result in an error when > warnOnly = TRUE: > >> nls(y ~ a * exp(b * x), start = c(a = 10, b = 0), > + control = nls.control(warnOnly = TRUE)) > Error in numericDeriv(form[[3L]], names(ind), env) : > ?Missing value or an infinity produced when evaluating the model >In the above: x <- 1:10