meridian.analysis.analyzer.Analyzer

モデルを適合させた後、計算を実行して元データを分析します。

子クラス

class PerformanceData

メソッド

adstock_decay

ソースを表示

メディア チャネルとリーチとフリークエンシー チャネルの adstock の減少を計算します。

引数
confidence_level 事前分布および事後分布の信頼区間の信頼度。0~1 の値で表されます。

戻り値
Adstock 関数のチャネル、time_units、distribution、ci_hici_lomean を含む Pandas DataFrame。

baseline_summary_metrics

ソースを表示

ベースラインの概要指標を返します。

引数
selected_geos 対象地域のサブセットを含むリスト(省略可)。デフォルトでは、すべての地域が含まれます。
selected_times 対象期間のサブセットを含むリスト(省略可)。デフォルトでは、すべての期間が含まれます。
aggregate_geos ブール値。True の場合、想定される結果はすべての地域の合算になります。
aggregate_times ブール値。True の場合、想定される結果はすべての期間の合算になります。
confidence_level メディアの概要指標の信頼区間の信頼度。0~1 の値で表されます。
batch_size 各バッチでのチェーンあたりの最大抽出数を表す整数。メモリの枯渇を回避するため、計算はバッチで実行されます。メモリエラーが発生した場合は、batch_size を減らしてみてください。計算は通常、batch_size の値が大きいほど高速になります。

戻り値
metricmeanmedianci_lowci_high)、distribution(事前分布、事後分布)の座標を有し、次のデータ変数を含む xr.Dataset: baseline_outcomepct_of_contribution

cpik

ソースを表示

各チャネルを対象に、KPI 分布の増分あたりの費用(CPIK)の分布を計算します。

CPIK の分子は、チャネルに対する合計費用です。CPIK の分母は、そのチャネルの費用をゼロに設定し、他のすべてのチャネルの費用を変更しない場合に推定される KPI の変化量です。

new_data=None の場合、このメソッドは Meridian オブジェクトの初期化に使用された有料メディア変数の値に基づいて、CPIK を計算します。ユーザーは new_data 引数を通じて、この過去データをオーバーライドすることもできます。ただし、新しいテンソルのディメンションが一致している場合に限ります。次に例を示します。

new_data = DataTensors(media=new_media, frequency=new_frequency)

selected_geos または selected_times が指定されている場合、CPIK の分子は、その選択されている地域と期間の合計費用になります。モデルのトレーニングに使用される InputData の費用に地域と時間のディメンションがない場合は、例外がスローされます(使用されている引数 new_data.media_spendnew_data.rf_spend のディメンションが InputData の費用と異なる場合は、ユーザー側のエラーである可能性があるため、例外がスローされます)。

なお、CPIK は 1/ROI であり、ROI は use_kpi=True を指定して roi メソッドを呼び出すことで取得されます。

引数
use_posterior ブール値。True の場合、事後分布が計算されます。それ以外の場合は、事前分布が計算されます。
new_data 省略可。mediamedia_spendreachfrequencyrf_spendrevenue_per_kpi のデータを含む DataTensors。指定されている場合、cpik は、new_data で渡されたテンソルの値と、残りのすべてのテンソルの元の値を使って計算されます。新しいテンソルのディメンションは、meridian.input_data の対応する元のテンソルのディメンションと一致している必要があります。None の場合、cpik はすべてのテンソルの元の値を使って計算されます。
selected_geos 対象地域のサブセットを含むリスト(省略可)。デフォルトでは、すべての地域が含まれます。
selected_times 対象期間のサブセットを含むリスト(省略可)。デフォルトでは、すべての期間が含まれます。
aggregate_geos ブール値。True の場合、推定 KPI はすべての地域の合算になります。
batch_size 各バッチでのチェーンあたりの最大抽出数を表す整数。メモリの枯渇を回避するため、計算はバッチで実行されます。メモリエラーが発生した場合は、batch_size を減らしてみてください。計算は通常、batch_size の値が大きいほど高速になります。

戻り値
ディメンションが (n_chains, n_draws, n_geos, (n_media_channels + n_rf_channels)) の CPIK 値のテンソル。aggregate_geos=True の場合、n_geos ディメンションは破棄されます。

expected_outcome

ソースを表示

事前分布または事後分布の想定される結果を計算します。

このメソッドは、事後分布(または事前分布)パラメータの抽出ごとに E(Outcome|Media, RF, Organic media, Organic RF, Non-media treatments, Controls) を計算します。ここで Outcome は、revenueuse_kpi=False の場合)か kpiuse_kpi=True の場合)を指します。revenue_per_kpi が定義されていない場合、use_kpiFalse にできません。

new_data=None の場合、このメソッドは Meridian オブジェクトの初期化に使用された独立変数の値に基づいて、想定される結果を計算します。ユーザーは new_data 引数を通じて、この過去データをオーバーライドすることもできます。ただし、新しいテンソルのディメンションが一致している場合に限ります。次に例を示します。

new_data=DataTensors(reach=new_reach, frequency=new_frequency)

