This page summarizes the probability distributions available within the `rtmb_code` block. These functions are designed to be used with the Stan-like sampling syntax (`~`), which internally adds the log-density to the model's total log-posterior.
Details
Syntax Styles: In `rtmb_code`, you can specify distributions in two ways:
Sampling Syntax (Recommended):
y ~ normal(mu, sigma)Explicit Function Call:
lp <- lp + normal_lpdf(y, mu, sigma)
Continuous Distributions (LPDF):
normal(mean, sd): Normal distribution.lognormal(meanlog, sdlog): Lognormal distribution.exponential(rate): Exponential distribution.cauchy(location, scale): Cauchy distribution.student_t(df, mu, sigma): Student's t-distribution.gamma(shape, rate): Gamma distribution.inverse_gamma(shape, scale): Inverse-gamma distribution.beta(a, b): Beta distribution.
Discrete Distributions (LPMF):
bernoulli(prob)/bernoulli_logit(eta): Binary outcomes.binomial(size, prob)/binomial_logit(size, eta): Binomial outcomes.poisson(mean): Poisson count data.neg_binomial_2(mu, size): Negative binomial (mean/dispersion parameterization).ordered_logistic(eta, cutpoints): Ordered categorical outcomes.
Multivariate and Matrix Distributions:
multi_normal(mean, Sigma): Standard multivariate normal distribution.lkj_corr(eta): LKJ prior for correlation matrices.dirichlet(alpha): Dirichlet distribution for simplexes.lower_tri_normal(mean, sd): Normal distribution for elements of a lower-triangular matrix.centered_tri_multi_normal(sigma): Multivariate normal for centered triangular matrices (used in identification constraints).sufficient_multi_normal_fa(S_mat, N, y_bar, mu, psi, Lambda): Factor analysis likelihood using sufficient statistics (highly efficient for large sample sizes).
Vectorization:
Most univariate distributions are vectorized. If y and mu are vectors,
y ~ normal(mu, sigma) will calculate the sum of log-densities for all elements
efficiently.