過去のテストを基にカスタムの ROI 事前分布を設定する

メリディアンでは、費用対効果の調整用の分布を渡す必要があります。以前のテスト結果を使用してカスタムの事前分布を設定する方法に問題はありませんが、その場合は事前に考慮すべき注意点がいくつかあります。次に例を示します。

  • MMM の期間を基準としたテストのタイミング: MMM の期間の前または後にテストを実施した場合、その結果は直接適用できないことがあります。

  • テストの期間: テストの期間が短いと、マーケティング効果の長期的な影響を効果的に把握できない可能性があります。

  • テストの複雑さ: テストに複数のチャネルが含まれている場合、結果から個々のチャネルのパフォーマンスに関する明確な分析情報が得られないことがあります。

  • エスティマンドの違い: テストで使用されるエスティマンドは、MMM で使用されるものとは異なる場合があります。たとえば、MMM の反事実的条件法は費用ゼロですが、一部のテストでは、費用の削減など、異なる反事実的条件法が使用される場合があります。

  • 人口の違い: テストのターゲットとする人口は、MMM で考慮される人口とは異なる場合があります。

チャネルの効果に関する仮説に基づいて、カスタムの事前分布を設定することをおすすめします。事前仮説については、テストやその他の信頼できる分析データなど、さまざまな情報源から情報を得ることができます。その事前仮説の信頼度を、事前分布の標準偏差に活かします。

  • チャネルの効果についての仮説に対し、強い確信がある場合は、事前分布の標準偏差に調整係数を適用し、信頼度を反映させることができます。たとえば、特定のチャネルに対して複数のテストを行い、すべてのテストで類似した費用対効果ポイントの推定値が得られた場合や、そのチャネルの有効性を裏付ける過去の MMM 分析のデータがある場合などです。このケースでは、分布が大きく変動しないように、事前分布の標準偏差を小さく設定できます。そのように分布を狭くすると、テスト結果に対する信頼度が高いという意味になります。

  • 逆に、前述の注意点によっては、テスト結果が MMM に変換されないこともあります。その場合は、調整係数を事前分布の標準偏差に適用することもできます。たとえば、懐疑的な場合は、その程度に応じて事前分布の標準偏差を大きめに設定できます。

ModelSpecroi_calibration_period 引数を使用することをおすすめします。詳しくは、ROI の調整期間を設定するをご覧ください。

テストに基づいて直感的に対数正規事前分布を定義する

対数正規分布は、ROI 事前分布によく使用される分布です。メリディアンには、テスト結果に基づいて対数正規分布を構築するためのヘルパー関数が 2 つあります。prior_distribution.lognormal_dist_from_mean_std は、ユーザーが指定した平均値と標準偏差を使用して対数正規分布を構築します。たとえば、選択する平均値と標準偏差は、それぞれテストの点推定値と標準誤差に基づいて指定できます。prior_distribution.lognormal_dist_from_range は、指定された確率質量が範囲内に収まるように対数正規分布を構築します。たとえば、範囲は以前のテストの 95% の信頼区間に基づいて指定できます。いずれかの関数を使用し、テストに基づいて事前分布を定義する場合は、このページで説明されている考慮事項に留意してください。

平均値と標準偏差から LogNormal 分布を構築する場合:

import numpy as np
from meridian.model import prior_distribution

mean = [1.0, 3.0]  # Point estimate
std = [0.3, 2.0]  # Standard error

# Define the LogNormal distribution
lognormal_dist = prior_distribution.lognormal_dist_from_mean_std(mean, std)
# Define the PriorDistribution object
prior = prior_distribution.PriorDistribution(roi_m=lognormal_dist)

範囲から LogNormal 分布を構築する場合:

import numpy as np
from meridian.model import prior_distribution

low = [0.1, 0.5]  # Range lower bound
high = [2.0, 10.0]  # Range upper bound
mass_percent = 0.95  # Probability mass

# Define the LogNormal distribution
lognormal_dist = prior_distribution.lognormal_dist_from_range(
  low, high, mass_percent=mass_percent
  )
# Define the PriorDistribution object
prior = prior_distribution.PriorDistribution(roi_m=lognormal_dist)

ただし、以前のテスト結果がゼロに近い場合は、LogNormal 分布などの負ではない分布によって、事前仮説が正確に表されているかどうかを確認する必要があります。分析を進める前に、事前分布をプロットして、事前の直感的な判断と一致しているか確認することを強くおすすめします。