我刚刚开始学习使用Stan和rstan
。除非一直对JAGS / BUGS的工作方式感到困惑,否则我一直认为您必须为要从中提取模型的每个参数定义某种先验分布。似乎您不必根据Stan的文档在Stan中执行此操作。这是他们在此处提供的示例模型。
data {
int<lower=0> J; // number of schools
real y[J]; // estimated treatment effects
real<lower=0> sigma[J]; // s.e. of effect estimates
}
parameters {
real theta[J];
real mu;
real<lower=0> tau;
}
model {
theta ~ normal(mu, tau);
y ~ normal(theta, sigma);
}
既mu
没有tau
定义先验也没有。在将我的一些JAGS模型转换为Stan时,我发现如果我对许多参数(大多数)具有未定义的先验值,它们将起作用。
问题是,当我有没有定义的先验的参数时,我不理解Stan在做什么。是否默认为统一分布?这是HMC的特殊属性之一,它不需要为每个参数都定义一个先验吗?