[R-sig-ME] Error in nlmer gradient must be of size...

Ben Bolker bbolker at gmail.com
Sat Nov 12 15:44:56 CET 2011


Luciano Selzer <luciano.selzer at ...> writes:

> 
> Hi list, i'm trying to fit a mixed effects model to photosynthesis
> data and I'm getting an error. "Error en nlmer(CO2 ~ fModf(Amax, Aq,
> LCP, luz) ~ (Amax + Aq + LCP | id), :
> 
>   gradient matrix must be of size 48 by 3"
> 
> I've seen a message posted a few days ago but nobody answered. I'm
> putting a reproducible example below.
> Thanks in advance for any help you might provide.
> Luciano
> 

  [snip]
 
> library(lme4)
> 
> model <- nls(CO2 ~ Amax*(1 - exp(-Aq * (PPF - LCP))),
>               start = list(Amax = 3, Aq = 0.01, LCP = 40 ), data = fd)
> 
> summary(model)
> 
> fModel <- function(Amax, Aq, LCP, PPF)  Amax*(1 - exp(-Aq * (PPF - LCP)))
> fModf <- deriv(body(fModel), namevec = c("Amax", "Aq", "LCP", "PPF"),
>                func = fModel)
> 
> model2 <- nlmer(CO2 ~ fModf(Amax, Aq, LCP, PPF) ~ (Amax + Aq + LCP|id),
>                 start = list(fixef= c(Amax = 3, Aq = 0.01, LCP = 40)),
>                 data = fd, verbose = TRUE)
> 
> #Error en nlmer(CO2 ~ fModf(Amax, Aq, LCP, PPF) ~ (Amax + Aq + LCP | id),  :
> 
> #  gradient matrix must be of size 48 by 3
> 

  The error message is actually informative ... you have three
variables, but your derivative function was based on four variables
(you included "PPF").  I changed it to 

fModf <- deriv(body(fModel), namevec = c("Amax", "Aq", "LCP"),
               func = fModel)


  and proceeded from there; seemed to work fine.




More information about the R-sig-mixed-models mailing list