From ripley at stats.ox.ac.uk  Thu Aug 23 19:57:42 2007
From: ripley at stats.ox.ac.uk (ripley at stats.ox.ac.uk)
Date: Thu, 23 Aug 2007 19:57:42 +0200 (CEST)
Subject: [Rd] nls fails with large numbers of variables (PR#9873)
Message-ID: <20070823175742.B708D2070A@slim.kubism.ku.dk>

This is fixed in the current R-devel.

On Wed, 22 Aug 2007, h.y.wong at leeds.ac.uk wrote:

> Full_Name: Yan Wong
> Version: 2.5.1
> OS: Mac OS X 10.4
> Submission from: (NULL) (129.11.77.198)
>
>
> If nls is called with a large number of variables & parameters (>200), then it
> fails because of the default setting of max.names = 200 in the all.vars
> function. I guess that nls should either give a meaningful warning ("you can
> only have 200 names in an nls formula"), or should not have such a restriction.
> If this restriction is kept, for my purposes it would be useful to have a way of
> setting max.names in the nls call.
>
> I encountered this in a real dataset, but  an example
>
>> #nls fails on 100 vars+ 100 params
>> d<-data.frame(matrix(runif(100*1000), 1000, 100))
>> y <- rowSums(d)+rnorm(1000)
>> params <- paste("c", colnames(d), sep=".")
>> st <- rep(1,100); names(st) <- params
>> nls(as.formula(paste("y ~", paste(params, "*", colnames(d), collapse=" + "))),
> data=d, start=st)
> Error in eval(expr, envir, enclos) : object "X100" not found
>
>
>> #works with 50 vars+ 50 params
>> d<-data.frame(matrix(runif(100*1000), 1000, 50))
>> y <- rowSums(d)+rnorm(1000)
>> params <- paste("c", colnames(d), sep=".")
>> st <- rep(1,50); names(st) <- params
>> nls(as.formula(paste("y ~", paste(params, "*", colnames(d), collapse=" + "))),
> data=d, start=st)
> Nonlinear regression model
>  model:  y ~ c.X1 * X1 + c.X2 * X2 + c.X3 * X3 + c.X4 * X4 + c.X5 * X5 +
> c.X6 * X6 + c.X7 * X7 + c.X8 * X8 + c.X9 * X9 + c.X10 * X10 +      c.X11 * X11 +
> c.X12 * X12 + c.X13 * X13 + c.X14 * X14 + c.X15 *      X15 + c.X16 * X16 + c.X17
> * X17 + c.X18 * X18 + c.X19 * X19 +      c.X20 * X20 + c.X21 * X21 + c.X22 * X22
> + c.X23 * X23 + c.X24 *      X24 + c.X25 * X25 + c.X26 * X26 + c.X27 * X27 +
> c.X28 * X28 +      c.X29 * X29 + c.X30 * X30 + c.X31 * X31 + c.X32 * X32 + c.X33
> *      X33 + c.X34 * X34 + c.X35 * X35 + c.X36 * X36 + c.X37 * X37 +      c.X38
> * X38 + c.X39 * X39 + c.X40 * X40 + c.X41 * X41 + c.X42 *      X42 + c.X43 * X43
> + c.X44 * X44 + c.X45 * X45 + c.X46 * X46 +      c.X47 * X47 + c.X48 * X48 +
> c.X49 * X49 + c.X50 * X50
>   data:  d
>  c.X1   c.X2   c.X3   c.X4   c.X5   c.X6   c.X7   c.X8   c.X9  c.X10  c.X11
> c.X12  c.X13  c.X14  c.X15  c.X16  c.X17  c.X18  c.X19  c.X20  c.X21  c.X22
> c.X23
> 0.9400 0.9750 0.9614 1.1029 0.9663 1.1426 1.1534 1.0353 1.0560 0.8258 0.9527
> 1.1092 0.4769 0.8955 1.0689 0.7415 1.0656 1.0657 1.0430 1.1034 0.9392 1.1177
> 1.0712
> c.X24  c.X25  c.X26  c.X27  c.X28  c.X29  c.X30  c.X31  c.X32  c.X33  c.X34
> c.X35  c.X36  c.X37  c.X38  c.X39  c.X40  c.X41  c.X42  c.X43  c.X44  c.X45
> c.X46
> 0.8883 0.9722 1.1377 1.1142 0.9033 1.1225 0.7447 1.2757 0.8746 1.1901 1.1669
> 1.0322 0.9043 1.0546 1.0222 0.9641 1.0834 0.9977 1.0723 0.9720 1.0978 0.9222
> 0.8162
> c.X47  c.X48  c.X49  c.X50
> 0.8824 1.0690 1.0078 0.9063
> residual sum-of-squares: 959.4
>
> Number of iterations to convergence: 1
> Achieved convergence tolerance: 1.215e-07
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

-- 
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



[Rd] nls fails with large numbers of variables (PR#9873)
ripley at stats.ox.ac.uk