Probabilistic Methods
Scenario-weighting helpers reside in pyvallocation.probabilities.
Utilities cover uniform and exponentially decaying weights, kernel-based
probabilities, and effective scenario counts. They are routinely used before
feeding data into pyvallocation.moments.estimate_moments() or the entropy
pooling solvers.
- pyvallocation.probabilities.compute_effective_number_scenarios(probabilities)[source]
Return the effective number of scenarios (entropy-based).
Computes the exponential of the Shannon entropy of the probability vector, following Meucci (2012) and Vorobets (2025, Eq. 5.1.3):
\[\hat{S} = \exp\left\{-\sum_{s=1}^{S} q_s \ln q_s\right\}.\]Equals S when probabilities are uniform and approaches 1 when all mass is concentrated on a single scenario. Uses the convention \(0 \ln 0 = 0\).
- Parameters:
probabilities – Probability vector.
- Returns:
float – Effective number of scenarios.
- Parameters:
probabilities (numpy.ndarray)
- Return type:
float
See also
compute_effective_number_scenarios_hhi()for the Herfindahl-based alternative \(1 / \sum p_s^2\).References
- pyvallocation.probabilities.compute_effective_number_scenarios_hhi(probabilities)[source]
Return the Herfindahl-based effective number of scenarios.
Computes \(1 / \sum p_s^2\) (inverse Herfindahl-Hirschman index). This is an alternative concentration measure that differs numerically from the entropy-based definition in
compute_effective_number_scenarios().- Parameters:
probabilities – Probability vector.
- Returns:
float – Herfindahl-based effective number of scenarios.
- Parameters:
probabilities (numpy.ndarray)
- Return type:
float
- pyvallocation.probabilities.generate_exp_decay_probabilities(num_observations, half_life)[source]
Return exponentially decaying probabilities with the given
half_life.- Parameters:
num_observations – Number of scenarios.
half_life – Half-life (in observations) controlling decay speed.
- Returns:
np.ndarray – Exponentially decaying probabilities summing to one.
- Parameters:
num_observations (int)
half_life (int)
- Return type:
numpy.ndarray
- pyvallocation.probabilities.generate_gaussian_kernel_probabilities(x, v=None, h=None, x_T=None)[source]
Generate kernel-based probabilities for
vcentred onx_T.- Parameters:
x – Reference data used to estimate the bandwidth when
hisNone.v – Values to score. Defaults to
x.h – Kernel bandwidth. Defaults to Silverman’s rule-of-thumb.
x_T – Reference point. Defaults to the last element of
x.
- Returns:
np.ndarray – Kernel-based probabilities summing to one.
- Parameters:
x (numpy.ndarray)
v (numpy.ndarray | None)
h (float | None)
x_T (float | None)
- Return type:
numpy.ndarray
- pyvallocation.probabilities.generate_uniform_probabilities(num_observations)[source]
Return equal probabilities for
num_observationsscenarios.- Parameters:
num_observations – Number of scenarios.
- Returns:
np.ndarray – Uniform probability vector summing to one.
- Parameters:
num_observations (int)
- Return type:
numpy.ndarray
- pyvallocation.probabilities.normalize_probability_vector(probabilities, *, strictly_positive=False, name='probabilities')[source]
Validate and normalise a 1-D probability vector.
- Parameters:
probabilities – Array-like of probabilities. Must be one-dimensional and contain at least one entry.
strictly_positive – When
Trueall entries must be strictly greater than zero. WhenFalsenon-negative weights are accepted. Defaults toFalse.name – Identifier used in error messages. Defaults to
"probabilities".
- Returns:
np.ndarray – Normalised probability vector summing to one.
- Parameters:
probabilities (numpy.ndarray | Sequence[float])
strictly_positive (bool)
name (str)
- Return type:
numpy.ndarray
- pyvallocation.probabilities.resolve_probabilities(probabilities, n_observations, *, strictly_positive=False, name='probabilities')[source]
Return a normalised probability vector of length
n_observations.- Parameters:
probabilities – Optional array-like of probabilities. When
Nonea uniform distribution is generated.n_observations – Expected number of observations (length of scenario set).
strictly_positive – Forwarded to
normalize_probability_vector(). Defaults toFalse.name – Identifier used in error messages. Defaults to
"probabilities".
- Returns:
np.ndarray – Probability vector summing to one with shape
(n_observations,).- Parameters:
probabilities (numpy.ndarray | Sequence[float] | None)
n_observations (int)
strictly_positive (bool)
name (str)
- Return type:
numpy.ndarray