[R-sig-ME] non-linear mixed effects: polynomial

Ben Bolker bbolker at gmail.com
Tue Sep 20 15:17:43 CEST 2011


On 09/20/2011 04:22 AM, Gabriel Yvon-Durocher wrote:
> Thanks for the reply Ben. I have 16 subjects, however the number of
> observations per subject is not even, which is why I opted for nlmer
> rather than nlme. I presumed nlmer (as is the case for lmer) would be
> better at handling unbalanced designs.

  No, nlme is also intended for unbalanced designs.

  nlmer is likely to be (a) faster and (b) better for crossed designs,
but otherwise I would stick (for the time being) to nlme.

   A couple of other things occur to me:

(1) what you got was a warning about false convergence (the PORT library
algorithm built into lme4 is pretty finicky ...) If the result seems
sensible and accords with your individual-level fits, I would probably
proceed (with caution)

(2) the random-effects specification (1+a+b+c+d|Subject) is likely to be
quite tricky (I guess you have lots of data per individual?) because it
will fit a full, unstructured 5 x 5 variance-covariance matrix for the
random effects across individuals.  It's a pain, but maybe try

(1|Subject)+(0+a|Subject)+(0+b|Subject)+(0+c|Subject)+(0+d|Subject)

 (i.e. independent random effects) for comparison?  (Admittedly the
among-subject correlations among parameters could be quite interesting,
although probably more interpretable if you centered your Temperature
variable (another thing worth trying to improve convergence) or used
orthogonal polynomials (ditto).


> 
> I will check out the suggested books. Thanks.
> 
> Gabriel Yvon-Durocher
> 
>> Gabriel Yvon-Durocher <g.yvon-durocher at ...> writes:
>> 
>>> 
>>> Dear all,
>>> 
>>> I am trying to fit a 3rd order polynomial to some rate and
>>> temperature
>> measurements, but am running into
>>> problems. I would like to treat the parameter a,b,c,d as random
>>> effects across
>> subjects, and use the model
>>> to estimate these parms for each experimental subject.
>>> 
>>> Here is my model:
>>> 
>>> resp.fun<-function(Temp,a,b,c,d)
>>> -a*(Temp^3)+b*(Temp^2)-c*(Temp)+d
>>> 
>>> then I build a gradient function:
>>> 
>>> gr.model<- deriv(body(resp.fun), namevec = c('a','b','c','d'),
>> function.arg = resp.fun)
>>> 
>>> and then run the mixed effects model:
>>> 
>>> model<-nlmer(log10.rate ~ gr.model(Temp,a,b,c,d) ~
>>> 1+a+b+c+d|Subject, start = c(a=4.897e-05, b=3.198e-03,
>>> c=3.569e-02, d=1), data = lab.analysis, na.action=na.omit)
>>> 
>>> unfortunately I get the error message
>>> 
>>> Warning message: In mer_finalize(ans) : false convergence (8)
>>> 
>>> Any ideas on what I may be doing wrong? I have manually fit this
>>> polynomial to the data for each subject and the fits are good,
>>> but I want to run the mixed effects analysis to get the best 
>>> possible parameter estimates given the experimental design.
>>> 
>> 
>> How many subjects?
>> 
>> Can you do it in nlme instead, which is more mature/robust? If not,
>> you may end up needing to do this in AD Model Builder, or BUGS, or
>> rolling your own Laplace approximator (there is an example in
>> Madsen and Thyregod's book) ...
>> 
>> Ben Bolker
>> 
>> _______________________________________________ 
>> R-sig-mixed-models at r-project.org mailing list 
>> https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
>




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