[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