Claudeでブランドリフト調査を設計し、露出群と非露出群の差を検定する
認知・好意・購入意向の設問設計から、露出群と非露出群のリフト算出、有意差の判定までをClaudeに進めさせる手順です。購入意向の差が有意にならない理由とサンプル数の見積もりも扱います。
広告を見た人は、見なかった人より、そのブランドを知っているのか。好意や購入意向は何ポイント高いのか。この問いに答える調査がブランドリフト調査です。広告に接触した「露出群」と、接触していない「非露出群」に同じアンケートを配り、設問ごとの差を見ます。
Claudeに任せられるのは、設問の設計、回答データの集計、差の検定です。一方で、誰を露出群とみなすかという割付の設計は、人が決めることです。この記事では、その線引きを前提に、設問の作り方から依頼文、検定の結果の読み方までを順に進めます。
ブランドリフト調査で比べるもの
ブランドリフトは、露出群の指標から非露出群の指標を引いた差です。指標は、割合(「知っている人の割合」など)で表すのが基本です。
- 露出群: 広告キャンペーンに接触した回答者
- 非露出群(コントロール群): 接触していない回答者。露出群と属性をそろえる
- リフト: 露出群の割合 − 非露出群の割合(ポイント)
- 相対リフト: リフト ÷ 非露出群の割合(%)
差は「広告の効果」ではなく「2群の回答の差」です。広告以外の理由で群が違っていれば、差はそのまま効果とは読めません。群の作り方が調査の質を決めます。
認知・好意・購入意向の設問を作る
指標は、購買に近づく順に3段で置くのが定番です。段が上がるほど、広告1回では動きにくくなります。
| 段 | 見たいこと | 設問の形 | 集計の単位 |
|---|---|---|---|
| 認知 | 見たいことブランドを知っているか | 設問の形助成想起(ブランド名の一覧から選ばせる) | 集計の単位「知っている」の割合 |
| 好意 | 見たいこと好ましく思っているか | 設問の形5段階評価 | 集計の単位4と5を合わせたTop2の割合 |
| 購入意向 | 見たいこと買いたいと思うか | 設問の形5段階評価 | 集計の単位4と5を合わせたTop2の割合 |
設問を作るときに崩れやすい点が3つあります。
- 自社ブランドだけを聞かない。競合を含む一覧にして、選択肢の並びをランダムにします。自社名だけの一覧では、誰でも「知っている」と答えやすくなります。
- 認知を聞く前に、ブランド名を見せない。好意の設問や広告の画像が先にあると、認知の回答が引きずられます。順番は、認知、好意、購入意向です。
- 非露出群にも同じ設問を、同じ順で聞く。設問の文言が1語でも違えば、差は設問の違いを含みます。
Claudeには、この3点を守らせた上で設問票の案を作らせられます。次のように頼みます。
ブランドリフト調査のアンケート票を作ってください。
- 商品: 無糖の炭酸水(新ブランドA)
- 競合: 3ブランド(B, C, D)
- 設問順: 助成想起 → 好意(5段階) → 購入意向(5段階)
- 選択肢は競合を含め、表示順をランダムにする前提で書く
- 露出群と非露出群で同一の票にする
- スクリーニング設問(年齢、直近1か月の購入有無)も添える
回答データのCSVの列名案も最後に出してください。列名案まで出させるのは、後の集計で形をそろえるためです。アンケートツールからの回答出力をそのまま使うなら、ClaudeとSurveyMonkeyの連携で設問の作成から回答の取得まで進められます。
露出群と非露出群をどう分けるか
ここは人が決める部分です。Claudeに「適切に割り付けて」と頼んでも、広告の配信ログを持っていなければ判断できません。
典型的な作り方は2つあります。
- 配信ログで分ける: 広告に接触した人と、配信対象から除いた人にそれぞれ回答を依頼する。非露出群は、同じ属性条件で抽出する
- 調査パネルで分ける: パネルの回答者に「広告を見たか」を聞いて分ける。手軽ですが、記憶に頼るため、ブランドを知っている人ほど「見た」と答えやすい偏りが入ります
どちらの場合も、2群の属性(年齢、性別、直近の購入有無)が近いことをまず確かめます。ここがずれたまま差を出すと、リフトは広告ではなく属性の差を拾います。
回答データの形をそろえる
集計をClaudeに渡す前に、1行1回答者のCSVにします。
id,group,age_band,aware_a,favor,intent
1001,exposed,30s,1,4,3
1002,control,40s,0,3,2
1003,exposed,20s,1,5,4group:exposedかcontrolaware_a: 新ブランドAを選んだなら1、選ばなければ0favor/intent: 5段階の回答(1〜5)
CSVのアップロードと集計は、コード実行とファイル作成を有効にした環境で進めます。ファイルの上限は1ファイル30MBです。XLSXをアップロードするには、アカウントでコード実行とファイル作成を有効にしておく必要があります。使うと通常のチャットより利用上限を多く消費します。
Claudeに頼む文面
計算は暗算させず、コードを書いて実行させます。依頼文には、使う検定、補正、出してほしい表を書きます。
添付のCSVはブランドリフト調査の回答です(group列がexposed/control)。
コードを書いて実行し、次を出してください。
1. 群ごとの回答者数と、age_band別の構成比(群の属性がそろっているかの確認)
2. 指標: aware_a=1の割合 / favorがTop2(4か5)の割合 / intentがTop2の割合
3. 指標ごとに、露出群−非露出群のリフト(ポイント)、95%信頼区間、
2群の比率のz検定(両側、プールした比率、連続性補正なし)のp値
4. 3つの指標をまとめて検定した扱いとして、Holm補正後のp値
5. 使ったコードを全文載せる
属性が大きくずれている場合は、集計に入る前に教えてください。「属性がずれていたら先に教えて」の一文が肝です。この一文がないと、ずれたまま差だけが返ってきます。
手元で再現できる集計スクリプト
次のスクリプトは、標準ライブラリだけで同じ集計を再現します。以下は例示用の架空データ(各群600人)で、Claudeの出力の転載ではありません。
import math
from statistics import NormalDist
N = NormalDist()
# (指標, 露出群の該当数, 露出群n, 非露出群の該当数, 非露出群n)
rows = [
("助成想起", 252, 600, 204, 600),
("好意(5段階のTop2)", 198, 600, 174, 600),
("購入意向(5段階のTop2)", 126, 600, 102, 600),
]
res = []
for name, xe, ne, xc, nc in rows:
pe, pc = xe / ne, xc / nc
pool = (xe + xc) / (ne + nc)
se0 = math.sqrt(pool * (1 - pool) * (1 / ne + 1 / nc))
z = (pe - pc) / se0
p = 2 * (1 - N.cdf(abs(z)))
se = math.sqrt(pe * (1 - pe) / ne + pc * (1 - pc) / nc)
d = pe - pc
res.append([name, pe, pc, d, d - 1.96 * se, d + 1.96 * se, p])
# Holm補正
order = sorted(range(len(res)), key=lambda i: res[i][6])
m = len(res); adj = [0] * m; prev = 0
for rank, i in enumerate(order):
a = min(1, (m - rank) * res[i][6]); prev = max(prev, a); adj[i] = prev
for r, a in zip(res, adj):
print(f"{r[0]}: 露出{r[1]:.1%} 非露出{r[2]:.1%} リフト{r[3]*100:+.1f}pt "
f"CI[{r[4]*100:.1f}, {r[5]*100:.1f}] p={r[6]:.4f} Holm={a:.4f} 相対{r[3]/r[2]:+.1%}")Python 3.12.2で実行した出力は次のとおりです。
助成想起: 露出42.0% 非露出34.0% リフト+8.0pt CI[2.5, 13.5] p=0.0043 Holm=0.0129 相対+23.5%
好意(5段階のTop2): 露出33.0% 非露出29.0% リフト+4.0pt CI[-1.2, 9.2] p=0.1341 Holm=0.1548 相対+13.8%
購入意向(5段階のTop2): 露出21.0% 非露出17.0% リフト+4.0pt CI[-0.4, 8.4] p=0.0774 Holm=0.1548 相対+23.5%Claudeが返した数字は、このスクリプトに同じ4つの数字(該当数と人数)を入れて突き合わせられます。一致しなければ、Claude側の検定の種類か補正の有無が違っています。z検定の型そのものは、ClaudeにA/Bテストの有意差を検定させる手順で扱っています。
結果の読み方 — 相対+23.5%でも有意とは言えない
上の出力では、助成想起だけが有意です。好意と購入意向はどちらも+4.0ポイントですが、信頼区間はどちらも0をまたいでいます。
- 助成想起: +8.0ポイント。信頼区間は2.5〜13.5ポイントで、0を含まない。Holm補正後も有意(p=0.0129)
- 好意: +4.0ポイント。信頼区間は−1.2〜9.2ポイントで、0を含む。有意とは言えない
- 購入意向: +4.0ポイント。信頼区間は−0.4〜8.4ポイントで、0を含む。有意とは言えない
購入意向の相対リフトは+23.5%と見映えがしますが、群ごとに600人では「差がない」とも「4ポイントある」とも言えない幅です。相対値だけを報告書に載せると、有意でない差を成果として見せてしまいます。ポイント差と信頼区間を並べて載せます。
Claudeに結果の文章を書かせるときは、有意かどうかを先に言わせ、有意でない指標を「効果があった」と書かせない指示を添えます。
必要なサンプル数を先に見積もる
差が出ない原因としてまず疑うのは、サンプル数です。調査を始める前に、見たい差から人数を逆算します。
上の例の割合で、有意水準5%・検出力80%・両側検定とすると、1群あたりの必要人数は次のとおりです(逆正弦変換による近似)。
| 指標 | 非露出群 → 露出群の想定 | 1群あたりの必要人数 |
|---|---|---|
| 助成想起 | 非露出群 → 露出群の想定34% → 42% | 1群あたりの必要人数577人 |
| 好意 | 非露出群 → 露出群の想定29% → 33% | 1群あたりの必要人数2,097人 |
| 購入意向 | 非露出群 → 露出群の想定17% → 21% | 1群あたりの必要人数1,507人 |
認知は600人弱で足りますが、好意と購入意向の4ポイント差を検出するには1,500〜2,100人が要ります。購入意向までを主目的にするなら、人数の予算は認知より厚く取る必要があります。計算の前提を明記させる手順は、Claudeでサンプルサイズと検出力を計算するにまとめています。
Excelで進めるなら、どこまでClaudeに任せるか
回答がExcelのブックにあるなら、Claude for Excelが使えます。対象はPro、Max、Team、Enterpriseのプランです。ソート、フィルター、ピボットテーブルの編集、条件付き書式といった操作は、直接頼めます。
- 向く作業: 群×年齢層のクロス集計をピボットテーブルで作る、回答の外れ(1〜5以外の値)に印をつける
- 線引きが要る作業: 検定の結果。監査に耐えるべき計算を検証なしで任せることは、推奨されていません
- 使えない機能: データテーブルとマクロ(VBA)は未対応です
外部から受け取ったファイルには、隠れた指示が入っている可能性があります。調査会社から納品されたブックを開くときは、信頼できるコピーで作業し、Claudeが提案する変更の確認画面を読んでから許可します。
検定は、コード実行の環境かスクリプトで走らせ、Excelには集計表だけを置く分担が扱いやすい構成です。価格感度の分析でも同じ分担になります。Claudeで価格感度分析(PSM)のアンケートを集計する手順に、Excel側の出番と限界をまとめています。
差を誤読する4つの落とし穴
リフトの読み違いが起きる場所
群の属性がそろっていない
露出群に若年層が多ければ、認知の差は年齢の差を含みます。属性の構成比を出し、ずれが大きければ層ごとに分けて見るか、重みづけを人が判断します。
複数の指標を別々に検定する
指標を3つ検定すれば、偶然に有意になる確率が上がります。Holmなどの補正後のp値を併記します。
相対リフトだけを報告する
「+23.5%」は、元の割合が小さいほど大きく出ます。ポイント差と信頼区間を主に、相対値は補足に置きます。
広告を見た記憶で群を分ける
「見たか」を聞いて分けると、ブランドを知っている人ほど見たと答えます。配信ログに基づく分け方を優先します。
購入意向の理由を自由記述で聞いたとき
購入意向の理由を自由記述で聞いた場合は、数値の検定と別に、分類してから件数を数えます。自由記述の分類手順は、Claudeでアンケートを集計・分析する手順(研修後アンケート編)の流れがそのまま使えます。分類の件数も、群ごとに割合で比べると、数値設問と同じ形でリフトが出せます。
まとめ
ブランドリフトの集計は、設問を認知・好意・購入意向の順で固定し、群ごとの割合の差をポイントと信頼区間で出す作業です。Claudeには、設問票の案、CSVの列設計、コードを実行しての検定、結果の文章化を任せられます。群の割付と、有意でない差を成果と書かない判断は人の側に残ります。
今回の例では、認知は+8.0ポイントで有意、好意と購入意向は+4.0ポイントでも有意になりませんでした。購入意向の差を検出するには1群1,500人ほどが必要で、600人の調査設計は認知向けです。調査を回す前に主目的の指標を決め、その指標の人数から逆算するところまでが、設計の仕事です。