原理上、想定される結果は他の時間ディメンション(今後の予測など)を使って計算することもできますが、この方法では次のような複雑な処理が増えるため、このメソッドでは許可されていません。

  1. 対応する価格(KPI あたりの収益)データも必要です。
  2. モデルに週次効果のパラメータが含まれている場合は、トレーニング データ期間外の期間について、その影響を推定または予測するメソッドが必要です。

引数
use_posterior ブール値。True の場合、想定される結果の事後分布が計算されます。それ以外の場合は、事前分布が計算されます。
new_data 省略可能な DataTensors コンテナ(省略可能な次の新しいテンソルを含む: mediareachfrequencyorganic_mediaorganic_reachorganic_frequencynon_media_treatmentscontrols)。None の場合、想定される結果は Meridian オブジェクトの初期化に使用されたデータテンソルの元の値に応じて計算されます。new_data 引数が使われた場合、想定される結果は、new_data で渡されたテンソルの値と、残りの未設定テンソルの元の値に基づいて計算されます。たとえば expected_outcome(new_data=DataTensors(reach=new_reach, frequency=new_frequency)) は、元の mediaorganic_mediaorganic_reachorganic_frequencynon_media_treatmentscontrols テンソルと、reach および frequency テンソルの新しい指定値に基づいて、想定される結果を計算します。新しいテンソルのディメンションは、input_data の対応する元のテンソルのディメンションと一致している必要があります。
selected_geos 対象地域のサブセットを含むリスト(省略可)。デフォルトでは、すべての地域が含まれます。
selected_times 対象の日付のサブセットを含むリスト(省略可)。ここで指定できるのは、InputData.time の時間ディメンションの座標と一致している値のみです。デフォルトでは、すべての期間が含まれます。
aggregate_geos ブール値。True の場合、想定される結果はすべての地域の合算になります。
aggregate_times ブール値。True の場合、想定される結果はすべての期間の合算になります。
inverse_transform_outcome ブール値。True の場合、InputData に渡された元の KPI または収益(use_kpi に渡された内容に応じる)で想定される結果を返します。False の場合、KpiTransformer による変換後の結果を返します。これは、モデル内での表現方法を反映します。
use_kpi ブール値。use_kpi = True の場合、推定 KPI が計算されます。それ以外の場合は、推定収益 (kpi * revenue_per_kpi) が計算されます。revenue_per_kpi が定義されていない場合、または inverse_transform_outcome = False の場合は use_kpi = True が必要です。
batch_size 各バッチでのチェーンあたりの最大抽出数を表す整数。メモリの枯渇を回避するため、計算はバッチで実行されます。メモリエラーが発生した場合は、batch_size を減らしてみてください。計算は通常、batch_size の値が大きいほど高速になります。

戻り値
ディメンション (n_chains, n_draws, n_geos, n_times) の想定される結果(use_kpi 引数に応じて KPI または収益)のテンソル。ディメンション n_geos とディメンション n_times は、それぞれ aggregate_geos=True または aggregate_time=True の場合に破棄されます。

発生するエラー
NotFittedModelError このメソッドを呼び出す前に sample_posterior()use_posterior=True の場合)または sample_prior()use_posterior=False の場合)が呼び出されていない場合。

expected_vs_actual_data

ソースを表示

時間の経過に伴って想定される結果と実際の結果のデータが計算されます。

引数
aggregate_geos ブール値。True の場合、予測値、ベースライン、実際の値がすべての地域の合算になります。
aggregate_times ブール値。True の場合、予測値、ベースライン、実際の値がすべての期間の合算になります。
split_by_holdout_id ブール値。Trueholdout_id が存在する場合、データは 'Train''Test''All Data' のサブセクションに分割されます。
confidence_level 想定される結果の信頼区間の信頼レベル。値は 0~1 になります。デフォルト: 0.9

戻り値
想定される結果、ベースラインの結果、実際の結果の指標を含むデータセット。

filter_and_aggregate_geos_and_times

ソースを表示

テンソルの地域と時間のディメンションをフィルタまたは集計します。

引数
tensor ディメンションが [..., n_geos, n_times] または [..., n_geos, n_times, n_channels] のテンソル。ここで n_channels は、メディア チャネル、RF チャネル、すべての有料チャネル(メディアと RF)、またはすべてのチャネル(メディア、RF、メディア以外、オーガニック メディア、オーガニック RF)のいずれかの数です。
selected_geos 対象地域のサブセットを含むリスト(省略可)。デフォルトでは、すべての地域が含まれます。選択した地域は、InputData.geo の地域と一致している必要があります。
selected_times 対象とする時間のリスト(省略可)。InputData.time の時間ディメンションの座標のサブセットを含む文字列リスト、またはテンソルの時間ディメンションと同じ長さのブール値リストのいずれかです。デフォルトでは、すべての期間が含まれます。
aggregate_geos ブール値。True の場合、テンソルはすべての地域の合算になります。
aggregate_times ブール値。True の場合、テンソルはすべての期間の合算になります。
flexible_time_dim ブール値。True の場合、テンソルの時間ディメンションは InputData.time の期間数と一致する必要はありません。ここで selected_times を使用する場合は、テンソルの時間ディメンションと同じ長さのブール値リストにする必要があります。
has_media_dim ブール値。flexible_time_dim=True の場合にのみ使用されます。それ以外の場合は、テンソルのディメンションに基づいて推定されます。True の場合、テンソルには時間ディメンションの後にメディア ディメンションがあると想定されます。False の場合、テンソルの最後のディメンションは時間ディメンションとみなされます。

