Meridian ofrece un objeto de distribución personalizado (prior_distribution.IndependentMultivariateDistribution) que te permite combinar distribuciones de varias familias en una sola distribución a priori. Por ejemplo, es posible que desees usar distribuciones LogNormal para definir una distribución a priori del ROI para tres canales de medios y una distribución a priori HalfNormal para un cuarto:
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,
)
Es posible que observes tiempos de ejecución un poco más extensos porque IndependentMultivariateDistribution divide y delega tensores de forma interna a sus distribuciones secundarias. Antes de usar IndependentMultivariateDistribution, considera si sería útil variar los parámetros entre los canales, pero dentro de la misma familia de distribución, o si es mejor usar una familia de distribución diferente.