Default prior for simplex?

What is the default prior used for a simplex when none is specified? Take this very simple example model:

parameters {
  simplex[2] nu;
  real b0;
}
model {
  b0 ~ normal(0, 2);
}

I can estimate in rstan:

prior_stan <- sampling(priordist, chains = 4, iter = 55000, warmup = 5000, cores = 4)
prior_stan

Inference for Stan model: 2675762a00eb785792355388e5d9f28c.
4 chains, each with iter=55000; warmup=5000; thin=1; 
post-warmup draws per chain=50000, total post-warmup draws=200000.

       mean se_mean   sd  2.5%   25%   50%   75% 97.5%  n_eff Rhat
nu[1]  0.50    0.00 0.29  0.02  0.25  0.50  0.75  0.97 127310    1
nu[2]  0.50    0.00 0.29  0.03  0.25  0.50  0.75  0.98 127310    1
b0     0.01    0.01 2.00 -3.91 -1.33  0.01  1.36  3.93 106860    1
lp__  -2.50    0.00 1.10 -5.46 -2.93 -2.16 -1.71 -1.42  60013    1

Samples were drawn using NUTS(diag_e) at Tue Jul 16 12:11:56 2019.
For each parameter, n_eff is a crude measure of effective sample size,
and Rhat is the potential scale reduction factor on split chains (at 
convergence, Rhat=1).

Does the simplex use a dirichlet(1) by default?

1 Like

Perhaps more precisely dirichlet_lpmf(nu | [1,1]') only adds a constant (or throws an error if nu is not a valid simplex) so it yields the same posterior draws as would not specifying a prior (when nu is a valid simplex by construction because you declared it as such in the parameters block).

3 Likes

dirichlet_lpdf(nu | [1,1]')

3 Likes