首先,请注意,上面的模拟数据会产生奇异的模型拟合,因为任何随机因素之间的响应都没有变化。这可以通过简单的修改来克服:
library(lme4)
set.seed(15)
participant <- rep(1:40, each = 30)
session <- rep(rep(1:3, each = 10), times = 40)
item <- rep(1:10, times = 120)
type <- rep(1:2, times = 600)
# score <- rnorm(1200) ##### This line removed
score <- participant + item + rnorm(1200) ##### This line added
data <- cbind(participant, session, item, type, score)
data <- as.data.frame(data)
data$participant <- factor(data$participant)
data$session <- factor(data$session)
data$item <- factor(data$item)
data$type <- factor(data$type)
m <- lmer(score ~ type * session + (1 + type | participant / session) +
(1 | item / session), data = data)
其次,现在注意m
上面的模型不收敛。这是因为固定效应session
也作为随机分组因子包含在内,没有任何意义。一个更明智的选择是:
m0 <- lmer(score ~ type * session + (1 | participant) + (1 | item), data = data)
鉴于数据是简单的随机抽取,我还删除了随机斜率/系数,type
这participant
也没有任何意义——也就是说,每个score
和都没有系统关联。type
participant
> summary(m0)
Linear mixed model fit by REML ['lmerMod']
Formula: score ~ type * session + (1 | participant) + (1 | item)
Data: data
REML criterion at convergence: 3828.3
Scaled residuals:
Min 1Q Median 3Q Max
-4.2095 -0.6430 0.0437 0.6908 3.1569
Random effects:
Groups Name Variance Std.Dev.
participant (Intercept) 136.623 11.689
item (Intercept) 9.856 3.139
Residual 1.024 1.012
Number of obs: 1200, groups: participant, 40; item, 10
Fixed effects:
Estimate Std. Error t value
(Intercept) 25.557744 2.322048 11.007
type2 0.988240 1.988126 0.497
session2 -0.025759 0.101185 -0.255
session3 -0.042207 0.101185 -0.417
type2:session2 -0.028411 0.143098 -0.199
type2:session3 -0.002558 0.143098 -0.018
Correlation of Fixed Effects:
(Intr) type2 sessn2 sessn3 typ2:2
type2 -0.428
session2 -0.022 0.025
session3 -0.022 0.025 0.500
type2:sssn2 0.015 -0.036 -0.707 -0.354
type2:sssn3 0.015 -0.036 -0.354 -0.707 0.500
该模型估计刺激类型、会话数及其交互的固定效应,同时根据要求控制 和 的交叉随机participant
效应item
。
type
如果数据支持这种结构(模拟数据不支持)并且数据生成过程的基本理论表明了这些,session
则可能包括 的随机斜率及其相互作用。从最大随机效应结构开始通常不是一个好主意。