[R] How should a SelfStart function handle illegal parameter values?

Keith Jewell k.jewell at campden.co.uk
Fri Sep 4 17:45:34 CEST 2009


Hi Everyone,

I'm trying to write selfStart non-linear models for use with nls. In these 
models some combinations of parameter values are illegal; the function value 
is undefined.

That's OK when calling the function directly [e.g.  SSmodel(x, pars...)]; I 
return an appropriate non-value such as NA or Inf.

However, when called from nls [e.g. nls(y~SSmodel(x, pars...), ...)] those 
non-values lead to errors such as (but not limited to):
    Error in numericDeriv(form[[3L]], names(ind), env) :
      Missing value or an infinity produced when evaluating the model
or (if I provide a gradient attribute)
    Error in qr.default(.swts * attr(rhs, "gradient")) :
      NA/NaN/Inf in foreign function call (arg 1)

I can't see a way of making nls either stick to legal parameter values, or 
accept NA/NaN/Inf as indicating "bad" parameter values.

I really do want to use nls rather than a bounded optimisation tool (such as 
optim) because this fits into a much bigger picture predicated on nls.

I'd appreciate any suggestions.

Keith Jewell
----------------
> sessionInfo()
R version 2.9.1 (2009-06-26)
i386-pc-mingw32

locale:
LC_COLLATE=English_United Kingdom.1252;LC_CTYPE=English_United 
Kingdom.1252;LC_MONETARY=English_United 
Kingdom.1252;LC_NUMERIC=C;LC_TIME=English_United Kingdom.1252

attached base packages:
[1] stats     graphics  grDevices datasets  tcltk     utils     methods 
base

other attached packages:
[1] xlsReadWrite_1.3.3 svSocket_0.9-43    svMisc_0.9-48      TinnR_1.0.3 
R2HTML_1.59-1      Hmisc_3.6-1

loaded via a namespace (and not attached):
[1] cluster_1.12.0  grid_2.9.1      lattice_0.17-25 stats4_2.9.1 
VGAM_0.7-9




More information about the R-help mailing list