R: Self-Starting Nls Biexponential model

SSbiexp {stats} | R Documentation

## Self-Starting Nls Biexponential model

### Description

This `selfStart` model evaluates the biexponential model function and its gradient. It has an `initial` attribute that creates initial estimates of the parameters `A1`, `lrc1`, `A2`, and `lrc2`.

### Usage

    SSbiexp(input, A1, lrc1, A2, lrc2)

### Arguments

`input` | a numeric vector of values at which to evaluate the model.
`A1` | a numeric parameter representing the multiplier of the first exponential.
`lrc1` | a numeric parameter representing the natural logarithm of the rate constant of the first exponential.
`A2` | a numeric parameter representing the multiplier of the second exponential.
`lrc2` | a numeric parameter representing the natural logarithm of the rate constant of the second exponential.

### Value

a numeric vector of the same length as `input`. It is the value of the expression `A1*exp(-exp(lrc1)*input)+A2*exp(-exp(lrc2)*input)`. If all of the arguments `A1`, `lrc1`, `A2`, and `lrc2` are names of objects, the gradient matrix with respect to these names is attached as an attribute named `gradient`.

### Author(s)

José Pinheiro and Douglas Bates

### See Also

`nls`, `selfStart`

### Examples

    Indo.1 <- Indometh[Indometh$Subject == 1, ]
    SSbiexp( Indo.1$time, 3, 1, 0.6, -1.3 )  # response only
    A1 <- 3; lrc1 <- 1; A2 <- 0.6; lrc2 <- -1.3
    SSbiexp( Indo.1$time, A1, lrc1, A2, lrc2 ) # response and gradient
    print(getInitial(conc ~ SSbiexp(time, A1, lrc1, A2, lrc2), data = Indo.1),
          digits = 5)
    ## Initial values are in fact the converged values
    fm1 <- nls(conc ~ SSbiexp(time, A1, lrc1, A2, lrc2), data = Indo.1)
    summary(fm1)

    ## Show the model components visually
      require(graphics)

      xx <- seq(0, 5, len = 101)
      y1 <- 3.5 * exp(-4*xx)
      y2 <- 1.5 * exp(-xx)
      plot(xx, y1 + y2, type = "l", lwd=2, ylim = c(-0.2,6), xlim = c(0, 5),
           main = "Components of the SSbiexp model")
      lines(xx, y1, lty = 2, col="tomato"); abline(v=0, h=0, col="gray40")
      lines(xx, y2, lty = 3, col="blue2" )
      legend("topright", c("y1+y2", "y1 = 3.5 * exp(-4*x)", "y2 = 1.5 * exp(-x)"),
             lty=1:3, col=c("black","tomato","blue2"), bty="n")
      axis(2, pos=0, at = c(3.5, 1.5), labels = c("A1","A2"), las=2)

    ## and how you could have got their sum via SSbiexp():
      ySS <- SSbiexp(xx, 3.5, log(4), 1.5, log(1))
      ##                      ---          ---
      stopifnot(all.equal(y1+y2, ySS, tolerance = 1e-15))

[Package stats version 4.0.5 Index]