def multivariatet(mu, Sigma, N, M, rng):
"""Return a sample (or samples) from the multivariate t distribution.
This function is adopted from
http://kennychowdhary.me/2013/03/python-code-to-generate-samples-from-multivariate-t/.
:param mu: Mean.
:type mu: ndarray, shape=(n_dim,), dtype=float
:param Sigma: Scaling matrix.
:type Sigma: ndarray, shape=(n_dim, n_dim), dtype=float
:param float N: Degrees of freedom.
:param int M: Number of samples to produce.
:param np.random.RandomState rng: Random number generator.
:return: M samples of (n_dim)-dimensional multivariate t distribution.
:rtype: ndarray, shape=(n_samples, n_dim), dtype=float
"""
d = len(Sigma)
g = np.tile(rng.gamma(N/2., 2./N, M), (d, 1)).T
Z = rng.multivariate_normal(np.zeros(d), Sigma, M)
return mu + Z / np.sqrt(g)
评论列表
文章目录