This is an old version, view current version.
20.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();0, 5);
sigma ~ cauchy(0, 2.5);
mu ~ cauchy(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);// ...
}