Re: [R] Conveting SAS Proc mixed to R code

From: Douglas Bates <>
Date: Sat, 16 Apr 2011 08:17:38 -0500

On Fri, Apr 15, 2011 at 8:45 AM, Ben Bolker <> wrote:
> Kevin Wright <kw.stat <at>> writes:
>> > I am trying to teach myself R and replicate some previous SAS analysis.
>> > Could someone please help me translate the following SAS code into R.
>> >
>> > Proc mixed method=ml
>> > Class Group Treatment Stream Time Year;
>> > Model Logrpk=Treatment Time Treatment*Time;
>> > Random Group Stream (Group Treatment) Year(Time);
>> >
>> Assuming you have a data frame "dat" with these factors: Group Treatment
>> Stream Time Year
>> And continuous response: logrpk
>> This code is a starting point: (I'm not sure exactly what the SAS syntax
>> means).
>> require(lme4)
>> m1 = lmer(logrpk ~ treatment*time + (1|Group) + (1|Stream:Group:Treatment) +
>> (1|Year:Time), data=dat)
>  Can I please suggest that (Treatment|Stream:Group) or something
> like it is more appropriate than (1|Stream:Group:Treatment)?  In
> general, what goes on the LEFT of the bar is an intercept or fixed
> effect (i.e. something that varies between groups); what goes on
> the RIGHT of the bar is a grouping variable.  Thus if a fixed effect
> terms ends up on the right of the bar, something funny is going on.

I think it is appropriate to have a fixed-effects term on the right hand side in the form of an interaction. I regard both (Treatment|Stream:Group) and
(1|Stream:Group:Treatment) as interactions between a fixed-effects factor (Treatment) and a random-effects factor (Stream:Group). The basic rule is that the interaction between a fixed-effects term and a random-effects term is a random effect. It is not appropriate, however, to have Treatment on the right hand side when it is *not* in an interactions. A formula of

Response ~ Treatment + (1|Treatment) + ...

is nonsensical.

Basically the model with (1|Stream) + (1|Stream:Group) + (1|Stream:Group:Treatment) is a restricted form of the model with (1|Stream) + (Treatment|Stream:Group) in which the variance-covariance matrix for random-effects from the last term has the "compound symmetry" form. It is easier to see this if you write the second term as (0+Treatment|Stream:Group). mailing list PLEASE do read the posting guide and provide commented, minimal, self-contained, reproducible code. Received on Sat 16 Apr 2011 - 13:19:59 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Sat 16 Apr 2011 - 14:40:31 GMT.

Mailing list information is available at Please read the posting guide before posting to the list.

list of date sections of archive