test for significance of interaction in linear mixed models in nlme in R

alittleboy picture alittleboy · Jul 22, 2013 · Viewed 9.9k times · Source

I use lme function in the nlme R package to test if levels of factor items has significant interaction with levels of factor condition. The factor condition has two levels: Control and Treatment, and the factor items has 3 levels: E1,...,E3. I use the following code:

f.lme = lme(response ~ 0 + factor(condition) * factor(items), random = ~1|subject)

where subject is the random effect. In this way, when I run:

summary(f.lme)$tTable

I will get the following output:

factor(condition)Control  
factor(condition)Treatment  
factor(items)E2
factor(items)E3
factor(condition)Treatment:factor(items)E2
factor(condition)Treatment:factor(items)E3

together with Value, Std.Error, DF, t-value, p-value columns. I have two questions:

  1. If I want to compare Control vs. Treatment, shall I just use estimable() function in gmodels and make a contrast of (-1,1,0,0,0,0)?

  2. I am interested in whether levels of items, i.e. E1, E2, E3 are different across condition, so I am interested in whether the interaction terms are significant (by just checking the p-value column??):

    factor(condition)Treatment:factor(items)E2 factor(condition)Treatment:factor(items)E3

However, how can I tell if factor(condition)Treatment:factor(items)E1 is significant or not? It is not shown in the summary output and I think it has something to do with the contrast used in R... Thanks a lot!

Answer

bokov picture bokov · Jul 25, 2013

I respectfully disagree with @sven-hohenstein

In R, the default coding for categorial variables is treatment contrast coding. In treatment contrasts, the first level is the reference level. All remaining factor levels are compared with the reference level.

First, the fixed effects are specified here with a zero intercept, ... ~ 0 + .... This means that the condition coding is no longer contr.treatment. If I'm not mistaken, the main effects of Control and Treatment are now interpretable as their respective deviations from the group mean...

In your model, the factor items has three levels: E1, E2, and E3. The two contrasts test the difference between (a) E2 and E1, and (b) E3 and E1. The main effects of these contrasts are estimated for the level Control of the factor condition, since this is the reference category of this factor.

...when the value of items is at its reference level of E1! Therefore:

  • Main effect Control = how much Control:E1 observations deviate from the mean of item E1.
  • Main effect Treatment = how much Treatment:E1 observations deviate from the mean of item E1.
  • Main effect E2 = how much Control:E2 observations deviate from the mean of item E2.
  • Main effect E3 = how much Control observations deviate from the mean of item E3.
  • Interaction Treatment:E2 = how much Treatment:E2 observations deviate from the mean of item E2
  • Interaction Treatment:E3 = how much Treatment:E3 observations deviate from the mean of item E3.

Thanks for the pointer to estimable, I haven't tried it before. For custom contrasts, I've been (ab)using glht from the multcomp package.