mirror of
https://github.com/meteoinfo/MeteoInfo.git
synced 2025-12-08 20:36:05 +00:00
297 lines
7.5 KiB
Python
297 lines
7.5 KiB
Python
# coding=utf-8
|
|
#-----------------------------------------------------
|
|
# Author: Yaqiang Wang
|
|
# Date: 2018-3-20
|
|
# Purpose: MeteoInfoLab stats.distributions module
|
|
# Note: Jython
|
|
#-----------------------------------------------------
|
|
|
|
from org.apache.commons.math3.distribution import NormalDistribution, BetaDistribution, CauchyDistribution, \
|
|
ChiSquaredDistribution, ExponentialDistribution, FDistribution, GammaDistribution, GumbelDistribution, \
|
|
LaplaceDistribution, LevyDistribution, LogisticDistribution, LogNormalDistribution, NakagamiDistribution, \
|
|
ParetoDistribution, TDistribution, TriangularDistribution, UniformRealDistribution, WeibullDistribution
|
|
|
|
from _distn_infrastructure import rv_continuous
|
|
|
|
__all__ = [
|
|
'norm','beta','cauchy','chi2','expon','f','gamma','gumbel','laplace','levy','logistic','lognorm',
|
|
'nakagami','pareto','t','triang','uniform','weibull'
|
|
]
|
|
|
|
class norm_gen(rv_continuous):
|
|
'''
|
|
A normal continuous random variable.
|
|
'''
|
|
|
|
def _create_distribution(self, *args):
|
|
'''
|
|
Create a normal distribution object.
|
|
'''
|
|
loc, scale = self._parse_args(*args)
|
|
dist = NormalDistribution(loc, scale)
|
|
return dist
|
|
|
|
norm = norm_gen()
|
|
|
|
class beta_gen(rv_continuous):
|
|
'''
|
|
A beta continuous random variable.
|
|
'''
|
|
|
|
def _create_distribution(self, *args):
|
|
'''
|
|
Create a normal distribution object.
|
|
'''
|
|
loc, scale = self._parse_args(*args)
|
|
dist = BetaDistribution(loc, scale)
|
|
return dist
|
|
|
|
beta = beta_gen()
|
|
|
|
class cauchy_gen(rv_continuous):
|
|
'''
|
|
A cauchy continuous random variable.
|
|
'''
|
|
|
|
def _create_distribution(self, *args):
|
|
'''
|
|
Create a cauchy distribution object.
|
|
'''
|
|
loc, scale = self._parse_args(*args)
|
|
dist = CauchyDistribution(loc, scale)
|
|
return dist
|
|
|
|
cauchy = cauchy_gen()
|
|
|
|
class chi2_gen(rv_continuous):
|
|
'''
|
|
A chi squared continuous random variable.
|
|
'''
|
|
|
|
def _create_distribution(self, *args):
|
|
'''
|
|
Create a chi squared distribution object.
|
|
'''
|
|
dof = self._parse_args(*args)[0]
|
|
dist = ChiSquaredDistribution(dof)
|
|
return dist
|
|
|
|
chi2 = chi2_gen()
|
|
|
|
class expon_gen(rv_continuous):
|
|
'''
|
|
A exponential continuous random variable.
|
|
'''
|
|
|
|
def _create_distribution(self, *args):
|
|
'''
|
|
Create a exponential distribution object.
|
|
'''
|
|
mean = self._parse_args(*args)[0]
|
|
dist = ExponentialDistribution(mean)
|
|
return dist
|
|
|
|
expon = expon_gen()
|
|
|
|
class f_gen(rv_continuous):
|
|
'''
|
|
A F continuous random variable.
|
|
'''
|
|
|
|
def _create_distribution(self, *args):
|
|
'''
|
|
Create a F distribution object.
|
|
'''
|
|
loc, scale = self._parse_args(*args)
|
|
dist = FDistribution(loc, scale)
|
|
return dist
|
|
|
|
f = f_gen()
|
|
|
|
class gamma_gen(rv_continuous):
|
|
'''
|
|
A gamma continuous random variable.
|
|
'''
|
|
|
|
def _create_distribution(self, *args):
|
|
'''
|
|
Create a gamma distribution object.
|
|
'''
|
|
loc, scale = self._parse_args(*args)
|
|
dist = GammaDistribution(loc, scale)
|
|
return dist
|
|
|
|
gamma = gamma_gen()
|
|
|
|
class gumbel_gen(rv_continuous):
|
|
'''
|
|
A gumbel continuous random variable.
|
|
'''
|
|
|
|
def _create_distribution(self, *args):
|
|
'''
|
|
Create a gumbel distribution object.
|
|
'''
|
|
loc, scale = self._parse_args(*args)
|
|
dist = GumbelDistribution(loc, scale)
|
|
return dist
|
|
|
|
gumbel = gumbel_gen()
|
|
|
|
class laplace_gen(rv_continuous):
|
|
'''
|
|
A Laplace continuous random variable.
|
|
'''
|
|
|
|
def _create_distribution(self, *args):
|
|
'''
|
|
Create a Laplace distribution object.
|
|
'''
|
|
loc, scale = self._parse_args(*args)
|
|
dist = LaplaceDistribution(loc, scale)
|
|
return dist
|
|
|
|
laplace = laplace_gen()
|
|
|
|
class levy_gen(rv_continuous):
|
|
'''
|
|
A Levy continuous random variable.
|
|
'''
|
|
|
|
def _create_distribution(self, *args):
|
|
'''
|
|
Create a Levy distribution object.
|
|
'''
|
|
loc, scale = self._parse_args(*args)
|
|
dist = LevyDistribution(loc, scale)
|
|
return dist
|
|
|
|
levy = levy_gen()
|
|
|
|
class logistic_gen(rv_continuous):
|
|
'''
|
|
A logistic continuous random variable.
|
|
'''
|
|
|
|
def _create_distribution(self, *args):
|
|
'''
|
|
Create a logistic distribution object.
|
|
'''
|
|
loc, scale = self._parse_args(*args)
|
|
dist = LogisticDistribution(loc, scale)
|
|
return dist
|
|
|
|
logistic = logistic_gen()
|
|
|
|
class lognorm_gen(rv_continuous):
|
|
'''
|
|
A Log-normal continuous random variable.
|
|
'''
|
|
|
|
def _create_distribution(self, *args):
|
|
'''
|
|
Create a Log-normal distribution object.
|
|
'''
|
|
scale, shape = self._parse_args(*args)
|
|
dist = LogNormalDistribution(scale, shape)
|
|
return dist
|
|
|
|
lognorm = lognorm_gen()
|
|
|
|
class nakagami_gen(rv_continuous):
|
|
'''
|
|
A Nakagami continuous random variable.
|
|
'''
|
|
|
|
def _create_distribution(self, *args):
|
|
'''
|
|
Create a Nakagami distribution object.
|
|
'''
|
|
scale, shape = self._parse_args(*args)
|
|
dist = NakagamiDistribution(scale, shape)
|
|
return dist
|
|
|
|
nakagami = nakagami_gen()
|
|
|
|
class pareto_gen(rv_continuous):
|
|
'''
|
|
A Pareto continuous random variable.
|
|
'''
|
|
|
|
def _create_distribution(self, *args):
|
|
'''
|
|
Create a Pareto distribution object.
|
|
'''
|
|
scale, shape = self._parse_args(*args)
|
|
dist = ParetoDistribution(scale, shape)
|
|
return dist
|
|
|
|
pareto = pareto_gen()
|
|
|
|
class t_gen(rv_continuous):
|
|
'''
|
|
A Student's t continuous random variable.
|
|
'''
|
|
|
|
def _create_distribution(self, *args):
|
|
'''
|
|
Create a Student's t-distribution object.
|
|
'''
|
|
dof = self._parse_args(*args)[0]
|
|
dist = TDistribution(dof)
|
|
return dist
|
|
|
|
t = t_gen()
|
|
|
|
class triang_gen(rv_continuous):
|
|
'''
|
|
A Triangular continuous random variable.
|
|
'''
|
|
|
|
def _create_distribution(self, *args):
|
|
'''
|
|
Create a Triangular distribution object.
|
|
'''
|
|
r = self._parse_args(*args)
|
|
if len(r) == 1:
|
|
c = r[0]
|
|
a = 0
|
|
b = c
|
|
else:
|
|
a = r[0]
|
|
c = r[2]
|
|
b = a + r[1] * c
|
|
dist = TriangularDistribution(a, c, b)
|
|
return dist
|
|
|
|
triang = triang_gen()
|
|
|
|
class uniform_gen(rv_continuous):
|
|
'''
|
|
A Uniform continuous random variable.
|
|
'''
|
|
|
|
def _create_distribution(self, *args):
|
|
'''
|
|
Create a Uniform distribution object.
|
|
'''
|
|
scale, shape = self._parse_args(*args)
|
|
dist = UniformRealDistribution(scale, shape)
|
|
return dist
|
|
|
|
uniform = uniform_gen()
|
|
|
|
class weibull_gen(rv_continuous):
|
|
'''
|
|
A Weibull continuous random variable.
|
|
'''
|
|
|
|
def _create_distribution(self, *args):
|
|
'''
|
|
Create a Weibull distribution object.
|
|
'''
|
|
scale, shape = self._parse_args(*args)
|
|
dist = WeibullDistribution(scale, shape)
|
|
return dist
|
|
|
|
weibull = weibull_gen() |