I am working with a model that involves n^\mathrm{th}-order random walks, for some positive integer n (typically 2 or 3). I’ll spare the details of the model - all that matters is that there is a parameter \theta in the model whose distribution should depend on the order of the random walk. Specifically, I would like to do something like this:
model{
if (n == 2)
theta ~ std_normal();
else if (n == 3)
theta ~ exponential(1);
... //Rest of model
}
Of course, n is fixed data.
My question is whether or not this makes sense, or if it will be horribly inefficient. I don’t know much about the underlying behaviour of Stan in a situation like this, but my hope is that it would simply check n during initialization and subsequently use the corresponding sampling statement for every iteration. On the other hand, it may evaluate the conditions for n at every iteration. If so, would I be better off simply creating different Stan programs for the n = 2 and n = 3 cases?