(mis)了解MCMCglmm中的先验条件

时间:2019-03-26 23:52:12

标签: r bayesian

我是这个包的新手;我通常将Stan用于贝叶斯模型,但我使用了大量数据,希望能使模型在MCMCglmm中运行得更快。我已经阅读了课程笔记以及readme on 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中的描述无法回答我的问题。 谢谢!

0 个答案:

没有答案