pyuncertainnumber.characterisation.stats

Attributes

Functions

fit(→ pyuncertainnumber.UncertainNumber)

parametric estimator to fit a distribution from data

makedist(shape)

a decorator to transform a sps.dist into Distribution objects

MMbernoulli(x)

a first attempt to Maximum likelihood estimation for Bernoulli distribution which accepts both precise and imprecise data;

MMbeta(x)

mm_beta(mean, std)

from given moments, return a beta distribution

MMbetabinomial(n, x)

MMbinomial(x, n)

MMchisquared(x)

MMexponential(x)

universal_exponential(mean)

single parameter pattern exponential distribution constructor

mm_exponential(mean)

from given moments, return an exponential distribution

MMF(x)

MMgamma(x)

mm_gamma(mean[, std])

from given moments, return a gamma distribution

MMgeometric(x)

MMgeometric(x)

MMpascal(x)

MMgumbel(x)

mm_gumbel(mean, std)

from given moments, return a gumbel distribution

MMextremevalue(x)

MMlognormal(x)

lognormal_mom_estimator([data, sample_mean, ...])

Method of Moments estimator for Lognormal(μ, σ^2).

mm_lognormal(mean, std)

Method of Moments estimator for Lognormal(μ, σ^2).

MMlaplace(x)

MMdoubleexponential(x)

MMlogistic(x)

MMloguniform(x)

MMnormal(x)

mm_normal(mean, std)

from given moments, return a normal distribution

MMgaussian(x)

MMpareto(x)

MMpoisson(x)

MMpowerfunction(x)

MMt(x)

MMstudent(x)

MMuniform(x)

MMrectangular(x)

MMtriangular(x[, iters, dives])

MMrayleigh(x)

universal_rayleigh(mean)

single parameter pattern rayleigh distribution constructor

mm_rayleigh(mean)

from given moments, return a rayleigh distribution

MLbernoulli(x)

MLbeta(x)

MLbetabinomial(x)

MLbinomial(x)

# TODO to check

MLchisquared(x)

MLexponential(x)

a standalone caller for exponential distribution with interval data (not in use yet)

MLF(x)

MLgamma(x)

MLgammaexponential(x)

MLgeometric(x)

MLgumbel(x)

MLlaplace(x)

MLlogistic(x)

MLlognormal(x)

MLloguniform(x)

MLnegativebinomial(x)

MLnormal(x)

MLpareto(x)

MLpoisson(x)

MLpowerfunction(x)

MLrayleigh(x)

MLstudent(x)

MLtriangular(x)

MLuniform(x)

sMLbernoulli(x)

sMLnormal(x)

sMLgaussian(x)

sMLexponential(x)

sMLpoisson(x)

sMLgeometric(x)

sMLgumbel(x)

sMLpascal(x)

sMLuniform(x)

sMLrectangular(x)

sMLpareto(x)

sMLlaplace(x)

sMLdoubleexponential(x)

sMLlognormal2(x)

sMLlognormal(x)

sMLloguniform(x)

sMLweibull(x[, shapeinterval])

sMLgamma(data)

MEminmax(min, max)

MEminmaxmean(min, max, mean)

MEmeansd(mean, sd)

MEminmean(min, mean)

MEdiscretemean(x, mu[, steps, iterations])

MEquantiles(v, p)

MEdiscreteminmax(min, max)

MEmeanvar(mean, var)

MEminmaxmeansd(min, max, mean, sd)

MEmmms(min, max, mean, sd)

MEminmaxmeanvar(min, max, mean, var)

antweiler(x)

betapert(min, max, mode)

mnr(n[, many])

fermilnorm(x1, x2[, n, pr])

ferminorm(x1, x2[, n, pr])

approxksD95(n)

ks(x[, conf, min, max])

ferminormconfband(x1, x2, n[, pr, conf, bOt, tOp])

fermilnormconfband(x1, x2, n[, pr, conf, bOt, tOp])

parse_moments(family, mean[, std, var])

