[R] PBIB datataset
bates at stat.wisc.edu
Mon Dec 20 23:37:56 CET 2004
(Ted Harding) wrote:
> On 20-Dec-04 Douglas Bates wrote:
>>This is a new version of SASmixed that was uploaded a couple of days
>>ago. I changed it so that the fits are done with the lme4 version of
>>lme. It should be faster and more reliable than the version of lme in
>>the nlme package.
>>This version of SASmixed has a vignette that provides comparative
>>analyses in lme for the examples in "SAS System for Mixed Models". The
>>specification of models in the new lme is occasionally different from
>>the older specification. Don't pay too much attention to the textual
>>descriptions - look at the examples in the appendices. I haven't
>>finished rewriting the textual description from an old, old version.
>>Those who (like me) cringe at the way that models with crossed random
>>effects needed to be specified in the old lme may find it interesting
>>that the Demand example now specifies the model fit as
>>Demand> fm1Demand <- lme(log(d) ~ log(y) + log(rd) + log(rt) +
>> log(rs), data = Demand, random = list(State = ~1, Year = ~1))
>>The lme4 and nlme packages should not be loaded simultaneously.
>>Use one or the other but not both.
> Thanks a lot for these clarifications. This still leaves me with
> a question or two.
> Suppose I want (as I do) to work through Pinheiro & Bates, example
> by example. Some datasets are here (lme4), others there (SASmixed,
> nlme), etc.
> Does this mean I need to start afresh, loading just the package
> with the dataset currently of interest?
> I'm a touch confused about the distribution (a) of datasets,
> (b) of the R functions needed to analyse them according to
> Pinheiro & Bates, over the packages! If I load the package
> containing dataset A, will it include the functions used in
> P&B for that dataset? Or might I need to load another one
> as well? and, if so, might I encounter the sort of clash
> you hint at above?
> (I know I could probably check it in detail in each case as
> it arises, but I guess you know your way arond all this better
> than someone who hasn't been there yet).
> With thanks (and congratulations on what looks like a very
> well conceived book on the topic),
If you want to work through P&B you should use the nlme package. The
only data set mentioned in the book and not available in the nlme
package is PBIB which, as you have discovered, is in SASmixed. The data
sets in SASmixed (and in the lme4 package) are data frames (as opposed
to groupedData objects). That is, these data sets don't depend upon
classes defined in the package. Hence you could attach the SASmixed
package, save the PBIB data set to a file, restart R, attach the nlme
package and then load the PBIB data from the file that you just saved.
Then you would have a complete set of data sets for use with the nlme
By the way, you can save yourself some typing by checking the 'scripts'
directory in the installed package. It contains R scripts to reproduce
(most of) the analyses in our book.
The reason that I have to say "most of" is because the examples in the
book were done with S-PLUS (version 3.4, I believe) and sometimes the
results in R are different from those in S-PLUS. These models are fit
using numerical optimizers and the numerical optimizer code in S-PLUS is
different from the optimizer code in R. On this particular set of
problems the optimizer used by ms() function in S-PLUS tends to perform
better than the optimizers in either the nlm() or optim() functions in R.
After we finished that book I continued to work on computational methods
for linear mixed effects models. The lme4 package is the fruit of that
development. Superficially the lme function in the lme4 package looks
very much like the one in the nlme package but internally they are very
different. The most obvious difference is the use of S4 classes and
methods in lme4, as opposed to the S3 classes and methods in nlme.
However, there are many, many other differences in the representation
and the computational methods.
The lme4 package will eventually replace the nlme package but currently
it does not implement nlme or gls or gnls functions so I don't want to
replace the nlme package. Because both these packages define an lme
function and classes but the classes are incompatible, R will get very
confused if you load both packages in the same session.
As mentioned above, the design of the lme function in the lme4 package
is very different from that in the nlme package. It is more general in
some ways and less general in others. The big gains are the ability to
handle crossed and partially crossed random effects in a much cleaner
way than could be done in the nlme package. The lme4 package uses a
(well actually two but I plan to reduce it to one) sparse matrix
representation of the lme model and data that makes it possible to fit
such models faster and more reliably than in the past.
More information about the R-help