这是一个非常有趣的问题。我一直在思考这个和相关的事情。
对我来说,理解这一点的关键是要认识到:分组因子的随机截距并不总是足以捕捉数据中超过残差变化的随机变化。正因为如此,我们有时会看到具有随机截距的模型,用于固定因子和分组变量之间的交互(甚至有时随机截距仅针对固定因子)。通常,我们建议一个因素可以是固定的或随机的(截距),但不能两者兼而有之 - 但是有一些重要的例外情况,您的示例就是其中之一。
理解这一点的另一个障碍是对于像我这样来自观察性社会和医学科学的多级建模/混合模型背景的人来说,我们经常陷入重复测量和嵌套与交叉随机效应的思考,而没有理解事物是实验分析略有不同。稍后再详细介绍。
从评论来看,我们都发现了同样的事情。在重复测量方差分析的背景下,如果您想获得相同的结果,lmer
那么您适合:
y ~ A + B + (1|id) + (1|id:A) + (1|id:B)
我在C
不失一般性的情况下丢弃了因子。
有些人指定的原因1|id/A/B
是他们正在使用nmle:lme
而不是lme4:lmer
. 我不确定为什么需要这样做,lme()
但我相当确定要复制重复测量方差分析 - 每个组合id
和因素都有变化 - 然后你将上面的模型拟合到lmer()
. 请注意,这(1|id/A/B)
似乎相似,但它是错误的,因为它也适合(1|id:A:B)
与剩余方差无法区分的情况(如您的评论中所述)。
重要的是要注意(因此值得重复),我们只适合这种类型的模型,我们有理由相信每个组合id
和因素都有变化。通常对于混合模型,我们不会这样做。我们需要了解实验设计。一种常见的实验类型是所谓的裂区设计,其中也使用了块。这种类型的实验设计采用不同“水平”的随机化 - 或者更确切地说是不同的因素组合,这就是为什么对此类实验的分析通常包括乍一看似乎很奇怪的随机截距项。然而,随机结构是实验设计的一个属性,如果不了解这一点,几乎不可能选择正确的结构。
所以,关于你的实际问题,实验有重复因子设计,我们可以使用我们的朋友,模拟,进一步调查。
我们将为模型模拟数据:
y ~ A + B + (1|id)
和
y ~ A + B + (1|id) + (1|id:A) + (1|id:B)
看看当我们使用这两个模型来分析两个数据集时会发生什么。
set.seed(15)
n <- 100 # number of subjects
K <- 4 # number of measurements per subject
# set up covariates
df <- data.frame(id = rep(seq_len(n), each = K),
A = rep(c(0,0,1,1), times = n),
B = rep(c(0,1), times = n * 2)
)
#
df$y <- df$A + 2 * df$B + 3 * df$id + rnorm(n * K)
m0 <- lmer(y ~ A + B + (1|id) , data = df)
m1 <- lmer(y ~ A + B + (1|id) + (1|id:A) + (1|id:B), data = df)
summary(m0)
m0
是这些数据的“正确”模型,因为我们只是创建y
了固定效应id
(我们用随机截距捕获)和单位方差。这有点滥用,但它很方便并且可以满足我们的要求:
Groups Name Variance Std.Dev.
id (Intercept) 842.1869 29.0205
Residual 0.9946 0.9973
Number of obs: 400, groups: id, 100
Fixed effects:
Estimate Std. Error t value
(Intercept) 50.47508 2.90333 17.39
A 1.01277 0.09973 10.15
B 2.06675 0.09973 20.72
正如我们所看到的,我们恢复了残差的单位方差和固定效应的良好估计。然而:
> summary(m1)
Random effects:
Groups Name Variance Std.Dev.
id:B (Intercept) 0.000e+00 0.0000
id:A (Intercept) 8.724e-03 0.0934
id (Intercept) 8.422e+02 29.0204
Residual 9.888e-01 0.9944
Number of obs: 400, groups: id:B, 200; id:A, 200; id, 100
Fixed effects:
Estimate Std. Error t value
(Intercept) 50.47508 2.90334 17.39
A 1.01277 0.10031 10.10
B 2.06675 0.09944 20.78
这是一个奇异的拟合 - 对术语方差的估计为零id:B
并且接近于零id:A
- 我们碰巧知道在这里是正确的,因为我们没有模拟这些“水平”的任何方差。我们还发现:
> anova(m0, m1)
m0: y ~ A + B + (1 | id)
m1: y ~ A + B + (1 | id) + (1 | id:A) + (1 | id:B)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
m0 5 1952.8 1972.7 -971.39 1942.8
m1 7 1956.8 1984.7 -971.39 1942.8 0.0052 2 0.9974
意味着我们非常喜欢(正确的)模型m0
因此,现在我们也在这些“级别”上模拟具有变化的数据。由于m1
是我们要模拟的模型,我们将其设计矩阵用于随机效应:
# design matrix for the random effects
Z <- as.matrix(getME(m1, "Z"))
# design matrix for the fixed effects
X <- model.matrix(~ A + B, data = df)
betas <- c(10, 2, 3) # fixed effects coefficients
D1 <- 1 # SD of random intercepts for id
D2 <- 2 # SD of random intercepts for id:A
D3 <- 3 # SD of random intercepts for id:B
# we simulate random effects
b <- c(rnorm(n*2, sd = D3), rnorm(n*2, sd = D2), rnorm(n, sd = D1))
# the order here is goverened by the order that lme4 creates the Z matrix
# linear predictor
lp <- X %*% betas + Z %*% b
# add residual variance of 1
df$y <- lp + rnorm(n * K)
m2 <- lmer(y ~ A + B + (1|id) + (1|id:A) + (1|id:B), data = df)
m3 <- lmer(y ~ A + B + (1|id), data = df)
summary(m2)
'm2' 是这里的核心模型,我们得到:
Random effects:
Groups Name Variance Std.Dev.
id:B (Intercept) 6.9061 2.6279
id:A (Intercept) 4.4766 2.1158
id (Intercept) 2.9117 1.7064
Residual 0.8704 0.9329
Number of obs: 400, groups: id:B, 200; id:A, 200; id, 100
Fixed effects:
Estimate Std. Error t value
(Intercept) 10.3870 0.3866 26.867
A 1.8123 0.3134 5.782
B 3.0242 0.3832 7.892
截距的 SDid
有点高,但除此之外,我们对随机和固定效应有很好的估计。另一方面:
> summary(m3)
Random effects:
Groups Name Variance Std.Dev.
id (Intercept) 6.712 2.591
Residual 8.433 2.904
Number of obs: 400, groups: id, 100
Fixed effects:
Estimate Std. Error t value
(Intercept) 10.3870 0.3611 28.767
A 1.8123 0.2904 6.241
B 3.0242 0.2904 10.414
虽然固定效应点估计还可以,但它们的标准误差更大。当然,随机结构是完全错误的。最后:
> anova(m2, m3)
Models:
m3: y ~ A + B + (1 | id)
m2: y ~ A + B + (1 | id) + (1 | id:A) + (1 | id:B)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
m3 5 2138.1 2158.1 -1064.07 2128.1
m2 7 1985.7 2013.7 -985.87 1971.7 156.4 2 < 2.2e-16 ***
表明我们非常喜欢m2