我试图通过模拟模型来了解如何使用混合线性模型来分析我的数据,但我无法重现输入参数。我错过了什么?
我想开始模拟每个主题的随机拦截模型。这是我想要模拟和再现的公式:
如果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)
答案 0 :(得分:2)
这里没有概念错误,只是一个混合索引值:您应该使用index
而不是i
来索引数据生成循环中的x
。
基本上由于混淆,您使用第一个主题的x
值来生成所有主题的数据,但使用模型中的各个x
值。