Distributions over Unbounded Vectors
The unbounded vector probability distributions have support on all of \(\mathbb{R}^K\) for some fixed \(K\).
Multivariate normal distribution
Probability density function
If \(K \in \mathbb{N}\), \(\mu \in \mathbb{R}^K\), and \(\Sigma \in \mathbb{R}^{K \times K}\) is symmetric and positive definite, then for \(y \in \mathbb{R}^K\), \[\begin{equation*} \text{MultiNormal}(y|\mu,\Sigma) = \frac{1}{\left( 2 \pi \right)^{K/2}} \ \frac{1}{\sqrt{|\Sigma|}} \ \exp \! \left( \! - \frac{1}{2} (y - \mu)^{\top} \, \Sigma^{-1} \, (y - \mu) \right) \! , \end{equation*}\] where \(|\Sigma|\) is the absolute determinant of \(\Sigma\).
Sampling statement
y ~
multi_normal
(mu, Sigma)
Increment target log probability density with multi_normal_lupdf(y | mu, Sigma)
.
Stan functions
The multivariate normal probability function is overloaded to allow the variate vector \(y\) and location vector \(\mu\) to be vectors or row vectors (or to mix the two types). The density function is also vectorized, so it allows arrays of row vectors or vectors as arguments; see section vectorized function signatures for a description of vectorization.
real
multi_normal_lpdf
(vectors y | vectors mu, matrix Sigma)
The log of the multivariate normal density of vector(s) y given location vector(s) mu and covariance matrix Sigma
real
multi_normal_lupdf
(vectors y | vectors mu, matrix Sigma)
The log of the multivariate normal density of vector(s) y given location vector(s) mu and covariance matrix Sigma dropping constant additive terms
real
multi_normal_lpdf
(vectors y | row_vectors mu, matrix Sigma)
The log of the multivariate normal density of vector(s) y given location row vector(s) mu and covariance matrix Sigma
real
multi_normal_lupdf
(vectors y | row_vectors mu, matrix Sigma)
The log of the multivariate normal density of vector(s) y given location row vector(s) mu and covariance matrix Sigma dropping constant additive terms
real
multi_normal_lpdf
(row_vectors y | vectors mu, matrix Sigma)
The log of the multivariate normal density of row vector(s) y given location vector(s) mu and covariance matrix Sigma
real
multi_normal_lupdf
(row_vectors y | vectors mu, matrix Sigma)
The log of the multivariate normal density of row vector(s) y given location vector(s) mu and covariance matrix Sigma dropping constant additive terms
real
multi_normal_lpdf
(row_vectors y | row_vectors mu, matrix Sigma)
The log of the multivariate normal density of row vector(s) y given location row vector(s) mu and covariance matrix Sigma
real
multi_normal_lupdf
(row_vectors y | row_vectors mu, matrix Sigma)
The log of the multivariate normal density of row vector(s) y given location row vector(s) mu and covariance matrix Sigma dropping constant additive terms
Although there is a direct multi-normal RNG function, if more than one result is required, it’s much more efficient to Cholesky factor the covariance matrix and call multi_normal_cholesky_rng
; see section multi-variate normal, cholesky parameterization.
vector
multi_normal_rng
(vector mu, matrix Sigma)
Generate a multivariate normal variate with location mu and covariance matrix Sigma; may only be used in transformed data and generated quantities blocks
vector
multi_normal_rng
(row_vector mu, matrix Sigma)
Generate a multivariate normal variate with location mu and covariance matrix Sigma; may only be used in transformed data and generated quantities blocks
vectors
multi_normal_rng
(vectors mu, matrix Sigma)
Generate an array of multivariate normal variates with locations mu and covariance matrix Sigma; may only be used in transformed data and generated quantities blocks
vectors
multi_normal_rng
(row_vectors mu, matrix Sigma)
Generate an array of multivariate normal variates with locations mu and covariance matrix Sigma; may only be used in transformed data and generated quantities blocks
Multivariate normal distribution, precision parameterization
Probability density function
If \(K \in \mathbb{N}\), \(\mu \in \mathbb{R}^K\), and \(\Omega \in \mathbb{R}^{K \times K}\) is symmetric and positive definite, then for \(y \in \mathbb{R}^K\), \[\begin{equation*} \text{MultiNormalPrecision}(y|\mu,\Omega) = \text{MultiNormal}(y|\mu,\Omega^{-1}) \end{equation*}\]
Sampling statement
y ~
multi_normal_prec
(mu, Omega)
Increment target log probability density with multi_normal_prec_lupdf(y | mu, Omega)
.
Stan functions
real
multi_normal_prec_lpdf
(vectors y | vectors mu, matrix Omega)
The log of the multivariate normal density of vector(s) y given location vector(s) mu and positive definite precision matrix Omega
real
multi_normal_prec_lupdf
(vectors y | vectors mu, matrix Omega)
The log of the multivariate normal density of vector(s) y given location vector(s) mu and positive definite precision matrix Omega dropping constant additive terms
real
multi_normal_prec_lpdf
(vectors y | row_vectors mu, matrix Omega)
The log of the multivariate normal density of vector(s) y given location row vector(s) mu and positive definite precision matrix Omega
real
multi_normal_prec_lupdf
(vectors y | row_vectors mu, matrix Omega)
The log of the multivariate normal density of vector(s) y given location row vector(s) mu and positive definite precision matrix Omega dropping constant additive terms
real
multi_normal_prec_lpdf
(row_vectors y | vectors mu, matrix Omega)
The log of the multivariate normal density of row vector(s) y given location vector(s) mu and positive definite precision matrix Omega
real
multi_normal_prec_lupdf
(row_vectors y | vectors mu, matrix Omega)
The log of the multivariate normal density of row vector(s) y given location vector(s) mu and positive definite precision matrix Omega dropping constant additive terms
real
multi_normal_prec_lpdf
(row_vectors y | row_vectors mu, matrix Omega)
The log of the multivariate normal density of row vector(s) y given location row vector(s) mu and positive definite precision matrix Omega
real
multi_normal_prec_lupdf
(row_vectors y | row_vectors mu, matrix Omega)
The log of the multivariate normal density of row vector(s) y given location row vector(s) mu and positive definite precision matrix Omega dropping constant additive terms
Multivariate normal distribution, Cholesky parameterization
Probability density function
If \(K \in \mathbb{N}\), \(\mu \in \mathbb{R}^K\), and \(L \in \mathbb{R}^{K \times K}\) is lower triangular and such that \(LL^{\top}\) is positive definite, then for \(y \in \mathbb{R}^K\), \[\begin{equation*} \text{MultiNormalCholesky}(y|\mu,L) = \text{MultiNormal}(y|\mu,LL^{\top}). \end{equation*}\] If \(L\) is lower triangular and \(LL^{top}\) is a \(K \times K\) positive definite matrix, then \(L_{k,k}\) must be strictly positive for \(k \in 1{:}K\). If an \(L\) is provided that is not the Cholesky factor of a positive-definite matrix, the probability functions will raise errors.
Sampling statement
y ~
multi_normal_cholesky
(mu, L)
Increment target log probability density with multi_normal_cholesky_lupdf(y | mu, L)
.
Stan functions
real
multi_normal_cholesky_lpdf
(vectors y | vectors mu, matrix L)
The log of the multivariate normal density of vector(s) y given location vector(s) mu and lower-triangular Cholesky factor of the covariance matrix L
real
multi_normal_cholesky_lupdf
(vectors y | vectors mu, matrix L)
The log of the multivariate normal density of vector(s) y given location vector(s) mu and lower-triangular Cholesky factor of the covariance matrix L dropping constant additive terms
real
multi_normal_cholesky_lpdf
(vectors y | row_vectors mu, matrix L)
The log of the multivariate normal density of vector(s) y given location row vector(s) mu and lower-triangular Cholesky factor of the covariance matrix L
real
multi_normal_cholesky_lupdf
(vectors y | row_vectors mu, matrix L)
The log of the multivariate normal density of vector(s) y given location row vector(s) mu and lower-triangular Cholesky factor of the covariance matrix L dropping constant additive terms
real
multi_normal_cholesky_lpdf
(row_vectors y | vectors mu, matrix L)
The log of the multivariate normal density of row vector(s) y given location vector(s) mu and lower-triangular Cholesky factor of the covariance matrix L
real
multi_normal_cholesky_lupdf
(row_vectors y | vectors mu, matrix L)
The log of the multivariate normal density of row vector(s) y given location vector(s) mu and lower-triangular Cholesky factor of the covariance matrix L dropping constant additive terms
real
multi_normal_cholesky_lpdf
(row_vectors y | row_vectors mu, matrix L)
The log of the multivariate normal density of row vector(s) y given location row vector(s) mu and lower-triangular Cholesky factor of the covariance matrix L
real
multi_normal_cholesky_lupdf
(row_vectors y | row_vectors mu, matrix L)
The log of the multivariate normal density of row vector(s) y given location row vector(s) mu and lower-triangular Cholesky factor of the covariance matrix L dropping constant additive terms
vector
multi_normal_cholesky_rng
(vector mu, matrix L)
Generate a multivariate normal variate with location mu and lower-triangular Cholesky factor of the covariance matrix L; may only be used in transformed data and generated quantities blocks
vector
multi_normal_cholesky_rng
(row_vector mu, matrix L)
Generate a multivariate normal variate with location mu and lower-triangular Cholesky factor of the covariance matrix L; may only be used in transformed data and generated quantities blocks
vectors
multi_normal_cholesky_rng
(vectors mu, matrix L)
Generate an array of multivariate normal variates with locations mu and lower-triangular Cholesky factor of the covariance matrix L; may only be used in transformed data and generated quantities blocks
vectors
multi_normal_cholesky_rng
(row_vectors mu, matrix L)
Generate an array of multivariate normal variates with locations mu and lower-triangular Cholesky factor of the covariance matrix L; may only be used in transformed data and generated quantities blocks
Multivariate Gaussian process distribution
Probability density function
If \(K,N \in \mathbb{N}\), \(\Sigma \in \mathbb{R}^{N \times N}\) is symmetric, positive definite kernel matrix and \(w \in \mathbb{R}^{K}\) is a vector of positive inverse scales, then for \(y \in \mathbb{R}^{K \times N}\), \[\begin{equation*} \text{MultiGP}(y|\Sigma,w) = \prod_{i=1}^{K} \text{MultiNormal}(y_i|0,w_i^{-1} \Sigma), \end{equation*}\] where \(y_i\) is the \(i\)th row of \(y\). This is used to efficiently handle Gaussian Processes with multi-variate outputs where only the output dimensions share a kernel function but vary based on their scale. Note that this function does not take into account the mean prediction.
Sampling statement
y ~
multi_gp
(Sigma, w)
Increment target log probability density with multi_gp_lupdf(y | Sigma, w)
.
Stan functions
real
multi_gp_lpdf
(matrix y | matrix Sigma, vector w)
The log of the multivariate GP density of matrix y given kernel matrix Sigma and inverses scales w
real
multi_gp_lupdf
(matrix y | matrix Sigma, vector w)
The log of the multivariate GP density of matrix y given kernel matrix Sigma and inverses scales w dropping constant additive terms
Multivariate Gaussian process distribution, Cholesky parameterization
Probability density function
If \(K,N \in \mathbb{N}\), \(L \in \mathbb{R}^{N \times N}\) is lower triangular and such that \(LL^{\top}\) is positive definite kernel matrix (implying \(L_{n,n} > 0\) for \(n \in 1{:}N\)), and \(w \in \mathbb{R}^{K}\) is a vector of positive inverse scales, then for \(y \in \mathbb{R}^{K \times N}\), \[\begin{equation*} \text{MultiGPCholesky}(y \, | \ L,w) = \prod_{i=1}^{K} \text{MultiNormal}(y_i|0,w_i^{-1} LL^{\top}), \end{equation*}\] where \(y_i\) is the \(i\)th row of \(y\). This is used to efficiently handle Gaussian Processes with multi-variate outputs where only the output dimensions share a kernel function but vary based on their scale. If the model allows parameterization in terms of Cholesky factor of the kernel matrix, this distribution is also more efficient than \(\text{MultiGP}()\). Note that this function does not take into account the mean prediction.
Sampling statement
y ~
multi_gp_cholesky
(L, w)
Increment target log probability density with multi_gp_cholesky_lupdf(y | L, w)
.
Stan functions
real
multi_gp_cholesky_lpdf
(matrix y | matrix L, vector w)
The log of the multivariate GP density of matrix y given lower-triangular Cholesky factor of the kernel matrix L and inverses scales w
real
multi_gp_cholesky_lupdf
(matrix y | matrix L, vector w)
The log of the multivariate GP density of matrix y given lower-triangular Cholesky factor of the kernel matrix L and inverses scales w dropping constant additive terms
Multivariate Student-t distribution
Probability density function
If \(K \in \mathbb{N}\), \(\nu \in \mathbb{R}^+\), \(\mu \in \mathbb{R}^K\), and \(\Sigma \in \mathbb{R}^{K \times K}\) is symmetric and positive definite, then for \(y \in \mathbb{R}^K\), \[\begin{equation*} \begin{array}{l} \text{MultiStudentT}(y\,|\,\nu,\,\mu,\,\Sigma) \\ = \frac{1}{\pi^{K/2}} \ \frac{1}{\nu^{K/2}} \ \frac{\Gamma\!\left((\nu + K)/2\right)} {\Gamma(\nu/2)} \ \frac{1}{\sqrt{\left| \Sigma \right|}} \ \left( 1 + \frac{1}{\nu} \, \left(y - \mu\right)^{\top} \, \Sigma^{-1} \, \left(y - \mu\right) \right)^{-(\nu + K)/2} \! . \end{array} \end{equation*}\]
Sampling statement
y ~
multi_student_t
(nu, mu, Sigma)
Increment target log probability density with multi_student_t_lupdf(y | nu, mu, Sigma)
.
Stan functions
real
multi_student_t_lpdf
(vectors y | real nu, vectors mu, matrix Sigma)
The log of the multivariate Student-\(t\) density of vector(s) y given degrees of freedom nu, location vector(s) mu, and scale matrix Sigma
real
multi_student_t_lupdf
(vectors y | real nu, vectors mu, matrix Sigma)
The log of the multivariate Student-\(t\) density of vector(s) y given degrees of freedom nu, location vector(s) mu, and scale matrix Sigma dropping constant additive terms
real
multi_student_t_lpdf
(vectors y | real nu, row_vectors mu, matrix Sigma)
The log of the multivariate Student-\(t\) density of vector(s) y given degrees of freedom nu, location row vector(s) mu, and scale matrix Sigma
real
multi_student_t_lupdf
(vectors y | real nu, row_vectors mu, matrix Sigma)
The log of the multivariate Student-\(t\) density of vector(s) y given degrees of freedom nu, location row vector(s) mu, and scale matrix Sigma dropping constant additive terms
real
multi_student_t_lpdf
(row_vectors y | real nu, vectors mu, matrix Sigma)
The log of the multivariate Student-\(t\) density of row vector(s) y given degrees of freedom nu, location vector(s) mu, and scale matrix Sigma
real
multi_student_t_lupdf
(row_vectors y | real nu, vectors mu, matrix Sigma)
The log of the multivariate Student-\(t\) density of row vector(s) y given degrees of freedom nu, location vector(s) mu, and scale matrix Sigma dropping constant additive terms
real
multi_student_t_lpdf
(row_vectors y | real nu, row_vectors mu, matrix Sigma)
The log of the multivariate Student-\(t\) density of row vector(s) y given degrees of freedom nu, location row vector(s) mu, and scale matrix Sigma
real
multi_student_t_lupdf
(row_vectors y | real nu, row_vectors mu, matrix Sigma)
The log of the multivariate Student-\(t\) density of row vector(s) y given degrees of freedom nu, location row vector(s) mu, and scale matrix Sigma dropping constant additive terms
vector
multi_student_t_rng
(real nu, vector mu, matrix Sigma)
Generate a multivariate Student-\(t\) variate with degrees of freedom nu, location mu, and scale matrix Sigma; may only be used in transformed data and generated quantities blocks
vector
multi_student_t_rng
(real nu, row_vector mu, matrix Sigma)
Generate a multivariate Student-\(t\) variate with degrees of freedom nu, location mu, and scale matrix Sigma; may only be used in transformed data and generated quantities blocks
vectors
multi_student_t_rng
(real nu, vectors mu, matrix Sigma)
Generate an array of multivariate Student-\(t\) variates with degrees of freedom nu, locations mu, and scale matrix Sigma; may only be used in transformed data and generated quantities blocks
vectors
multi_student_t_rng
(real nu, row_vectors mu, matrix Sigma)
Generate an array of multivariate Student-\(t\) variates with degrees of freedom nu, locations mu, and scale matrix Sigma; may only be used in transformed data andgenerated quantities blocks
Multivariate Student-t distribution, Cholesky parameterization
Probability density function
Let \(K \in \mathbb{N}\), \(\nu \in \mathbb{R}^+\), \(\mu \in \mathbb{R}^K\), and \(L\) a \(K \times K\) lower-triangular matrix with strictly positive, finite diagonal then \[\begin{equation*} \begin{array}{l} \text{MultiStudentTCholesky}(y\,\mid \nu,\,\mu,\,L) \\ = \frac{1}{\pi^{K/2}} \ \frac{1}{\nu^{K/2}} \ \frac{\Gamma\!\left((\nu + K)/2\right)} {\Gamma(\nu/2)} \ \frac{1}{\left| L \right|} \ \left( 1 + \frac{1}{\nu} \, \left(y - \mu\right)^{\top} \, L^{-T}L^{-1} \, \left(y - \mu\right) \right)^{-(\nu + K)/2} \! . \end{array} \end{equation*}\]
Sampling statement
y ~
multi_student_t_cholesky
(nu, mu, L)
Increment target log probability density with multi_student_t_cholesky_lupdf(y | nu, mu, L)
.
Stan functions
real
multi_student_t_cholesky_lpdf
(vectors y | real nu, vectors mu, matrix L)
The log of the multivariate Student-\(t\) density of vector or array of vectors y
given degrees of freedom nu
, location vector or array of vectors mu
, and Cholesky factor of the scale matrix L
. For a definition of the arguments compatible with the vectors
type, see the probability vectorization section.
real
multi_student_t_cholesky_lupdf
(vectors y | real nu, vectors mu, matrix L)
The log of the multivariate Student-\(t\) density of vector or vector array y
given degrees of freedom nu
, location vector or vector array mu
, and Cholesky factor of the scale matrix L
, dropping constant additive terms. For a definition of arguments compatible with the vectors
type, see the probability vectorization section.
vector
multi_student_t_cholesky_rng
(real nu, vector mu, matrix L)
Generate a multivariate Student-\(t\) variate with degrees of freedom nu
, location mu
, and Cholesky factor of the scale matrix L
; may only be used in transformed data and generated quantities blocks.
array[] vector
multi_student_t_cholesky_rng
(real nu, array[] vector mu, matrix L)
Generate a multivariate Student-\(t\) variate with degrees of freedom nu
, location array mu
, and Cholesky factor of the scale matrix L
; may only be used in transformed data and generated quantities blocks.
array[] vector
multi_student_t_cholesky_rng
(real nu, array[] row_vector mu, matrix L)
Generate an array of multivariate Student-\(t\) variate with degrees of freedom nu
, location array mu
, and Cholesky factor of the scale matrix L
; may only be used in transformed data and generated quantities blocks.
Gaussian dynamic linear models
A Gaussian Dynamic Linear model is defined as follows, For \(t \in 1, \dots, T\), \[\begin{equation*} \begin{aligned}[t] y_{t} &\sim N(F' \theta_{t}, V) \\ \theta_{t} &\sim N(G \theta_{t - 1}, W) \\ \theta_{0} &\sim N(m_{0}, C_{0}) \end{aligned} \end{equation*}\] where \(y\) is \(n \times T\) matrix where rows are variables and columns are observations. These functions calculate the log-likelihood of the observations marginalizing over the latent states (\(p(y | F, G, V, W, m_{0}, C_{0})\)). This log-likelihood is a system that is calculated using the Kalman Filter. If \(V\) is diagonal, then a more efficient algorithm which sequentially processes observations and avoids a matrix inversions can be used (Durbin and Koopman 2001, sec. 6.4).
Sampling statement
y ~
gaussian_dlm_obs
(F, G, V, W, m0, C0)
Increment target log probability density with gaussian_dlm_obs_lupdf(y | F, G, V, W, m0, C0)
.
Stan functions
The following two functions differ in the type of their V, the first taking a full observation covariance matrix V and the second a vector V representing the diagonal of the observation covariance matrix. The sampling statement defined in the previous section works with either type of observation V.
real
gaussian_dlm_obs_lpdf
(matrix y | matrix F, matrix G, matrix V, matrix W, vector m0, matrix C0)
The log of the density of the Gaussian Dynamic Linear model with observation matrix y in which rows are variables and columns are observations, design matrix F, transition matrix G, observation covariance matrix V, system covariance matrix W, and the initial state is distributed normal with mean m0 and covariance C0.
real
gaussian_dlm_obs_lupdf
(matrix y | matrix F, matrix G, matrix V, matrix W, vector m0, matrix C0)
The log of the density of the Gaussian Dynamic Linear model with observation matrix y in which rows are variables and columns are observations, design matrix F, transition matrix G, observation covariance matrix V, system covariance matrix W, and the initial state is distributed normal with mean m0 and covariance C0. This function drops constant additive terms.
real
gaussian_dlm_obs_lpdf
(matrix y | matrix F, matrix G, vector V, matrix W, vector m0, matrix C0)
The log of the density of the Gaussian Dynamic Linear model with observation matrix y in which rows are variables and columns are observations, design matrix F, transition matrix G, observation covariance matrix with diagonal V, system covariance matrix W, and the initial state is distributed normal with mean m0 and covariance C0.
real
gaussian_dlm_obs_lupdf
(matrix y | matrix F, matrix G, vector V, matrix W, vector m0, matrix C0)
The log of the density of the Gaussian Dynamic Linear model with observation matrix y in which rows are variables and columns are observations, design matrix F, transition matrix G, observation covariance matrix with diagonal V, system covariance matrix W, and the initial state is distributed normal with mean m0 and covariance C0. This function drops constant additive terms.