# Namespace Microsoft.ML.Probabilistic.Distributions

### Classes

#### AccumulateIntoCollection<T>

An Accumulator that adds each element to a collection.

#### AccumulatorList<T>

Wraps a list of accumulators, adding each sample to all of them.

#### Array2DEstimator<ItemEstimator, DistributionArray, Distribution>

Estimator for a 2-D DistributionArray type, where the samples are distributions

#### Array2DEstimator<ItemEstimator, DistributionArray, Distribution, Sample>

Estimator for a 2-D DistributionArray type.

#### ArrayEstimator

Useful static methods relating to array estimators

#### ArrayEstimator<T>

Static class which implements useful functions on estimator arrays.

#### ArrayEstimator<ItemEstimator, DistributionArray, Distribution>

Estimator for a DistributionArray type where the sample type is a distribution

#### ArrayEstimator<ItemEstimator, DistributionArray, Distribution, Sample>

Estimator for a DistributionArray type.

#### BernoulliEstimator

Estimates a Bernoulli distribution from samples.

#### BernoulliIntegerSubset

Represents a sparse list of Bernoulli distributions considered as a distribution over a variable-sized list of integers, which are the indices of elements in the boolean list with value 'true'.

#### BetaEstimator

Estimates a Beta distribution from samples.

#### BurnInAccumulator<T>

Wraps an accumulator, discarding the first BurnIn samples.

#### CollectionElementMappingInfo

Element mapping information for the product of collection distributions

#### ConditionalList<TDist>

Conditional List

#### ConstantFunction

Class implementing the constant function. Used as a domain prototype for distributions over functions

#### Dirichlet

A Dirichlet distribution on probability vectors.

#### DirichletEstimator

Estimates a Dirichlet distribution from samples.

#### Discrete

An arbitrary distribution over integers [0,D-1].

#### DiscreteChar

Represents a distribution over characters.

#### DiscreteEnum<TEnum>

A discrete distribution over the values of an enum.

#### DiscreteEstimator

Estimates a discrete distribution from samples.

#### Distribution

Static class which implements useful functions on distributions.

#### Distribution<T>

Static class which implements useful functions on distributions.

#### DistributionArray<T>

A distribution over an array, where each element is independent and has distribution type `T`

#### DistributionArray<T, DomainType>

A distribution over an array of type `DomainType`

, where each element is independent and has distribution of type `T`

#### DistributionArray2D<T>

A distribution over a 2D array, where each element is independent and has distribution type `T`

#### DistributionArray2D<T, DomainType>

A distribution over an array of type `DomainType`

, where each element is independent and has distribution of type `T`

#### DistributionFileArray<T, DomainType>

A distribution over an array of type `DomainType`

, where each element is independent and has distribution of type `T`

, all stored in a file.

#### DistributionRefArray<T, DomainType>

A distribution over an array of type `DomainType`

, where each element is independent and has distribution of type `T`

#### DistributionRefArray2D<T, DomainType>

A distribution over a 2D array of type `DomainType`

, where each element is independent and has distribution of type `T`

#### DistributionStructArray<T, DomainType>

`DomainType`

, where each element is independent and has distribution of type `T`

#### DistributionStructArray2D<T, DomainType>

A distribution over a 2D array of type `DomainType`

, where each element is independent and has distribution of type `T`

#### EstimatorFactory

Estimator factor. Given a distribution instance, create a compatible estimator instance

#### GammaEstimator

Estimates a Gamma distribution from samples.

#### GaussianEstimator

Estimates a Gaussian distribution from samples.

#### GaussianProcess

A base class for Gaussian process distributions

#### GenericDiscreteBase<T, TThis>

A generic base class for discrete distributions over a type T.

#### GibbsMarginal<TDist, T>

Gibbs marginal - wraps underlying estimator, provides burn-in and thinning, and maintains thinned samples and conditionals

#### ImproperDistributionException

Exception thrown when a distribution is improper and its expectations need to be computed.

#### InnerQuantiles

Represents a distribution using the quantiles at probabilities (1,...,n)/(n+1)

#### LinearSpline

Very simple 1-D linear spline class which implements IFunction. Assumes knots at regular positions - given by a start and increment. The vector of knot values defines how many knots.

#### ListDistribution<TElement, TElementDistribution>