parse the moments input to a standard form for dist construction

Module Contents

pyuncertainnumber.characterisation.stats.fit(method: str, family: str, data: numpy.ndarray) pyuncertainnumber.UncertainNumber

parametric estimator to fit a distribution from data

Parameters:
  • method (str) – method of fitting, e.g., {‘mle’ or ‘mom’} ‘entropy’, ‘pert’, ‘fermi’, ‘bayesian’

  • family (str) – distribution family to be fitted

  • data (np.ndarray) – data to be fitted

Returns:

  • UncertainNumber object

Example

>>> # precise data
>>> pun.fit('mle', 'norm', np.random.normal(0, 1, 100))
>>>  # imprecise data
>>> precise_sample = sps.expon(scale=1/0.4).rvs(15)
>>> imprecise_data = pba.I(lo = precise_sample - 1.4, hi=precise_sample + 1.4)
>>> pun.fit('mom', family='exponential', data=imprecise_data)

See also

pyuncertainnumber.pba.KS_bounds() : a non-parametric charactearisation method using Kolmogorov-Smirnov bounds

pyuncertainnumber.characterisation.stats.makedist(shape: str)

a decorator to transform a sps.dist into Distribution objects

pyuncertainnumber.characterisation.stats.MMbernoulli(x)

a first attempt to Maximum likelihood estimation for Bernoulli distribution which accepts both precise and imprecise data;

#! the example of singleparam pattern #! to change, add the ‘interval_measurement’ decorator .. note:

the attempt is successful per se, but not accommodating to the top-level calling signature yet.

- precise data returns precise distrubution
- imprecise data need to be in Interval type to return a pbox
- interval data can return either a precise distribution or a pbox
pyuncertainnumber.characterisation.stats.MMbeta(x: numpy.ndarray)
pyuncertainnumber.characterisation.stats.mm_beta(mean, std)

from given moments, return a beta distribution

pyuncertainnumber.characterisation.stats.MMbetabinomial(n: int, x)
pyuncertainnumber.characterisation.stats.MMbinomial(x, n: int)
Parameters:

n (-) – number of trials

pyuncertainnumber.characterisation.stats.MMchisquared(x)
pyuncertainnumber.characterisation.stats.MMexponential(x)
pyuncertainnumber.characterisation.stats.universal_exponential(mean)

single parameter pattern exponential distribution constructor

Note

mean can be a precise number or an interval; Exponential is parameterised by scale, which is the inverse of the rate parameter (lambda).

pyuncertainnumber.characterisation.stats.mm_exponential(mean)

from given moments, return an exponential distribution

Note

This constructor is parameterised by scale, which is the inverse of the rate parameter (lambda).

pyuncertainnumber.characterisation.stats.MMF(x)
pyuncertainnumber.characterisation.stats.MMgamma(x)
pyuncertainnumber.characterisation.stats.mm_gamma(mean, std=None)

from given moments, return a gamma distribution

pyuncertainnumber.characterisation.stats.MMgeometric(x)
pyuncertainnumber.characterisation.stats.MMgeometric(x)
pyuncertainnumber.characterisation.stats.MMpascal(x)
pyuncertainnumber.characterisation.stats.MMgumbel(x)
pyuncertainnumber.characterisation.stats.mm_gumbel(mean, std)

from given moments, return a gumbel distribution

pyuncertainnumber.characterisation.stats.MMextremevalue(x)
pyuncertainnumber.characterisation.stats.MMlognormal(x)
pyuncertainnumber.characterisation.stats.lognormal_mom_estimator(data=None, sample_mean=None, sample_variance=None)

Method of Moments estimator for Lognormal(μ, σ^2).

Parameters:
  • data (array-like, optional) – Raw data sample. If provided, mean and variance are computed from it.

  • sample_mean (float, optional) – Precomputed sample mean (ignored if data is provided).

  • sample_variance (float, optional) – Precomputed sample variance (ignored if data is provided).

