This is an old version, view current version.
18.3 Functions accessing the log probability accumulator
Functions whose names end in _lp
are allowed to use sampling
statements and target +=
statements; other
functions are not. Because of this access, their use is restricted to
the transformed parameters and model blocks.
Here is an example of a function to assign standard normal priors to a vector of coefficients, along with a center and scale, and return the translated and scaled coefficients; see the reparameterization section for more information on efficient non-centered parameterizations
functions {
vector center_lp(vector beta_raw, real mu, real sigma) {
beta_raw ~ std_normal();
sigma ~ cauchy(0, 5);
mu ~ cauchy(0, 2.5);
return sigma * beta_raw + mu;
}
...
}
parameters {
vector[K] beta_raw;
real mu_beta;
real<lower=0> sigma_beta;
...
transformed parameters {
vector[K] beta;
...
beta = center_lp(beta_raw, mu_beta, sigma_beta);
...