在分析拟合 Meridian 模型时,Analyzer、Visualizer 和 BudgetOptimizer 类允许将分析范围限定为特定的地理区域或时间段。借助这些实参,您可以根据输入数据的子集计算指标(例如投资回报率或增量效果)、生成可视化图表,以及执行预算优化。
使用 selected_geos 实参可将范围限定为地理位置。使用 selected_times 实参可将范围限定为 Analyzer 和 Visualizer 类的时间段。如需定义 BudgetOptimizer 的时间范围,请使用 start_date 和 end_date 实参(通常以 yyyy-mm-dd 字符串格式提供)。
默认情况下,这些实参会分别设置为包含所有地理位置单位和所有时间段。借助某些方法中提供的布尔值选项 aggregate_times 和 aggregate_geos,您可以分别按时间和地理位置细分结果,也可以汇总所选时间和地理位置。
示例代码
本部分介绍了几种假设场景,展示了如何使用 selected_geos 和 selected_times。
场景 1:计算特定时间段内的摘要指标
# Scenario 1: Calculate summary metrics for Q4 2024 only, aggregated across geos.
from meridian.analysis import analyzer
from meridian.model import model
mmm = model.Meridian(...)
mmm.sample_posterior(...)
analyzer_instance = analyzer.Analyzer(mmm)
selected_q4_times = [
'2024-10-01',
'2024-10-08',
'2024-10-15',
'2024-10-22',
'2024-10-29',
'2024-11-05',
'2024-11-12',
'2024-11-19',
'2024-11-26',
'2024-12-03',
'2024-12-10',
'2024-12-17',
'2024-12-24',
'2024-12-31',
]
q4_national_summary = analyzer_instance.summary_metrics(
selected_times=selected_q4_times,
)
场景 2:计算 2 个假设地理位置的增量效果
# Scenario 2: Calculate incremental outcome for 2 hypothetical geos, 'Geo_A', 'Geo_B' broken down weekly.
from meridian.analysis import analyzer
from meridian.model import model
mmm = model.Meridian(...)
mmm.sample_posterior(...)
analyzer_instance = analyzer.Analyzer(mmm)
# Note: Incremental Outcome can be aggregated by time or shown weekly.
geo_a_weekly_impact = analyzer_instance.incremental_outcome(
selected_geos=['Geo_A', 'Geo_B'],
aggregate_geos=False, # Keep the geo dimension separate.
aggregate_times=False, # Show incremental outcome week-by-week.
)
场景 3:过滤模型拟合图
# Scenario 3: Filtering Model Fit Plot
# You can restrict the ModelFit.plot_model_fit() visualization to a specific
# region and ensure results are shown at that detailed geo level.
# This example assumes weekly aggregation.
from meridian.model import model
from meridian.analysis import visualizer
mmm = model.Meridian(...)
mmm.sample_posterior(...)
# Assume 'mmm' is fitted
model_fit = visualizer.ModelFit(mmm)
model_fit_chart = model_fit.plot_model_fit(
selected_geos=['Geo_A'],
# Plotting January 2025
selected_times=[
'2025-01-01',
'2025-01-08',
'2025-01-15',
'2025-01-22',
'2025-01-29',
],
# Display Geo_A's plot separately (relevant for multi-geo models)
show_geo_level=True,
include_baseline=True,
)