在效果不是收入时设置自定义先验

Meridian 将投资回报率 (ROI) 定义为增量效果除以支出。如果 KPI 不是收入,并且 revenue_per_kpi 未传递到 InputData,则效果不以收入为衡量标准。这可能会使确定自定义投资回报率先验变得困难。

如果效果不是收入,在设置自定义先验时,请考虑以下选项:

自定义付费媒体总贡献率先验

如果您对因付费媒体而增加的 KPI 总比例有直观了解,则可以针对所有渠道设置一个共同的投资回报率先验,从而定义具体媒体总贡献率的先验平均值和标准差,具体操作如下:

p_mean = 0.5  # prior mean proportion of KPI incremental due to all media
p_sd = 0.15  # prior std dev proportion of KPI incremental to all media
roi_mean = p_mean * kpi / np.sum(cost)
roi_sd = p_sd * kpi / np.sqrt(np.sum(np.power(cost, 2)))
lognormal_sigma = np.sqrt(np.log(roi_sd**2 / roi_mean**2 + 1))
lognormal_mu = np.log(roi_mean * np.exp(-lognormal_sigma**2 / 2))
roi_prior = tfp.distributions.LogNormal(
    lognormal_mu.astype(np.float32),
    lognormal_sigma.astype(np.float32),
)

其中:

  • kpi 是所有地理位置和时间段的所有 KPI 的总和。
  • cost 是一个数组,包含每个渠道在不同地理位置和时间段的总费用。

在此示例中,所有媒体的 KPI 贡献率以 50% 为中心,标准差为 15%。这样就得到了一个在所有渠道中都一致的投资回报率先验,即付费媒体总贡献率的隐含先验平均值为 50%,标准差为 15%。然后,可以通过在 roi_mroi_rfPriorDistribution 容器中设置派生先验 roi_prior 来使用该先验。

付费媒体总贡献率先验的优势在于,它不需要对每个渠道都有直观了解。不过,如果您有关于每个渠道的额外信息,或对每个渠道有直观了解,不妨考虑设置 IKPC 先验渠道级贡献率先验

自定义单位费用增量 KPI (IKPC) 先验

如果您对渠道的单位费用增量 KPI (IKPC) 有直观了解,可以在 PriorDistribution 容器中使用 roi_mroi_rf 设置 IKPC 先验。如果未设置 revenue_per_kpi,则投资回报率相当于 Meridian 中的 IKPC。

示例:

roi_prior = tfp.distributions.LogNormal([0.5, 0.6, 0.7], [0.5, 0.5, 0.5])

不过,我们建议您仅在为每个媒体渠道设置自定义 IKPC 先验时才这样做。这是因为,当 revenue_per_kpi=None 时,默认投资回报率先验很可能对您的数据没有意义,原因是它专门用于收入 KPI,而收入 KPI 的投资回报率是无单位的。如果您只对某些渠道的 IKPC 有直观了解,则仍需为其他渠道设置一些合理的默认 IKPC 先验。Meridian 没有推荐的默认 IKPC 先验,因为 IKPC 与规模效应密切相关,例如新车和糖果的规模效应就不同。

渠道级贡献率先验

如果您对因给定渠道而增加的 KPI 比例有直观了解,可以为给定渠道的贡献率设置先验,方法是在 ModelSpec 中设置 media_prior_type='contribution'rf_prior_type='contribution',并在 PriorDistribution 中自定义 contribution_mcontribution_rf 的先验分布。下面给出了一个示例。

prior = prior_distribution.PriorDistribution(
    contribution_m=tfp.distributions.Beta([1, 5], [99, 95]),
    contribution_rf=tfp.distribution.Beta(2, 98),
)
model_spec = spec.ModelSpec(
    prior=prior,
    media_prior_type="contribution",
    rf_prior_type="contribution",
)

在此示例中,有两个媒体渠道。第一个分配了 Beta(1, 99) 贡献率先验,其平均值为 1%。第二个分配了 Beta(5, 95) 贡献率先验,其平均值为 5%。每个 R&F 渠道都分配了 Beta(2, 98) 贡献率先验,其平均值为 2%。(请注意,tfp.distribution.Beta(2, 98) 是一种标量分布,因此会广播到所有 R&F 渠道)。