戻り値
地域と時間のディメンションがフィルタまたは集計されたテンソル。

get_aggregated_impressions

ソースを表示

すべてのチャネルのデータ内のインプレッション値を集計して計算します。

引数
new_data 新しい mediareachfrequencyorganic_mediaorganic_reachorganic_frequencynon_media_treatments のテンソルを含むオプションの DataTensors オブジェクト。new_data 引数が使用されている場合、集計されたインプレッション数は、new_data 引数で渡されたテンソルの値と、残りのすべてのテンソルの元の値を使用して計算されます。新しいテンソルのディメンションは、meridian.input_data の対応する元のテンソルのディメンションと一致している必要があります。None の場合、Meridian オブジェクトの既存のテンソルが使用されます。
selected_geos 対象地域のサブセットを含むリスト(省略可)。デフォルトでは、すべての地域が含まれます。
selected_times 対象期間のサブセットを含むリスト(省略可)。デフォルトでは、すべての期間が含まれます。
aggregate_geos ブール値。True の場合、想定される結果はすべての地域の合算になります。
aggregate_times ブール値。True の場合、想定される結果はすべての期間の合算になります。
optimal_frequency ディメンションが n_rf_channels のリスト(省略可)。事後分布の平均費用対効果を最大化するチャネルあたりの最適なフリークエンシーが含まれます。デフォルト値は None で、指標の計算には過去のフリークエンシーが使用されます。
include_non_paid_channels ブール値。True の場合、集計にはオーガニック メディア、オーガニック RF、およびメディア以外のチャネルが含まれます。

戻り値
形状が (n_selected_geos, n_selected_times, n_channels)(地域と時間が集計される場合は (n_channels,))のテンソル。チャネルごとの合計インプレッション値が含まれます。

get_historical_spend

ソースを表示

期間に基づいて集計された過去の費用を取得します。

引数
selected_times 過去の費用を取得する期間。「なし」の場合、過去の費用はすべての時点で集計されます。
include_media リーチとフリークエンシーのデータがない有料メディア チャネルの費用を含めるかどうか。
include_rf リーチとフリークエンシーのデータがある有料メディア チャネルの費用を含めるかどうか。

戻り値
座標が channel でデータ変数 spend を含む xr.DataArray

発生するエラー
ValueError include_mediainclude_rf の両方が False の場合、ValueError が発生します。

get_rhat

ソースを表示

モデル内の各パラメータの R-hat 値を計算します。

戻り値
R-hat 値の辞書。各パラメータがキーで、値がパラメータに対応する R-hat。

発生するエラー
NotFittedModelError このメソッドを呼び出す前に self.sample_posterior() が呼び出されない場合。

hill_curves

ソースを表示

各チャネルの曲線のプロットに使用される Hill 曲線テーブルを推定します。

引数
confidence_level 事前分布および事後分布の信頼区間の信頼度。0~1 の値で表されます。デフォルトは 0.9 です。
n_bins プロット用のヒストグラムに含める幅の等しいビンの数。デフォルトは 25 です。

戻り値
次の列を含む Hill 曲線 pd.DataFrame

  • channel: media または rf のチャネル名。
  • media_units: メディア(media チャネルの場合)または平均フリークエンシー(rf チャネルの場合)のユニット。
  • distribution: posterior または prior の抽出を示します。
  • ci_hi: Hill 関数の値の信頼区間の上限。
  • ci_lo: Hill 関数の値の信頼区間の下限。
  • mean: 抽出あたりの Hill 関数の値のポイントワイズ平均値。
  • channel_type: media または rf チャネルを示します。
  • scaled_count_histogram: ビン内のメディア ユニットまたは平均フリークエンシーの調整済みのカウント値。
  • count_histogram: ビン内のメディア ユニットまたは平均フリークエンシーのカウント値。
  • start_interval_histogram: ヒストグラムのビンのメディア ユニットまたは平均フリークエンシーの開始点。
  • end_interval_histogram: ヒストグラムのビンのメディア値または平均フリークエンシーの終了点。

incremental_outcome

ソースを表示

事後分布か事前分布の増分結果を計算します。

このメソッドは、事後分布か事前分布のパラメータの抽出ごとに、各メディア チャネルのメディア結果を計算します。増分結果は次のように定義されます。

E(Outcome|Media_1, Controls) - E(Outcome|Media_0, Controls)