Represents a distribution over List<T> that use a weighted finite state automaton as the underlying weight function.

#### ListDistribution<TList, TElement, TElementDistribution>

Represents a distribution over lists that use a weighted finite state automaton as the underlying weight function.

#### ListDistribution<TList, TElement, TElementDistribution, TThis>

A base class for distributions over lists that use a weighted finite state automaton as the underlying weight function.

#### Mixture<TDist, TDomain, TThis>

A mixture of distributions of the same type

#### MixtureEstimator<TDist>

An estimator which is a mixture of distributions of the same type

#### OuterQuantiles

Represents a distribution using the quantiles at probabilities (0,...,n-1)/(n-1)

#### PointMass<T>

A point mass, which is the 'distribution' you get for an observed variable. All the probability mass is at the point given by observed value.

#### PoissonEstimator

Estimates a Poisson distribution from samples.

#### QuantileEstimator

Subsamples data to provide accurate estimation of quantiles.

#### Rank1Pot

Rank 1 potential for a sparse GP. This low rank parameterisation is used for messages flowing from a SparseGP evaluation factor to a function variable.

#### SampleList<T>

Sample List

#### SequenceDistribution<TSequence, TElement, TElementDistribution, TSequenceManipulator, TWeightFunction, TThis>

A base class for implementations of distributions over sequences.

#### SequenceDistributionFormats

A collection of sequence distribution formats.

#### SparseBernoulliList

Represents a sparse list of Bernoulli distributions, optimized for the case where many share the same parameter value. The class supports an approximation tolerance which allows elements close to the common value to be automatically reset to the common value.

#### SparseBetaList

Represents a sparse list of Beta distributions, optimized for the case where many share the same parameter value. The class supports an approximation tolerance which allows elements close to the common value to be automatically reset to the common value.

#### SparseDistributionList<TDist, TDomain, TThis>

Abstract base class for a homogeneous sparse list of distributions. The class supports an approximation tolerance which allows elements close to the common value to be automatically reset to the common value. The list implements the interfaces which allow these distributions to participate in message passing.

#### SparseGammaList

Represents a sparse list of Gamma distributions, optimized for the case where many share the same parameter value. The class supports an approximation tolerance which allows elements close to the common value to be automatically reset to the common value.

#### SparseGaussianList

Represents a sparse list of Gaussian distributions, optimized for the case where many share the same parameter value. The class supports an approximation tolerance which allows elements close to the common value to be automatically reset to the common value.

#### SparseGP

A Gaussian Process distribution over functions, represented by a GP prior times a set of regression likelihoods on basis points.

#### SparseGPFixed

This class maintains all the fixed parameters for a sparse GP

- i.e. parameters which the inference does not change. All SparseGP messages can refer to a single SparseGPFixed class, and cloning of SparseGP instances will just copy the reference

#### StringDistribution

Represents a distribution over strings that uses a weighted finite state automaton as the underlying weight function.

#### TruncatedGaussianEstimator

Estimates a TruncatedGaussian distribution from samples.

#### UnnormalizedDiscrete

Represents a discrete distribution in the log domain without explicit normalization.

#### VectorGaussian

Represents a multivariate Gaussian distribution.

#### VectorGaussianEstimator

Estimates a Gaussian distribution from samples.

#### VectorGaussianMoments

Represents a multivariate Gaussian distribution.

#### Wishart

A Wishart distribution on positive definite matrices.

#### WishartEstimator

Estimates a Wishart distribution from samples.

### Structs

#### Bernoulli

Represents a distribution on a binary variable.

#### Beta

A Beta distribution over the interval [0,1].

#### Binomial

Binomial distribution over the integers [0,n]

#### ConjugateDirichlet

Represents the distribution proportion to x^{Shape-1} exp(-Rate*x) / B(x,D)^K
where B(x,D)=Gamma(x)^D/Gamma(D*x)

#### DiscreteChar.CharRange

Represents a range of characters, with an associated probability.

#### Gamma

A Gamma distribution on positive reals.

#### GammaPower

The distribution of a Gamma variable raised to a power. The Weibull distribution is a special case.

#### Gaussian

Represents a one-dimensional Gaussian distribution.

#### NonconjugateGaussian

