Diagonal Multivariate Gaussian

Data Type: Sequence[float]

A d-dimensinoal random variable \((X_1, X_2, ..., X_d)\) follows a diagonal multivariate normal distribution if each \(X_i \sim N\left(0, \sigma^2_i \right)\) and \(Cov(X_i, X_j) = 0\) for each \(i \neq j\).

The probability density function is given by

\[f(\boldsymbol{x} | \boldsymbol{\mu}, \boldsymbol{\sigma}) = \left(\frac{1}{2\pi}\right)^{d/2} \prod_{i=1}^{d}\frac{1}{\sigma_i} \exp{-\left(\frac{(x_i-\mu_i)^2}{2\sigma^2_i}\right)}\]

For more info see Multivariate Normal Distribution.

DiagonalGaussianDistribution

class pysp.stats.dmvn.DiagonalGaussianDistribution(mu, covar, name=None, keys=(None, None))

Diagonal Gaussian distribution with mean mu and diagonal covariance covar.

dim

Dimension of the multivariate Gaussian.

Type:

int

mu

Mean of the Gaussian.

Type:

np.ndarray

covar

Variance for each component.

Type:

np.ndarray

name

Name of object instance.

Type:

Optional[str]

log_c

Normalizing constant for diagonal Gaussian.

Type:

float

ca

Term for likelihood calculation.

Type:

np.ndarray

cb

Term for likelihood calculation.

Type:

np.ndarray

cc

Term for likelihood calculation.

Type:

np.ndarray

keys

Key for mean and covariance.

Type:

Tuple[Optional[str], Optional[str]]

__init__(mu, covar, name=None, keys=(None, None))

Initialize a DiagonalGaussianDistribution object.

Parameters:
  • mu (Union[Sequence[float], np.ndarray]) – Mean of Gaussian distribution.

  • covar (Union[Sequence[float], np.ndarray]) – Variance of each component.

  • name (Optional[str], optional) – Name for object instance.

  • keys (Tuple[Optional[str], Optional[str]], optional) – Key for mean and covariance.

density(x)

Evaluate the density of the DiagonalGaussianDistribution.

Parameters:

x (Union[Sequence[float], np.ndarray]) – Observation from Diagonal Gaussian.

Returns:

Density at x.

Return type:

float

dist_to_encoder()

Return a DiagonalGaussianDataEncoder for this distribution.

Returns:

Encoder object.

Return type:

DiagonalGaussianDataEncoder

estimator(pseudo_count=None)

Return a DiagonalGaussianEstimator for this distribution.

Parameters:

pseudo_count (Optional[float], optional) – Pseudo-count for regularization.

Returns:

Estimator object.

Return type:

DiagonalGaussianEstimator

log_density(x)

Evaluate the log-density of the DiagonalGaussianDistribution.

Parameters:

x (Union[Sequence[float], np.ndarray]) – Observation from Diagonal Gaussian.

Returns:

Log-density at x.

Return type:

float

sampler(seed=None)

Return a DiagonalGaussianSampler for this distribution.

Parameters:

seed (Optional[int], optional) – Seed for random number generator.

Returns:

Sampler object.

Return type:

DiagonalGaussianSampler

seq_log_density(x)

Vectorized log-density for encoded data.

Parameters:

x (DiagonalGaussianEncodedDataSequence) – Encoded data sequence.

Returns:

Log-density values.

Return type:

np.ndarray

DiagonalGaussianEstimator

class pysp.stats.dmvn.DiagonalGaussianEstimator(dim=None, pseudo_count=(None, None), suff_stat=(None, None), name=None, keys=(None, None))

Estimator for diagonal Gaussian distributions from aggregated sufficient statistics.

name

Name for object instance.

Type:

Optional[str]

dim

Dimension of Gaussian, either set or determined from suff_stat arg.

Type:

int

prior_mu

Set from suff_stat[0].

Type:

Optional[np.ndarray]

prior_covar

Set from suff_stat[1].

Type:

Optional[np.ndarray]

pseudo_count

Re-weight the sum of observations and sum of squared observations in estimation.

Type:

Tuple[Optional[float], Optional[float]]

keys

Key for mean and covariance.

Type:

Tuple[Optional[str], Optional[str]]

__init__(dim=None, pseudo_count=(None, None), suff_stat=(None, None), name=None, keys=(None, None))

Initialize DiagonalGaussianEstimator.

Parameters:
  • dim (Optional[int], optional) – Optional dimension of Gaussian.

  • pseudo_count (Tuple[Optional[float], Optional[float]], optional) – Re-weight the sum of observations and sum of squared observations in estimation.

  • suff_stat (Tuple[Optional[np.ndarray], Optional[np.ndarray]], optional) – Sum of observations and sum of squared observations both having same dimension.

  • name (Optional[str], optional) – Name for object instance.

  • keys (Tuple[Optional[str], Optional[str]], optional) – Key for mean and covariance.

Raises:

TypeError – If keys is not a tuple of two strings or None.

accumulator_factory()

Return a DiagonalGaussianAccumulatorFactory for this estimator.

Returns:

Factory object.

Return type:

DiagonalGaussianAccumulatorFactory

estimate(nobs, suff_stat)

Estimate a DiagonalGaussianDistribution from sufficient statistics.

Parameters:
  • nobs (Optional[float]) – Number of observations.

  • suff_stat (Tuple[np.ndarray, np.ndarray, float]) – Sufficient statistics.

Returns:

Estimated distribution.

Return type:

DiagonalGaussianDistribution

DiagonalGaussianSampler

class pysp.stats.dmvn.DiagonalGaussianSampler(dist, seed=None)

Sampler for DiagonalGaussianDistribution.

dist

Object instance to sample from.

Type:

DiagonalGaussianDistribution

rng

Random number generator.

Type:

RandomState

sample(size=None)

Generate samples from Diagonal Gaussian distribution.

Parameters:

size (Optional[int], optional) – Number of samples to generate.

Returns:

Single sample or list of samples.

Return type:

Union[np.ndarray, List[np.ndarray]]