blob: 2a8cb2f475f9c39852b5abcbf7cb49397912b3ac [file] [log] [blame]
% File src/library/stats/man/SSweibull.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2017 R Core Team
% Distributed under GPL 2 or later
\name{SSweibull}
\title{Self-Starting Nls Weibull Growth Curve Model}
\usage{
SSweibull(x, Asym, Drop, lrc, pwr)
}
\alias{SSweibull}
\arguments{
\item{x}{a numeric vector of values at which to evaluate the model.}
\item{Asym}{a numeric parameter representing the horizontal asymptote on
the right side (very small values of \code{x}).}
\item{Drop}{a numeric parameter representing the change from
\code{Asym} to the \code{y} intercept.}
\item{lrc}{a numeric parameter representing the natural logarithm of
the rate constant.}
\item{pwr}{a numeric parameter representing the power to which \code{x}
is raised.}
}
\description{
This \code{selfStart} model evaluates the Weibull model for growth
curve data and its gradient. It has an \code{initial} attribute that
will evaluate initial estimates of the parameters \code{Asym}, \code{Drop},
\code{lrc}, and \code{pwr} for a given set of data.
}
\value{
a numeric vector of the same length as \code{x}. It is the value of
the expression \code{Asym-Drop*exp(-exp(lrc)*x^pwr)}. If all of
the arguments \code{Asym}, \code{Drop}, \code{lrc}, and \code{pwr} are
names of objects, the gradient matrix with respect to these names is
attached as an attribute named \code{gradient}.
}
\details{
This model is a generalization of the \code{\link{SSasymp}} model in
that it reduces to \code{SSasymp} when \code{pwr} is unity.
}
\author{Douglas Bates}
\references{
Ratkowsky, David A. (1983), \emph{Nonlinear Regression Modeling},
Dekker. (section 4.4.5)
}
\seealso{\code{\link{nls}}, \code{\link{selfStart}}, \code{\link{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)
}
\keyword{models}