10
$\begingroup$

I find it strange, but I can't find what multivariate Laplace distribution looks like. What is its pdf? I googled for a while but couldn't find a good description.

I wasn't paying attention to Laplace. Now, all of a sudden when I need it, I can't find the multivariate case.

$\endgroup$

3 Answers 3

11
$\begingroup$

It is often the case that there's more than one multivariate choice that seems to correspond to some univariate density - there's not always a natural one; hence we have papers with titles like "A multivariate exponential distribution", rather than "The multivariate exponential distribution".

The same is likely to be the case for the Laplace- it depends on which properties you wish to carry over and which properties are not so crucial, as well as what kinds of dependence structures you want to support.

There's an example of one such multivariate distribution in this paper -

Torbjørn Eltoft, Taesu Kim, and Te-Won Lee (2006)
On the Multivariate Laplace Distribution
IEEE Signal Processing Letters, Vol. 13, No. 5, May

- which in the paper takes this form (I have not checked their algebra!):

$$p_\mathbf{Y}(\mathbf{y}) = \frac{1}{(2\pi)^{(d/2)}} \frac{2}{\lambda} \frac{K_{(d/2)-1}\left(\sqrt{\frac{2}{\lambda}q(\mathbf{y})}\right)}{\left(\sqrt{\frac{\lambda}{2}q(\mathbf{y})}\right)^{(d/2)-1}}$$

where

$$q(\mathbf{y})= (\mathbf{y-\mu})^t\Gamma^{-1}(\mathbf{y-\mu})$$

with $\mu$ being the location vector, positive definite $\Gamma$ taking the role of a multivariate 'scale' akin to a variance-covariance matrix and where $K_m(x)$ denotes the modified Bessel function of the second kind and order $m$, evaluated at $x$.

There are three different Multivariate Laplace distributions mentioned on page 2 of in this paper (pdf), which itself discusses an asymmetric multivariate Laplace distribution

If you're only looking to have Laplace marginal distributions, and want general forms of association between them, you may want to look into copulas. Besides some introductory papers (some are mentioned there), the books by Nelsen and by Joe are fairly readable.

$\endgroup$
2
$\begingroup$

For those who wish to see how the multivariate Laplace looks like in the two-dimensional case, I've attached a histogram of Laplace with mean 0 and scale 1 and identity covariance, using Wolfram Mathematica code

multivariate Laplace

The generating code is:

y= RandomVariate[LaplaceDistribution[],100000];
x= RandomVariate[LaplaceDistribution[],100000];
Histogram3D[Thread[{x,y}],{75,75}, PDF]
$\endgroup$
3
  • $\begingroup$ Yes, but which "multivariate Laplace" distribution is Mathematica using?! $\endgroup$
    – whuber
    Mar 22, 2021 at 15:23
  • $\begingroup$ @whuber, Mathematica doesn't support multivariate Laplace yet. I simply generated independent realizations of Laplace (mean=0 and scale=1) for each entry (x and y in this example). This is equivalent to multivariant Laplace with identity covariance. Note that you can create a multivariate Laplace with covariance $\Sigma$ by simply multiplying the samples vector by $\Sigma^{1/2}$ from the left. Similarly, those who wish to change the mean can simply shift the sample vector by shifting by vector $\mu$. $\endgroup$
    – sefi
    Mar 22, 2021 at 18:31
  • $\begingroup$ I was wondering, because usually the term "multivariate" means something more than independent univariate distributions. $\endgroup$
    – whuber
    Mar 22, 2021 at 18:33
1
$\begingroup$

The following result is useful to understand how the multivariate Laplace looks like: The symmetric multivariate Laplace with covariance matrix $\Sigma$ can be represented as $X\simeq \sqrt{W} \times Y$, where $Y\simeq \mathcal{N}_d(0,\Sigma)$ is multivariate Gaussian with covariance $\Sigma$, and $W$ is an exponential random variable of mean 1, and independent of $Y$ (cf. Theorem 6.3.1 from this book). Note that the 2 components of a bivariate Laplace are not independent (even in the case where correlation $\rho=0$).Bivariate Gaussian vs Laplace

import random
import numpy as np

rho = .8
Sigma = [[1,rho], [rho,1]]
chol = np.linalg.cholesky(Sigma)

# multivariate laplace = sqrt(W) * N(0,Sigma)
gaussian_points = [chol.dot([random.gauss(0,1),random.gauss(0,1)]) for k in range(2000)]

sqrt_exponential_draws = [np.sqrt(random.expovariate(1)) for k in range(2000)]
bivariate_laplace = [sqrt_exponential_draws[k]*gaussian_points[k] for k in range(2000)]
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.