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 b
s. 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 b
s 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).