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

时间:2018-03-09 13:04:36

标签: r lme4 mixed-models lmertest

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

我想开始模拟每个主题的随机拦截模型。这是我想要模拟和再现的公式: enter image description here

如果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)

enter image description here

1 个答案:

答案 0 :(得分:2)

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

基本上由于混淆,您使用第一个主题的x值来生成所有主题的数据,但使用模型中的各个x值。