ここで、Media_1 は、media_selected_times によって指定された期間のセットを対象とした特定のチャネルでのメディア マーケティングに、scaling_factor1(デフォルトは 1.0)を乗算することを意味します。同様に、Media_0 は、これらの期間を対象としたメディア マーケティングに scaling_factor0(デフォルトは 0.0)を乗算することを意味します。

リーチとフリークエンシーのデータがあるチャネルでは、フリークエンシーは固定され、リーチが調整されます。「結果」とは、use_kpi=False の場合は revenueuse_kpi=True の場合は kpi を指します。revenue_per_kpi が定義されていない場合、use_kpi は False にできません。

new_data=None の場合、このメソッドはメリディアン オブジェクトの初期化に使用された mediareachfrequencyorganic_mediaorganic_reachorganic_frequencynon_media_treatments、および revenue_per_kpi テンソルを使用して、増分結果を計算します。この動作は、new_data 引数でオーバーライドできます。たとえば new_data=DataTensors(media=new_media) は、new_media テンソルと、reachfrequencyorganic_mediaorganic_reachorganic_frequencynon_media_treatments、および revenue_per_kpi テンソルの元の値を使用して、増分結果を計算します。

このメソッドでの計算は、メリディアンの実装時に構築された次の 2 つの重要な仮説に基づきます。

  1. メディア効果の追加性(インタラクションなし)。
  2. モデルの KPI スケールの追加の変更は、元の KPI スケールでの追加の変更に対応しています。つまり、切片とコントロールの効果はメディア効果に影響しません。現在この仮説が成立するのは、結果変換に伴う処理が中心化とスケーリングに限られている(対数変換などを伴わない)ためです。

引数
use_posterior ブール値。True の場合は、増分結果の事後分布が計算されます。それ以外の場合は、事前分布が計算されます。
new_data 省略可能な DataTensors コンテナ(省略可能な mediareachfrequencyorganic_mediaorganic_reachorganic_frequencynon_media_treatments、および revenue_per_kpi テンソルを含む)。None の場合、増分結果はメリディアン オブジェクトに指定された InputData を使用して計算されます。new_data が指定されている場合、増分結果は new_data の新しいテンソルと残りのテンソルの元の値を使用して計算されます。たとえば incremental_outcome(new_data=DataTensors(media=new_media) は、new_media と、reachfrequencyorganic_mediaorganic_reachorganic_frequencynon_media_treatments、および revenue_per_kpi の元の値を使用して増分結果を計算します。new_data のテンソルのいずれかに InputData とは異なる数の期間が指定されている場合は、すべてのテンソルに同数の期間を指定する必要があります。
non_media_baseline_values 形状(n_non_media_channels,)のリスト(省略可)。各要素は、浮動小数点数であるか(指定されたチャネルのベースラインとして固定値が使われることを意味する)、文字列「min」または「max」のいずれか(指定された、メディア以外の介入チャネルの調整値のベースラインとして、グローバルな最小値か最大値が使われることを意味する)です。指定されていない場合は、メディア以外の各介入チャネルのベースラインとして最小値が使われます。
scaling_factor0 浮動小数点数。media_selected_times で指定された期間に、反事実的シナリオ「Media_0」をスケーリングするための係数。負でない値で、scaling_factor1 より小さい値にする必要があります。
scaling_factor1 浮動小数点数。media_selected_times で指定された期間に、「Media_1」をスケーリングするための係数。負でない値で、scaling_factor0 より大きい値にする必要があります。
selected_geos 対象地域のサブセットを含むリスト(省略可)。デフォルトでは、すべての地域が含まれます。
selected_times 対象とする日付のサブセット、または new_XXX 引数で指定されている期間の数と同じ長さのブール値を含むリスト(省略可)。増分結果は、media_selected_times 引数の期間中に実施されたメディア施策によって、selected_times 引数の期間中に発生した KPI の増分に相当します。なお use_kpi=False の場合、selected_times に含めることができのは revenue_per_kpi の入力データがある期間に限られます。デフォルトでは、revenue_per_kpi データが利用可能なすべての期間が含まれます。
media_selected_times 対象の日付のサブセット、または new_media で指定されている期間の数と同じ長さのブール値を含むリスト(省略可)。new_media が指定されている場合、media_selected_timesnew_media の期間のサブセットを選択できます。new_media が指定されていない場合、media_selected_timesInputData.time から選択します。増分結果は、media_selected_times 引数の期間中に実施されたメディア施策によって、selected_times 引数の期間中に発生した KPI の増分に相当します。各チャネルの増分結果は、指定された期間中にメディア施策を scaling_factor1scaling_factor0 によってスケーリングした場合の予測 KPI の差分として定義されます。デフォルトでは、この差分は、過去の施策レベルでの(または new_media で指定された)メディアの場合と、メディア施策がゼロの場合との差になります。デフォルトでは、すべての期間が含まれます。
aggregate_geos ブール値。True の場合、増分結果はすべての地域の合算になります。
aggregate_times ブール値。True の場合、増分結果はすべての期間の合算になります。
inverse_transform_outcome ブール値。True の場合、InputData に渡された元の KPI または収益(use_kpi に渡された内容に応じる)で想定される結果を返します。False の場合、KpiTransformer による変換後の結果を返します。これは、モデル内での表現方法を反映します。
use_kpi ブール値。use_kpi = True の場合、推定 KPI が計算されます。それ以外の場合は、推定収益 (kpi * revenue_per_kpi) が計算されます。revenue_per_kpi データが使用できない場合や inverse_transform_outcome = False の場合は use_kpi = True が必要です。
include_non_paid_channels ブール値。True の場合は、メディア以外の介入効果とオーガニックの効果が計算に含まれます。False の場合は、有料メディアと RF の効果のみが含まれます。
batch_size 各バッチでのチェーンあたりの最大抽出数を表す整数。メモリの枯渇を回避するため、計算はバッチで実行されます。メモリエラーが発生した場合は、batch_size を減らしてみてください。計算は通常、batch_size の値が大きいほど高速になります。

戻り値
ディメンション (n_chains, n_draws, n_geos, n_times, n_channels) を含む増分結果(use_kpi 引数に応じて KPI か収益のいずれか)のテンソル。include_non_paid_channels=True の場合、n_channel はメディア チャネル、RF チャネル、オーガニック メディア チャネル、オーガニック RF チャネル、メディア以外のチャネルの合計数です。include_non_paid_channels=False の場合、n_channels はメディア チャネルと RF チャネルの合計数です。ディメンション n_geos とディメンション n_times は、それぞれ aggregate_geos=True または aggregate_times=True の場合に破棄されます。

発生するエラー
NotFittedModelError このメソッドを呼び出す前に sample_posterior()use_posterior=True の場合)または sample_prior()use_posterior=False の場合)が呼び出されていない場合。
ValueError new_media 引数にメディアと同じテンソル形状がない場合。

