感谢@amoeba 并在此处使用@BenBolker 的简短评论
dummy()通过使用辅助函数构造一个指示变量以乘以各个感兴趣的水平,可以稍微笨拙地实现扩展,例如允许每个(固定效应)组的随机效应的不同残差或不同方差-协方差矩阵。
我们找到了问题的根源。
解决方案如下:
Y ~ X*Condition +
(X*Condition | Subject) +
(0 + dummy(Condition, "A") + X:dummy(Condition, "A") | Trial) +
(0 + dummy(Condition, "B") + X:dummy(Condition, "B") | Trial)
summary(model)随机效应产生 :
Groups Name Variance Std.Dev. Corr
subject (Intercept) 0.89343 0.9452
X 0.11695 0.3420 -0.85
ConditionB 0.66731 0.8169 -0.33 0.06
X:ConditionB 0.07391 0.2719 0.34 -0.05 -0.47
Trial dummy(Condition, "A") 0.63854 0.7991
dummy(Condition, "A"):X 0.09372 0.3061 -0.76
Trial.1 dummy(Condition, "B") 0.88833 0.9425
dummy(Condition, "B"):X 0.12175 0.3489 -0.60
这现在很有意义,因为只有可以计算的相关性是在特定条件下的截距和斜率之间(因为它们是针对相同的试验估计的)。条件之间的相关性是毫无意义的。
此外,coef(model)$Trial现在显示逻辑值:
dummy(Condition, "A") dummy(Condition, "A"):X dummy(Condition, "B") dummy(Condition, "B"):X (Intercept) X ConditionB X:ConditionB
A1 0.9198822 0.0209849 0 0 2.703544 -0.9929765 -0.07102448 0.2415836
A2 -1.3029020 0.3894812 0 0 2.703544 -0.9929765 -0.07102448 0.2415836
A3 1.1294702 -0.2475288 0 0 2.703544 -0.9929765 -0.07102448 0.2415836
B1 0.000000000 0.0000000000 1.21725268 -0.305314643 2.703544 -0.9929765 -0.07102448 0.2415836
B2 0.000000000 0.0000000000 0.88317976 -0.209529267 2.703544 -0.9929765 -0.07102448 0.2415836
B3 0.000000000 0.0000000000 0.27859781 -0.065708851 2.703544 -0.9929765 -0.07102448 0.2415836
- 所有试验的固定效果相同
- dummy(Condition, "A") 截距和 dummy(Condition, "A"):X 斜率仅针对条件 A 计算,在条件 B 试验中它们估计为 0,反之亦然。
注意当为此目的指定随机效应时,重要的是:
- 独立指定不同试验组的随机效应,而不是在相同的
|Trial. 如果您不这样做,lme4将估计所有试验的随机效应,而不仅仅是给定条件。
- 包括 0,以防止
lme4在所有试验中包括一般随机截距。