R模拟中线性回归和线性混合模型的偏差估计

R模拟中线性回归和线性混合模型的偏差估计,r,linear-regression,simulation,mixed-models,beta,R,Linear Regression,Simulation,Mixed Models,Beta,我想运行模拟来估计线性模型和线性混合模型中的偏差。偏差是E(β)-β,其中β是我的X和Y之间的关联 我从正态分布生成X变量,从多元正态分布生成Y变量 我了解如何从模拟计算E(β),即所有模拟的β估计值之和除以模拟总数,但我不确定如何估计真实的β meanY <- meanY + X*betaV meanY有几种模拟偏差的方法。我将举一个简单的例子,使用线性模型。线性混合模型可能会使用类似的方法,但我不确定它是否适合广义线性混合模型(我只是不确定) 当使用简单的线性模型时,估计偏差的一个简

我想运行模拟来估计线性模型和线性混合模型中的偏差。偏差是E(β)-β,其中β是我的X和Y之间的关联

我从正态分布生成X变量,从多元正态分布生成Y变量

我了解如何从模拟计算E(β),即所有模拟的β估计值之和除以模拟总数,但我不确定如何估计真实的β

meanY <- meanY + X*betaV

meanY有几种模拟偏差的方法。我将举一个简单的例子,使用线性模型。线性混合模型可能会使用类似的方法,但我不确定它是否适合广义线性混合模型(我只是不确定)

当使用简单的线性模型时,估计偏差的一个简单方法是“选择”从哪个模型估计偏差。比如说
Y=3+4*X+e
。我选择了
测试版
Y[jj,] <- rnorm(nRep, mean=meanY[jj], sd=sqrt(varY))
set.seed(1)
xseq <- seq(-10,10)
xlen <- length(xseq)
nrep <- 100
#Simulate X given a flat prior (uniformly distributed. A normal distribution would likely work fine as well)
X <- sample(xseq, size = xlen * nrep, replace = TRUE)
beta <- c(3, 4) 
esd = 1
emu <- 0
e <- rnorm(xlen * nrep, emu, esd)
Y <- cbind(1, X) %*% beta + e
fit <- lm(Y ~ X)
bias <- coef(fit) -beta

>bias
 (Intercept)            X 
0.0121017239 0.0001369908 
#Simulate linear model many times
model_frame <- cbind(1,X) 
emany <- matrix(rnorm(xlen * nrep * 1000, emu, esd),ncol = 1000)
#add simulated noise. Sweep adds X %*% beta across all columns of emany
Ymany <- sweep(emany, 1, model_frame %*% beta, "+")
#fit many models simulationiously (lm is awesome!)
manyFits <- lm(Y~X)
#Plot density of fitted parameters
par(mfrow=c(1,2))
plot(density(coef(manyFits)[1,]), main = "Density of intercept")
plot(density(coef(manyFits)[2,]), main = "Density of beta")
#Calculate bias, here i use sweep to substract beta across all rows of my coefficients
biasOfMany <- rowMeans(sweep(coef(manyFits), 1, beta, "-"))

>biasOfMany
  (Intercept)             X 
 5.896473e-06 -1.710337e-04