Loading web-font TeX/Math/Italic
Automatic Differentiation
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Loading...
Searching...
No Matches

◆ dirichlet_multinomial_lpmf() [1/2]

template<bool propto, typename T_prior_size , require_eigen_col_vector_t< T_prior_size > * = nullptr>
return_type_t< T_prior_size > stan::math::dirichlet_multinomial_lpmf ( const std::vector< int > &  ns,
const T_prior_size &  alpha 
)

The log of the Dirichlet-Multinomial probability for the given integer vector n and a vector of prior sample sizes, \alpha.

Each element of \alpha must be greater than 0. Each element of n must be greater than or equal to 0.

Suppose that n = (n_1, \ldots, n_K) has a Dirichlet-multinomial distribution with prior sample size \alpha = (\alpha_1,\ldots,\alpha_K) (also called the intensity):

(n_1,\ldots,n_K)\sim\mbox{DirMult}(\alpha_1,\ldots,\alpha_K)

Write N = n_1 + \cdots + n_K and \alpha_0 = \alpha_1 + \cdots + \alpha_K, then the log probability mass function is given by

\log(p(n_1, \ldots, n_K\,|\,\alpha_1,\ldots,\alpha_K))=\log\left( \frac{\Gamma(\alpha_0)\Gamma(N+1)}{\Gamma(\alpha_0 + N)} \prod_{k=1}^K \frac{\Gamma(n_k + \alpha_k)}{\Gamma(\alpha_k) \Gamma(n_k+1)} \right)\\ = \log(N) + \log(B(\alpha_0, N)) - \sum_{k : n_k > 0} \bigl(\log(n_k) + \log(B(\alpha_k, n_k))\bigr)

The second identity is only valid for N > 0. For N=0, we have \log(p(n\,|\,\alpha)) = 0.

Template Parameters
T_prior_sizetype of prior sample sizes
Parameters
nsA vector of integers.
alphaPrior sample sizes (or intensity vector).
Returns
The log of the Dirichlet-Multinomial probability.
Exceptions
std::domain_errorif any element of alpha is less than or equal to 0, or infinite.
std::domain_errorany element of ns is less than 0.

Definition at line 60 of file dirichlet_multinomial_lpmf.hpp.