Depict (sketch.depict)

This module provides functions to describe model training, predictions, inputs, and configuration, generating textual summaries and saving plots/data into your results directory.

Key functions

  • describe_mmm_training(config, processed_data, mmm, results_dir)

    • Runs core training-time outputs and saves:

      • model_summary.csv (ArviZ summary)

      • all_decomp.csv (per-date mean contributions, with date column)

      • media_contribution_mean.png, media_contribution_median.png

      • Delegates to plotting helpers to create:

        • weekly_media_and_baseline_contribution.png

        • weekly_media_contribution.png

        • media_performance_mean.png, media_performance_median.png

        • performance_distribution.png

        • response_curves.png

  • describe_mmm_prediction(config, input_data_processed, mmm, results_dir)

    • Generates predictive diagnostics and components summary for the holdout split:

      • waterfall_plot_components_decomposition.png

      • model_fit_predictions.png

      • CSVs for ROI/efficiency summaries:

        • Revenue target: media_contribution_per_spend.csv, media_cost_per_revenue_unit.csv

        • Conversion target: media_conversion_efficiency.csv, media_cost_per_conversion.csv

  • describe_input_data(input_data, results_dir, suffix)

    • Plots all metrics and writes outlier summaries:

      • metrics_{suffix}.png

      • Outlier report via preprocessing module

  • describe_config(output_dir, config, git_sha)

    • Writes reproducibility artifacts git_sha.txt and config.txt

Convenience helpers (selected)

  • get_media_effect_df(model) → wide DataFrame of mean per-date channel attributions (original scale)

  • compute_roi_summary(model, data, config) → per-channel ROI/efficiency stats (0.05, 0.95, median, mean, plus blended)

  • compute_cost_per_target_summary(model, data, config) → per-channel cost per revenue unit (or per conversion)

  • quick_stats(model) → ArviZ summary of key parameters

  • weekly_spend_by_channel(model) → figure showing weekly spend on each channel vs. its curve

Usage example

from src.sketch.depict import describe_mmm_training, describe_mmm_prediction

# Training-time outputs
describe_mmm_training(config, processed_data, mmm, results_dir)

# Predictive diagnostics and component summary
describe_mmm_prediction(config, processed_data, mmm, results_dir)

Notes

  • Theme is controlled via config['plot_theme'] (“dark” or default)

  • Date columns are added to CSVs where available from model.X[date_col]

  • Graphviz is required for structure plots via plot_diagnostics.plot_model_structure