ゆめさくです。前回は広告の LP を軽くした話を書きました。今回はその LP の成績を数えていて、危うく間違った結論を出しかけた話です。
この記事に出てくる人数や率は、説明のための架空の例です。実際の広告の費用や申込みの数は書きません。
広告の画面では、A がずっと良く見えた
広告から来た人が最初に見るページを2つ作って比べていました。A と B とします。広告の行き先は A の URL で、A に来た人の半分を、乱数で B へ転送 (302 リダイレクト) していました。B を最初から行き先にした広告も別に出していました。
ある日、広告の管理画面を開くと、A を行き先にした広告の「ボタンが押された率」が、B の広告よりずっと高く出ていました。A の勝ちだ、B は止めよう、と言いかけました。
その数字には、B を見た人が混ざっていた
止める前に、管理画面の数字が何ごとに集まっているかを確かめました。答えは「広告の行き先 URL ごと」です。
A を行き先にした広告から来た人の半分は、転送されて B を見ています。なのに数字は全部「A の広告の成績」に入る。しかも、ボタンを押した数には B を見た人も入っているのに、ページを見た数のほうは A を見た人の数に近く見えました。分子と分母で、数えている人がずれていたようです。
管理画面の「A と B の差」の大半は、ページの差ではなく数え方の差でした。
実際に見たページごとに数え直した
LP は、訪問とボタンの押下を自前のサーバーにも記録しています。転送のときに URL のクエリを引き継いでいたので、B の記録を見れば「A から転送されてきた人」と「B の広告から直接来た人」を分けられます。
数え直した表は、こういう形になります (数字は架空)。
| 見たページ | どう来たか | 人 | 押した人 | 率 |
|---|---|---|---|---|
| A | A の広告からそのまま | 200 | 30 | 15% |
| B | A の広告から転送 | 200 | 20 | 10% |
| B | B の広告から直接 | 500 | 50 | 10% |
ページの比較に使うのは上の2行です。同じ広告から来た人が乱数で分かれているので、広告の違いが混ざりません。
実際のデータでも、同じ広告から分かれた人どうしで比べると A が数ポイント上でした。B の率は、転送されてきた人と直接来た人でほぼ同じでした。
実はこの表を作る前にも、1つ早とちりをしています。転送の割合を確かめようと、手元で A の URL を6回開いたら4回 B に飛ばされたので、「3分の2が B に行っている」と言いかけました。転送のコードを読むと、乱数で 256分の128、つまりちょうど半々です。アクセスの記録を数千件数えても、半分弱でした。6回で割合を言うのは、このあと書く検定の話とまったく同じ間違いです。
差は、まだ偶然で出る範囲だった
じゃあ A の勝ちでいいのか。ここでフィッシャーの正確確率検定を使いました。「本当は差がないとしたら、この程度以上の差が偶然出る確率」を出してくれるもので、件数が少なくても使えます。
Python
from scipy.stats import fisher_exact
_, p = fisher_exact([[30, 170], [20, 180]])
print(round(p, 2)) # 0.17架空の例の 200人中30人と 200人中20人だと、p は約 0.17 です。差がなくても6回に1回くらいは出る差、ということです。同じ5ポイント差でも 1000人ずつなら p は約 0.001 になります。
実際の差も、p が 0.1 を超えていました。A が良さそうではあるけれど、今の人数では言い切れない。これが正直なところです。
どれだけ集まれば言えるかも見積もりました。15% と 10% の差を、普通の基準 (有意水準 5%、検出力 80%) で見つけるには、1ページあたり約 690人要ります。差が 15% と 12% なら約 2,000人です。1日に数十人しか来ないページだと、数週間かかります。
もう1つ引っかかったのが人数です。乱数でちょうど半々に分けているのに、B を見た人のほうが目立って多かった。転送の往復のあいだに帰った人の記録が届いていないのかもしれません。片方だけ記録が落ちているなら、率の比較そのものがゆがみます。なので勝ち負けを決める前に、まずこの偏りの理由を調べることにしました。
数え直しのついでに、各 LP の最初の画面に目的のボタンがあるかも機械で見ました。353px の位置にある LP もあれば、8,139px 下まで出てこない LP もありました。数字が悪いページを直すなら、まずそこからです。広告の見出しと LP の一番大きな見出しも並べてみました。広告で「30日間無料」と言っているなら、LP の見出しもその話から始まっていないと、来た人は「思っていたページと違う」と感じます。
広告の画面の数字は、それ自体は正しいです。ただ、何ごとに集まった数字かを確かめないまま比べると、正しい数字から間違った結論が出ます。今回の結論は「A が良さそう。でもまだ決めない」でした。
相談
個別カウンセリング
受講を決める前に、オンラインで60分、人に相談できます。無料で、希望した人だけが予約する形です。
たとえば次のような相談です。
- 自分の生活 (仕事・家庭) で学習時間を確保できるか
- どの職種を目指すのがよさそうか
- 他社と迷っている
状況を聞いたうえで、ほかのスクールのほうが合うと思えば、そう伝えます。
無料体験授業と個別カウンセリングの中身と申し込み方を読むゆめさくエンジニア研究所は、プログラミングスクール「ゆめさくエンジニア」の運営側が書いているメディアです。









