如何选择处理变量的先验类型

每种处理变量类型(付费、自然和非媒体)都具有各种先验类型选项。投资回报率先验和边际投资回报率先验只能用于付费媒体。贡献率先验和系数先验可用于任何处理变量类型。在决定要选择的先验类型时,请考虑以下几点。

投资回报率先验是默认选项,因为它们通常与先验知识(例如实验结果)最为一致。这通常是设置有合理依据的先验时最直观的选项。

边际投资回报率先验是备用选项,适合希望强制采用具有以下特点的先验的用户:能够让最佳预算分配趋近于历史预算分配,从而对建议预算调整进行正则化。为此,您可以针对所有渠道设置一个共同的边际投资回报率先验平均值,并调整标准差。先验越强(标准差越小),最佳分配就越接近历史分配。请注意,优化支出限制提供了限制建议预算调整的另一种方法,这应该可以让大多数用户无需使用边际投资回报率先验。如需了解详情,请参阅“比较付费媒体的投资回报率先验和边际投资回报率先验”子部分。

贡献率先验与付费媒体的投资回报率先验非常相似。唯一的区别是,投资回报率先验的分母是渠道支出,而贡献率先验的分母是总观测结果。也就是说,对于付费媒体,任何贡献率先验都可以转换为投资回报率先验,任何投资回报率先验都可以转换为贡献率先验。

系数先验是线性回归模型的更为传统的形参化。在 MMM 上下文中,系数的解释有些抽象,因此很难设置有依据的先验。特定的系数值可能会使不同付费媒体渠道的投资回报率值存在显著差异,因为投资回报率取决于渠道在不同地理位置和时间段的执行分布、渠道的 Adstock 和回报递减形参的估算值,以及渠道的每媒体单位费用。

自然媒体

贡献率先验是默认选项,因为它们是设置有依据的先验时最直观的量。某些渠道的贡献率预计会高于其他渠道,因此请考虑以适合您的业务和营销策略的方式自定义先验分布。Beta 分布通常是有意义的,因为它限制在零到一的区间内。

系数先验是线性回归模型的更为传统的形参化。在 MMM 上下文中,系数的解释有些抽象,因此很难设置有依据的先验。特定的系数值可能会使不同自然媒体渠道的贡献率值存在显著差异,因为贡献率取决于渠道在不同地理位置和时间段的执行分布,以及渠道的 Adstock 和回报递减形参的估算值。

非媒体处理变量

贡献率先验是默认选项,因为它们是设置有依据的先验时最直观的量。自定义先验分布始终是一个不错的选择。根据每个变量的指定基准值,您可以预计贡献率为正值还是负值,或者贡献率的符号可能未知。例如,您可能不清楚将价格设为给定基准值会对收入产生正面影响还是负面影响。或者,您可能有一个先验预期:在某个基准值下,该价格会产生正面影响,但在另一个基准值下,该价格会产生负面影响。

系数先验是线性回归模型的更为传统的形参化。在 MMM 上下文中,系数的解释有些抽象,因此很难设置有依据的先验。特定的系数值可能会使不同非媒体处理渠道的贡献率值存在显著差异,因为贡献率取决于处理变量在不同地理位置和时间段的值分布以及处理变量的基准值。

其他注意事项

自定义非媒体处理变量的贡献率先验

默认贡献率先验是截断的正态分布,它允许正值和负值。您可以针对截断的正态分布设置处理变量专用形参,以将概率质量调整到正值或负值区间。例如,以下代码段会为第一个处理变量分配对称截断的 Normal(0, 0.1) 分布,为第二个处理变量分配正向截断的 HalfNormal(0, 0.2) 分布,并为第三个处理变量分配负向截断的 HalfNormal(0, 0.1) 分布。

PriorDistribution(
    contribution_n=tfp.distributions.TruncatedNormal(
        loc=[0, 0, 0],
        scale=[0.1, 0.2, 0.1],
        low=[-1, 0, -1],
        high=[1, 1, 0],
    )
)

或者,您可以使用缩放的 Beta 分布来为某些处理变量指定正向分布,并为其他处理变量指定负向分布。例如,以下代码段会为第一个处理变量分配 Beta(1, 49) 先验,并为第二个处理变量分配负向 Beta(1, 99) 先验。

PriorDistribution(
    contribution_n=tfp.distributions.TransformedDistribution(
        tfp.distributions.Beta([1, 1], [49, 99]),
        tfp.bijectors.Scale([1, -1]),
    )
)

