(неправильно) понимание приоров в MCMCglmm - PullRequest
1 голос
/ 27 марта 2019

Я новичок в этом пакете; Я обычно использую Stan для байесовских моделей, но я использую много данных и надеюсь, что смогу заставить модели работать быстрее в MCMCglmm. Я прочитал заметки о курсе, а также readme на github . Они действительно полезны и имеют отличные описания, но я до сих пор не понимаю, как устанавливать приоры.

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

library(MCMCglmm)
# inverse logit function for simulation
inv.logit <- function(x){
  exp(x)/(exp(x)+1)
}
# simulate some data
set.seed(123)
n <- 1000
covariates <- replicate(3, rnorm(n, 0, .5))
X <- cbind(rep(1, length(covariates[,1])),covariates)
colnames(X) <- c('int', 'X1', 'X2', 'X3')
coefs <- c(1, -1, -.5, 0.3)
resp <- X %*% coefs
psi <- inv.logit(resp)
ind <- rep(1:10, floor(n/10)) # assigning individuals for random effect, but it's not important
n_inds <- length(unique(ind))
y <- rbinom(n, 1, psi)
df <- data.frame(ind, y, X)

# priors: I really don't know what I'm doing here
prior1 <- list(R = list(V = 2, n = 1, fix=1),
               G = list(G1 = list(V = diag(3), n = 3)))

# run the model
glmm <- MCMCglmm(y ~ X1 + X2 + X3,
                 random= ~ us(1 + ind), # having random slope and random intercept for ind
                 family = "categorical",
                 data = df,
                 prior=prior1
                 )

Если бы я выполнял это в Stan, я бы установил приоры для каждого ковариата фиксированного эффекта: Beta ~ normal (0, sigma_beta) и гиперприор: sigma_beta ~ gamma (2,1). (Хотя я также был бы счастлив, просто установив априор в виде Beta ~ normal (0,100) или что-то вроде этого.) Я бы использовал аналогичные априоры для случайных эффектов. Я понимаю, что MCMCglmm более ограничен в дистрибутивах, но я действительно не понимаю обозначения. Чтобы было ясно, мне не очень интересно указывать приоры в этом примере модели, я пытаюсь понять, как это делается.

Где-нибудь я могу найти определение того, что именно подразумевается под каждым из значений, которые входят в предыдущий (например, V, n, alpha, ...), и как эти значения соответствуют тому, что мы записали бы в полное описание модели приоры? Или кто-то готов объяснить это более простым людям, таким как я? Описания в примечаниях к курсу и github не смогли ответить на мой вопрос. Спасибо!

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