bartz.testing.Gamma

class bartz.testing.Gamma(alpha)[source]

Gamma(alpha) scales, rescaled to E[s ** 2] = 1.

Smaller alpha gives more dispersed scales; as alpha -> inf they concentrate at 1.

alpha: Float[Array, ''] | float

Shape parameter of the Gamma distribution, > 0.

property fourth_moment: Float[Array, ''] | float[source]

E[s ** 4] = (alpha + 2)(alpha + 3) / (alpha (alpha + 1)).

sample(key, shape)[source]

Sample i.i.d. normalized Gamma scales.

Return type:

Float[Array, '*shape']

classmethod from_peff(peff, p)[source]

Set the scale dispersion from an effective number of active predictors.

peff is the participation ratio of the squared scales,

\[p_{\mathrm{eff}} = \frac{(\sum_j s_j^2)^2}{\sum_j s_j^4} \;\xrightarrow{\,p \to \infty\,}\; \frac p{E[s^4]},\]

an effective count that ranges in [1, p]: p when all predictors are equally important (Constant), shrinking towards 1 as the importance concentrates on fewer predictors. The deterministic large-p limit p / E[s ** 4] is the analytic target inverted here; for SpikeSlab it equals the expected number of nonzero scales exactly.

Parameters:
  • peff (Float[Array, ''] | float) – Effective number of active predictors, in [1, p].

  • p (Integer[Array, ''] | int) – Total number of predictors.

Returns:

ScaleDistr – A member of the family with fourth_moment equal to p / peff.