前回の記事で「シンプソンのパラドックス」の箇所がわかりにくいと指摘を受け、たしかにもっともだと思い、補足記事を書きました。
前回の記事
シンプソンのパラドックス (Simpson’s Paradox)とは
ヒトは加重平均を直感的に扱えないという話
$ a/b < A/B $
$ c/d < C/D $
のとき
$ (a+c)/(b+d) > (A+C)/(B+D) $
が数学的にありえる
例えば、
a = 20000
b = 990000
A = 230
B = 10000
print(a/b)
print(A/B)
>> 0.020202020202020204
>> 0.023
c = 5000
d = 500000
C = 6000
D = 500000
print(c/d)
print(C/D)
>> 0.01
>> 0.012
print((a+c)/(b+d))
print((A+C)/(B+D))
>> 0.016778523489932886
>> 0.012215686274509804
普通におこりうる
では、なぜこれがパラドックスとよばれるのでしょうか?具体的な例を代入するとわかりやすいです
具体例
あるとき画期的なUI変更を思いつきました。これによりクリックは激増するはずです。これをA/Bテストで確かめてみようと思います。
初週は1%のユーザにだけ新手法を適用し、エラーがおきないことを確かめてから翌週には50%のユーザに新手法を適用することにしました。
A/Bテストを初めて1週間たちました。
今までの手法では、99万人のユーザのうち、2万人がクリックしました。
新手法では、1万人のユーザのうち、230人がクリックしました。
a = 20000
b = 990000
A = 230
B = 10000
print(a/b)
print(A/B)
>> 0.01
>> 0.012
なんと、クリック率が13%も向上したではありませんか。
新手法でエラーも起きなかったので新手法の比率を50%に増やして、もう1週だけA/Bテストすることにしました。
c = 5000
d = 500000
C = 6000
D = 500000
print(c/d)
print(C/D)
>> 0.01
>> 0.012
今度はクリック率が20%も向上しました!
明らかな改善が見られたので、A/Bテストをやめて新手法を100%のユーザに適用しました。
ところが、雲の上の忙しい人は「サマった結果だけ知りたい」と初週と翌週の合計だけを見ました
print((a+c)/(b+d))
print((A+C)/(B+D))
print(((A+C)/(B+D))/((a+c)/(b+d)))
新手法では約27%もクリック率が下がってました!
** おしまい **
どの結果をみるのが正しいのか
Paurl(2009) のSure Thing Principle (確実性原則)によれば、「それぞれの部分集団において事象Eの確率を増加させるような行動Cは、その行動が部分集団の分布を変えないという条件の下で、集団全体においてもEの確率を増加させる」といった定理があります。
この場合、A/Bテストの介入は割当割合の原因ではないので「その行動が部分集団の分布を変えないという条件の下」の条件を満たします。
なので、真に介入がクリック率を向上させるのならば、前期の結果と後期の結果の両方とも向上するはずです。つまり合計を見るのではなく、それぞれでクリック率が向上していることを確認すればOKです。上の例で言えば、割合増やす前と割合増やした後の両方で改善が確認できれば問題なしです。
どうやって仮説検定をすべきか
ここからは数学的な必然性の世界とは少し離れて、「じゃあ現実どうするの?」について簡単にふれます。 (統計学もエンジニアリングもだいたいいつもそんな感じ)
パッと思いつくのは
- 加重平均をとった全体の結果に検定
- 割当割合変更前と変更後で独立な実験と解釈し、メタアナリシス
- 割当割合変更後の結果だけ検定
の3つです。
「加重平均をとった全体の結果に検定」はかなりマニアックな検定手法が求められそうです。
「割当割合変更前と変更後で独立な実験と解釈し、メタアナリシス」は正しいのですが、メタアナリシスに馴染みがない場合は、たった2例のためでメタアナリシスを導入する元気が求められます(計算自体はフィッシャーのメタアナリシスなど簡易なものもありますが、考え方の導入〜特にA/Bテストの結果といったビジネス上の意思決定の場合には〜がしんどいことが多いです。あくまで一般論です。)
となると、既存の運用を大きく変えないですし、わずかな個数のサンプルからではさほど相互的な意思決定に影響を与えないという観点から、「割当割合変更後の結果だけ検定」に落ち着くことが多くなる気がします(あくまで個人の感想です)。
例のカバ本では、第15章で実験割当割合の拡大の戦略について書かれていますが、拡大前の結果の検定方法までは明確に書いてなかったです。
まとめ
- シンプソンのパラドックスを例でわかりやすく説明した
- シンプソンのパラドックス発生時はA/Bテストの場合は部分ごとにみるべし
- じゃあどうやって検定するのよ、は唯一絶対の正解があるわけではない。やりやすいやり方で