Meridian offers a custom distribution object
([`prior_distribution.IndependentMultivariateDistribution`](https://developers.google.com/meridian/reference/api/meridian/model/prior_distribution/IndependentMultivariateDistribution))
that lets you combine
distributions from multiple families into one prior distribution. For example,
you might want to use LogNormal distributions to define an ROI prior for three
media channels and a HalfNormal prior for a fourth:

    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,
    )

You might see slightly longer runtimes because
`IndependentMultivariateDistribution` splits and delegates tensors under the
hood to its child distributions. Before you use
`IndependentMultivariateDistribution`, consider if varying the parameters
between channels, but within the same distribution family, would help, or if
using a different distribution family is better.