[R] Conveting SAS Proc mixed to R code

Douglas Bates bates at stat.wisc.edu
Sat Apr 16 15:17:38 CEST 2011


On Fri, Apr 15, 2011 at 8:45 AM, Ben Bolker <bbolker at gmail.com> wrote:
> Kevin Wright <kw.stat <at> gmail.com> 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).



More information about the R-help mailing list