mixle.stats.bayes.normal_gamma moduleΒΆ

Normal-Gamma distribution over (mu, tau) for a Gaussian with unknown mean and precision.

tau ~ Gamma(a, b), mu | tau ~ Gaussian(mu0, 1/(lam*tau))

Data type: (Tuple[float, float]): A pair (mu, tau) with tau > 0; the log-density is

log(f(mu, tau)) = a*log(b) + 0.5*log(lam/(2*pi)) - gammaln(a) + (a - 0.5)*log(tau) - b*tau - 0.5*lam*tau*(mu - mu0)^2.

This is the conjugate prior for the univariate GaussianDistribution (see its prior= argument) and the d=1 special case of NormalWishart (nu = 2a, W = 1/(2b)). It is a parameter prior: it is scored on (mu, tau) parameter pairs, not fit from data by EM.

class NormalGammaDistribution(mu, lam, a, b, name=None, prior=None)[source]

Bases: SequenceEncodableProbabilityDistribution

Normal-Gamma distribution over (mu, tau); conjugate prior for the univariate Gaussian.

Parameters:
  • mu (float)

  • lam (float)

  • a (float)

  • b (float)

  • name (str | None)

  • prior (SequenceEncodableProbabilityDistribution | None)

get_parameters()[source]

Returns the parameter tuple (mu, lam, a, b).

Return type:

tuple[float, float, float, float]

set_parameters(params)[source]

Set the parameters from a tuple (mu, lam, a, b).

Parameters:

params (tuple[float, float, float, float])

Return type:

None

cross_entropy(dist)[source]

Cross-entropy H(self, dist) = -E_self[log dist].

Closed form for a NormalGamma argument; numerical double integration otherwise.

Parameters:

dist (NormalGammaDistribution)

Return type:

float

entropy()[source]

Returns the entropy of the Normal-Gamma distribution (in nats).

Return type:

float

density(x)[source]

Density at x = (mu, tau); see log_density().

Parameters:

x (tuple[float, float])

Return type:

float

log_density(x)[source]

Log-density at x = (mu, tau) with tau > 0.

Parameters:

x (tuple[float, float])

Return type:

float

seq_log_density(x)[source]

Vectorized log-density at sequence-encoded (n, 2) array of (mu, tau) rows.

Parameters:

x (ndarray)

Return type:

ndarray

sampler(seed=None)[source]

Create a NormalGammaSampler for this distribution.

Parameters:

seed (int | None)

Return type:

NormalGammaSampler

estimator(pseudo_count=None)[source]

NormalGamma is a parameter prior and is not fit from data by EM.

Parameters:

pseudo_count (float | None)

Return type:

ParameterEstimator

dist_to_encoder()[source]

Returns a NormalGammaDataEncoder object for encoding (mu, tau) pairs.

Return type:

NormalGammaDataEncoder

class NormalGammaSampler(dist, seed=None)[source]

Bases: DistributionSampler

Draws (mu, tau) samples from a NormalGammaDistribution.

Parameters:
  • dist (NormalGammaDistribution)

  • seed (int | None)

sample(size=None)[source]

Draw size samples (a single (mu, tau) pair when size is None).

Parameters:

size (int | None)

Return type:

Any

class NormalGammaDataEncoder[source]

Bases: DataSequenceEncoder

Encodes a sequence of (mu, tau) parameter pairs into an (n, 2) float array.

seq_encode(x)[source]

Encode the iid observation sequence x for vectorized evaluation.

Parameters:

x (Any)

Return type:

ndarray