Reshaping distributions

Distributions of array variates such as MultivariateDistributions and MatrixDistributions can be reshaped.

Base.reshapeFunction
reshape(d::Distribution{<:ArrayLikeVariate}, dims::Int...)
reshape(d::Distribution{<:ArrayLikeVariate}, dims::Dims)

Return a Distribution of reshape(X, dims) where X is a random variable with distribution d.

The default implementation returns a ReshapedDistribution. However, it can return more optimized distributions for specific types of distributions and numbers of dimensions. Therefore it is recommended to use reshape instead of the constructor of ReshapedDistribution.

Implementation

Since reshape(d, dims::Int...) calls reshape(d, dims::Dims), one should implement reshape(d, ::Dims) for desired distributions d.

See also: vec

source
Base.vecFunction
vec(d::Distribution{<:ArrayLikeVariate})

Return a MultivariateDistribution of vec(X) where X is a random variable with distribution d.

The default implementation returns a ReshapedDistribution. However, it can return more optimized distributions for specific types of distributions and numbers of dimensions. Therefore it is recommended to use vec instead of the constructor of ReshapedDistribution.

Implementation

Since vec(d) is defined as reshape(d, length(d)) one should implement reshape(d, ::Tuple{Int}) rather than vec.

See also: reshape

source