| 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, hatvalues, cooks.distance 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, hatvalues, cooks.distance 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.