Learn R Programming

numOSL (version 1.8)

fitGrowth: Growth curve fitting

Description

Fitting a growth curve using the Levenberg-Marquardt algorithm.

Usage

fitGrowth(Curvedata, model = c("line","exp","lexp","dexp"), 
          origin = FALSE, nstart = 100, upb = 0.5, 
          weight = TRUE, plot = TRUE)

Arguments

Curvedata
matrix(required): three columns (regenerative doses, sensitivity-corrected OSLs, and standard errors of sensitivity-corrected OSLs)
model
character(with default): a fitting model, default model="line", see details
origin
logical(optional): force the growth curve to pass the origin or not
nstart
integer(with default): maximum number of trials used for initializing the non-linear growth curve, see details
upb
double(with default): upper limit on b value (i.e., the reciprocal of the saturating dose), initial b value is generated uniformly from the space (0,upb), see details
weight
logical(with default): fit the growth curve using a weighted or an un-weighted procedure, see details
plot
logical(with default): draw a plot or not

Value

  • Return a list that contains the following elements:
  • LMparsparameters of the growth curve
  • valueminimized objective of the growth curve
  • fit.valueobservations and fitted values

Details

In growth curve fitting, four models are available: (1) "line": a linear model, y=a*x+b; (2) "exp": an exponential model, y=a*[1-exp(-b*x)]+c; (3) "lexp": an exponential plus linear model, y=a*[1-exp(-b*x)]+c*x+d; (4) "dexp": a double exponential model, y=a*[1-exp(-b*x)]+c*[1-exp(-d*x)]+e. The fitting process is performed using the Levenberg-Marquardt algorithm (minpack: Fortran 90 version by John Burkardt, freely available at http://people.sc.fsu.edu/~jburkardt/f_src/minpack/minpack.html). If weight=TRUE, a weighted procedure will be performed through weighting each data point by its inverse variance. In non-linear growth curve fitting, a series of random numbers (i.e., b in "exp" and "lexp", or c(b, d) in "dexp") are initialized with a uniform generator from the space (0,upb), then other parameters (i.e., c(a, c) in "exp", c(a, c, d) in "lexp", or c(a, c, e) in "dexp") are estimated with a Linear Algebra method. For a growth curve that shows high saturating dose, it is more reasonable to use a small upb value. For example, a double saturating exponential model with a upb value less than 0.05 or 0.01 usually works better. The fitting process will be performed repeatedly with nstart times to find an optimal estimate. User is advised to set argument plot=TRUE if possible to visualize the fitting quality.

References

More JJ, 1978. "The Levenberg-Marquardt algorithm: implementation and theory" in Lecture Notes in Mathematics: Numerical Analysis, Springer-Verlag: Berlin. 105-116.

See Also

analyst; calED; fastED

Examples

Run this code
Curvedata<-cbind(c(0, 18, 36, 54, 72, 0, 18),               
                  c(0.026, 1.55, 2.39, 3.46, 4.13, 0.023, 1.61),  
                  c(0.005, 0.11, 0.27, 0.22, 0.20, 0.008, 0.24)) 
 fitGrowth(Curvedata, model="exp", origin=FALSE, plot=TRUE)

Run the code above in your browser using DataLab