nls {stats} | R Documentation |

Determine the nonlinear least-squares estimates of the nonlinear model
parameters and return a class `nls`

object.

nls(formula, data, start, control, algorithm, trace, subset, weights, na.action, model, lower, upper, ...)

`formula` |
a nonlinear model formula including variables and parameters |

`data` |
an optional data frame in which to evaluate the variables in
`formula` |

`start` |
a named list or named numeric vector of starting estimates |

`control` |
an optional list of control settings. See
`nls.control` for the names of the settable control values and
their effect. |

`algorithm` |
character string specifying the algorithm to use.
The default algorithm is a Gauss-Newton algorithm. Other possible
values are `"plinear"` for the Golub-Pereyra algorithm for
partially linear least-squares models and `"port"` for the
"nl2sol" algorithm from the Port package. |

`trace` |
logical value indicating if a trace of the iteration
progress should be printed. Default is `FALSE` . If
`TRUE` the residual sum-of-squares and the parameter values
are printed at the conclusion of each iteration. When the
`"plinear"` algorithm is used, the conditional estimates of
the linear parameters are printed after the nonlinear
parameters. When the `"port"` algorithms are used the
objective function value printed is half the residual sum-of-squares. |

`subset` |
an optional vector specifying a subset of observations to be used in the fitting process. |

`weights` |
an optional numeric vector of (fixed) weights. When
present, the objective function is weighted least squares. not
yet implemented |

`na.action` |
a function which indicates what should happen
when the data contain `NA` s. The default is set by
the `na.action` setting of `options` , and is
`na.fail` if that is unset. The “factory-fresh”
default is `na.omit` . Value `na.exclude`
can be useful. |

`model` |
logical. If true, the model frame is returned as part of
the object. Default is `FALSE` |

`lower, upper` |
vector of lower and upper bounds, replicated to be as long as
`start` . If unspecified, all parameters are assumed to be
unconstrained. Bounds can only be used with the `"port"`
algorithm. They are ignored, with a warning, if given for other
algorithms. |

`...` |
Additional optional arguments. None are used at present. |

**Do not use nls on artificial "zero-residual" data.**

The `nls`

function uses a relative-offset convergence criterion
that compares the numerical imprecision at the current parameter
estimates to the residual sum-of-squares. This performs well on data of
the form

*y = f(x, theta) + eps*

(with
`var(eps) > 0`

). It
fails to indicate convergence on data of the form

*y = f(x, theta)*

because the criterion amounts to
comparing two components of the round-off error. If you wish to test
`nls`

on artificial data please add a noise component, as shown
in the example below.

An `nls`

object is a type of fitted model object. It has methods
for the generic functions `coef`

, `formula`

,
`resid`

, `print`

, `summary`

,
`AIC`

, `fitted`

and `vcov`

.

Variables in `formula`

are looked for first in `data`

, then
the environment of `formula`

(added in 1.9.1) and finally along
the search path. Functions in `formula`

are searched for first
in the environment of `formula`

(added in 1.9.1) and then along
the search path.

A list of

`m` |
an `nlsModel` object incorporating the model |

`data` |
the expression that was passed to `nls` as the data
argument. The actual data values are present in the environment of
the `m` component. |

Douglas M. Bates and Saikat DebRoy

Bates, D.M. and Watts, D.G. (1988)
*Nonlinear Regression Analysis and Its Applications*,
Wiley

Bates, D. M. and Chambers, J. M. (1992)
*Nonlinear models.*
Chapter 10 of *Statistical Models in S*
eds J. M. Chambers and T. J. Hastie, Wadsworth & Brooks/Cole.

http://netlib.bell-labs.com/netlib/port/ for the Port library

DNase1 <- subset(DNase, Run == 1) ## using a selfStart model fm1DNase1 <- nls( density ~ SSlogis(log(conc), Asym, xmid, scal), DNase1) summary( fm1DNase1 ) ## using conditional linearity fm2DNase1 <- nls( density ~ 1/(1 + exp((xmid - log(conc))/scal)), data = DNase1, start = list(xmid = 0, scal = 1), alg = "plinear", trace = TRUE) summary( fm2DNase1 ) ## without conditional linearity fm3DNase1 <- nls( density ~ Asym/(1 + exp((xmid - log(conc))/scal)), data = DNase1, start = list(Asym = 3, xmid = 0, scal = 1), trace = TRUE) summary( fm3DNase1 ) ## using the nl2sol algorithm fm4DNase1 <- nls( density ~ Asym/(1 + exp((xmid - log(conc))/scal)), data = DNase1, start = list(Asym = 3, xmid = 0, scal = 1), trace = TRUE, algorithm = "port") summary(fm4DNase1) ## weighted nonlinear regression Treated <- Puromycin[Puromycin$state == "treated", ] weighted.MM <- function(resp, conc, Vm, K) { ## Purpose: exactly as white book p.451 -- RHS for nls() ## Weighted version of Michaelis-Menten model ## ------------------------------------------------------------ ## Arguments: 'y', 'x' and the two parameters (see book) ## ------------------------------------------------------------ ## Author: Martin Maechler, Date: 23 Mar 2001, 18:48 pred <- (Vm * conc)/(K + conc) (resp - pred) / sqrt(pred) } Pur.wt <- nls( ~ weighted.MM(rate, conc, Vm, K), data = Treated, start = list(Vm = 200, K = 0.1), trace = TRUE) ## The two examples below show that you can fit a model to ## artificial data with noise but not to artificial data ## without noise. x = 1:10 y = x # perfect fit yeps = y + rnorm(length(y), sd = 0.01) # added noise nls(yeps ~ a + b*x, start = list(a = 0.12345, b = 0.54321), trace = TRUE) ## Not run: nls(y ~ a + b*x, start = list(a = 0.12345, b = 0.54321), trace = TRUE) ## End(Not run)

[Package *stats* version 2.2.1 Index]