模拟混合线性模型并使用 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
值。
我试图通过模拟模型来了解如何使用混合线性模型来分析我的数据,但我无法重现输入参数。我错过了什么?
我想开始模拟一个模型,每个对象都有一个随机截距。这是我想要模拟和重现的公式:
如果 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
值。