The variable lp__
starts at 0.
The parameters block increments it with the log absolute Jacobian determinant of the transform for any constrained variables.
The model block increments lp_
with the value of the right-hand side of any target +=
statement.
The model block increments lp_
with each sampling statement, adding the log density, but dropping constants that do not depend on parameters. If you’d rather keep the proportionality constants, use target +=
.
That’s it. None of the other blocks touch it.
Its final value is the log density on the unconstrained parameter scale up to a constant that doesn’t depend on the parameters (and stays fixed iteration to iteration).
The value of lp__
at any given point is what you get from target()
if you want to track it by printing. For example, you can print at the top of the model to see the starting point being the change-of-variables adjustment. Or compare the effect of ~
vs. target +=
.