Probability Distributions¶
See also
Distribution
- Abstract Base Class for Probability Distributions¶
-
class
qinfer.
Distribution
[source]¶ Bases:
object
Abstract base class for probability distributions on one or more random variables.
-
sample
(n=1)[source]¶ Returns one or more samples from this probability distribution.
Parameters: n (int) – Number of samples to return. Return type: numpy.ndarray Returns: An array containing samples from the distribution of shape (n, d)
, whered
is the number of random variables.
-
Specific Distributions¶
-
class
qinfer.
UniformDistribution
(ranges=array([[0, 1]]))[source]¶ Bases:
qinfer.distributions.Distribution
Uniform distribution on a given rectangular region.
Parameters: ranges (numpy.ndarray) – Array of shape (n_rvs, 2)
, wheren_rvs
is the number of random variables, specifying the upper and lower limits for each variable.-
n_rvs
¶
-
-
class
qinfer.
DiscreteUniformDistribution
(num_bits)[source]¶ Bases:
qinfer.distributions.Distribution
Discrete uniform distribution over the integers between
0
and2**num_bits-1
inclusive.Parameters: num_bits (int) – non-negative integer specifying how big to make the interval. -
n_rvs
¶
-
-
class
qinfer.
MVUniformDistribution
(dim=6)[source]¶ Bases:
qinfer.distributions.Distribution
Uniform distribution over the rectangle \([0,1]^{\text{dim}}\) with the restriction that vector must sum to 1. Equivalently, a uniform distribution over the
dim-1
simplex whose vertices are the canonical unit vectors of \(\mathbb{R}^\text{dim}\).Parameters: dim (int) – Number of dimensions; n_rvs
.-
n_rvs
¶
-
-
class
qinfer.
NormalDistribution
(mean, var, trunc=None)[source]¶ Bases:
qinfer.distributions.Distribution
Normal or truncated normal distribution over a single random variable.
Parameters: -
n_rvs
¶
-
-
class
qinfer.
MultivariateNormalDistribution
(mean, cov)[source]¶ Bases:
qinfer.distributions.Distribution
Multivariate (vector-valued) normal distribution.
Parameters: - mean (np.ndarray) – Array of shape
(n_rvs, )
representing the mean of the distribution. - cov (np.ndarray) – Array of shape
(n_rvs, n_rvs)
representing the covariance matrix of the distribution.
-
n_rvs
¶
- mean (np.ndarray) – Array of shape
-
class
qinfer.
SlantedNormalDistribution
(ranges=array([[0, 1]]), weight=0.01)[source]¶ Bases:
qinfer.distributions.Distribution
Uniform distribution on a given rectangular region with additive noise. Random variates from this distribution follow \(X+Y\) where \(X\) is drawn uniformly with respect to the rectangular region defined by ranges, and \(Y\) is normally distributed about 0 with variance
weight**2
.Parameters: - ranges (numpy.ndarray) – Array of shape
(n_rvs, 2)
, wheren_rvs
is the number of random variables, specifying the upper and lower limits for each variable. - weight (float) – Number specifying the inverse variance of the additive noise term.
-
n_rvs
¶
- ranges (numpy.ndarray) – Array of shape
-
class
qinfer.
LogNormalDistribution
(mu=0, sigma=1)[source]¶ Bases:
qinfer.distributions.Distribution
Log-normal distribution.
Parameters: - mu – Location parameter (numeric), set to 0 by default.
- sigma – Scale parameter (numeric), set to 1 by default. Must be strictly greater than zero.
-
n_rvs
¶
-
class
qinfer.
ConstantDistribution
(values)[source]¶ Bases:
qinfer.distributions.Distribution
Represents a determinstic variable; useful for combining with other distributions, marginalizing, etc.
Parameters: values – Shape (n,)
array or list of values \(X_0\) such that \(\Pr(X) = \delta(X - X_0)\).-
n_rvs
¶
-
-
class
qinfer.
BetaDistribution
(alpha=None, beta=None, mean=None, var=None)[source]¶ Bases:
qinfer.distributions.Distribution
The beta distribution, whose pdf at \(x\) is proportional to \(x^{\alpha-1}(1-x)^{\beta-1}\). Note that either
alpha
andbeta
, ormean
andvar
, must be specified as inputs; either case uniquely determines the distribution.Parameters: -
n_rvs
¶
-
-
class
qinfer.
BetaBinomialDistribution
(n, alpha=None, beta=None, mean=None, var=None)[source]¶ Bases:
qinfer.distributions.Distribution
The beta-binomial distribution, whose pmf at the non-negative integer \(k\) is equal to \(\binom{n}{k}\frac{B(k+\alpha,n-k+\beta)}{B(\alpha,\beta)}\) with \(B(\cdot,\cdot)\) the beta function. This is the compound distribution whose variates are binomial distributed with a bias chosen from a beta distribution. Note that either
alpha
andbeta
, ormean
andvar
, must be specified as inputs; either case uniquely determines the distribution.Parameters: - n (int) – The \(n\) parameter of the beta-binomial distribution.
- alpha (float) – The alpha shape parameter of the beta-binomial distribution.
- beta (float) – The beta shape parameter of the beta-binomial distribution.
- mean (float) – The desired mean value of the beta-binomial distribution.
- var (float) – The desired variance of the beta-binomial distribution.
-
n_rvs
¶
-
class
qinfer.
GammaDistribution
(alpha=None, beta=None, mean=None, var=None)[source]¶ Bases:
qinfer.distributions.Distribution
The gamma distribution, whose pdf at \(x\) is proportional to \(x^{-\alpha-1}e^{-x\beta}\). Note that either alpha and beta, or mean and var, must be specified as inputs; either case uniquely determines the distribution.
Parameters: -
n_rvs
¶
-
-
class
qinfer.
InterpolatedUnivariateDistribution
(pdf, compactification_scale=1, n_interp_points=1500)[source]¶ Bases:
qinfer.distributions.Distribution
Samples from a single-variable distribution specified by its PDF. The samples are drawn by first drawing uniform samples over the interval
[0, 1]
, and then using an interpolation of the inverse-CDF corresponding to the given PDF to transform these samples into the desired distribution.Parameters: -
n_rvs
¶
-
-
class
qinfer.
HilbertSchmidtUniform
(dim=2)[source]¶ Bases:
qinfer.distributions.SingleSampleMixin
,qinfer.distributions.Distribution
Creates a new Hilber-Schmidt uniform prior on state space of dimension
dim
. See e.g. [Mez06] and [Mis12].Parameters: dim (int) – Dimension of the state space. -
n_rvs
¶
-
-
class
qinfer.
HaarUniform
(dim=2)[source]¶ Bases:
qinfer.distributions.SingleSampleMixin
,qinfer.distributions.Distribution
Haar uniform distribution of pure states of dimension
dim
, parameterized as coefficients of the Pauli basis.Parameters: dim (int) – Dimension of the state space. Note
This distribution presently only works for
dim==2
and the Pauli basis.-
n_rvs
¶
-
-
class
qinfer.
GinibreUniform
(dim=2, k=2)[source]¶ Bases:
qinfer.distributions.SingleSampleMixin
,qinfer.distributions.Distribution
Creates a prior on state space of dimension dim according to the Ginibre ensemble with parameter
k
. See e.g. [Mis12].Parameters: dim (int) – Dimension of the state space. -
n_rvs
¶
-
Combining Distributions¶
QInfer also offers classes for combining distributions together to produce new ones.
-
class
qinfer.
ProductDistribution
(*factors)[source]¶ Bases:
qinfer.distributions.Distribution
Takes a non-zero number of QInfer distributions \(D_k\) as input and returns their Cartesian product.
In other words, the returned distribution is \(\Pr(D_1, \dots, D_N) = \prod_k \Pr(D_k)\).
Parameters: factors (Distribution) – Distribution objects representing \(D_k\). Alternatively, one iterable argument can be given, in which case the factors are the values drawn from that iterator. -
n_rvs
¶
-
-
class
qinfer.
PostselectedDistribution
(distribution, model, maxiters=100)[source]¶ Bases:
qinfer.distributions.Distribution
Postselects a distribution based on validity within a given model.
-
n_rvs
¶
-
-
class
qinfer.
MixtureDistribution
(weights, dist, dist_args=None, dist_kw_args=None, shuffle=True)[source]¶ Bases:
qinfer.distributions.Distribution
Samples from a weighted list of distributions.
Parameters: - weights – Length
n_dist
list ornp.ndarray
of probabilites summing to 1. - dist – Either a length
n_dist
list ofDistribution
instances, or aDistribution
class, for example,NormalDistribution
. It is assumed that a list ofDistribution``s all have the same ``n_rvs
. - dist_args – If
dist
is a class, an array of shape(n_dist, n_rvs)
wheredist_args[k,:]
defines the arguments of the k’th distribution. UseNone
if the distribution has no arguments. - dist_kw_args – If
dist
is a class, a dictionary where each key’s value is an array of shape(n_dist, n_rvs)
wheredist_kw_args[key][k,:]
defines the keyword argument corresponding tokey
of the k’th distribution. UseNone
if the distribution needs no keyword arguments. - shuffle (bool) – Whether or not to shuffle result after sampling. Not shuffling
will result in variates being in the same order as
the distributions. Default is
True
.
-
n_rvs
¶
-
n_dist
¶ The number of distributions in the mixture distribution.
- weights – Length
-
class
qinfer.
ConstrainedSumDistribution
(underlying_distribution, desired_total=1)[source]¶ Bases:
qinfer.distributions.Distribution
Samples from an underlying distribution and then enforces that all samples must sum to some given value by normalizing each sample.
Parameters: - underlying_distribution (Distribution) – Underlying probability distribution.
- desired_total (float) – Desired sum of each sample.
-
underlying_distribution
¶
-
n_rvs
¶