Meridian bietet ein benutzerdefiniertes Verteilungsobjekt (prior_distribution.IndependentMultivariateDistribution), mit dem Sie Verteilungen aus mehreren Familien in einer Prior-Verteilung kombinieren können. Sie könnten beispielsweise LogNormal-Verteilungen verwenden, um einen ROI-Prior für drei Media-Channels zu definieren, und einen HalfNormal-Prior für einen vierten:
import numpy as np
import tensorflow_probability.substrates.jax as tfp_jax
from meridian.model import model, prior_distribution, spec
distributions = [
tfp_jax.distributions.LogNormal(
np.array([0.2, 0.2, 0.2], dtype=np.float64),
np.array([0.9, 0.9, 0.9], dtype=np.float64),
),
tfp_jax.distributions.HalfNormal(np.float64(5.0)),
]
roi_m_prior = (
prior_distribution.IndependentMultivariateDistribution(distributions)
)
prior = prior_distribution.PriorDistribution(roi_m=roi_m_prior)
model_spec = spec.ModelSpec(prior=prior)
meridian_model = model.Meridian(
input_data=..., # an `InputData` object
model_spec=model_spec,
)
Die Laufzeiten fallen eventuell etwas länger aus, da IndependentMultivariateDistribution die Tensoren intern aufteilt und an die untergeordneten Verteilungen weiterleitet. Bevor Sie IndependentMultivariateDistribution verwenden, sollten Sie überlegen, ob es sinnvoll ist, die Parameter zwischen den Channels zu variieren, aber innerhalb derselben Verteilungsfamilie zu bleiben, oder ob es besser ist, eine andere Verteilungsfamilie zu verwenden.