marginal_roi

ソースを表示

限界費用対効果の事前分布または事後分布を計算します。

限界費用対効果(mROI)の分子は、特定のチャネルの費用をわずかな割合だけ増加させた場合に想定される結果の変化(kpi または kpi * revenue_per_kpi)です。mROI の分母は、そのチャネルの合計費用の対応する部分(合計費用に占める同じ割合の費用)です。

new_data=None の場合、このメソッドは Meridian オブジェクトの初期化に使用された有料メディア変数の値に基づいて、限界費用対効果を計算します。ユーザーは new_data 引数を通じて、この過去データをオーバーライドすることもできます。ただし、新しいテンソルのディメンションが一致している場合に限ります。次に例を示します。

new_data = DataTensors(media=new_media, frequency=new_frequency)

selected_geos または selected_times が指定されている場合、mROI の分母は、選択されている地域と期間の合計費用に基づきます。モデルのトレーニングに使用される InputData の費用に地域と時間のディメンションがない場合は、例外がスローされます(使用されている引数 new_data.media_spendnew_data.rf_spend のディメンションが InputData の費用と異なる場合は、ユーザー側のエラーである可能性があるため、例外がスローされます)。

引数
incremental_increase mROI の分子を求める際に、各チャネルの費用をごくわずかに増やす割合。mROI の分母は、チャネルの合計費用のこの割合です。限界が True の場合にのみ使用されます。
use_posterior True の場合、事後分布が計算されます。それ以外の場合は、事前分布が計算されます。
new_data 省略可。mediamedia_spendreachfrequencyrf_spendrevenue_per_kpi のデータを含む DataTensors。指定されている場合、限界費用対効果は、new_data で渡されたテンソルの値と、残りのすべてのテンソルの元の値を使って計算されます。新しいテンソルのディメンションは、meridian.input_data の対応する元のテンソルのディメンションと一致している必要があります。None の場合、限界費用対効果は、すべてのテンソルの元の値を使って計算されます。
selected_geos 省略可。対象地域のサブセットが含まれます。デフォルトでは、すべての地域が含まれます。
selected_times 省略可。対象期間のサブセットが含まれます。デフォルトでは、すべての期間が含まれます。
aggregate_geos True の場合、推定収益はすべての地域の合算になります。
by_reach リーチとフリークエンシーのデータがあるチャネルに使用します。True の場合、指定したフリークエンシーに固定した状態でのリーチ別の mROI を返します。False の場合、指定したリーチに固定した状態でのフリークエンシー別の mROI を返します。
use_kpi False の場合、収益を使用して mROI の分子が計算されます。それ以外の場合は、KPI を使用して mROI の分子が計算されます。
batch_size 各バッチのチェーンあたりの最大抽出数。メモリの枯渇を回避するため、計算はバッチで実行されます。メモリエラーが発生した場合は、batch_size を減らしてみてください。計算は通常、batch_size の値が大きいほど高速になります。

戻り値
ディメンションが (n_chains, n_draws, n_geos, (n_media_channels + n_rf_channels)) の mROI 値のテンソル。aggregate_geos=True の場合、n_geos ディメンションは破棄されます。

