Google Analytics分析における数値計算と分析手法の正確性を保つためのルールです。
LLM(Large Language Model)は数値計算が非常に苦手です:
- 簡単な四則演算(50÷1000など)でも間違える可能性が高い
- パーセンテージ変換、比率計算で頻繁にエラーが発生
- 桁数が多い計算や小数点計算は特に危険
- 複数ステップの計算では中間計算でもエラーが蓄積
この制約により、すべての数値計算をプログラムで実行することが必須です。
絶対に行ってはいけません:
- パーセンテージ、比率、増減率の推論計算
- 数値の合計、平均、中央値の推論計算
- トレンド分析における具体的な数値の推論
- コンバージョン率、クリック率などのKPI値の推論
- 中間計算も含めて、すべての計算ステップの推論
LLMが特に間違いやすい計算例:
❌ 50 ÷ 1000 = 0.05 → 5%(一見簡単だが間違いやすい)
❌ (120 - 100) ÷ 100 = 0.2 → 20%(複数ステップでエラー蓄積)
❌ 1,234,567 × 0.032(桁数が多いとエラー頻発)
❌ 3.14159 × 2.71828(小数点計算は危険)
例:
❌ 間違い:「セッション数が1000で、コンバージョンが50なので、コンバージョン率は約5%です」
✅ 正しい:「Pythonで計算します:conversion_rate = 50/1000 = 0.05 = 5%」
禁止:
- サンプルサイズが小さいことを「発見」や「洞察」として扱う
- 「サンプルサイズが小さいので信頼性が低い」を分析の主要結果として出す
- データ量の少なさを問題提起として強調する
- サンプルサイズの制約を全体への汎化の妨げとして過度に言及する
許可:
- サンプルサイズを客観的事実として淡々と記載する(例:「n=50」「データ期間:7日間」)
- 統計計算で必要な場合にサンプルサイズを使用する
理由:統計的制約は当たり前の事実であり、分析の洞察ではない
すべての数値計算は必ずPythonで実行:
# 例:コンバージョン率計算
conversions = 50
sessions = 1000
conversion_rate = conversions / sessions
print(f"コンバージョン率: {conversion_rate:.2%}")- 計算式を明確に示す
- 使用した数値を明記する
- 計算結果を検証可能な形で提示する
- GA4 MCPツールでデータ取得
- 取得データをそのままPython計算に使用
- 推論や概算を挟まない
LLMの計算エラーを防ぐため、以下の検証を必ず実行:
# 計算結果の逆算検証
sessions = 1000
conversions = 50
conversion_rate = conversions / sessions
# 検証: 逆算して元の値が復元されるか
check = conversion_rate * sessions
print(f"検証: {conversion_rate} × {sessions} = {check}")
print(f"元の値: {conversions}, 一致: {abs(check - conversions) < 0.001}")
# 常識的範囲の確認
if 0 <= conversion_rate <= 1:
print("✅ コンバージョン率が妥当な範囲内")
else:
print("❌ 計算エラーの可能性あり")✅ OK:「コンバージョン率が5%という結果から、ランディングページの改善が必要と考えられます」
✅ OK:「前月比20%増加は、キャンペーンの効果が現れていると推測されます」
✅ OK:「この傾向から、モバイルユーザー向けの施策を強化すべきでしょう」
✅ OK:「データパターンから、季節性の影響が考えられます」
✅ OK:「流入チャネルの変化が、コンバージョン率に影響している可能性があります」
# GA4 MCPツールを使用してデータ取得
report_data = run_report(
property_id="your_property_id",
dimensions=["date", "source"],
metrics=["sessions", "conversions"]
)import pandas as pd
# データフレーム化
df = pd.DataFrame(report_data)
# 計算実行
df['conversion_rate'] = df['conversions'] / df['sessions']
df['growth_rate'] = df['sessions'].pct_change()
# 結果出力
print(df[['date', 'sessions', 'conversions', 'conversion_rate']])# 計算結果の検証
total_sessions = df['sessions'].sum()
total_conversions = df['conversions'].sum()
overall_conversion_rate = total_conversions / total_sessions
print(f"全体コンバージョン率: {overall_conversion_rate:.4f}")
print(f"検証用計算: {total_conversions}/{total_sessions} = {overall_conversion_rate}")- 使用したGA4プロパティID
- 取得期間・ディメンション・メトリクス
- 取得データの概要
- Pythonコードの提示
- 計算式の説明
- 中間結果の表示
- 最終的な数値結果
- 数値の意味・解釈
- データに基づく洞察
- 数値結果に基づく判断
- 仮説・戦略提案
- 次のアクションプラン
- 小数点以下の桁数を適切に管理
- 丸め誤差を考慮した計算
- 必要に応じて
Decimal型を使用
- 異常値のチェック
- データ型の確認
- 欠損値の処理
- サンプルサイズは考慮するが強調しない
- 必要に応じて信頼区間を計算
- A/Bテストの場合は適切な統計検定を実行
1. GA4 MCPでセッションデータを取得
2. Pythonでコンバージョン率を計算: 3.2%
3. 前月比較を計算: +0.8ポイント増加
4. 解釈: 「コンバージョン率が3.2%に改善し、前月から0.8ポイント向上しています。
このトレンドから、最近実施した施策が効果を発揮していると考えられます」
このアプローチにより、数値の正確性を保ちながら、意味のある分析洞察を提供できます。
GA4分析時にすぐに参照できる重要ポイントの要約です。
簡単な計算でもエラーが発生します。必ずPythonで計算してください。
❌ 「約5%です」「だいたい20%増加」「推定で○○」
❌ 「50÷1000=5%」(一見簡単だが間違いやすい)
✅ Pythonで計算: conversion_rate = 50/1000 = 0.05 = 5%
✅ 必ず検証: print(f"検証: {0.05} × 1000 = {0.05 * 1000}")
❌ 「サンプルサイズが小さいので信頼性が低い」(問題提起として)
✅ 「サンプルサイズ:n=100」(客観的事実として)
✅ 淡々と数値を報告し、洞察に集中
# GA4 MCPツールでデータ取得
data = run_report(property_id, dimensions, metrics, date_ranges)# 必ずPythonで計算
df = pd.DataFrame(data)
conversion_rate = df['conversions'].sum() / df['sessions'].sum()
growth_rate = (current - previous) / previousprint(f"コンバージョン率: {conversion_rate:.2%}")
print(f"成長率: {growth_rate:.2%}")
# 必須検証
check = conversion_rate * sessions
print(f"検証: {conversion_rate} × {sessions} = {check} (元の値: {conversions})")- パーセンテージ、比率、増減率
- 平均、合計、中央値
- 相関係数、統計量
- 数値の意味づけ
- トレンドの解釈
- 仮説・戦略提案
# 成長率
growth = (new - old) / old * 100
# コンバージョン率
cvr = conversions / sessions
# 前年同期比
yoy_growth = (this_year - last_year) / last_yearimport pandas as pd
import numpy as np
# データフレーム作成
df = pd.DataFrame(ga4_data)
# 期間別集計
monthly_data = df.groupby('month').sum()# 計算結果の検証
total = df['metric'].sum()
manual_calc = sum(df['metric'])
print(f"検証: {total} == {manual_calc}")- データ取得結果: 使用したプロパティ、期間、取得データの概要
- 計算プロセス: Pythonコードとその結果
- 数値結果: 正確な計算値
- 洞察: 数値から読み取れる意味と提案
# 期間比較
def compare_periods(current, previous):
growth = (current - previous) / previous
return growth
# 平均値計算
def calculate_average(data_list):
return sum(data_list) / len(data_list)
# パーセンテージ表示
def format_percentage(value):
return f"{value * 100:.2f}%"