VariableFactory#
- class pymc_extras.prior.VariableFactory(*args, **kwargs)[source]#
Protocol for something that works like a Prior class.
Sample with
sample_prior().Examples
Create a custom variable factory.
import pymc as pm import pytensor.tensor as pt from pymc_extras.prior import sample_prior, VariableFactory class PowerSumDistribution: """Create a distribution that is the sum of powers of a base distribution.""" def __init__(self, distribution: VariableFactory, n: int): self.distribution = distribution self.n = n @property def dims(self): return self.distribution.dims def create_variable(self, name: str) -> "TensorVariable": raw = self.distribution.create_variable(f"{name}_raw") return pm.Deterministic( name, pt.sum([raw**n for n in range(1, self.n + 1)], axis=0), dims=self.dims, ) cubic = PowerSumDistribution(Prior("Normal"), n=3) samples = sample_prior(cubic)
- __init__(*args, **kwargs)#
Methods
__init__(*args, **kwargs)create_variable(name[, xdist])Create a variable.
Attributes
dimsThe dimensions of the variable to create.