Question on defining the domain of a parameter

Hi all, hope you doing well.

I know that to define a real parameter in a specific interval we should do it in the parameter block using, for example for \alpha:

real <lower=a,upper=b> alpha;

in mathematical notation this means \alpha \in [a,b] .

Is there a way to define this parameter in an interval which has the form [a,b]U[c,d] for example, [0,1]U[2,10]?, this example implies that, for instance 1.5 is not in the domain of \alpha.

Thanks for the attention.

The short answer is no, but I think the long answer is “Why do you want to do this?”

I think there’s a very good chance that this community might be able to come up with some good suggestions for how to get a good model for your data if you explain why you want a parameter on a discontinuous domain.


@jsocolar asks good questions. If you are sure these are valid hard bounds, you can try to either

  • map an interval [a, b] to [c, d]\cup[e,f] with if else clause. This introduces discontinuity and may stress the sampler.
  • or you can scale & shift a sigmoid function so it transits smoothly from d to e. This way you end with only [c, f] bounds. You need good data to invalidate the transition interval in posterior.