我在哪里声明 Stan 中的先验参数?

机器算法验证 r 斯坦
2022-03-14 12:27:38

我正在使用rstan. 这些模型中的每一个在顶级分布之前都有一个单元信息。单位先验的参数最初存储在 Rlist中。我的问题是:

  1. list我是否从存储其余数据的位置传递特定模型的单元信息先验参数?
  2. 我在哪里声明这些先验参数?在参数块中?

谢谢。

1个回答

我会区分先验分布和先验分布的参数。当我开始使用 Stan 时,我会将参数设置为先验分布,就像一些值一样。所以在模型步骤中,我会有类似的东西

model {    
     mu ~ normal(0, 1)
     y ~ normal(mu, s)
}

对于 y 分布的平均系数的正态先验。

然而,随着我更多地使用 Stan,我倾向于将它们包含在数据步骤中(即,您引用的列表中其余数据的存储位置)。以这种格式,我将补充数据步骤

data {
    real mu_prior_1
    real<lower=0> mu_prior_2
}

并将模型步骤调整为类似

model {    
     mu ~ normal(mu_prior_1, mu_prior_2)
     y ~ normal(mu, s)
}

我一直这样做的主要原因是因为它使我更容易更改先验而不更改 Stan 代码的其余部分。