Skip to content

Doubt about nested aov output

3 messages · Douglas Bates, Ken Knoblauch

#
On 9/8/05, Ken Knoblauch <knoblauch at lyon.inserm.fr> wrote:
I prefer to have a grouping factor constructed with unique levels for
each distinct unit.  The only reason I mention constructions like
Treatment:Rat in the original part of this thread is that data are
often provided in that form.

Reusing "subject" labels within another group is awkward and can be
error prone.  One of the data sets I examine in the MlmSoftRev
vignette of the mlmRev package is called Exam and has student
identifiers within schools.  The student identifiers are not unique
but the school:student combination should be.  It isn't.  These data
have been analyzed in scores of books and articles and apparently none
of the other authors bothered to check this.  There are some
interesting ramifications such as some of the schools that are
classified as mixed-sex schools are likely single-sex schools because
the only student of one of the sexes in that school is apparently
mislabelled.

BTW, in your example you have only one observation per level of 'obs'
so you can't use obs as a grouping factor as this variance component
would be completely confounded with the per-observation noise.
#
Your response nicely clarifies a question that I've had for a long time,
but which I've dealt
with by giving each subject a unique label.  Unless I'm missing something,
both techniques should
work as the toy example below gives exactly the same output in all 3 cases
below (forgetting
about the convergence problem).  Would there be a reason to prefer
labeling the levels
one way or another or is it just a matter of convenience?

library(lmer)
y <- rnorm(15)
cond <- gl(3, 5, 15)
obs <- gl(15, 1)
subj <- gl(5, 1, 15)
dd <- data.frame(y = y, cond = cond, obs = obs, subj = subj)

l1 <- lmer(y~cond + (1|cond:obs), dd)
l2 <- lmer(y~cond + (1|cond:subj), dd)
l3 <- lmer(y~cond + (1|obs), dd)

Douglas Bates a ??crit:

The difference between models like
  lmer(Glycogen~Treatment+(1|Rat)+(1|Rat:Liver))
and
  lmer(Glycogen~Treatment+(1|Treatment:Rat)+(1|Treatment:Rat:Liver))

is more about the meaning of the levels of "Rat" than about the
meaning of "Treatment".  As I understood it there are three different
rats labelled 1.  There is a rat 1 on treatment 1 and a rat 1 on
treatment 2 and a rat 1 on treatment 3.  Thus the levels of Rat do not
designate the "experimental unit", it is the levels of Treatment:Rat
that do this.
#
Thank you for your response.  The single response/observer most probably
explains
the complaints that lmer was giving for my example.  Maybe this small
modification
provides a better example and corrects a more serious error in my previous
post:

library(lme4)
y<-rnorm(30)
cond <- rep(gl(3,5,15), 2)
obs<-rep(gl(15,1), 2)
subj<-rep(gl(5,1,15), 2)
dd<-data.frame(y=y,cond=cond,obs=obs,subj=subj)

l1 <- lmer(y~cond + (1|cond:obs), data=dd)
l2 <- lmer(y~cond + (1|cond:subj), data=dd)
l3 <- lmer(y~cond + (1|obs), dd)

Understanding the notation is often about 99% of the job, and it is
very helpful to see multiple ways to accomplish the same thing.