ExponentialClassFamily: support for quasi-exponential families
Task
Design how ExponentialClassFamily should handle “quasi-exponential” families, where one or more parameters explicitly define the support, so that the support depends on the parameters.
These are families that are not strictly exponential-class under the usual definition (support independent of θ), but are still often treated using similar machinery.
Requirements
1. Support-dependent parameters
Extend the design so that it is possible to distinguish:
- structural (natural) parameters that enter the exponential part via
η(θ) and T(x),
- support parameters that only affect the support (domain of
x) but not the exponential form.
Examples:
- uniform on
[0, θ],
- shifted exponential with support
[x0, ∞).
2. API design
Propose and implement a simple mechanism in ExponentialClassFamily to:
- store which parameters define the support,
- ensure that:
T(x) and η(θ) refer only to the structural (exponential) part,
- support conditions are checked during density evaluation.
Possible approaches:
- a dedicated field that describes support parameters vs natural parameters,
- an internal split of
theta into (theta_exponential, theta_support).
3. Limitations and flags
Document and encode possible limitations:
- for quasi-exponential families, generic conjugate prior and posterior predictive formulas may not hold as-is;
- some methods (e.g.
posterior_predictive) may:
- either be disabled,
- or explicitly documented as “not supported” unless additional assumptions are met.
Add a simple flag or property such as:
is_strict_exponential_class vs is_quasi_exponential_class,
so that higher-level code can make decisions based on this.
ExponentialClassFamily: support for quasi-exponential families
Task
Design how
ExponentialClassFamilyshould handle “quasi-exponential” families, where one or more parameters explicitly define the support, so that the support depends on the parameters.These are families that are not strictly exponential-class under the usual definition (support independent of θ), but are still often treated using similar machinery.
Requirements
1. Support-dependent parameters
Extend the design so that it is possible to distinguish:
η(θ)andT(x),x) but not the exponential form.Examples:
[0, θ],[x0, ∞).2. API design
Propose and implement a simple mechanism in
ExponentialClassFamilyto:T(x)andη(θ)refer only to the structural (exponential) part,Possible approaches:
thetainto(theta_exponential, theta_support).3. Limitations and flags
Document and encode possible limitations:
posterior_predictive) may:Add a simple flag or property such as:
is_strict_exponential_classvsis_quasi_exponential_class,so that higher-level code can make decisions based on this.