メインコンテンツへスキップ
データ分析

PyMC-Marketingの使い方:PythonでベイズMMMを実行する方法

PyMC-Marketingを使ったベイズMMMの実装手順を解説。インストールからデータ準備、モデル構築、結果の解釈まで、Pythonコード付きで紹介します。

MMM Lab 編集部2026/2/264分で読める5

PyMC-Marketingの使い方:PythonでベイズMMMを実行する方法

はじめに

PyMC-Marketingは、Pythonでベイズ統計ベースのMMM(マーケティングミックスモデリング)を実行するためのオープンソースライブラリです。PyMC(確率的プログラミングフレームワーク)をベースに、マーケティング特化の機能が組み込まれています。

この記事では、PyMC-Marketingを使ったMMMの実装手順を、コード例付きで解説します。

PyMC-Marketingとは

項目詳細
開発元PyMC Labs
ライセンスApache 2.0(無料)
言語Python
統計フレームワークPyMC (PyTensor)
主な機能MMM、CLV(顧客生涯価値)予測
最新バージョン0.18.x(2026年2月時点)

特徴

  • ベイズ推定:事前知識を活用した安定した推定
  • アドストック自動推定:Geometric / Weibull Adstockをサポート
  • 飽和曲線:Hill関数による収穫逓減のモデル化
  • 予算最適化:最適な予算配分を算出する組み込み関数
  • 可視化:ArviZとの連携で豊富なプロット

環境構築

インストール

pip install pymc-marketing

推奨環境

Python >= 3.10
pymc-marketing >= 0.18.0
pandas >= 2.0
matplotlib >= 3.7

注意: PyMC-MarketingはPyTensor(旧Theano)に依存しており、環境構築がやや複雑になる場合があります。Dockerの使用を推奨します。

データの準備

MMMに必要なデータ形式は以下の通りです:

import pandas as pd

# サンプルデータ
df = pd.read_csv("marketing_data.csv")
print(df.head())
      date    sales   tv_spend  digital_spend  social_spend
2024-01-07  1200000    500000       300000        100000
2024-01-14  1350000    600000       280000        120000
2024-01-21  1100000    400000       320000         90000
...

データ要件

  • : 週次データ(52行以上推奨)
  • : 日付、目的変数(売上等)、チャネル別広告費
  • 欠損値: なし(前処理で補完が必要)

モデルの構築

from pymc_marketing.mmm import MMM

# チャネル列を指定
channel_columns = ["tv_spend", "digital_spend", "social_spend"]

# MMMモデルを構築
mmm = MMM(
    date_column="date",
    channel_columns=channel_columns,
    adstock="geometric",          # アドストックモデル
    saturation="hill",            # 飽和曲線モデル
)

# データを渡してモデルをフィット
mmm.fit(
    X=df[["date"] + channel_columns],
    y=df["sales"],
    target_accept=0.9,
    chains=4,
    draws=1000,
    tune=1000,
)

パラメータの説明

パラメータ説明推奨値
adstockアドストックモデル"geometric" or "weibull"
saturation飽和曲線モデル"hill" or "logistic"
chainsMCMCチェーン数2〜4
drawsサンプル数1000〜2000
tuneウォームアップ1000

結果の確認

チャネル別貢献度

# チャネル別の貢献度を可視化
mmm.plot_channel_contribution()

アドストックパラメータ

# アドストックの減衰率を確認
mmm.plot_channel_parameter("adstock")

飽和曲線

# 各チャネルの飽和曲線を可視化
mmm.plot_channel_parameter("saturation")

モデル適合度

# 予測 vs 実績のプロット
mmm.plot_posterior_predictive()

# R²スコア
print(f"R²: {mmm.score:.3f}")

予算最適化

# 現在の予算配分
current_budget = {
    "tv_spend": 500000,
    "digital_spend": 300000,
    "social_spend": 100000,
}

# 最適な予算配分を算出
optimal = mmm.optimize_budget(
    total_budget=sum(current_budget.values()),
    budget_bounds={
        "tv_spend": (100000, 800000),
        "digital_spend": (100000, 500000),
        "social_spend": (50000, 300000),
    },
)

print("最適配分:", optimal)

PyMC-Marketingの限界

課題説明
学習コストPython、ベイズ統計、MCMCの知識が必要
環境構築PyTensor依存で環境構築がやや複雑
実行時間データ量によっては数十分〜数時間
レポーティングPDFレポート等は自前で構築が必要
日本語対応ドキュメントは英語のみ

PyMC-Marketing vs MMM Lab

比較項目PyMC-MarketingMMM Lab
価格無料¥10,000/月〜
言語PythonGUI(日本語)
カスタマイズ性非常に高い中程度
セットアップ数時間〜数日数分
レポート自前構築自動PDF生成
サポートコミュニティチャット+メール
対象ユーザーデータサイエンティストマーケター全般

Pythonに精通したデータサイエンティストにはPyMC-Marketingが最適です。マーケティング部門で直接使いたい場合はMMM Labが適しています。

MMM Labは内部でPyMC-Marketingと同じベイズ推定エンジンを使用しています。

まとめ

PyMC-Marketingは、MMMを自社で内製化したいデータサイエンティストにとって強力なツールです。ただし、Pythonの知識やベイズ統計の理解が前提となります。

プログラミングなしでMMMを実行したい方は、MMM Labをお試しください。CSVアップロードだけで同等の分析が可能です。

MMM Labを無料で始める | PyMC-Marketing公式ドキュメント


この記事は定期的に更新しています。最終更新: 2026年2月

MMMをもっと深く学びませんか?

理論から実践まで体系的に学べるコース・記事を多数ご用意。 無料プランでも基礎コンテンツにアクセスできます。

MMMの最新情報をお届けします

新着記事・コース更新をメールでお知らせ

関連記事