Ordered Simplex

It is quite possible to use an ordered simplex if you do

data {
  int<lower=1> K;
  vector<lower=0>[K] alpha;
}
parameters {
  positive_ordered[K] lambda;
}
transformed parameters {
  simplex[K] pi = lambda / sum(lambda);
}
model {
  // implies pi ~ dirichlet(alpha)
  target += gamma_lpdf(lambda | alpha, 1);
  // use pi in your likelihood
}

Opinions differ as to whether this is a disaster or works perfectly fine.

3 Likes