optimal_freq

ソースを表示

事後分布の平均費用対効果を最大化する最適なフリークエンシーを計算します。

この最適化では、過去の費用が使用され、その値は固定されます。また、フリークエンシーは、すべての地域と期間で一定に制限されます。リーチは、フリークエンシーが変化してもインプレッション数が変わらないように、地域と期間ごとに計算されます。Meridian は、事後分布の平均費用対効果が最適化されるフリークエンシーの解を求めます。

引数
freq_grid フリークエンシー値のリスト。各チャネルの費用対効果は、リスト内のフリークエンシーの値ごとに計算されます。デフォルトでは、リストには 1.0 から最大フリークエンシーまでの数値が、0.1 刻みで含まれます。
use_posterior ブール値。True の場合、事後分布の最適なフリークエンシーが生成されます。False の場合、事前分布の最適なフリークエンシーが生成されます。
selected_geos 対象地域のサブセットを含むリスト(省略可)。デフォルトでは、すべての地域が含まれます。
selected_times 対象期間のサブセットを含むリスト(省略可)。デフォルトでは、すべての期間が含まれます。
confidence_level 事前分布および事後分布の信頼区間の信頼度。0~1 の値で表されます。

戻り値
次を含む xarray データセット。

  • 座標: frequencyrf_channelmetricmeanmedianci_loci_hi)。
  • データ変数:
    • optimal_frequency: 費用対効果の事後分布の平均を最適化するフリークエンシー。
    • roi: freq_grid における各フリークエンシー値の費用対効果。
    • optimized_incremental_outcome: 最適なフリークエンシーに基づく増分結果。
    • optimized_pct_of_contribution: 最適なフリークエンシーに基づく貢献度。
    • optimized_effectiveness: 最適なフリークエンシーに基づく有効性。
    • optimized_roi: 最適なフリークエンシーに基づく費用対効果。
    • optimized_mroi_by_reach: リーチをわずかに変更し、フリークエンシーを最適な値に固定した場合の限界費用対効果。
    • optimized_mroi_by_frequency: 最適なフリークエンシーと固定リーチをわずかに変更した場合の限界費用対効果。
    • optimized_cpik: 最適なフリークエンシーに基づく CPIK。

発生するエラー
NotFittedModelError このメソッドを呼び出す前に sample_posterior()use_posterior=True の場合)または sample_prior()use_posterior=False の場合)が呼び出されていない場合。
ValueError リーチとフリークエンシーのデータがあるチャネルがない場合。

predictive_accuracy

ソースを表示

R-SquaredMAPEwMAPE の適合度指標の有効性を計算します。

R-SquaredMAPE(平均絶対誤差率)、wMAPE(重み付き絶対誤差率)は、revenue_per_kpi が指定されている場合は収益スケール(KPI * revenue_per_kpi)で計算され、revenue_per_kpi = None の場合は KPI スケールで計算されます。これは、費用対効果の分子(増分結果)で使用されるスケールと同じです。

wMAPE の予測誤差は、revenue_per_kpi が指定されている場合は実際の収益(KPI * revenue_per_kpi)で重み付けされ、revenue_per_kpi = None の場合は KPI スケールで重み付けされます。つまり、収益が高い場合の誤差率は、収益が低い場合の誤差率よりも重視されます。

R-SquaredMAPEwMAPE は、モデルレベル(地域と期間ごとに 1 つの観測値)と国内レベル(地域全体の KPI または収益成果を集計して、期間ごとに 1 つの観測値)の両方で計算されます。

R-SquaredMAPEwMAPE はサンプル全体に対して計算されます。モデル オブジェクトにホールドアウト観測値がある場合、Train および Test のサブセットに対しても R-squaredMAPEwMAPE が計算されます。

引数
selected_geos 対象地域のサブセットを含むリスト(省略可)。デフォルトでは、すべての地域が含まれます。
selected_times 対象の日付のサブセットを含むリスト(省略可)。デフォルトでは、すべての期間が含まれます。
batch_size 各バッチでのチェーンあたりの最大抽出数を表す整数。デフォルトでは、batch_size100 となっています。メモリの枯渇を回避するため、計算はバッチで実行されます。メモリエラーが発生した場合は、batch_size を減らしてみてください。計算は通常、batch_size の値が大きいほど高速になります。

戻り値
計算された R_SquaredMAPEwMAPE の値を含む xarray データセット。座標は metricgeo_granularityevaluation_set、付属するデータ変数は value です。holdout_id が存在する場合、データは 'Train''Test''All Data' のサブセクションに分割され、それぞれに対して 3 つの指標が計算されます。

response_curves

ソースを表示

応答曲線 xarray.Dataset を生成するメソッド。

応答曲線は、各メディア チャネルの地域と期間全体での過去の分布パターンを前提として、国内レベルで計算されます。チャネルの応答曲線が計算される x-values を取得するため、乗数リストが各メディア チャネルの過去の合計費用に適用されます。