比较付费媒体的投资回报率先验和边际投资回报率先验

边际投资回报率先验是付费媒体渠道投资回报率先验的替代项。渠道的边际投资回报率定义为额外支出一个货币单位的预期回报。系统会通过扩大覆盖面并保持平均频次固定不变,在不同地理区域和时间段分配额外的货币单位。

是选择投资回报率先验还是选择边际投资回报率先验具有重要影响,尤其是当您的目标是在渠道间实现先验对等时。投资回报率和边际投资回报率都有先验分布。如果指定了投资回报率先验,则会诱导出边际投资回报率先验。如果指定了边际投资回报率先验,则会诱导出投资回报率先验。诱导先验不属于形参族,通常不独立于其他模型形参。诱导先验的确切分布取决于渠道的媒体执行在不同地理区域和时间段的分布。重要的是,即使针对所有渠道使用一个共同的投资回报率(边际投资回报率)先验,诱导边际投资回报率(投资回报率)先验仍会因渠道而异。

当 Hill 函数呈凹形时,例如当其斜率行参等于 1 时(默认假设),没有覆盖面和频次 (R&F) 数据的渠道的总体投资回报率始终高于其边际投资回报率。如果您使用投资回报率先验,无 R&F 数据的渠道的诱导边际投资回报率先验分布将始终较少。相反,如果您使用边际投资回报率先验,无 R&F 数据的渠道的诱导投资回报率先验将始终较高。

对于具有覆盖面和频次数据的渠道,按照覆盖面计算的边际投资回报率等于投资回报率。这是因为边际投资回报率先验是按覆盖面应用于边际投资回报率的(支出的下一个货币单位会增加覆盖面,但不会改变平均频次)。按照 Meridian 模型规范,媒体效应是随着覆盖面线性变化的。因此,对于有覆盖面和频次数据的渠道来说,选择投资回报率先验形参化还是边际投资回报率先验形参化对先验没有影响。不过,这一选择仍会影响这类渠道的后验推理,原因如下:

  • 其他渠道的先验选择会影响这类渠道的模型拟合和后验结果。
  • 默认的投资回报率先验分布和边际投资回报率先验分布不同。

如果您有兴趣检查特定模型的诱导先验,可以调用 sample_prior,然后使用实参 use_posterior=False 调用 Analyzer 类的 roimarginal_roi 方法,以获取它。

选择投资回报率先验的理由:

  • 可以为所有渠道使用共同的投资回报率先验,以实现先验投资回报率的对等性。随着先验强度的增加(标准差减小),后验投资回报率分布趋近于一个共同的值。
  • 可以使用渠道特有的投资回报率先验纳入先验知识,例如实验结果。
  • 虽然投资回报率先验在控制优化预算调整方面不如边际投资回报率先验有效,但可以使用优化支出限制来限制为任何给定渠道建议的预算调整金额。

选择边际投资回报率先验的理由:

  • 可以为所有渠道使用共同的边际投资回报率先验,以实现先验边际投资回报率的对等性。随着先验强度的增加,后验边际投资回报率的值会趋近于一个共同的值。
  • 先验边际投资回报率的对等性通常会导致优化预算调整不那么明显:
    • 如果对所有渠道使用相同的边际投资回报率先验,则先验最佳预算分配将等于历史分配。
    • 随着先验强度的增加,后验最佳预算分配会趋近于历史分配。
    • 对于具有覆盖面和频次数据的渠道,尽管我们使用了较强的边际投资回报率先验,如果还使用其最佳频次(而非历史频次),它仍然可能会获得明显的正向优化支出调整。边际投资回报率先验应用于历史频次下的边际投资回报率,而这始终低于最佳频次下的边际投资回报率。默认情况下,预算优化是按最佳频次进行的,但优化方法包含一个布尔值实参 use_optimal_freq,它可用于设置是按最佳频次还是按历史频次进行优化。

请务必注意,边际投资回报率在不同时间窗口内有所不同,因此如果您的优化时间窗口与边际投资回报率先验的时间窗口不一致,边际投资回报率先验可能无法按预期对优化预算调整进行正则化处理。您可以使用 BudgetOptimizer.optimize()selected_time 实参调整优化的时间窗口。您可以使用 ModelSpecroi_calibration_periodrf_roi_calibration_period 实参调整边际投资回报率先验的时间窗口。默认情况下,这两个时间窗口都将设置为完整建模时间窗口。