R: Self-Starting Nls Weibull Growth Curve Model

SSweibull {stats} | R Documentation

## Self-Starting Nls Weibull Growth Curve Model

### Description

This `selfStart` model evaluates the Weibull model for growth curve data and its gradient. It has an `initial` attribute that will evaluate initial estimates of the parameters `Asym`, `Drop`, `lrc`, and `pwr` for a given set of data.

### Usage

    SSweibull(x, Asym, Drop, lrc, pwr)

### Arguments

`x` | a numeric vector of values at which to evaluate the model.
`Asym` | a numeric parameter representing the horizontal asymptote on the right side (very small values of `x`).
`Drop` | a numeric parameter representing the change from `Asym` to the `y` intercept.
`lrc` | a numeric parameter representing the natural logarithm of the rate constant.
`pwr` | a numeric parameter representing the power to which `x` is raised.

### Details

This model is a generalization of the `SSasymp` model in that it reduces to `SSasymp` when `pwr` is unity.

### Value

a numeric vector of the same length as `x`. It is the value of the expression `Asym-Drop*exp(-exp(lrc)*x^pwr)`. If all of the arguments `Asym`, `Drop`, `lrc`, and `pwr` are names of objects, the gradient matrix with respect to these names is attached as an attribute named `gradient`.

### Author(s)

Douglas Bates

### References

Ratkowsky, David A. (1983), Nonlinear Regression Modeling, Dekker. (section 4.4.5)

### See Also

`nls`, `selfStart`, `SSasymp`

### Examples

    Chick.6 <- subset(ChickWeight, (Chick == 6) & (Time > 0))
    SSweibull(Chick.6$Time, 160, 115, -5.5, 2.5)   # response only
    local({ Asym <- 160; Drop <- 115; lrc <- -5.5; pwr <- 2.5
      SSweibull(Chick.6$Time, Asym, Drop, lrc, pwr) # response _and_ gradient
    })
    getInitial(weight ~ SSweibull(Time, Asym, Drop, lrc, pwr), data = Chick.6)
    ## Initial values are in fact the converged values
    fm1 <- nls(weight ~ SSweibull(Time, Asym, Drop, lrc, pwr), data = Chick.6)
    summary(fm1)
    ## Data and Fit:
    plot(weight ~ Time, Chick.6, xlim = c(0, 21), main = "SSweibull() fit to Chick.6")
    ux <- par("usr")[1:2]; x <- seq(ux[1], ux[2], length.out=250)
    lines(x, do.call(SSweibull, c(list(x=x), coef(fm1))), col = "red", lwd=2)
    As <- coef(fm1)[["Asym"]]; abline(v = 0, h = c(As, As - coef(fm1)[["Drop"]]), lty = 3)

[Package stats version 3.5.1 Index]