Plot Results (`sketch.plot_results`)
This module provides functions for plotting model results, such as channel and baseline contributions, ROI/efficiency, and component decomposition.
Key functions
-
all_contributions_plot(model, config, results_dir)- Stacked area chart of weekly contributions for each channel plus a combined baseline (intercept + any
extra_features_cols). - Inputs: fitted model,
config(usesdate_col,extra_features_cols), output directory. - Saves:
weekly_media_and_baseline_contribution.png.
- Stacked area chart of weekly contributions for each channel plus a combined baseline (intercept + any
-
plot_channel_contributions(model, config, results_dir)- Stacked area chart of channel-only contributions over time (no baseline).
- Inputs: fitted model,
config(usesdate_col), output directory. - Saves:
weekly_media_contribution.png.
-
plot_roi(model, data, config, results_dir)- Bar charts of mean and median ROI (revenue) or Conversion Efficiency (if
target_type: conversion) by channel. - Inputs: fitted model, original
dataframe (used to sum spend columns),config(usesmedia[*].spend_col,target_type). - Saves:
media_performance_mean.png,media_performance_median.png.
- Bar charts of mean and median ROI (revenue) or Conversion Efficiency (if
-
plot_roi_distribution(model, data, config, results_dir)- Per-channel ROI/efficiency distributions with histogram + KDE overlay.
- Inputs: fitted model,
data,config(same keys as above). - Saves:
performance_distribution.png.
-
plot_waterfall_components_decomposition(model, original_scale=True, figsize=(14,7), results_dir=None, **kwargs)- Waterfall plot breaking the target into major components based on
model.compute_mean_contributions_over_time(original_scale=True). - Returns:
matplotlib.figure.Figureand optionally saves a CSV of components ifresults_diris provided.
- Waterfall plot breaking the target into major components based on
Usage examples
from src.sketch.plot_results import ( all_contributions_plot, plot_channel_contributions, plot_roi, plot_roi_distribution, plot_waterfall_components_decomposition,)
# Stacked contributions (baseline + channels)all_contributions_plot(model=mmm, config=config, results_dir=results_dir)
# Channels onlyplot_channel_contributions(model=mmm, config=config, results_dir=results_dir)
# ROI / Conversion Efficiency (depends on config['target_type'])plot_roi(model=mmm, data=processed_data, config=config, results_dir=results_dir)plot_roi_distribution(model=mmm, data=processed_data, config=config, results_dir=results_dir)
# Component decompositionfig = plot_waterfall_components_decomposition(model=mmm, results_dir=results_dir)Notes
- Date handling: functions attempt to resolve real datetimes from
model.X[date_col]; if unavailable, they coerce series to timestamps. - Baseline composition: in
all_contributions_plotthe baseline is defined asintercept + extra_features_cols. - Target type: set
config['target_type']toconversionto switch ROI labels to Conversion Efficiency.