はじめに
今回は、「新米データサイエンティストの日常」シリーズの第7弾になります。新米データサイエンティストが躓きがちなテーマについて、先輩データサイエンティストと会話しているシーンをChatGPTに生成してもらいました。
第6弾はこちら↓
登場人物
- 佐藤:新卒1年目の新米データサイエンティスト。
- 田中:入社5年目の先輩データサイエンティスト。
- 鈴木:クライアントのマーケティング担当。
【シーン1:クライアントとの最初の打ち合わせ】
(会議室にて、鈴木・佐藤が打ち合わせ中)
鈴木:「佐藤さん、今回のプロジェクトで、私たちがリリース予定の新しいECサイトのA/Bテストを行いたいんです。デザインAとデザインB、どちらがコンバージョン率が高いかを検証したいんですが……どれくらいのデータを集めれば、信頼できる結果が出せるんでしょうか?」
佐藤:「えっと……できるだけ多いほうがいいですね。」
鈴木:「うーん、それはそうだと思うんですが、具体的な数が知りたいんです。予算やスケジュールもあるので、『どのくらいのアクセス数や注文数を集める必要があるか』を教えてもらえますか?」
佐藤:「そ、そうですよね……。(どうしよう、うまく答えられない)」
鈴木:「仮に100人くらいのユーザーでテストしたら十分なんでしょうか?それとも1000人以上必要なんでしょうか?」
佐藤:「すみません、少し持ち帰って検討し、具体的なサンプルサイズを計算してご提案します!」
鈴木:「わかりました。なるべく早めにお願いします。」
(佐藤、焦りながらオフィスに戻る)
【シーン2:田中先輩との相談】
(オフィスの休憩スペースで田中に相談)
佐藤:「田中先輩、クライアントにA/Bテストで『どれくらいのデータを集めればいいのか?』って聞かれたんですが、具体的な数を答えられませんでした……。」
田中:「なるほど、A/Bテストのサンプルサイズか。クライアントはコンバージョン率の違いを知りたいんだな?」
佐藤:「はい。ECサイトのデザインAとBのどちらがコンバージョン率が高いかを比較したいそうです。」
田中:「OK。じゃあ、まず大事なのは**『どれくらいの差を検出したいか』** だ。たとえば、デザインBのコンバージョン率がデザインAより0.5%高いのか、5%高いのか、どのくらいの差があれば『効果がある』と判断するのかをクライアントに確認する必要がある。」
佐藤:「なるほど……。確かに、1%の差を検出したいのか、5%の差で十分なのかで、必要なサンプルサイズも変わりますね!」
田中:「その通り。サンプルサイズを決めるには、この式を使うといい。」
$\ n = \frac{Z^2 \cdot p(1 - p)}{E^2} $
n は必要なサンプルサイズ、Z は信頼水準(通常95%なら1.96)、p は予想コンバージョン率、E は許容誤差だ。
佐藤:「なるほど! でも、クライアントにこの数式をそのまま説明するのは難しいですよね?」
田中:「そうだな。だから、こう聞くといい。
- 現在のコンバージョン率(ベースライン)はどれくらいか?
- どのくらいの改善を検出したいか?(例:+1% or +5%)
- どれくらいの信頼度(統計的な確実性)がほしいか?
これがわかれば、必要なサンプルサイズを具体的に計算できる。」
佐藤:「ありがとうございます! じゃあ、クライアントに追加でヒアリングして、計算してみます!」
【シーン3:クライアントとの再打ち合わせ】
(再びクライアントとのオンライン会議)
佐藤:「前回のご質問について、もう少し具体的にお話ししたいと思います。」
すず:「ありがとうございます! どれくらいのデータを集めるべきか、目安が知りたくて。」
佐藤:「まず確認したいのですが、現在のコンバージョン率はどれくらいでしょうか?」
鈴木:「今のデザインAでは、大体2%くらいです。」
佐藤:「なるほど。では、どれくらいの差が出れば『デザインBのほうが良い』と判断できますか? たとえば、+0.5%(2.0%→2.5%)の改善でもOKなのか、それとも+5%(2.0%→7.0%)くらいの改善がないとダメなのか?」
鈴木:「うーん、+1%(つまり3%)くらいの改善があれば、デザインBのほうが良いと判断したいですね。」
佐藤:「承知しました。では、統計的に95%の信頼水準で、+1%の差を検出するには、片方のデザインにつき約4,000人の訪問者が必要になります。」
鈴木:「なるほど、1万件とか必要かと思っていたけど、それより少ないですね!」
佐藤:「はい。ただし、コンバージョン率の変動が大きい場合は、もう少しサンプルを増やす必要があるかもしれません。」
鈴木:「わかりました!4,000人ずつ集めて比較する方向で進めます。」
佐藤:「ありがとうございます! データ収集の途中で、コンバージョン率のばらつきを確認しながら調整するのもありなので、途中経過を見ながら最適な方法を提案しますね。」
鈴木:「助かります!よろしくお願いします。」
(打ち合わせ終了後、佐藤はほっと胸をなでおろす)
【シーン4:オフィスで田中先輩に報告】
佐藤:「田中先輩! クライアントに追加ヒアリングをして、サンプルサイズを4,000人ずつと提案しました!」
田中:「おお、いいじゃん! ちゃんとクライアントの要件を聞いて、統計的に説明できてるな。」
佐藤:「ありがとうございます! あとは、データ収集が始まったら、コンバージョン率のばらつきを確認しながら調整しようと思います。」
田中:「いいね! こうやってデータを活用して意思決定できるのが、データサイエンティストの価値だからな。」
佐藤:「はい! 次のステップも頑張ります!」
佐藤(ふと思い出す):「あ、そういえば、今回教えてもらった計算式の他に、サンプルサイズを決める方法ってありますか?」
田中:「いい質問だな。サンプルサイズを決める方法はいくつかあるぞ。」
佐藤:「例えば、どんな方法がありますか?」
田中:「今回使ったのは統計的検定の手法で、特にA/Bテストに適した2標本t検定やカイ二乗検定の考え方を使った方法だった。これは、比較対象がはっきりしていて、ある程度の変化を検出したいときに使う。」
佐藤:「なるほど。でも、例えばもっと広い範囲のデータを分析するときは違う方法を使うんですか?」
田中:「そうだな。例えば、サーベイ調査やアンケートを設計するときには、今回の計算式の代わりにコクランの公式を使うこともある。これは、母集団のサイズがわかっているときに、適切な標本サイズを決めるのに使うんだ。」
佐藤:「コクランの公式……?」
田中:「ざっくりいうと、コクランの公式は『全体の母集団が決まっていて、その中で何人にアンケートを取ればいいか』っていう計算に向いてる。A/Bテストみたいに『データが集まる限り試せる』場合とはちょっと違うんだ。」
佐藤:「たしかに、ECサイトのA/Bテストと、人口調査のアンケートでは考え方が違いますね。」
田中:「あともう一つ、最近よく使うのがベイズ統計の考え方で決める方法。特にリアルタイムで意思決定をしたいときに使うことがある。」
佐藤:「ベイズ統計ですか?」
田中:「例えば、バンディットアルゴリズムって聞いたことあるか?」
佐藤:「うっすら……機械学習で使うやつですよね?」
田中:「そう。A/Bテストだと、決まったサンプル数を集めるまで結果が確定しないけど、バンディットアルゴリズムはリアルタイムでデータを分析しながら、効果が高いほうにトラフィックを自動で寄せていく。だから、サンプルサイズの計算が不要な場合もあるんだ。」
佐藤:「へえ! そういう方法もあるんですね。」
田中:「状況に応じて使い分けるのが大事だな。A/Bテストみたいに明確な比較をしたいなら、統計的検定の方法。母集団が決まっているアンケートならコクランの公式。リアルタイムで最適化したいなら、ベイズ統計やバンディットアルゴリズム。」
佐藤:「なるほど! どういう分析をしたいかによって、サンプルサイズの決め方も変わるんですね。」
田中:「その通り。データサイエンティストは、ただ計算するんじゃなくて、クライアントの目的に合わせた手法を選ぶのが重要なんだ。」
佐藤(感動):「めちゃくちゃ勉強になりました……! ありがとうございます!」
田中:「よし、今度A/Bテストの実験が始まったら、途中のデータを見ながら柔軟に対応する方法も考えてみような。」
佐藤:「はい! 楽しみです!」