Skip to content

Commit 5ea0641

Browse files
committed
WIP: basic truncated normal dist
1 parent 534bf31 commit 5ea0641

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

paramnormal/dist.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -890,6 +890,27 @@ def fit(cls, data, **guesses):
890890
return cls.param_template(R=b*sigma, loc=loc, sigma=sigma)
891891

892892

893+
class truncated_normal(BaseDist_Mixin):
894+
dist = stats.truncnorm
895+
param_template = namedtuple('params', ['lower', 'upper', 'mu', 'sigma'])
896+
name = 'truncated normal'
897+
898+
@staticmethod
899+
@utils.greco_deco
900+
def _process_args(lower=None, upper=None, mu=None, sigma=None, fit=False):
901+
a = (lower - mu) / sigma
902+
b = (upper - mu) / sigma
903+
loc_key, scale_key = utils._get_loc_scale_keys(fit=fit)
904+
return {'a': a, 'b': b, loc_key: mu, scale_key: sigma}
905+
906+
@classmethod
907+
def fit(cls, data, **guesses):
908+
a, b, mu, sigma = cls._fit(data, **guesses)
909+
lower = a * sigma + mu
910+
upper = b * sigma + mu
911+
return cls.param_template(lower=lower, upper=upper, mu=mu, sigma=sigma)
912+
913+
893914
__all__ = [
894915
'normal',
895916
'lognormal',

0 commit comments

Comments
 (0)