[Rd] nls: constraints (lower/upper) (PR#8401)

From: <bolker_at_zoo.ufl.edu>
Date: Thu 15 Dec 2005 - 19:40:37 GMT

    I found what seems to be a glaring bug in nls when using constraints, but it is so glaring that I'm a bit nervous about having been stupid. I have (1) tried to make sure I'm up to date:

platform i486-pc-linux-gnu

arch     i486
os       linux-gnu

system i486, linux-gnu
status
major 2
minor 2.0
year 2005
month 10
day 06
svn rev 35749

  (2) skimmed through the SVN logs; (3) skimmed the bug reporting system for references to "lower" or "constraint"

    The problem is that nls() doesn't seem to work with constraints. Specifically, it seems to fail to set the "lower" and "upper" components of match.call() to NULL before trying to evaluate the formula.
There is a simple fix that makes it work fine (for me at least -- I haven't tested extensively).

   I would submit a bug report but I'm gun-shy ...

   Sample problem and fix:


x = runif(200)
a =1
b = 1
c = -0.1
y = a+b*x+c*x^2+rnorm(200,sd=0.05)

plot(x,y)
curve(a+b*x+c*x^2,add=TRUE)
nls(y~a+b*x+c*I(x^2),start=c(a=1,b=1,c=0.1),algorithm="port")
nls(y~a+b*x+c*I(x^2),start=c(a=1,b=1,c=0.1),algorithm="port",lower=c(0,0,0))

## Error in model.frame(formula, rownames, variables, varnames, extras,
## extranames, :
## variable lengths differ

## hack nls()

sink("mynls.R")
nls
sink()

## replace line 34:
## ORIGINAL:
## mf$start <- mf$control <- mf$algorithm <-
## mf$trace <- mf$model <- NULL
## REVISED:
## mf$start <- mf$control <- mf$algorithm <- mf$trace <- mf$model <-
## mf$lower <- mf$upper <- NULL
## add "mynls <- " at the beginning, delete namespace code at the end
source("mynls.R")
mynls(y~a+b*x+c*I(x^2),start=c(a=1,b=1,c=0.1),algorithm="port",lower=c(0,0,0))

## works beautifully

-- 
620B Bartram Hall                            bolker@zoo.ufl.edu
Zoology Department, University of Florida    http://www.zoo.ufl.edu/bolker
Box 118525                                   (ph)  352-392-5697
Gainesville, FL 32611-8525                   (fax) 352-392-3704

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Fri Dec 16 22:30:32 2005

This archive was generated by hypermail 2.1.8 : Fri 16 Dec 2005 - 14:21:57 GMT