Risk Distributions

class risk_distributions.risk_distributions.BaseDistribution(parameters=None, mean=None, sd=None)[source]

Generic vectorized wrapper around scipy distributions.

Parameters:
  • parameters (Parameters) –

  • mean (Parameter) –

  • sd (Parameter) –

distribution = None
expected_parameters = ()
classmethod get_parameters(parameters=None, mean=None, sd=None)[source]
Parameters:
  • parameters (Parameters) –

  • mean (Parameter) –

  • sd (Parameter) –

Return type:

DataFrame

static computable_parameter_index(mean, sd)[source]
Parameters:
Return type:

Index

static compute_min_max(mean, sd)[source]

Gets the upper and lower bounds of the distribution support.

Parameters:
Return type:

DataFrame

process(data, parameters, process_type)[source]

Function called before and after distribution looks to handle pre- and post-processing.

This function should look like an if sieve on the process_type and fall back with a call to this method if no processing needs to be done.

Parameters:
  • data (Series) – The data to be processed.

  • parameters (DataFrame) – Parameter data to be used in the processing.

  • process_type (str) – One of pdf_preprocess, pdf_postprocess, ppf_preprocess, ppf_post_process.

Returns:

The processed data.

Return type:

pandas.Series

pdf(x)[source]
Parameters:

x (Series | ndarray | float | int) –

Return type:

Series | ndarray | float

ppf(q)[source]
Parameters:

q (Series | ndarray | float | int) –

Return type:

Series | ndarray | float

cdf(x)[source]
Parameters:

x (Series | ndarray | float | int) –

Return type:

Series | ndarray | float

class risk_distributions.risk_distributions.Beta(parameters=None, mean=None, sd=None)[source]
Parameters:
  • parameters (Parameters) –

  • mean (Parameter) –

  • sd (Parameter) –

distribution = <scipy.stats._continuous_distns.beta_gen object>
expected_parameters = ('a', 'b', 'scale', 'loc')
class risk_distributions.risk_distributions.Exponential(parameters=None, mean=None, sd=None)[source]
Parameters:
  • parameters (Parameters) –

  • mean (Parameter) –

  • sd (Parameter) –

distribution = <scipy.stats._continuous_distns.expon_gen object>
expected_parameters = ('scale',)
class risk_distributions.risk_distributions.Gamma(parameters=None, mean=None, sd=None)[source]
Parameters:
  • parameters (Parameters) –

  • mean (Parameter) –

  • sd (Parameter) –

distribution = <scipy.stats._continuous_distns.gamma_gen object>
expected_parameters = ('a', 'scale')
class risk_distributions.risk_distributions.Gumbel(parameters=None, mean=None, sd=None)[source]
Parameters:
  • parameters (Parameters) –

  • mean (Parameter) –

  • sd (Parameter) –

distribution = <scipy.stats._continuous_distns.gumbel_r_gen object>
expected_parameters = ('loc', 'scale')
class risk_distributions.risk_distributions.InverseGamma(parameters=None, mean=None, sd=None)[source]
Parameters:
  • parameters (Parameters) –

  • mean (Parameter) –

  • sd (Parameter) –

distribution = <scipy.stats._continuous_distns.invgamma_gen object>
expected_parameters = ('a', 'scale')
class risk_distributions.risk_distributions.InverseWeibull(parameters=None, mean=None, sd=None)[source]
Parameters:
  • parameters (Parameters) –

  • mean (Parameter) –

  • sd (Parameter) –

distribution = <scipy.stats._continuous_distns.invweibull_gen object>
expected_parameters = ('c', 'scale')
class risk_distributions.risk_distributions.LogLogistic(parameters=None, mean=None, sd=None)[source]
Parameters:
  • parameters (Parameters) –

  • mean (Parameter) –

  • sd (Parameter) –

