[R] Returning singular nlme objects.

Ken Kelley kkelley at nd.edu
Tue Aug 3 00:00:27 CEST 2004

Hi everyone.

I'm working with nlme and I have a question regarding nlme fits that fail
because of singularity issues. Specifically, there a way to return an nlme
object when the estimation process runs into a singular matrix? For example,
can the results up to the point of an error such as "Error in
solve.default(pdMatrix(a, fact = TRUE)) : system is computationally
singular" or "Error in MEestimate(nlmeSt, grpShrunk) : Singularity in
backsolve at level 0, block 1\n" be returned rather than only an error
message being returned?

Setting the "returnObject" nlme control option to TRUE seems to return an
nlme object only when the maximum number of iterations is reached without
meeting the convergence criterion. However, when in the estimation stage a
matrix becomes singular, the returnObject option does not return the nlme
object up to that point (since the maximum number of iterations wasn't
reached). If one reduces the number of iterations to a value less than the
iteration at which the singularity occurs, the results are output (when
returnObject=TRUE). What I want is for nlme to simply output the current
estimates both when the maximum number of iterations is reached and when a
singularity issue arises. 

I know it isn't generally good to make use of the results of nonconverging
results, but I'm interested in the estimates when the singularity is
realized. Specifically I'll use the information in a simulation study and
compare the results from the converging sets with the nonconverging sets,

Also, suppose one has a set of data where the values are generally small. If
one multiplies the data by some relatively large positive value, thus
rescaling the data, will issues of singular matrices in the estimation stage
be less problematic with the rescaled data than with the original data? 

Thanks very much for any help and/or thoughts,

More information about the R-help mailing list