引数
spend_multipliers 乗数のリスト。各チャネルの合計費用にこれらの係数を掛けて、そのチャネルの曲線を計算する値を取得します。
use_posterior ブール値。True の場合、事後分布の応答曲線が生成されます。False の場合、事前分布の応答曲線が生成されます。
selected_geos 対象地域のサブセットを含むリスト(省略可)。デフォルトでは、すべての地域が含まれます。
selected_times 対象の時間ディメンションのサブセットを含むリスト(省略可)。デフォルトでは、すべての期間が含まれます。時間ディメンションの文字列と整数は Meridian.n_times と一致している必要があります。
by_reach ブール値。リーチとフリークエンシーがあるチャネルの場合。True の場合、リーチ別に応答曲線をプロットします。False の場合、フリークエンシー別に応答曲線をプロットします。
use_optimal_frequency True の場合、最適なフリークエンシーを使用して応答曲線をプロットします。デフォルトは False です。
confidence_level 事前分布および事後分布の信頼区間の信頼度。0~1 の値で表されます。
batch_size 各バッチでのチェーンあたりの最大抽出数を表す整数。メモリの枯渇を回避するため、計算はバッチで実行されます。メモリエラーが発生した場合は、batch_size を減らしてみてください。計算は通常、batch_size の値が大きいほど高速になります。

戻り値
応答曲線を可視化するために必要なデータを含む xarray.Dataset

rhat_summary

ソースを表示

モデル内の各パラメータの R-hat 値の概要を計算します。

チェーン収束に関する Gelman と Rubin(1992 年)の潜在的スケール縮小(一般に R-hat と呼ばれる)の概要を示します。これは、チェーン間の(平均値の)分散が、チェーンが均一に分布した場合に想定される分散をどの程度超過するかを測定する収束診断指標です。値が 1.0 に近いほど、収束が進んでいることを示します。R-hat が 1.2 に満たない場合は近似収束を示しており、多くの問題で妥当なしきい値になります(Brooks および Gelman、1998 年)。

参考文献
Andrew Gelman および Donald B. Rubin。Inference from Iterative Simulation Using Multiple Sequences。Statistical Science、7(4):457-472、1992 年。 Stephen P. Brooks および Andrew Gelman。General Methods for Monitoring Convergence of Iterative Simulations。Journal of Computational and Graphical Statistics、7(4)、1998 年。

引数
bad_rhat_threshold どの程度の R-hat 値を不適切と見なすかを決定するしきい値。

戻り値
次の列を含む DataFrame。

  • n_params: モデル内の各パラメータの数。
  • avg_rhat: 各パラメータの平均 R-hat 値。
  • n_params: モデル内の各パラメータの数。
  • avg_rhat: 各パラメータの平均 R-hat 値。
  • max_rhat: 各パラメータの最大 R-hat 値。
  • percent_bad_rhat: 各パラメータの R-hat 値のうち、値が bad_rhat_threshold より大きい割合。
  • row_idx_bad_rhat: bad_rhat_threshold より大きい R-hat 値の行番号。
  • col_idx_bad_rhat: bad_rhat_threshold より大きい R-hat 値の列番号。

発生するエラー
NotFittedModelError このメソッドを呼び出す前に self.sample_posterior() が呼び出されない場合。
ValueError パラメータの R-hat 配列のディメンション数が 1 または 2 ではない場合。

roi

ソースを表示

各メディア チャネルの費用対効果の事前分布または事後分布を計算します。

費用対効果の分子は、特定のチャネルの費用をゼロに設定し、他のすべてのチャネルの費用を変更しない場合に想定される結果の変化(kpi または kpi * revenue_per_kpi)です。費用対効果の分母は、チャネルの合計費用です。

new_data=None の場合、このメソッドは Meridian オブジェクトの初期化に使用された有料メディア変数の値に基づいて、費用対効果を計算します。ユーザーは new_data 引数を通じて、この過去データをオーバーライドすることもできます。ただし、新しいテンソルのディメンションが一致している場合に限ります。次に例を示します。

new_data = DataTensors(media=new_media, frequency=new_frequency)

selected_geos または selected_times が指定されている場合、費用対効果の分母は、選択されている地域と期間の合計費用です。モデルのトレーニングに使用される InputData の費用に地域と時間のディメンションがない場合は、例外がスローされます(使用されている引数 new_data.media_spendnew_data.rf_spend のディメンションが InputData の費用と異なる場合は、ユーザー側のエラーである可能性があるため、例外がスローされます)。

