X_lowerbound__ or X_interval__ in the Trace

Hello,
I have been playing with Bounded variables like that:
alpha = pm.Bound(pm.Normal, lower=5.0)('alpha', mu=75, sd=50)
and then I save the Trace:
db = pm.backends.Text("trace1")
In that case I get in the chain0.csv in the trace1 folder a list of the values of alpha but also a list of values for _alpha_lowerbound__ that varies from like 4.24 to 3.28 (when I input a lower bound of 5).

The same happens if I add an upper value, then there is an _alpha_interval__ that appears.

What does this correspond to? And what do these values mean? I guess it’s something under the hood that I should not worry about, but I’d like to be sure.

When you define a Random Variable with bounds (e.g., a Beta distributed Variable), PyMC3 will transform it to Real (projecting it from [0, 1] --> R). Internally, PyMC3 works with the transformed variables: it will take sample of the transformed Variables, and the loglikelihood function evaluated on the transformed variables. You can find more information on the doc: http://docs.pymc.io/notebooks/api_quickstart.html#Automatic-transforms-of-bounded-RVs

The reason is that, many of the modern method (NUTS, ADVI, to name a few) either operates on the real domain or they dont work well with bounded variables.