brms:如何在分类变量上设置优先级?

问题描述 投票:1回答:1

我正在使用2个类别变量构建二项式回归模型。这来自《统计重新思考》一书中的一个例子。在这本书中,使用重新思考软件包时,我们可以为每个分类变量设置先验,如下所示]

m11.5 <- ulam(
 alist(
   pulled_left ~ dbinom( 1 , p ) ,
   logit(p) <- a[actor] + b[treatment] ,
   a[actor] ~ dnorm( 0 , 1.5 ),
   b[treatment] ~ dnorm( 0 , 0.5 )
) ,
data=d , chains=4 , log_lik=TRUE )

我正在尝试在brms中做同样的事情。


priors <- c(prior(normal(0, 1.5), class = b, coef = "actor"),
            prior(normal(0, 0.5), class = b, coef = "treatment"))

m11.5 <- brm(data = d, family = binomial,
          formula = pulled_left | trials(1) ~ 1 + actor + treatment,
          sample_prior = T, prior = priors,
          cores = 4, chains = 4)

我想为所有提到的演员水平和治疗水平设定先验。但是,上面的代码不会出现以下错误消息,

prior error

使用get_prior后,我看到以下内容(暗示这些级别在内部被分割)

get_prior in brms

我不想为分类变量的每个级别指定先验。我该怎么做?请指教。

r bayesian stan
1个回答
0
投票

您可以粘贴并设置多个系数:

priors <- c(prior(normal(0, 1.5), class = b, coef = paste("actor", 2:7, sep="")),
            prior(normal(0, 0.5), class = b, coef = paste("treatment", 2:4, sep=""))
© www.soinside.com 2019 - 2024. All rights reserved.