[英]How do I get properly accounted for nested random effects with lme4?
我有一個數據框架,其中包含subject
, wd
和group
變量,以及一個value
響應變量。 每個主題被分配到一組,並在每個工作日進行7次測量。 因為每個主題都完全嵌套在一個組中,所以我想對subject
和group
使用嵌套的隨機效果模型,並為wd
添加第三個隨機效果。 目前,我正在這樣做:
model = lmer(value ~ 1+ (1|wd) + (1|group) + (1|subject),
data = dframe, REML = 0)
我在本指南的第40頁上找到了基於此的代碼。 我已經使用了REML = TRUE
和REML = 0
。 但是,當我使用VarCorr(model)$variances
,我得到
Groups Name Std.Dev.
subject (Intercept) 94.9534363
wd (Intercept) 42.5931401
group (Intercept) 0.0015608
Residual 0.9589836
該組方差與我用來生成數據的代碼沖突,該代碼的組均值為36.9、28.78和-15.269。 當我查看“殘差”以預測隨機效果(使用ranef
)與真正的隨機效果時,我得到的殘差與其所在的組具有非常高的相關性(如果我對residuals ~ group
ranef
建模,則R平方值為超過0.9)。
如何正確擬合R中的嵌套隨機效應模型? 我更喜歡使用lme4,但是任何軟件包都足夠。
這是我用來生成數據的代碼:
library(dplyr)
generate_data <- function(n = 10, g = 3, seed = 1, mean.overall = 300,
sigma.g = 50, sigma.wd = 50,
sigma.subject = 100, sigma. = 30) {
set.seed(seed)
means.wd = rnorm(7) * sigma.wd
means.g = rnorm(g) * sigma.g
means.subject = rnorm(n*g) * sigma.subject
dframe = data.frame(subject = rep(1:(g*n), each = 7),
wd = rep(1:7, g*n),
group = rep(1:g, each = (7*n)))
dframe = mutate(dframe,
value = mean.overall + means.wd[wd] +
means.subject[subject] + means.g[group] + rnorm(7*g*n),
subject = factor(subject, levels = 1:(n*g)),
wd = factor(wd),
group = factor(group, levels = 1:g))
dframe$value = round(pmax(5,dframe$value))
truefx = list(wd = means.wd, group = means.g,
subject = means.subject)
list(data = dframe, effects = truefx)
}
dframe = generate_data()$data
我猜您希望分組作為固定效果,因為只有幾個級別。 同樣,不需要在工作日內嵌套工作日,因為每個主題/工作日組合只有一個觀測值。 如果是這樣,您所需要做的就是
lmer(value ~ group + (1|subject), data = dframe)
尚不清楚工作日是否真正地嵌套在主題中。 如果所有科目都在相同的工作日內進行,則其他方法可能更合適。 對於stats.stackexchange.com,這是一個更好的問題。
如果您確實確實想嵌套這些,那么可能會發生類似的事情。
lmer(value ~ (1|group/subject/wd), data = dframe)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.