Оценка смещения в линейной регрессии и линейной смешанной модели в R-моделировании - PullRequest
0 голосов
/ 11 мая 2019

Я хочу запустить симуляции для оценки смещения в линейной модели и линейной смешанной модели. Смещение E (бета) -бета, где бета - это связь между моим X и Y.

Я сгенерировал свою переменную X из нормального распределения, а Y - из многомерного нормального распределения.

Я понимаю, как я могу рассчитать E (бета) из симуляций, которые представляют собой сумму оценок бета из всех симуляций, деленную на общее количество симуляций, но я не уверен, как я могу оценить истинную бета.

meanY <- meanY + X*betaV

Вот как я сгенерировал среднее Y (betaV - величина эффекта), которое затем используется для генерации многомерного результата Y, как показано ниже.

Y[jj,] <- rnorm(nRep, mean=meanY[jj], sd=sqrt(varY))

Я понимаю, как я могу рассчитать E (бета) из симуляций, которые представляют собой сумму оценок бета из всех симуляций, деленную на общее количество симуляций, но я не уверен, как я могу оценить истинную бета.

Из моего ограниченного понимания, истинная бета-версия получается не из данных, а из настроек, в которых я устанавливаю фиксированное значение беты.

Основываясь на том, как я сгенерировал свои данные, как я могу оценить истинную бета-версию?

1 Ответ

2 голосов
/ 11 мая 2019

Существует несколько методов имитации смещения.Я приведу простой пример с использованием линейной модели. линейная смешанная модель, вероятно, могла бы использовать подобный подход, однако я не уверен, что она подойдет для обобщенной линейной смешанной модели (я просто не уверен).

Простой метод оценки смещения при работе с простой линейной моделью состоит в том, чтобы «выбрать», из какой модели оценивать смещение.Скажем, например, Y = 3 + 4 * X + e.Я выбрал beta <- c(3,4), и мне нужно только имитировать мои данные.Для линейной модели допущения модели:

  1. Наблюдения независимы
  2. Наблюдения обычно распределяются
  3. Среднее значение может быть описано как линейный предиктор

Используя эти 3 предположения, имитировать фиксированный дизайн просто.

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 

, что указывает на небольшой уклон.Чтобы проверить, является ли это смещение значительным, мы могли бы выполнить критерий Вальда или t-критерий (или повторить процесс 1000 раз и проверить распределение результатов).

#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 

Здесь мы видим, что смещениенемного уменьшен, и изменил знак для бета-версии, давая основания полагать, что смещение незначительно.

Изменение дизайна позволит взглянуть на смещения взаимодействий, выбросов и других вещей, используя тот же метод.

Для линейных смешанных моделей можно выполнить один и тот же метод, однако здесь вам придется проектировать случайные величины, которые потребуют дополнительной работы, и реализацию lmer какНасколько я знаю, модель не подходит для всех столбцов Y.

Однако b (случайные эффекты) могут быть смоделированы, как и любые параметры шума.Однако обратите внимание, что, поскольку b является единственным вектором, содержащим один результат моделирования (часто с многомерным нормальным распределением), необходимо будет повторно запустить модель для каждого моделирования b.В основном это увеличит количество повторных процедур подбора модели, чтобы получить правильную оценку смещения.

...