gsl_nls_large | R Documentation |
Determine the nonlinear least-squares estimates of the parameters of a large
nonlinear model system using the gsl_multilarge_nlinear
module present in
the GNU Scientific Library (GSL).
gsl_nls_large(fn, ...)
## S3 method for class 'formula'
gsl_nls_large(
fn,
data = parent.frame(),
start,
algorithm = c("lm", "lmaccel", "dogleg", "ddogleg", "subspace2D", "cgst"),
control = gsl_nls_control(),
jac,
fvv,
trace = FALSE,
subset,
weights,
na.action,
model = FALSE,
...
)
## S3 method for class 'function'
gsl_nls_large(
fn,
y,
start,
algorithm = c("lm", "lmaccel", "dogleg", "ddogleg", "subspace2D", "cgst"),
control = gsl_nls_control(),
jac,
fvv,
trace = FALSE,
weights,
...
)
fn |
a nonlinear model defined either as a two-sided formula including variables and parameters, or as a function returning a numeric vector, with first argument the vector of parameters to be estimated. See the individual method descriptions below. |
data |
an optional data frame in which to evaluate the variables in |
y |
numeric response vector if |
start |
a named list or named numeric vector of starting estimates. |
algorithm |
character string specifying the algorithm to use. The following choices are supported:
|
control |
an optional list of control parameters to tune the least squares iterations and multistart algorithm.
See |
jac |
a function returning the |
fvv |
a function returning an |
trace |
logical value indicating if a trace of the iteration progress should be printed.
Default is |
subset |
an optional vector specifying a subset of observations to be used in the fitting process.
This argument is only used if |
weights |
an optional numeric vector of (fixed) weights. When present, the objective function is weighted least squares. |
na.action |
a function which indicates what should happen when the data contain |
model |
a logical value. If |
... |
additional arguments passed to the calls of |
If fn
is a formula
returns a list object of class nls
.
If fn
is a function
returns a list object of class gsl_nls
.
See the individual method descriptions for the structures of the returned lists and the generic functions
applicable to objects of both classes.
gsl_nls_large(formula)
: If fn
is a formula
, the returned list object is of classes gsl_nls
and nls
.
Therefore, all generic functions applicable to objects of class nls
, such as anova
, coef
, confint
,
deviance
, df.residual
, fitted
, formula
, logLik
, nobs
, predict
, print
, profile
,
residuals
, summary
, vcov
and weights
are also applicable to the returned list object.
In addition, a method confintd
is available for inference of derived parameters.
gsl_nls_large(function)
: If fn
is a function
, the first argument must be the vector of parameters and
the function should return a numeric vector containing the nonlinear model evaluations at
the provided parameter and predictor or covariate vectors. In addition, the argument y
needs to contain the numeric vector of observed responses, equal in length to the numeric
vector returned by fn
. The returned list object is (only) of class gsl_nls
.
Although the returned object is not of class nls
, the following generic functions remain
applicable for an object of class gsl_nls
: anova
, coef
, confint
, deviance
,
df.residual
, fitted
, formula
, logLik
, nobs
, predict
, print
,
residuals
, summary
, vcov
and weights
. In addition, a method confintd
is available for inference of derived parameters.
M. Galassi et al., GNU Scientific Library Reference Manual (3rd Ed.), ISBN 0954612078.
gsl_nls
https://www.gnu.org/software/gsl/doc/html/nls.html
# Large NLS example
# (https://www.gnu.org/software/gsl/doc/html/nls.html#large-nonlinear-least-squares-example)
## number of parameters
p <- 250
## model function
f <- function(theta) {
c(sqrt(1e-5) * (theta - 1), sum(theta^2) - 0.25)
}
## jacobian function
jac <- function(theta) {
rbind(diag(sqrt(1e-5), nrow = length(theta)), 2 * t(theta))
}
## dense Levenberg-Marquardt
gsl_nls_large(
fn = f, ## model
y = rep(0, p + 1), ## (dummy) responses
start = 1:p, ## start values
algorithm = "lm", ## algorithm
jac = jac, ## jacobian
control = list(maxiter = 250)
)
## dense Steihaug-Toint conjugate gradient
gsl_nls_large(
fn = f, ## model
y = rep(0, p + 1), ## (dummy) responses
start = 1:p, ## start values
jac = jac, ## jacobian
algorithm = "cgst" ## algorithm
)
## sparse Jacobian function
jacsp <- function(theta) {
rbind(Matrix::Diagonal(x = sqrt(1e-5), n = length(theta)), 2 * t(theta))
}
## sparse Levenberg-Marquardt
gsl_nls_large(
fn = f, ## model
y = rep(0, p + 1), ## (dummy) responses
start = 1:p, ## start values
algorithm = "lm", ## algorithm
jac = jacsp, ## sparse jacobian
control = list(maxiter = 250)
)
## sparse Steihaug-Toint conjugate gradient
gsl_nls_large(
fn = f, ## model
y = rep(0, p + 1), ## (dummy) responses
start = 1:p, ## start values
jac = jacsp, ## sparse jacobian
algorithm = "cgst" ## algorithm
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.