Skip to contents

The exact distribution of \(X + Y\) for independent \(X \sim g_1\) and \(Y \sim g_2\): a Gaussian mixture with \(K_1 K_2\) components, $$g_1 * g_2 = \sum_{ij} w_i v_j\, \mathcal{N}\!\left(\mu_i + m_j,\ \Sigma_i + S_j\right).$$

Usage

gmm_convolve(g1, g2)

Arguments

g1, g2

Two gmm (or gmm_fit) objects of the same ambient dimension.

Value

A gmm with K1 * K2 components.

Details

For the affine special case \(X + c\) with a constant c, or \(A X + \epsilon\) with Gaussian \(\epsilon\), use gmm_affine(); the convolution operator is the general mixture-plus-mixture case that gmm_affine() cannot express.

Examples

g1 <- gmm(weights = c(0.5, 0.5), means = list(-1, 1),
          covariances = list(matrix(0.5), matrix(0.5)))
g2 <- gmm(weights = 1, means = list(2), covariances = list(matrix(1)))
gmm_convolve(g1, g2)
#> <convolve(gmm, gmm)>: K = 2 components in p = 1 dimensions
#>   [1] w = 0.5000, |mu| = 1.0000, tr(Sigma) = 1.5000
#>   [2] w = 0.5000, |mu| = 3.0000, tr(Sigma) = 1.5000