Skip to content
Prev 409 / 20628 Next

Error message from nlmer

On 10/30/07, Kari Ruohonen <kari.ruohonen at utu.fi> wrote:
No apology needed.  This type of message is entirely appropriate for this list.

I didn't notice your message on R-help or I would have responded there.

The answer to your question is that nlmer currently requires an
analytic gradient of the nonlinear model function.  You could use the
deriv function to create a version of your grModel that returns the
gradient.
+        c("Tmin","Tmax","Topt","kopt","m"), function(x, Tmin, Tmax,
Topt, kopt, m){})
language ((x - Tmin) * (x - Tmax))/((x - Tmin) * (x - Tmax) - (x -
Topt)^2) *      kopt * w^m
function (x, w, Tmin, Tmax, Topt, kopt, m)
{
    .expr1 <- x - Tmin
    .expr2 <- x - Tmax
    .expr3 <- .expr1 * .expr2
    .expr4 <- x - Topt
    .expr6 <- .expr3 - .expr4^2
    .expr7 <- .expr3/.expr6
    .expr8 <- .expr7 * kopt
    .expr9 <- w^m
    .expr13 <- .expr6^2
    .value <- .expr8 * .expr9
    .grad <- array(0, c(length(.value), 5L), list(NULL, c("Tmin",
        "Tmax", "Topt", "kopt", "m")))
    .grad[, "Tmin"] <- -((.expr2/.expr6 - .expr3 * .expr2/.expr13) *
        kopt * .expr9)
    .grad[, "Tmax"] <- -((.expr1/.expr6 - .expr3 * .expr1/.expr13) *
        kopt * .expr9)
    .grad[, "Topt"] <- -(.expr3 * (2 * .expr4)/.expr13 * kopt *
        .expr9)
    .grad[, "kopt"] <- .expr7 * .expr9
    .grad[, "m"] <- .expr8 * (.expr9 * log(w))
    attr(.value, "gradient") <- .grad
    .value
}

Now use grModg instead of grModel.