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

Simon Harmel @|m@h@rme| @end|ng |rom gm@||@com
Sat Oct 3 20:54:13 CEST 2020


Awesome, thanks!

On Sat, Oct 3, 2020 at 12:40 PM Phillip Alday <phillip.alday using mpi.nl> wrote:

> 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>
> 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>
>> 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 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