模拟混合线性模型并使用 R 中的 lmerTest 对其进行评估

Simulating a mixed linear model and evaluating it with lmerTest in R

我试图通过模拟模型来了解如何使用混合线性模型来分析我的数据,但我无法重现输入参数。我错过了什么?

我想开始模拟一个模型,每个对象都有一个随机截距。这是我想要模拟和重现的公式:

如果 beta1 (<11) 很小,我发现 gamma00 是固定部分的截距,但我完全无法检索斜率 (beta1)。此外,线性效应并不显着。我的概念错误在哪里?

library(lmerTest)
# Generating data set
# General values and variables
numObj <- 20
numSub <- 100
e      <- rnorm(numObj * numSub, mean = 0, sd = 0.1)
x      <- scale(runif(numObj * numSub, min = -100, max = 100))
y      <- c()
index  <- 1

# Coefficients
gamma00 <- 18
gamma01 <- 0.5
beta1   <- -100
w       <- runif(numSub, min = -3, max = 3)
uo      <- rnorm(numSub, mean = 0, sd = 0.1)
meanBeta0 <- mean(gamma00 + gamma01*w + uo) # I should be able to retrieve that parameter. 

for(j in 1:numSub){
  for(i in 1:numObj){
    y[index] <- gamma00 + gamma01*w[j]+ uo[j] + beta1*x[i] + e[index]
    index <- index + 1
  } 
}

dataFrame2 <- data.frame(y = y, x = x, subNo = factor(rep(1:numSub, each = numObj)), objNum = factor(rep(1:numObj, numSub))) 

model2 <- lmer(y ~  x + 
                 (1 | subNo), data = dataFrame2)
summary(model2)
anova(model2)

这里没有概念上的错误,只是混淆了索引值:您应该使用 index 而不是 i 在数据生成循环中索引 x

基本上由于 mix-up,您使用第一个受试者的 x 值来为所有受试者生成数据,但使用模型中的单个 x 值。