引数
use_posterior ブール値。True の場合、事後分布が計算されます。それ以外の場合は、事前分布が計算されます。
new_data 省略可。mediamedia_spendreachfrequencyrf_spendrevenue_per_kpi のデータを含む DataTensors。指定されている場合、ROI は new_data で渡されたテンソルの値と、残りのすべてのテンソルの元の値を使って計算されます。新しいテンソルのディメンションは、meridian.input_data の対応する元のテンソルのディメンションと一致している必要があります。None の場合、費用対効果はすべてのテンソルの元の値を使って計算されます。
selected_geos 対象地域のサブセットを含むリスト(省略可)。デフォルトでは、すべての地域が含まれます。
selected_times 対象期間のサブセットを含むリスト(省略可)。デフォルトでは、すべての期間が含まれます。
aggregate_geos ブール値。True の場合、推定収益はすべての地域の合算になります。
use_kpi False の場合、収益を使用して費用対効果の分子が計算されます。それ以外の場合は、KPI を使用して費用対効果の分子が計算されます。
batch_size 各バッチでのチェーンあたりの最大抽出数を表す整数。メモリの枯渇を回避するため、計算はバッチで実行されます。メモリエラーが発生した場合は、batch_size を減らしてみてください。計算は通常、batch_size の値が大きいほど高速になります。

戻り値
ディメンションが (n_chains, n_draws, n_geos, (n_media_channels + n_rf_channels)) の費用対効果の値のテンソル。aggregate_geos=True の場合、n_geos ディメンションは破棄されます。

summary_metrics

ソースを表示

概要指標を返します。

new_data=None の場合、このメソッドは Meridian オブジェクトの初期化に使用されたデータ変数の値に基づいて、すべての指標を計算します。ユーザーは new_data 引数を通じて、この過去データをオーバーライドすることもできます。ただし、新しいテンソルのディメンションが一致している場合に限ります。次に例を示します。

new_data = DataTensors(
    media=new_media,
    frequency=new_frequency,
    non_media_treatments=new_non_media_treatments)

集計されたチャネル ディメンション "All Paid Channels" では、mroi 指標と effectiveness 指標は定義されていません(math.nan)。

引数
new_data オプションの DataTensors オブジェクト(オプションの新しいテンソルを含む: mediareachfrequencyorganic_mediaorganic_reachorganic_frequencynon_media_treatmentscontrolsrevenue_per_kpi)。指定されている場合、概要指標は、new_data で渡されたテンソルの値と、残りのすべてのテンソルの元の値を使って計算されます。新しいテンソルのディメンションは、meridian.input_data の対応する元のテンソルのディメンションと一致している必要があります。None の場合、概要指標はすべてのテンソルの元の値を使って計算されます。
marginal_roi_by_reach ブール値。限界費用対効果(mROI)は、費用を 1 ドル追加した場合の費用対効果として定義されます。この引数が True の場合、費用の追加はリーチにのみ影響し、フリークエンシーは一定に保たれると仮定されます。この引数が False の場合、費用の追加はフリークエンシーにのみ影響し、リーチは一定に保たれると仮定されます。include_non_paid_channelsFalse の場合に限って使われます。
marginal_roi_incremental_increase mROI の分子を求める際に、各チャネルの費用をごくわずかに増やす割合。mROI の分母は、チャネルの合計費用のこの割合です。include_non_paid_channelsFalse の場合に限って使われます。
selected_geos 対象地域のサブセットを含むリスト(省略可)。デフォルトでは、すべての地域が含まれます。
selected_times 対象期間のサブセットを含むリスト(省略可)。デフォルトでは、すべての期間が含まれます。
aggregate_geos ブール値。True の場合、想定される結果はすべての地域の合算になります。
aggregate_times ブール値。True の場合、想定される結果はすべての期間の合算になります。False の場合、ROI、mROI、有効性、CPIK は、期間ごとの明確な解釈がないため、レポートされません。
optimal_frequency ディメンションが n_rf_channels のリスト(省略可)。事後分布の平均費用対効果を最大化するチャネルあたりの最適なフリークエンシーが含まれます。デフォルト値は None で、指標の計算には過去のフリークエンシーが使用されます。
use_kpi ブール値。True の場合、概要指標は KPI を使用して計算されます。False の場合、概要指標は収益を使用して計算されます。
confidence_level 概要指標の信頼区間の信頼度。0~1 の値で表されます。
batch_size 各バッチでのチェーンあたりの最大抽出数を表す整数。メモリの枯渇を回避するため、計算はバッチで実行されます。メモリエラーが発生した場合は、batch_size を減らしてみてください。計算は通常、batch_size の値が大きいほど高速になります。
include_non_paid_channels ブール値。True の場合、無料チャネル(オーガニック メディア、オーガニックのリーチとフリークエンシー、メディア以外の介入)も概要に含まれますが、費用に依存しない指標のみがレポートされます。False の場合、有料チャネル(メディア、リーチ、フリークエンシー)のみが概要に含まれますが、費用に依存する指標も含まれます。デフォルト: False

戻り値
channelmetricmeanmedianci_lowci_high)、distribution(事前分布、事後分布)の座標を有し、無料データ変数(incremental_outcomepct_of_contributioneffectiveness)と有料データ変数(impressionspct_of_impressionsspendpct_of_spendCPMroimroicpik)を含む xr.Dataset。有料データ変数は、include_non_paid_channelsFalse の場合にのみ含まれます。aggregate_times=False の場合、roimroicpikeffectiveness の指標は、期間ごとの明確な解釈がないため、レポートされません。