通过分布系列的组合设置自定义先验

Meridian 提供了一个自定义分布对象 (prior_distribution.IndependentMultivariateDistribution),可让您将多个系列的分布组合成一个先验分布。例如,您可能希望使用对数正态分布为三个媒体渠道定义投资回报率先验,并使用半正态分布为第四个媒体渠道定义投资回报率先验:

import tensorflow_probability as tfp

distributions = [
  tfp.distributions.LogNormal([0.2, 0.2, 0.2], [0.9, 0.9, 0.9]),
  tfp.distributions.HalfNormal(5),
]

roi_m_prior = 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 之前,请考虑在渠道之间(但在同一分布系列内)改变参数是否会有帮助,或者使用其他分布系列是否会更好。