Re: [R] bug in nls?

From: Prof Brian Ripley <ripley_at_stats.ox.ac.uk>
Date: Fri, 27 Jun 2008 11:11:01 +0100 (BST)

As has already been pointed out, the syntax of formulae in nls() is not the same as in linear models. So things which are valid for linear models are not necessarily valid for others.

Since nls() is sparsely documented on the help page, you need to look at the references (and you can also learn a lot of tricks from Bill Venables' account in MASS).

On Fri, 27 Jun 2008, Petr PIKAL wrote:

> Thank you both.
>
> Katharine approach seemed to me easier to implement so I used it
> successfully. However I still wonder why in linear model using lm I can
> use
>
> for (i in ....) lm( data[,i]~data[,1])
>
> but in nls the same construction fails. I understand that it is sometimes
> difficult to set correct starting values especially if the values can by
> quite different and then the cycle fails.
>
> However it works in lm and probably in other regression models (I tested
> it in ltsreg from MASS)
>
> Petr
> petr.pikal_at_precheza.cz
> 724008364, 581252140, 581252257
>
>
> r-help-bounces_at_r-project.org napsal dne 26.06.2008 14:16:35:
>
>> Dear Petr,
>>
>> I think it's a feature. the formula interface also won't let you
> specify
>> the slots of S4 objects in the model spec.
>>
>> How about
>>
>> coef(nls(y~a*x^b, data=list(x=DF[,1], y=DF[,2]), start=list(a=3, b=.7)))
>>
>> ?
>>
>> On Thu, 26 Jun 2008, Petr PIKAL wrote:
>>
>>> Dear all
>>>
>>> Nobody responded to my previous post so far so I try with more
> offending
>>> subject.
>>>
>>> I just encountered a strange problem with nls formula. I tried to use
> nls
>>> in cycle but I was not successful. I traced the problem to some parse
>>> command.
>>>
>>> Here is an example
>>>
>>> DF<-data.frame(x=1:10, y=3*(1:10)^.5+rnorm(10))
>>>
>>> coef(lm(log(DF[,2])~log(DF[,1])))
>>> (Intercept) log(DF[, 1])
>>> 0.7437320 0.6831726
>>> # this works
>>>
>>> coef(nls(y~a*x^b, data=DF, start=list(a=3, b=.7)))
>>> a b
>>> 2.6412881 0.5545907
>>> # OK, this works too
>>>
>>> coef(nls(DF[,2]~a*DF[,1]^b, data=DF, start=list(a=3, b=.7)))
>>> Error in parse(text = x) : unexpected end of input in "~ "
>>> coef(nls(DF[,2]~a*DF[,1]^b, start=list(a=3, b=.7)))
>>> Error in parse(text = x) : unexpected end of input in "~ "
>>> # but this does not
>>>
>>>
>>> Browse[1]>
>>> debug: mf$formula <- as.formula(paste("~", paste(varNames[varIndex],
>>> collapse = "+")), env = environment(formula))
>>> Browse[1]>
>>> Error in parse(text = x) : unexpected end of input in "~ "
>>>>
>>>
>>> Actually the problem is that with calling nls with DF[,n]~... varNames
> and
>>> varIndex is not correctly specified.
>>>
>>> I am not sure if this behaviour is a bug or feature. If it is a
> feature,
>>> please help me how to call variables from data frame
>>> when using nls inside cycle
>>>
>>> for (i in ....) result[i,] <- coef(nls( ...., ))
>>>
>>> Thank you
>>> Petr
>>>
>>>> sessionInfo()
>>> R version 2.8.0 Under development (unstable) (2008-05-18 r45723)
>>> i386-pc-mingw32
>>>
>>> locale:
>>> LC_COLLATE=Czech_Czech Republic.1250;LC_CTYPE=Czech_Czech
>>> Republic.1250;LC_MONETARY=Czech_Czech
>>> Republic.1250;LC_NUMERIC=C;LC_TIME=Czech_Czech Republic.1250
>>>
>>> attached base packages:
>>> [1] stats grDevices datasets utils graphics methods base
>>>
>>> other attached packages:
>>> [1] nlme_3.1-88 lattice_0.17-7 fun_0.1
>>>
>>> loaded via a namespace (and not attached):
>>> [1] grid_2.8.0 tools_2.8.0
>>>
>>>
>>> Petr Pikal
>>> petr.pikal_at_precheza.cz
>>> 724008364, 581252140, 581252257
>>>
>>> ______________________________________________
>>> R-help_at_r-project.org 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_at_r-project.org 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_at_r-project.org 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.
>

-- 
Brian D. Ripley,                  ripley_at_stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________
R-help_at_r-project.org 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.
Received on Fri 27 Jun 2008 - 10:38:54 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 27 Jun 2008 - 11:31:13 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive