I read that as g[j] < s[j] < 1 rather than g[j] + s[j] < 1.
You can still use a simplex, but now you don't need to add
and can just have:
> g <- to_vector(theta[, 1]);
> s <- to_vector(theta[, 2]);
You can add whatever prior you like on top of the implicit
uniform over values meeting the constraint that 0 < g[j] + s[j] < 1.
But if you try to write
> g[j]~beta(a_g,b_g) and s[j]~beta(a_s,b_s)
and mean the joint prior to be
p(g[j], s[j] | a_g, b_g, a_s, b_s)
= beta(g[j] | a_g, b_g) * beta(s[j] | a_s, b_s)
you have a problem because it doesn't integrate to 1 over the
values of g and s meeting the constraint that 0 < g + s < 1.
If a and b are constants, it'll only be off by a constant, but
if they are parameters, you have to figure out how to account
for them, like taking the second distribution over s to be
truncated. That is, take the prior to be
p(g[j], s[j] | a_g, b_g, a_s, b_s)
= beta(g[j] | a_g, b_g) * beta(s[j] | a_s, b_s) T[0, g[j]]
where the second truncation means to divide by the cdf of beta
up to g[j] with parameters a_s and b_s.
- Bob