Meridian 提供了一个自定义分布对象 (prior_distribution.IndependentMultivariateDistribution
),可让您将多个系列的分布组合成一个先验分布。例如,您可能希望使用对数正态分布为三个媒体渠道定义投资回报率先验,并为第四个媒体渠道定义半正态先验:
import tensorflow_probability as tfp
from meridian.model import prior_distribution
distributions = [
tfp.distributions.LogNormal([0.2, 0.2, 0.2], [0.9, 0.9, 0.9]),
tfp.distributions.HalfNormal(5),
]
roi_m_prior = prior_distribution.IndependentMultivariateDistribution(distributions)
prior = PriorDistribution(roi_m=roi_m_prior)
model_spec = ModelSpec(prior=prior)
meridian_model = Meridian(
input_data = # an `InputData` object
model_spec=model_spec,
)
您可能会发现运行时间略有延长,这是因为 IndependentMultivariateDistribution
会在底层将张量拆分并委托给其子分布。在使用 IndependentMultivariateDistribution
之前,请考虑在渠道之间(但在同一分布系列内)改变参数是否会有帮助,或者使用其他分布系列是否会更好。