HeteroscedasticModel#

class gpjax.gps.HeteroscedasticModel(prior, likelihood, noise_prior)[source]#

Bases: JointModel[M, K, HL]

A joint model with input-dependent (heteroscedastic) noise.

The joint holds two priors — one over the signal process and one over the latent noise process — which is why it is constructed directly rather than via prior * likelihood:

model = gpx.gps.HeteroscedasticModel(
    prior=signal_prior,
    likelihood=gpx.likelihoods.HeteroscedasticGaussian(),
    noise_prior=noise_prior,
)

Inference is delegated to gpjax.variational_families.HeteroscedasticVariationalFamily and the heteroscedastic_elbo objective; the noise process is exposed as the nested joint model noise_model.

The noise prior is stored only inside noise_model, and noise_prior reads through to it. Holding it in both places would duplicate its parameters across two pytree paths, which an optimiser step would then drive out of sync.

Parameters:
condition(train_data)[source]#

Not available: heteroscedastic conditioning has no closed form.

Parameters:

train_data (Dataset) – Unused; present for interface uniformity.

Raises:

NotImplementedError – Always. Heteroscedastic models are the one documented exclusion from universal conditioning.

Return type:

Posterior

property noise_prior: Prior#

The prior over the latent noise process.

Read-only view of self.noise_model.prior. The noise prior is not a field of this model: a single owner keeps its parameters at one pytree path, so training cannot leave a second copy stale.