Risk Distributions

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

Generic vectorized wrapper around scipy distributions.

Parameters:
  • parameters (Parameters)

  • mean (Parameter)

  • sd (Parameter)

  • computability_bound (float)

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

  • mean (Parameter)

  • sd (Parameter)

  • computability_bound (float)

Return type:

DataFrame

static computable_parameter_index(mean, sd)[source]
Parameters:
  • mean (Series)

  • sd (Series)

Return type:

Index

classmethod get_computability_bounds(parameters, computability_bound)[source]
Parameters:
  • parameters (DataFrame)

  • computability_bound (float)

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 vivarium.risk_distributions.risk_distributions.MirroredDistribution(parameters=None, mean=None, sd=None, computability_bound=0.001)[source]
Parameters:
  • parameters (Parameters)

  • mean (Parameter)

  • sd (Parameter)

  • computability_bound (float)

static compute_mirror_point(mean, sd, computability_bound)[source]

Computes the point around which the distribution is mirrored.

NOTE: In the corresponding GBD code, this is called ‘x_max’.

Parameters:
  • mean (Series)

  • sd (Series)

  • computability_bound (float)

Return type:

Series

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

  • mean (Parameter)

  • sd (Parameter)

  • computability_bound (float)

distribution = <scipy.stats._continuous_distns.beta_gen object>
expected_parameters = ('a', 'b', 'scale', 'loc')
static compute_scaling_bounds(mean, sd, computability_bound)[source]

Gets the upper and lower bounds of the distribution support.

Parameters:
  • mean (Series)

  • sd (Series)

  • computability_bound (float)

Return type:

DataFrame

class vivarium.risk_distributions.risk_distributions.Exponential(parameters=None, mean=None, sd=None, computability_bound=0.001)[source]
Parameters:
  • parameters (Parameters)

  • mean (Parameter)

  • sd (Parameter)

  • computability_bound (float)

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

  • mean (Parameter)

  • sd (Parameter)

  • computability_bound (float)

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

  • mean (Parameter)

  • sd (Parameter)

  • computability_bound (float)

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

  • mean (Parameter)

  • sd (Parameter)

  • computability_bound (float)

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

  • mean (Parameter)

  • sd (Parameter)

  • computability_bound (float)

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

  • mean (Parameter)

  • sd (Parameter)

  • computability_bound (float)

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

  • mean (Parameter)

  • sd (Parameter)

  • computability_bound (float)

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

  • mean (Parameter)

  • sd (Parameter)

  • computability_bound (float)

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 vivarium.risk_distributions.risk_distributions.MirroredGamma(parameters=None, mean=None, sd=None, computability_bound=0.001)[source]
Parameters:
  • parameters (Parameters)

  • mean (Parameter)

  • sd (Parameter)

  • computability_bound (float)

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 vivarium.risk_distributions.risk_distributions.Normal(parameters=None, mean=None, sd=None, computability_bound=0.001)[source]
Parameters:
  • parameters (Parameters)

  • mean (Parameter)

  • sd (Parameter)

  • computability_bound (float)

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

  • mean (Parameter)

  • sd (Parameter)

  • computability_bound (float)

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

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

Parameters:
  • weights (Parameters)

  • parameters (dict[str, Parameters] | None)

  • mean (Parameter | None)

  • sd (Parameter | None)

  • computability_bound (float)

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

  • parameters (Parameters)

  • mean (Parameter)

  • sd (Parameter)

  • computability_bound (float)

Return type:

tuple[DataFrame, dict[str, DataFrame]]

classmethod get_expected_parameters(distribution_name)[source]

Get the expected parameters for a given distribution in the ensemble.

Parameters:

distribution_name (str)

Return type:

list[str]

static fill_missing_weights(weights, expected_columns)[source]
Parameters:

weights (Parameters)

Return type:

Parameters

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 vivarium.risk_distributions.risk_distributions.NonConvergenceError(message, dist)[source]

Raised when the optimization fails to converge

Parameters:
Return type:

None