Probability Distributions
- class paramnormal.dist.normal(**params: float | None)[source]
Bases:
BaseDist_MixinCreate and fit data to a normal distribution.
- Parameters:
- mufloat
The expected value (mean) of the underlying normal distribution. Acts as the location parameter of the distribution.
- sigmafloat
The standard deviation of the underlying normal distribution. Also acts as the scale parameter of distribution.
Methods
fit(data, **guesses)Fit a distribution to sample using scipy's maximum likelihood estimation methods.
from_params(params)Create a distribution from the
namedtupleresult of thefit()method.See also
References
http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.norm.html https://en.wikipedia.org/wiki/normal_distribution
Examples
>>> import numpy >>> import paramnormal as pn >>> numpy.random.seed(0) >>> pn.normal(mu=5, sigma=2).rvs(size=3) array([ 8.52810469, 5.80031442, 6.95747597])
>>> # english names and greek symbols are interchangeable >>> numpy.random.seed(0) >>> pn.normal(μ=5, σ=2).rvs(size=3) array([ 8.52810469, 5.80031442, 6.95747597])
>>> # silly fake data >>> numpy.random.seed(0) >>> data = numpy.random.normal(5, 2, size=37) >>> # pretend `data` is unknown and we want to fit a dist. to it >>> pn.normal.fit(data) params(mu=5.6480512782619359, sigma=2.1722505742582769)
>>> # estimate sigma when mu is fixed a known value: >>> pn.normal.fit(data, mu=4.75) params(mu=4.75, sigma=2.3505677305181645)
- dist: ClassVar[rv_continuous] = <scipy.stats._continuous_distns.norm_gen object>
- param_template
alias of
params
- class paramnormal.dist.lognormal(**params: float | None)[source]
Bases:
BaseDist_MixinCreate and fit data to a lognormal distribution.
- Parameters:
- mufloat
The expected value (mean) of the underlying normal distribution. Acts as the scale parameter of the distribution.
- sigmafloat
The standard deviation of the underlying normal distribution. Also acts as the shape parameter of distribution.
- offsetfloat, optional
The location parameter of the distribution. It’s effectively the lower bound of the distribution. In other works, if you’re investigating some quantity that cannot go below zero (e.g., pollutant concentrations), leave this as the default (zero).
Note
When fitting a lognormal distribution to a dataset, this will be fixed at its default value unless you explicitly set it to another value. Set it to None if wish that it be estimated entirely from scratch.
Methods
fit(data, **guesses)Fit a distribution to sample using scipy's maximum likelihood estimation methods.
from_params(params)Create a distribution from the
namedtupleresult of thefit()method.References
http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.lognorm.html https://en.wikipedia.org/wiki/lognormal_distribution
Examples
>>> import numpy >>> import paramnormal as pn >>> numpy.random.seed(0) >>> pn.lognormal(mu=5, sigma=2).rvs(size=3) array([ 5054.85624027, 330.40342795, 1050.97750604])
>>> # you can also use greek letters >>> numpy.random.seed(0) >>> pn.lognormal(μ=5, σ=2).rvs(size=3) array([ 5054.85624027, 330.40342795, 1050.97750604])
>>> # silly fake data >>> numpy.random.seed(0) >>> data = numpy.random.lognormal(5, 2, size=37) >>> # pretend `data` is unknown and we want to fit a dist. to it >>> pn.lognormal.fit(data) params(mu=5.6480511731060181, sigma=2.172250571711877, offset=0)
>>> # estimate sigma when mu is fixed a known value: >>> pn.lognormal.fit(data, mu=4.75) params(mu=4.75, sigma=2.3505859375000036, offset=0)
>>> # include `offset` in the estimate >>> pn.lognormal.fit(data, offset=None) params(mu=5.6538159643068386, sigma=2.1596452081058795, offset=-0.12039282461824304)
- dist: ClassVar[rv_continuous] = <scipy.stats._continuous_distns.lognorm_gen object>
- param_template
alias of
params
- classmethod fit(data: float | int | number | NDArray[generic] | Sequence[float | int | number] | Sequence[float | int | number | NDArray[generic] | Sequence[float | int | number] | Sequence[NDArrayLike]], **guesses: float | None) ParamsLike[source]
Fit a distribution to sample using scipy’s maximum likelihood estimation methods.
- Parameters:
- dataarray-like
A sample whose distribution parameters will be estimated.
- guessesnamed arguments of floats
Inital guess values for certain parameters of the distribution. See the class docstring for more information on the parameters.
- Returns:
- paramsnamedtuple
A namedtuple containing all of the paramaters of the distribution.
- class paramnormal.dist.weibull(**params: float | None)[source]
Bases:
BaseDist_MixinCreate and fit data to a weibull distribution.
- Parameters:
- kfloat
The shape parameter of the distribution.
Note
Strictly speaking, the weibull distribution has a second shape parameter, lambda. However, it seems to be always set to 1. So much so that scipy doesn’t give you any other option.
- loc, scalefloats, optional
Location and scale parameters of the distribution. These default to, and should probably be left at, 0 and 1, respectively.
Note
When fitting a weibull distribution to a dataset, these will be fixed at their default values unless you explicitly set them to other values. Set them to None if you wish that they be estimated entirely from scratch.
Methods
fit(data, **guesses)Fit a distribution to sample using scipy's maximum likelihood estimation methods.
from_params(params)Create a distribution from the
namedtupleresult of thefit()method.See also
scipy.stats.weibull_minscipy.stats.frechet_minnumpy.random.weibull
References
http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.weibull_min.html https://en.wikipedia.org/wiki/weibull_distribution
Examples
>>> import numpy >>> import paramnormal as pn >>> numpy.random.seed(0) >>> pn.weibull(k=5).rvs(size=3) array([ 0.9553641 , 1.04662991, 0.98415009])
>>> # silly fake data >>> numpy.random.seed(0) >>> data = numpy.random.weibull(5, size=37) >>> # pretend `data` is unknown and we want to fit a dist. to it >>> pn.weibull.fit(data) params(k=5.4158203125000091, loc=0, scale=1)
>>> # include `loc` and `scale` in the estimate >>> pn.weibull.fit(data, loc=None, scale=None) params(k=14.120107702486127, loc=-1.389856535577052, scale=2.4320324339845572)
- dist: ClassVar[rv_continuous] = <scipy.stats._continuous_distns.weibull_min_gen object>
- param_template
alias of
params
- class paramnormal.dist.alpha(**params: float | None)[source]
Bases:
BaseDist_MixinCreate and fit data to a alpha distribution.
- Parameters:
- alphafloat
The shape parameter of the distribution.
- loc, scalefloats, optional
Location and scale parameters of the distribution. These default to, and should probably be left at, 0 and 1, respectively.
Note
When fitting a alpha distribution to a dataset, these will be fixed at their default values unless you explicitly set them to other values. Set them to None if you wish that they be estimated entirely from scratch.
Methods
fit(data, **guesses)Fit a distribution to sample using scipy's maximum likelihood estimation methods.
from_params(params)Create a distribution from the
namedtupleresult of thefit()method.See also
References
http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.alpha.html
Examples
>>> import numpy >>> from scipy import stats >>> import paramnormal as pn >>> numpy.random.seed(0) >>> pn.alpha(alpha=5).rvs(size=3) array([ 0.20502995, 0.22566277, 0.21099298])
>>> # you can also use greek letters >>> numpy.random.seed(0) >>> pn.alpha(α=5).rvs(size=3) array([ 0.20502995, 0.22566277, 0.21099298])
>>> # silly fake data >>> numpy.random.seed(0) >>> data = stats.alpha.rvs(5, size=37) >>> # pretend `data` is unknown and we want to fit a dist. to it >>> pn.alpha.fit(data) params(alpha=4.8356445312500096, loc=0, scale=1)
>>> # include `loc` and `scale` in the estimate >>> pn.alpha.fit(data, loc=None, scale=None) params(alpha=8.6781299501492342, loc=-0.15002784429644306, scale=3.1262971852456447)
- dist: ClassVar[rv_continuous] = <scipy.stats._continuous_distns.alpha_gen object>
- param_template
alias of
params
- class paramnormal.dist.beta(**params: float | None)[source]
Bases:
BaseDist_MixinCreate and fit data to a beta distribution.
- Parameters:
- alpha, betafloat
The (positive) shape parameters of the distribution.
- loc, scalefloats, optional
Location and scale parameters of the distribution. These default to, and should probably be left at, 0 and 1, respectively.
Note
When fitting a beta distribution to a dataset, these will be fixed at their default values unless you explicitly set them to other values. Set them to None if you wish that they be estimated entirely from scratch.
Methods
fit(data, **guesses)Fit a distribution to sample using scipy's maximum likelihood estimation methods.
from_params(params)Create a distribution from the
namedtupleresult of thefit()method.See also
References
http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.beta.html https://en.wikipedia.org/wiki/beta_distribution
Examples
>>> import numpy >>> import paramnormal as pn >>> numpy.random.seed(0) >>> pn.beta(alpha=2, beta=5).rvs(size=3) array([ 0.47917138, 0.6550558 , 0.21501632])
>>> # you can also use greek letters >>> numpy.random.seed(0) >>> pn.beta(α=2, β=5).rvs(size=3) array([ 0.47917138, 0.6550558 , 0.21501632])
>>> # silly fake data >>> numpy.random.seed(0) >>> data = pn.beta(alpha=2, beta=5).rvs(size=37) >>> # pretend `data` is unknown and we want to fit a dist. to it >>> pn.beta.fit(data) params(alpha=1.6784891179355115, beta=4.2459121691279398, loc=0, scale=1)
>>> # just estimate beta with a known alpha >>> pn.beta.fit(data, alpha=2) params(alpha=2, beta=4.9699264393421139, loc=0, scale=1)
>>> # include `loc` and `scale` in the estimate >>> pn.beta.fit(data, loc=None, scale=None) params( alpha=1.8111139255547926, beta=4.6972775768688697, loc=-0.0054013993799938431, scale=1.0388376932132561 )
- dist: ClassVar[rv_continuous] = <scipy.stats._continuous_distns.beta_gen object>
- param_template
alias of
params
- class paramnormal.dist.gamma(**params: float | None)[source]
Bases:
BaseDist_MixinCreate and fit data to a gamma distribution.
- Parameters:
- k, thetafloat
The shape and scale parameters of the distribution, respectively.
- locfloat, optional
Location parameter of the distribution. This defaults to, and should probably be left at, 0.
Note
When fitting a beta distribution to a dataset, this will be fixed at its default value unless you explicitly set it to other values. Set to None if you wish that it be estimated entirely from scratch.
Methods
fit(data, **guesses)Fit a distribution to sample using scipy's maximum likelihood estimation methods.
from_params(params)Create a distribution from the
namedtupleresult of thefit()method.See also
References
http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.gamma.html https://en.wikipedia.org/wiki/gamma_distribution
Examples
>>> import numpy >>> import paramnormal as pn >>> numpy.random.seed(0) >>> pn.gamma(k=2, theta=5).rvs(size=3) array([ 25.69414788, 11.19240456, 27.13566137])
>>> # you can also use greek letters >>> numpy.random.seed(0) >>> pn.gamma(k=2, θ=5).rvs(size=3) array([ 25.69414788, 11.19240456, 27.13566137])
>>> # silly fake data >>> numpy.random.seed(0) >>> data = pn.gamma(k=2, θ=5).rvs(size=37) >>> # pretend `data` is unknown and we want to fit a dist. to it >>> pn.gamma.fit(data) params(k=1.3379069223213471, loc=0, theta=7.5830062081633622)
>>> # just estimate theta with a known k >>> pn.gamma.fit(data, theta=5) params(k=1.8060453251225814, loc=0, theta=5)
>>> # include `loc` in the estimate >>> pn.gamma.fit(data, loc=None) params(k=1.0996117768860174, loc=0.29914735266576881, theta=8.9542450315590756)
- dist: ClassVar[rv_continuous] = <scipy.stats._continuous_distns.gamma_gen object>
- param_template
alias of
params
- class paramnormal.dist.chi_squared(**params: float | None)[source]
Bases:
BaseDist_MixinCreate and fit data to a chi-squared distribution.
- Parameters:
- kfloat
The degrees of freedom of the distribution, respectively.
- loc, scalefloats, optional
Location and scale parameters of the distribution. These default to, and should probably be left at, 0 and 1, respectively.
Note
When fitting a chi-squared distribution to a dataset, these will be fixed at their default value unless you explicitly set them to other values. Set to None if you wish that they be estimated entirely from scratch.
Methods
fit(data, **guesses)Fit a distribution to sample using scipy's maximum likelihood estimation methods.
from_params(params)Create a distribution from the
namedtupleresult of thefit()method.See also
References
http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.chi2.html https://en.wikipedia.org/wiki/Chi-squared_distribution
Examples
>>> import numpy >>> import paramnormal as pn >>> numpy.random.seed(0) >>> pn.chi_squared(k=2).rvs(size=3) array([ 1.59174902, 2.51186153, 1.84644629])
>>> # silly fake data >>> numpy.random.seed(0) >>> data = pn.chi_squared(k=2).rvs(size=37) >>> # pretend `data` is unknown and we want to fit a dist. to it >>> pn.chi_squared.fit(data) params(k=2.2668945312500028, loc=0, scale=1)
>>> # include `loc` in the estimate >>> pn.chi_squared.fit(data, loc=None) params(k=1.9361813889429524, loc=0.037937143324767775, scale=1)
- dist: ClassVar[rv_continuous] = <scipy.stats._continuous_distns.chi2_gen object>
- param_template
alias of
params
- nane = 'chi_squared'
- class paramnormal.dist.pareto(**params: float | None)[source]
Bases:
BaseDist_MixinCreate and fit data to a pareto distribution.
- Parameters:
- alphafloat
The shape parameter of the distribution.
- loc, scalefloats, optional
Location and scale parameters of the distribution. These default to, and should probably be left at, 0 and 1, respectively.
Note
When fitting a pareto distribution to a dataset, this will be fixed at its default value unless you explicitly set it to other values. Set to None if you wish that it be estimated entirely from scratch.
Methods
fit(data, **guesses)Fit a distribution to sample using scipy's maximum likelihood estimation methods.
from_params(params)Create a distribution from the
namedtupleresult of thefit()method.See also
References
http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.pareto.html https://en.wikipedia.org/wiki/pareto_distribution
Examples
>>> import numpy >>> import paramnormal as pn >>> numpy.random.seed(0) >>> pn.pareto(alpha=2).rvs(size=3) array([ 1.48875061, 1.87379424, 1.58662889])
>>> # you can also use greek letters >>> numpy.random.seed(0) >>> pn.pareto(α=2).rvs(size=3) array([ 1.48875061, 1.87379424, 1.58662889])
>>> # silly fake data >>> numpy.random.seed(0) >>> data = pn.pareto(alpha=2).rvs(size=37) >>> # pretend `data` is unknown and we want to fit a dist. to it >>> pn.pareto.fit(data) params(alpha=1.7850585937500019, loc=0, scale=1)
>>> # include `loc` in the estimate >>> pn.pareto.fit(data, loc=None) params(alpha=1.8040853559635659, loc=0.009529403810858695, scale=1)
- dist: ClassVar[rv_continuous] = <scipy.stats._continuous_distns.pareto_gen object>
- param_template
alias of
params
- class paramnormal.dist.exponential(**params: float | None)[source]
Bases:
BaseDist_MixinCreate and fit data to an exponential distribution.
- Parameters:
- lamdafloat
The shape parameter of the distribution.
Note
For our purposes, we spell lambda as lamda to avoid conflicting with the python keyword
lambda.- locfloat, optional
Location parameter of the distribution. This defaults to, and should probably be left at, 0.
Note
When fitting an exponential distribution to a dataset, this will be fixed at its default value unless you explicitly set it to other values. Set to None if you wish that it be estimated entirely from scratch.
Methods
fit(data, **guesses)Fit a distribution to sample using scipy's maximum likelihood estimation methods.
from_params(params)Create a distribution from the
namedtupleresult of thefit()method.References
http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.expon.html https://en.wikipedia.org/wiki/exponential_distribution
Examples
>>> import numpy >>> import paramnormal as pn >>> numpy.random.seed(0) >>> pn.exponential(lamda=2).rvs(size=3) array([ 0.39793725, 0.62796538, 0.46161157])
>>> # you can also use greek letters >>> numpy.random.seed(0) >>> pn.exponential(λ=2).rvs(size=3) array([ 0.39793725, 0.62796538, 0.46161157])
>>> # silly fake data >>> numpy.random.seed(0) >>> data = pn.exponential(λ=2).rvs(size=37) >>> # pretend `data` is unknown and we want to fit a dist. to it >>> pn.exponential.fit(data) params(lamda=1.7849050026146085, loc=0)
>>> # include `loc` in the estimate >>> pn.exponential.fit(data, loc=None) params(lamda=1.8154701618164411, loc=0.0094842718426853996)
- dist: ClassVar[rv_continuous] = <scipy.stats._continuous_distns.expon_gen object>
- param_template
alias of
params
- classmethod fit(data: float | int | number | NDArray[generic] | Sequence[float | int | number] | Sequence[float | int | number | NDArray[generic] | Sequence[float | int | number] | Sequence[NDArrayLike]], **guesses: float | None) ParamsLike[source]
Fit a distribution to sample using scipy’s maximum likelihood estimation methods.
- Parameters:
- dataarray-like
A sample whose distribution parameters will be estimated.
- guessesnamed arguments of floats
Inital guess values for certain parameters of the distribution. See the class docstring for more information on the parameters.
- Returns:
- paramsnamedtuple
A namedtuple containing all of the paramaters of the distribution.
- class paramnormal.dist.rice(**params: float | None)[source]
Bases:
BaseDist_MixinCreate and fit data to a Rice distribution.
- Parameters:
- Rfloat
The shape parameter of the distribution.
- sigmafloat
The standard deviate of the distribution.
- locfloat, optional
Location parameter of the distribution. This defaults to, and should probably be left at, 0.
Note
When fitting an Rice distribution to a dataset, this will be fixed at its default value unless you explicitly set it to other values. Set to None if you wish that it be estimated entirely from scratch.
Methods
fit(data, **guesses)Fit a distribution to sample using scipy's maximum likelihood estimation methods.
from_params(params)Create a distribution from the
namedtupleresult of thefit()method.See also
References
http://scipy.github.io/devdocs/generated/scipy.stats.rice https://en.wikipedia.org/wiki/Rice_distribution
Examples
>>> import numpy >>> import paramnormal as pn >>> numpy.random.seed(0) >>> pn.rice(R=10, sigma=2).rvs(size=3) array([ 15.67835764, 13.36907874, 10.37753817])
>>> # you can also use greek letters >>> numpy.random.seed(0) >>> pn.rice(R=10, σ=2).rvs(size=3) array([ 15.67835764, 13.36907874, 10.37753817])
>>> # silly fake data >>> numpy.random.seed(0) >>> data = pn.rice(R=10, sigma=2).rvs(size=37) >>> # pretend `data` is unknown and we want to fit a dist. to it >>> pn.rice.fit(data) params(R=10.100674084593422, sigma=1.759817171541185, loc=0)
>>> # include `loc` in the estimate (bad idea) >>> pn.rice.fit(data, loc=None) params(R=4.249154300734, sigma=1.862167512728, loc=5.570921659394)
- dist: ClassVar[rv_continuous] = <scipy.stats._continuous_distns.rice_gen object>
- param_template
alias of
params
- classmethod fit(data: float | int | number | NDArray[generic] | Sequence[float | int | number] | Sequence[float | int | number | NDArray[generic] | Sequence[float | int | number] | Sequence[NDArrayLike]], **guesses: float | None) ParamsLike[source]
Fit a distribution to sample using scipy’s maximum likelihood estimation methods.
- Parameters:
- dataarray-like
A sample whose distribution parameters will be estimated.
- guessesnamed arguments of floats
Inital guess values for certain parameters of the distribution. See the class docstring for more information on the parameters.
- Returns:
- paramsnamedtuple
A namedtuple containing all of the paramaters of the distribution.