[R-sig-ME] New version of lme4 - memory error
Andrew Robinson
A.Robinson at ms.unimelb.edu.au
Sun Jan 28 19:15:14 CET 2007
On Sun, Jan 28, 2007 at 11:18:56AM -0600, Douglas Bates wrote:
> On 1/27/07, Andrew Robinson <A.Robinson at ms.unimelb.edu.au> wrote:
> >Thanks, Martin. It was vanilla.
> >
> >
> >> traceback()
> >4: .Call(mer2_getPars, mer)
> >3: as.double(start)
> >2: nlminb(.Call(mer2_getPars, mer), function(x) .Call(mer2_deviance,
> > .Call(mer2_setPars, mer, x), as.integer(0)), lower = ifelse(const,
> > 0, -Inf), control = list(trace = cv$msVerbose, iter.max =
> > cv$msMaxIter,
> > rel.tol = abs(0.001/.Call(mer2_deviance, mer, 0))))
> >1: lmer2(Reaction ~ Days + (Days | Subject), sleepstudy)
>
> Thanks for including that traceback, Andrew. As Martin indicated, it
> is difficult for us to diagnose the problem because we are unable to
> reproduce it.
>
> I can tell you what should be happening at that point in the lmer2
> function. Perhaps you could use
>
> debug(lmer2)
>
> and check under your system what is happening for you.
>
> As I'm sure you can determine just be looking at this traceback, this
> is the point in lmer2 where the REML or ML criterion is to be
> optimized using the optimizer nlminb. The object 'mer', of class
> 'mer2', is the internal representation of a mixed-effects model. It
> is described in the Implementation vignette.
>
> The ST slot is a list whose number of components is equal to the
> number of random effects expressions in the model formula. In this
> case it should have one component and that component should be a 2x2
> matrix (it's a matrix, not a Matrix from the Matrix package). The C
> code for mer2_getPars allocates a numeric vector of the correct length
> and fills it out with elements of the lower triangles of these
> matrices starting with the diagonal elements of each matrix. (The
> diagonal elements are the elements of the scale matrices S and the
> elements of the strict lower triangle are the non-trivial elements of
> the unit triangular matrices T.)
>
> I enclose some of the debugger output from my system. Once the mer
> object is created I check that the 'dims' slot has the expected
> entries. In particular the element labeled 'nf' (number of grouping
> factors) should be 1 and the nc slot should be an integer vector of
> length 1 and the first element should be 2.
>
> If the 'dims', 'nc' and 'ST' slots all have the expected contents then
> it would be very mysterious how mer2_getPars managed to fail. I
> suspect that the problem originates one step back in the call to
> mer2_create. In either case it may be necessary to go in and examine
> the execution of the compiled code using a symbolic debugger in order
> to exactly what's going on.
Thanks for your detailed response, Doug. I ran debug(lmer2) as you
suggested, and as you expected, I got the same results as you did. Of
course I would like to dig further into this problem. I have limited
experience using gdb, but I have used it. If you don't mind providing
a brief set of instructions, I will carry them out.
Andrew
--
Andrew Robinson
Department of Mathematics and Statistics Tel: +61-3-8344-9763
University of Melbourne, VIC 3010 Australia Fax: +61-3-8344-4599
http://www.ms.unimelb.edu.au/~andrewpr
http://blogs.mbs.edu/fishing-in-the-bay/
More information about the R-sig-mixed-models
mailing list