Source code for mvem.stats.multivariate_norm

from scipy.stats import multivariate_normal
import numpy as np

[docs]def fit(X, return_loglike=False): """ Estimate the parameters of the multivariate normal distribution using maximum likelihood estimates. :param x: An array of shape (n, p) containing n observations of some p-variate data with n > p. :type x: np.ndarray :param return_loglike: Return a list of log-likelihood values at each iteration. Defaults to False. :type return_loglike: np.ndarray, optional :return: The fitted parameters (<array> mu, <array> sigma). Also returns a list of log-likelihood values at each iteration of the EM algorithm if ``return_loglike=True``. :rtype: tuple """ mean = np.mean(X, axis = 0) cov = np.cov(X.T) if return_loglike: return mean, cov, loglike(X, mean, cov) return mean, cov
[docs]def pdf(x, mean, cov, allow_singular=False): """ Probability density function of the multivariate normal distribution. :param x: An array of shape (n, p) containing n observations of some p-variate data with n > p. :type x: np.ndarray :param mean: The mean of the normal distribution. A parameter with shape (p,). :type mean: np.ndarray :param cov: The covariance of the normal distribution. A positive semi-definite array with shape (p, p). :type cov: np.ndarray :param allow_singular: Whether to allow a singular matrix. Defaults to False. :type allow_singular: bool, optional :return: The density at each observation. :rtype: np.ndarray with shape (n,). """ return multivariate_normal.pdf(x, mean, cov, allow_singular)
[docs]def logpdf(x, mean, cov, allow_singular=False): """ Log-probability density function of the multivariate normal distribution. :param x: An array of shape (n, p) containing n observations of some p-variate data with n > p. :type x: np.ndarray :param mean: The mean of the normal distribution. A parameter with shape (p,). :type mean: np.ndarray :param cov: The covariance of the normal distribution. A positive semi-definite array with shape (p, p). :type cov: np.ndarray :param allow_singular: Whether to allow a singular matrix. Defaults to False. :type allow_singular: bool, optional :return: The log-density at each observation. :rtype: np.ndarray with shape (n,). """ return multivariate_normal.logpdf(x, mean, cov, allow_singular)
[docs]def loglike(x, mean, cov, allow_singular=False): """ Log-likelihood function of the multivariate normal distribution. :param x: An array of shape (n, p) containing n observations of some p-variate data with n > p. :type x: np.ndarray :param mean: The mean of the normal distribution. A parameter with shape (p,). :type mean: np.ndarray :param cov: The covariance of the normal distribution. A positive semi-definite array with shape (p, p). :type cov: np.ndarray :param allow_singular: Whether to allow a singular matrix. Defaults to False. :type allow_singular: bool, optional :return: The log-likelihood for given all observations and parameters. :rtype: float """ return np.sum(logpdf(x, mean, cov, allow_singular))
[docs]def cdf(x, mean, cov, allow_singular=False, maxpts=1000000, abseps=1e-5, releps=1e-5): """ Cumulative density function of the multivariate normal distribution. :param x: An array of shape (n, p) containing n observations of some p-variate data with n > p. :type x: np.ndarray :param mean: The mean of the normal distribution. A parameter with shape (p,). :type mean: np.ndarray :param cov: The covariance of the normal distribution. A positive semi-definite array with shape (p, p). :type cov: np.ndarray :param allow_singular: Whether to allow a singular matrix. Defaults to False. :type allow_singular: bool, optional :param maxpts: The maximum number of points to use for integration. :type maxpts: int, optional :param abseps: The absolute error tolerance. Defaults to 1e-5. :type abseps: float, optional :param releps: The relative error tolerance. Defaults 1e-5. :type releps: float, optional :return: The cumulative density given all observations and parameters. :rtype: float """ maxpts = maxpts * x.shape[1] return multivariate_normal.cdf(x, mean, cov, allow_singular, maxpts, abseps, releps)
[docs]def logcdf(x, mean, cov, allow_singular=False, maxpts=1000000, abseps=1e-5, releps=1e-5): """ Log-cumulative density function of the multivariate normal distribution. :param x: An array of shape (n, p) containing n observations of some p-variate data with n > p. :type x: np.ndarray :param mean: The mean of the normal distribution. A parameter with shape (p,). :type mean: np.ndarray :param cov: The covariance of the normal distribution. A positive semi-definite array with shape (p, p). :type cov: np.ndarray :param allow_singular: Whether to allow a singular matrix. Defaults to False. :type allow_singular: bool, optional :param maxpts: The maximum number of points to use for integration. :type maxpts: int, optional :param abseps: The absolute error tolerance. Defaults to 1e-5. :type abseps: float, optional :param releps: The relative error tolerance. Defaults 1e-5. :type releps: float, optional :return: The log-cumulative density given all observations and parameters. :rtype: float """ maxpts = maxpts * x.shape[1] return multivariate_normal.logcdf(x, mean, cov, allow_singular, maxpts, abseps, releps)
[docs]def rvs(mean, cov, size=1, random_state=None): """ Random number generator of the multivariate normal distribution. :param mean: The mean of the normal distribution. A parameter with shape (p,). :type mean: np.ndarray :param cov: The covariance of the normal distribution. A positive semi-definite array with shape (p, p). :type cov: np.ndarray :param size: The number of samples to draw. Defaults to 1. :type size: int, optional :param random_state: Used for drawing random variates. Defaults to None. :type random_state: None, int, np.random.RandomState, np.random.Generator, optional :return: The random p-variate numbers generated. :rtype: np.ndarray with shape (n, p). """ return multivariate_normal.rvs(mean, cov, size, random_state)
[docs]def mean(mean, cov): """ Mean function of the multivariate normal distribution. :param mean: The mean of the normal distribution. A parameter with shape (p,). :type mean: np.ndarray :param cov: The covariance of the normal distribution. A positive semi-definite array with shape (p, p). :type cov: np.ndarray :return: The mean of the specified distribution. :rtype: np.ndarray with shape (p,). """ return mean
[docs]def var(mean, cov): """ Variance function of the multivariate normal distribution. :param mean: The mean of the normal distribution. A parameter with shape (p,). :type mean: np.ndarray :param cov: The covariance of the normal distribution. A positive semi-definite array with shape (p, p). :type cov: np.ndarray :return: The variance of the specified distribution. :rtype: np.ndarray with shape (p,). """ return cov