Learn R Programming

bbricks (version 0.1.4)

marginalLikelihood.LinearGaussianGaussian: Marginal likelihood of a "LinearGaussianGaussian" object

Description

Generate the marginal likelihood of the following model structure: $$x \sim Gaussian(A z + b, Sigma)$$ $$z \sim Gaussian(m,S)$$ Where Sigma is known. A is a \(dimx x dimz\) matrix, x is a \(dimx x 1\) random vector, z is a \(dimz x 1\) random vector, b is a \(dimm x 1\) vector. Gaussian() is the Gaussian distribution. See ?dGaussian for the definition of Gaussian distribution. The model structure and prior parameters are stored in a "LinearGaussianGaussian" object. Marginal likelihood = p(x|m,S,A,b,Sigma)

Usage

# S3 method for LinearGaussianGaussian
marginalLikelihood(obj, x, A, b = NULL, LOG = TRUE, ...)

Arguments

obj

A "LinearGaussianGaussian" object.

x

matrix, or the ones that can be converted to matrix. Each row of x is an observation.

A

matrix or list. when x is a \(N x 1\) matrix, A must be a matrix of \(N x dimz\), dimz is the dimension of z; When x is a \(N x dimx\) matrix, where \(dimx > 1\), A can be either a list or a matrix. When A is a list, \(A = {A_1,A_2,...A_N}\) is a list of \(dimx x dimz\) matrices. If A is a single \(dimx x dimz\) matrix, it will be replicated N times into a length N list

b

matrix, when x is a \(N x 1\) matrix, b must also be a \(N x 1\) matrix or length N vector; When x is a \(N x dimx\) matrix, where \(dimx > 1\), b can be either a matrix or a vector. When b is a matrix, \(b={b_1^T,...,b_N^T}\) is a \(N x dimx\) matrix, each row is a transposed vector. When b is a length \(dimx\) vector, it will be transposed into a row vector and replicated N times into a \(N x dimx\) matrix. When b = NULL, it will be treated as a vector of zeros. Default NULL.

LOG

Return the log density if set to "TRUE".

...

Additional arguments to be passed to other inherited types.

Value

numeric, the marginal likelihood.

References

Gelman, Andrew, et al. Bayesian data analysis. CRC press, 2013.

See Also

LinearGaussianGaussian, marginalLikelihood_bySufficientStatistics.LinearGaussianGaussian

Examples

Run this code
# NOT RUN {
obj <- LinearGaussianGaussian(gamma=list(Sigma=matrix(c(2,1,1,2),2,2),
                                         m=c(0.2,0.5,0.6),S=diag(3)))
x <- rGaussian(100,mu = runif(2),Sigma = diag(2))
A <- matrix(runif(6),2,3)
b <- runif(2)
marginalLikelihood(obj = obj,x=x,A=A,b=b)
marginalLikelihood(obj = obj,x=x,A=A,b=b,LOG=FALSE)
# }

Run the code above in your browser using DataLab