distribution = <scipy.stats._continuous_distns.burr12_gen object>
expected_parameters = ('c', 'd', 'scale')
class risk_distributions.risk_distributions.LogNormal(parameters=None, mean=None, sd=None)[source]
Parameters:
  • parameters (Parameters) –

  • mean (Parameter) –

  • sd (Parameter) –

distribution = <scipy.stats._continuous_distns.lognorm_gen object>
expected_parameters = ('s', 'scale')
class risk_distributions.risk_distributions.MirroredGumbel(parameters=None, mean=None, sd=None)[source]
Parameters:
  • parameters (Parameters) –

  • mean (Parameter) –

  • sd (Parameter) –

distribution = <scipy.stats._continuous_distns.gumbel_r_gen object>
expected_parameters = ('loc', 'scale')
process(data, parameters, process_type)[source]

Function called before and after distribution looks to handle pre- and post-processing.

This function should look like an if sieve on the process_type and fall back with a call to this method if no processing needs to be done.

Parameters:
  • data (Series) – The data to be processed.

  • parameters (DataFrame) – Parameter data to be used in the processing.

  • process_type (str) – One of pdf_preprocess, pdf_postprocess, ppf_preprocess, ppf_post_process.

Returns:

The processed data.

Return type:

pandas.Series

class risk_distributions.risk_distributions.MirroredGamma(parameters=None, mean=None, sd=None)[source]
Parameters:
  • parameters (Parameters) –

  • mean (Parameter) –

  • sd (Parameter) –

distribution = <scipy.stats._continuous_distns.gamma_gen object>
expected_parameters = ('a', 'scale')
process(data, parameters, process_type)[source]

Function called before and after distribution looks to handle pre- and post-processing.

This function should look like an if sieve on the process_type and fall back with a call to this method if no processing needs to be done.

Parameters:
  • data (Series) – The data to be processed.

  • parameters (DataFrame) – Parameter data to be used in the processing.

  • process_type (str) – One of pdf_preprocess, pdf_postprocess, ppf_preprocess, ppf_post_process.

Returns:

The processed data.

Return type:

pandas.Series

class risk_distributions.risk_distributions.Normal(parameters=None, mean=None, sd=None)[source]
Parameters:
  • parameters (Parameters) –

  • mean (Parameter) –

  • sd (Parameter) –

distribution = <scipy.stats._continuous_distns.norm_gen object>
expected_parameters = ('loc', 'scale')
class risk_distributions.risk_distributions.Weibull(parameters=None, mean=None, sd=None)[source]
Parameters:
  • parameters (Parameters) –

  • mean (Parameter) –

  • sd (Parameter) –

distribution = <scipy.stats._continuous_distns.weibull_min_gen object>
expected_parameters = ('c', 'scale')
class risk_distributions.risk_distributions.EnsembleDistribution(weights, parameters=None, mean=None, sd=None)[source]

Represents an arbitrary distribution as a weighted sum of several concrete distribution types.

Parameters:
  • weights (Parameters) –

  • parameters (Dict[str, Parameters]) –

  • mean (Parameter) –

  • sd (Parameter) –

classmethod get_parameters(weights, parameters=None, mean=None, sd=None)[source]
Parameters:
  • weights (Parameters) –

  • parameters (Parameters) –

  • mean (Parameter) –

  • sd (Parameter) –

Return type:

Tuple[DataFrame, Dict[str, DataFrame]]

pdf(x)[source]
Parameters:

x (Series | ndarray | float | int) –

Return type:

Series | ndarray | float

ppf(q, q_dist)[source]

Quantile function using 2 propensities.

Parameters:
Returns:

Sample from the ensembled distribution.

Return type:

Union[pandas.Series, numpy.ndarray, float]

cdf(x)[source]
Parameters:

x (Series | ndarray | float | int) –

Return type:

Series | ndarray | float

exception risk_distributions.risk_distributions.NonConvergenceError(message, dist)[source]

Raised when the optimization fails to converge

Parameters:
  • message (str) –

  • dist (str) –

Return type:

None