Nonconjugate Gaussian messages for VMP. The mean has a Gaussian distribution and the variance a Gamma distribution.

#### Pareto

A Pareto distribution over the real numbers from lowerBound to infinity.

#### Poisson

A Poisson distribution over the integers [0,infinity).

#### TruncatedGamma

A distribution over real numbers between an upper and lower bound. If LowerBound=0 and UpperBound=Inf, it reduces to an ordinary Gamma distribution.

#### TruncatedGaussian

A distribution over real numbers between an upper and lower bound. If both bounds are infinite, it reduces to an ordinary Gaussian distribution.

#### WrappedGaussian

A Gaussian distribution on a periodic domain, such as angles between 0 and 2*pi.

### Interfaces

#### Accumulator<T>

Indicates support for adding an item to a distribution estimator

#### CanEnumerateSupport<T>

Whether the distribution supports enumeration over the support - i.e. enumeration over the domain values with non-zero mass.

#### CanGetAverageLog<T>

Whether the distribution supports the expected logarithm of one instance under another

#### CanGetLogAverageOf<T>

Whether the distribution can compute the expectation of another distribution's value.

#### CanGetLogAverageOfPower<T>

Whether the distribution can compute the expectation of another distribution raised to a power.

#### CanGetLogNormalizer

Whether the distribution can compute its normalizer.

#### CanGetLogProb<T>

Whether the distribution supports evaluation of its density

#### CanGetLogProbPrep<DistributionType, T>

Whether the distribution supports preallocation of a workspace for density evaluation

#### CanGetMean<MeanType>

Whether the distribution supports retrieval of a mean value

#### CanGetMeanAndVariance<MeanType, VarType>

Whether the distribution supports the joint getting of mean and variance where the mean and variance are reference types

#### CanGetMeanAndVarianceOut<MeanType, VarType>

Whether the distribution supports the joint getting of mean and variance where the mean and variance are returned as 'out' argiments

#### CanGetMode<ModeType>

Whether the distribution supports retrieval of the most probable value

#### CanGetProbLessThan

#### CanGetQuantile

#### CanGetVariance<VarType>

Whether the distribution supports retrieval of a variance value

#### CanSamplePrep<DistributionType, T>

Whether the distribution supports preallocation of a workspace for sampling

#### CanSetMean<MeanType>

Whether the distribution supports setting of its mean value

#### CanSetMeanAndVariance<MeanType, VarType>

Whether the distribution supports the joint setting of mean and variance

#### Estimator<T>

Indicates support for retrieving an estimated distribution

#### HasPoint<T>

Whether the distribution supports being a point mass

#### ICollectionDistribution

Interface to allow untyped access to collection distribution

#### ICollectionDistribution<TElement, TElementDist>

Collection distribution interface

#### IDistribution<T>

Distribution interface

#### IFunction

Function interface - used for distributions over a function domain

#### IGaussianProcess

Basic GP interface

#### IsDistributionWrapper

Marker interface for classes which wrap distributions

#### Sampleable<T>

Whether the distribution supports sampling

#### SettableToPartialUniform<TDist>

Whether the distribution can be set to be uniform over the support of another distribution.

#### SettableToUniform

Whether the distribution can be set to uniform

### Enums

#### ConjugateDirichlet.ApproximationMethod

Approximation method to use for non-analytic expectations. Asymptotic: use expectations under the approximating Gamma distribution GaussHermiteQuadrature: Use Gauss-Hermite quadrature with 32 quadrature points ClenshawCurtisQuadrature: Use Clenshaw Curtis quadrature with an adaptive number of quadrature points

#### DiscreteChar.CharClasses

### Delegates

#### CreateEstimatorMethod

#### Evaluator<DistributionType, T>

Delegate type for evaluating log densities. This is used for distributions such as VectorGaussian which have a large memory footprint. If a distribution supports CanGetLogProbPrep<DistributionType, T>, then it can return a delegate of this type to do evaluations without recreating a workspace each time.

#### Sampler<T>

Delegate type for sampling

#### Sampler<DistributionType, T>

Delegate type for sampling a distribution. This is used for distributions such as VectorGaussian which have a large memory footprint. If a distribution supports CanSamplePrep<DistributionType, T>, then it can return a delegate of this type to do successive sampling without recreating a workspace each time.