I am fitting a model where, conceptually, the following is happening: a parameter
A needs to be transformed to
B via a transformation that is data-dependent. I only care about
B, and the transformation is a necessity to avoid rejecting parameter values (unconstrained
B makes no sense in my application).
The transformation involves vectors, and is somewhat complex (about 20 lines of Stan code). It also needs to be done about 1500 times, and I would like to record the
bs. Finally, of course it involves a Jacobian correction, which is the part of the problem.
Ideally, I would encode it in the
transformed parameters block, which would make sure the
bs are recorded. But I get
Sampling statements (~) and increment_log_prob() are
only allowed in the model block or lp functions.
However, if I encode in in a function with an
_lp name, it compiles.
I am asking to check that the
target += statement is executed in a function called in the
transformed parameters block.
Cf #889 which is about this, but was closed (without resolution).