Returns:

  • mu_hat (float) – Estimated mean of the underlying normal distribution.

  • sigma2_hat (float) – Estimated variance of the underlying normal distribution.

pyuncertainnumber.characterisation.stats.mm_lognormal(mean: float, std: float)

Method of Moments estimator for Lognormal(μ, σ^2).

args
mean (float):

Sample mean of the data (m1).

std (float):

Sample standard deviation of the data (s).

returns
mu_hat (float):

Estimated mean of the underlying normal distribution.

sigma2_hat (float):

Estimated variance of the underlying normal distribution.

pyuncertainnumber.characterisation.stats.MMlaplace(x)
pyuncertainnumber.characterisation.stats.MMdoubleexponential(x)
pyuncertainnumber.characterisation.stats.MMlogistic(x)
pyuncertainnumber.characterisation.stats.MMloguniform(x)
pyuncertainnumber.characterisation.stats.MMnormal(x)
pyuncertainnumber.characterisation.stats.mm_normal(mean, std)

from given moments, return a normal distribution

pyuncertainnumber.characterisation.stats.MMgaussian(x)
pyuncertainnumber.characterisation.stats.MMpareto(x)
pyuncertainnumber.characterisation.stats.MMpoisson(x)
pyuncertainnumber.characterisation.stats.MMpowerfunction(x)
pyuncertainnumber.characterisation.stats.MMt(x)
pyuncertainnumber.characterisation.stats.MMstudent(x)
pyuncertainnumber.characterisation.stats.MMuniform(x)
pyuncertainnumber.characterisation.stats.MMrectangular(x)
pyuncertainnumber.characterisation.stats.MMtriangular(x, iters=100, dives=10)
pyuncertainnumber.characterisation.stats.MMrayleigh(x)
pyuncertainnumber.characterisation.stats.universal_rayleigh(mean)

single parameter pattern rayleigh distribution constructor

Note

mean can be a precise number or an interval;

pyuncertainnumber.characterisation.stats.mm_rayleigh(mean)

from given moments, return a rayleigh distribution

pyuncertainnumber.characterisation.stats.named_mom_methods
pyuncertainnumber.characterisation.stats.MLbernoulli(x)
pyuncertainnumber.characterisation.stats.MLbeta(x)
pyuncertainnumber.characterisation.stats.MLbetabinomial(x)
pyuncertainnumber.characterisation.stats.MLbinomial(x)

# TODO to check #! no fitting func for scipy discrete distributions

pyuncertainnumber.characterisation.stats.MLchisquared(x)
pyuncertainnumber.characterisation.stats.MLexponential(x)

a standalone caller for exponential distribution with interval data (not in use yet)

