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 | None)

  • mean (Parameter | None)

  • sd (Parameter | None)

  • computability_bound (float)

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

  • mean (Parameter | None)

  • sd (Parameter | None)

  • computability_bound (float)

Return type:

pd.DataFrame

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

  • sd (pd.Series[Any])

Return type:

pd.Index[Any]

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 (pd.Series[Any]) – The data to be processed.

  • parameters (pd.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 (NumericInput)

Return type:

Numeric

ppf(q)[source]
Parameters:

q (NumericInput)

Return type:

Numeric

cdf(x)[source]
Parameters:

x (NumericInput)

Return type:

Numeric

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

  • mean (Parameter | None)

  • sd (Parameter | None)

  • 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 (pd.Series[Any])

  • sd (pd.Series[Any])

  • computability_bound (float)

Return type:

pd.Series[Any]

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

  • mean (Parameter | None)

  • sd (Parameter | None)

  • computability_bound (float)

distribution: Any = <scipy.stats._continuous_distns.beta_gen object>
expected_parameters: tuple[str, ...] = ('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 (pd.Series[Any])

  • sd (pd.Series[Any])

  • computability_bound (float)

Return type:

pd.DataFrame

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

  • mean (Parameter | None)

  • sd (Parameter | None)

  • computability_bound (float)

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

  • mean (Parameter | None)

  • sd (Parameter | None)

  • computability_bound (float)

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

  • mean (Parameter | None)

  • sd (Parameter | None)

  • computability_bound (float)

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

  • mean (Parameter | None)

  • sd (Parameter | None)

  • computability_bound (float)

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

  • mean (Parameter | None)

  • sd (Parameter | None)

  • computability_bound (float)

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

  • mean (Parameter | None)

  • sd (Parameter | None)

  • computability_bound (float)

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

  • mean (Parameter | None)

  • sd (Parameter | None)

  • computability_bound (float)

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

  • mean (Parameter | None)

  • sd (Parameter | None)

  • computability_bound (float)

distribution: Any = <scipy.stats._continuous_distns.gumbel_r_gen object>
expected_parameters: tuple[str, ...] = ('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 (pd.Series[Any]) – The data to be processed.

  • parameters (pd.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 | None)

  • mean (Parameter | None)

  • sd (Parameter | None)

  • computability_bound (float)

distribution: Any = <scipy.stats._continuous_distns.gamma_gen object>
expected_parameters: tuple[str, ...] = ('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 (pd.Series[Any]) – The data to be processed.

  • parameters (pd.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 | None)

  • mean (Parameter | None)

  • sd (Parameter | None)

  • computability_bound (float)

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

  • mean (Parameter | None)

  • sd (Parameter | None)

  • computability_bound (float)

distribution: Any = <scipy.stats._continuous_distns.weibull_min_gen object>
expected_parameters: tuple[str, ...] = ('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 (dict[str, Parameters] | None)

  • mean (Parameter | None)

  • sd (Parameter | None)

  • computability_bound (float)

Return type:

tuple[pd.DataFrame, dict[str, pd.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)

  • expected_columns (list[str])

Return type:

Parameters

pdf(x)[source]
Parameters:

x (NumericInput)

Return type:

Numeric

ppf(q, q_dist)[source]

Quantile function using 2 propensities.

Parameters:
  • q (NumericInput) – value propensity

  • q_dist (NumericInput) – propensity for picking the distribution

Returns:

Sample from the ensembled distribution.

Return type:

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

cdf(x)[source]
Parameters:

x (NumericInput)

Return type:

Numeric

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

Raised when the optimization fails to converge

Parameters:
Return type:

None