如何在 Stan 中绘制先验分布?

机器算法验证 事先的 斯坦
2022-03-16 19:40:35

我试图在没有数据的情况下运行 Stan 模型来获取先前分布的图。但是,这似乎是不可能的,我收到一条关于我的模型不包含样本的错误消息。那么,有没有办法获得先前的分布?也许可以在没有采样器的情况下运行 Stan?

1个回答

由于我之前的答案已被删除,因此这里有一个更明确的答案,其中一个示例使用了之前的简单抽样:

library(rstan)

model = "
parameters {
  real p;
}
model {
  p ~ normal(1,3);
}
"

fit = stan(model_code = model, 
           pars = c('p'),
           control=list(adapt_delta=0.99, max_treedepth=10),
           iter = 5000, chains = 1, 
           warmup = 1000, verbose=FALSE)

print(fit)

输出:

Inference for Stan model: a067aa7e9d60dcf5fa2c08c3db339374.
1 chains, each with iter=5000; warmup=1000; thin=1; 
post-warmup draws per chain=4000, total post-warmup draws=4000.

      mean se_mean  sd  2.5%   25%   50%   75% 97.5% n_eff Rhat
p     1.02    0.07 3.0 -4.84 -1.02  1.01  3.07  6.83  1607    1
lp__ -0.50    0.02 0.7 -2.47 -0.66 -0.23 -0.05  0.00  1346    1

希望这可以帮助...