This is a question about automatic transformation of constrained distributions.
The docs on compiler design say “Random variables whose distributions have a constrained support are transformed using a bijector from Bijectors.jl so that the sampling happens in the unconstrained space.”
Suppose the following model:
@model function gdemo(x, y)
s² ~ InverseGamma(2, 3)
mu ~ Uniform(0, 1)
x ~ Normal(mu, sqrt(s²))
return y ~ Normal(mu, sqrt(s²))
end
Questions:
- If I use an HMC sampler (e.g. NUTS), do I need to manually transform the distribution of mu or can I rely on Turing.jl to do this for me?
- If I can, how can I find out the details of the transformation?
- When I look at my samples in the returned chain, will they be in the unconstrained space or will they be in the original constrained space?
Thank you!