pyuncertainnumber.characterisation.stats.MLF(x)
pyuncertainnumber.characterisation.stats.MLgamma(x)
pyuncertainnumber.characterisation.stats.MLgammaexponential(x)
pyuncertainnumber.characterisation.stats.MLgeometric(x)
pyuncertainnumber.characterisation.stats.MLgumbel(x)
pyuncertainnumber.characterisation.stats.MLlaplace(x)
pyuncertainnumber.characterisation.stats.MLlogistic(x)
pyuncertainnumber.characterisation.stats.MLlognormal(x)
pyuncertainnumber.characterisation.stats.MLloguniform(x)
pyuncertainnumber.characterisation.stats.MLnegativebinomial(x)
pyuncertainnumber.characterisation.stats.MLnormal(x)
pyuncertainnumber.characterisation.stats.MLpareto(x)
pyuncertainnumber.characterisation.stats.MLpoisson(x)
pyuncertainnumber.characterisation.stats.MLpowerfunction(x)
pyuncertainnumber.characterisation.stats.MLrayleigh(x)
pyuncertainnumber.characterisation.stats.MLstudent(x)
pyuncertainnumber.characterisation.stats.MLtriangular(x)
pyuncertainnumber.characterisation.stats.MLuniform(x)
pyuncertainnumber.characterisation.stats.named_mle_methods
pyuncertainnumber.characterisation.stats.sMLbernoulli(x)
pyuncertainnumber.characterisation.stats.sMLnormal(x)
pyuncertainnumber.characterisation.stats.sMLgaussian(x)
pyuncertainnumber.characterisation.stats.sMLexponential(x)
pyuncertainnumber.characterisation.stats.sMLpoisson(x)
pyuncertainnumber.characterisation.stats.sMLgeometric(x)
pyuncertainnumber.characterisation.stats.sMLgumbel(x)
pyuncertainnumber.characterisation.stats.sMLpascal(x)
pyuncertainnumber.characterisation.stats.sMLuniform(x)
pyuncertainnumber.characterisation.stats.sMLrectangular(x)
pyuncertainnumber.characterisation.stats.sMLpareto(x)
pyuncertainnumber.characterisation.stats.sMLlaplace(x)
pyuncertainnumber.characterisation.stats.sMLdoubleexponential(x)
pyuncertainnumber.characterisation.stats.sMLlognormal2(x)
pyuncertainnumber.characterisation.stats.sMLlognormal(x)
pyuncertainnumber.characterisation.stats.sMLloguniform(x)
pyuncertainnumber.characterisation.stats.sMLweibull(x, shapeinterval=None)
pyuncertainnumber.characterisation.stats.sMLgamma(data)
pyuncertainnumber.characterisation.stats.named_smle_methods
pyuncertainnumber.characterisation.stats.MEminmax(min, max)
pyuncertainnumber.characterisation.stats.MEminmaxmean(min, max, mean)
pyuncertainnumber.characterisation.stats.MEmeansd(mean, sd)
pyuncertainnumber.characterisation.stats.MEminmean(min, mean)
pyuncertainnumber.characterisation.stats.MEdiscretemean(x, mu, steps=10, iterations=50)
pyuncertainnumber.characterisation.stats.MEquantiles(v, p)
pyuncertainnumber.characterisation.stats.MEdiscreteminmax(min, max)
pyuncertainnumber.characterisation.stats.MEmeanvar(mean, var)
pyuncertainnumber.characterisation.stats.MEminmaxmeansd(min, max, mean, sd)
pyuncertainnumber.characterisation.stats.MEmmms(min, max, mean, sd)
pyuncertainnumber.characterisation.stats.MEminmaxmeanvar(min, max, mean, var)
pyuncertainnumber.characterisation.stats.antweiler(x)
pyuncertainnumber.characterisation.stats.betapert(min, max, mode)
pyuncertainnumber.characterisation.stats.mnr(n, many=10000)
pyuncertainnumber.characterisation.stats.fermilnorm(x1, x2, n=None, pr=0.9)
pyuncertainnumber.characterisation.stats.ferminorm(x1, x2, n=None, pr=0.9)
pyuncertainnumber.characterisation.stats.approxksD95(n)
pyuncertainnumber.characterisation.stats.ks(x, conf=0.95, min=None, max=None)
pyuncertainnumber.characterisation.stats.ferminormconfband(x1, x2, n, pr=0.9, conf=0.95, bOt=0.001, tOp=0.999)
pyuncertainnumber.characterisation.stats.fermilnormconfband(x1, x2, n, pr=0.9, conf=0.95, bOt=0.001, tOp=0.999)
pyuncertainnumber.characterisation.stats.parse_moments(family: str, mean: numbers.Number | pyuncertainnumber.pba.intervals.Interval, std: numbers.Number = None, var: numbers.Number = None, **kwargs)

parse the moments input to a standard form for dist construction

Parameters:
  • family (str) – distribution family

  • mean (Number | Interval) – mean value, which could be either precise value or an Interval object. Python list is not supported.

  • std (Number) – standard deviation

  • var (Number) – variance

Example

>>> parse_moments(family='normal', mean=3., std=1.)

Note

Only accept up to 2nd moment for now. Interval mean is supported due to single parameter construction. Combined mean and std intervals are not supported as they are deemed NP hard question.