[R-sig-ME] Dropping correlations bet. random-effects in lme4 syntax

Phillip Alday ph||||p@@|d@y @end|ng |rom mp|@n|
Sat Oct 3 19:40:12 CEST 2020


On 03/10/2020 19:24, Simon Harmel wrote:
> Thanks for the additional information about the use of `0+` in the
> context of categorical variables:)
>
> So, by splitting the specification of the grouping variable like:
>
> lmer(y ~ A * B * C + (A * C | group) + (B|group) , data = data)   
>
> I get the below correlation matrix. So, here we have created 2
> different intercepts, one for each "split" of the same grouping
> variable, right?

Yes, by default R adds in an intercept. I recommend always writing 1+ or
0+ to make explicit what you want.

(This was what I meant with "Note that life gets tricky with the
interaction terms." in my first reply.)

>
> I ask this because B has no correlation with the first split's
> (intercept) but it has a singular correlation with the second split's
> (intercept). The output looks confusing to a novice like me.
>
>
>             (Intercept)      A      C    A:C (Intercept)  B
> (Intercept)       1.000 -0.794 -0.195  0.953           0  0
> A                -0.794  1.000  0.278 -0.854           0  0
> C                -0.195  0.278  1.000  0.028           0  0
> A:C               0.953 -0.854  0.028  1.000           0  0
> (Intercept)       0.000  0.000  0.000  0.000           1 -1
> B                 0.000  0.000  0.000  0.000          -1  1

Singularity isn't a problem per se -- it's mathematically well defined
and being able to fit singular covariance matrices for the random
effects was one of the algorithmic innovations lme4 has compared to its
predecessor nlme.

Singularity can be a problem for inference (because it's often a sign of
overfitting).... but it makes sense here. B has no correlation with the
first intercept because you set it to be zero via your formula
specification, so that term is forced to be zero in the model
computation. The second intercept is perfectly correlated with B because
it (the second intercept) is redundant in the model, but it can't
correlate with the first intercept (because that correlation is forced
to zero by your model specification) and so it collapses into B.

If B is continuous, you can avoid this with 0+B. If B is categorical,
then 0+B will still be overparameterized, but you can try 0+dummy(B) to
set up indicator variable for one of the two levels. (I can tell from
your output that B is continuous or only has two levels because there is
only one slope for it.)

Phillip

>
> On Sat, Oct 3, 2020 at 11:52 AM Phillip Alday <phillip.alday using mpi.nl
> <mailto:phillip.alday using mpi.nl>> wrote:
>
>     I have no idea what 0* means, but 0+ means "suppress the
>     intercept" (which has knock-on effects for categorical variables
>     and whether they're represented in the model as (nlevels-1)
>     contrasts or nlevels).
>
>     For the other things: try it out. The output of summary(m1) will
>     show you which levels and correlations were kept.
>
>     On 03/10/2020 18:44, Simon Harmel wrote:
>>     Thanks Phillip. What would be the meaning of placing `0 +` next
>>     to any of the random effects (e.g., B) as shown in m2?
>>
>>     m1 <- lmer(y ~ A * B * C + (A * C | group) + (B|group) , data =
>>     data)  
>>
>>     m2 <- lmer(y ~ A * B * C + (A * 0+ B * C  | group), data = data)  
>>
>>     On Sat, Oct 3, 2020 at 11:33 AM Phillip Alday
>>     <phillip.alday using mpi.nl <mailto:phillip.alday using mpi.nl>> wrote:
>>
>>         You can split the specification of your grouping to achieve
>>         this, at
>>         least in part:
>>
>>         lmer(y ~ A * B * C + (A * C | group) + (B|group) , data = data)
>>
>>         Note that life gets tricky with the interaction terms.
>>
>>         Phillip
>>
>>         On 03/10/2020 06:35, Simon Harmel wrote:
>>         > Hello all,
>>         >
>>         > I know to drop all correlations among all level-1
>>         predictors in the random
>>         > part of an lmer() call, I can use `||`. But I was wondering
>>         how to drop
>>         > correlations (a) "individually" or (b) "in pairs"?
>>         >
>>         > Example of (a) is how to drop the correlation of B with
>>         others (A & C)?
>>         > Example of (b) is how to drop the correlation between B and C?
>>         >
>>         > lmer(y ~ A * B * C + (A * B * C  || group), data = data)
>>         >
>>         > Thanks,
>>         > Simon
>>         >
>>         >       [[alternative HTML version deleted]]
>>         >
>>         > _______________________________________________
>>         > R-sig-mixed-models using r-project.org
>>         <mailto:R-sig-mixed-models using r-project.org> mailing list
>>         > https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
>>

	[[alternative HTML version deleted]]



More information about the R-sig-mixed-models mailing list