メインコンテンツまでスキップ

ABテストと仮設検定

AB Test with Hypotest

お品書き

  1. AB Testおさらい
  2. Hypothesis Testing: 仮説検定
  3. よくある仮説検定の紹介

AB Test

AB Test

  • 2デザイン間でのコンバージョン率等を比較する
  • 最も初歩的な方法は、標本平均を比較する

Conversion Rate=Number of ConversionsNumber of Visitors\text{Conversion Rate} = \frac{\text{Number of Conversions}}{\text{Number of Visitors}}

Example

  1. 2つのデザインA, Bのクリック率を比較する

    • A: 10001000 visitors, 100100 clicks
    • B: 10001000 visitors, 120120 clicks
  2. 標本平均を比較する

    • A: 0.1=10%0.1 = 10\%
    • B: 0.12=12%0.12 = 12\%
  3. よって、デザインBの方がCVRが高いと言える

Question

  • その結論は正しいか?
  • どの程度の確信度でその結論を出したのか?
  • (統計的には)上記の結論は出せない

ハイパー補足タイム

  • CVRA=CVRB\text{CVR}_A = \text{CVR}_Bとすると
pˉ=100+1201000+1000=0.11Z=XˉAXˉB(1nA+1nB)pˉ(1pˉ)=0.10.12(11000+11000)×0.11×0.891.43p=0.153\begin{align*} \bar{p} &= \frac{100 + 120}{1000 + 1000} = 0.11 \\ Z &= \frac{\bar{X}_A - \bar{X}_B}{\sqrt{(\frac{1}{n_A} + \frac{1}{n_B}) \bar{p} (1 - \bar{p})}} \\ &= \frac{0.1 - 0.12}{\sqrt{(\frac{1}{1000} + \frac{1}{1000}) \times 0.11 \times 0.89}} \\ &\approx -1.43 \rightarrow p = 0.153 \end{align*}

Hypothesis Testing

Hypothesis Testing

  • ある仮説が正しいかどうかを観測値を元に統計的に検証する方法
  • 例:あるコインが公正なコインかどうかを検証するために、コインを何回か投げて結果を観測する

How to

  1. 検証したい仮説を立てる(H1H_1)
  2. その仮説の逆を仮定する(H0H_0)
  3. その仮定のもとで、観測した結果がどの程度の確率で発生するかを計算する(pp値) ※1
  4. もしpp値がとても低い場合、H0H_0が間違っていると判断する ※2
  5. その場合、H1H_1が正しいと結論づけられる

注釈

  1. pp値は正確には「観測値またはそれより極端な値がH0H_0のもとで発生する確率」
  2. pp値がとても低い場合」とは、有意水準α\alphaよりも低い場合を指す、一般的にα=0.05\alpha=0.05または0.010.01が使われる。

Example 1

あるコインがイカサマコインであるか検証したい

  • H0H_0: このコインは公正なコインである -> 表の確率は50%
  • H1H_1: このコインはイカサマコインである -> 表の確率は50%ではない
  • 観測値: コインを2020回投げた結果、表が1515回出た

Example 2

  • H0H_0のもとで、表がxx回出る確率は以下のようになる

w:630

Example 3

  • 表が1515回以上または55回以下出る確率を計算する
  • これは「表が1515回出る確率」から「表が55回出る確率」までの確率を足し合わせることで計算できる(グラフの赤い部分)

w:470

Example 4

  • パワーで計算してもおk

P(表が15回以上または5回以下)=P(表が15回)+P(表が16回)++P(表が20回)+P(表が5回)++P(表が0回)P(\text{表が15回以上または5回以下}) = P(\text{表が15回}) + P(\text{表が16回}) + \cdots + P(\text{表が20回}) + P(\text{表が5回}) + \cdots + P(\text{表が0回}) =(2015)(12)15(12)5++(2020)(12)20+(205)(12)5(12)15++(200)(12)0(12)20= \binom{20}{15} \left(\frac{1}{2}\right)^{15} \left(\frac{1}{2}\right)^{5} + \cdots + \binom{20}{20} \left(\frac{1}{2}\right)^{20} + \binom{20}{5} \left(\frac{1}{2}\right)^{5} \left(\frac{1}{2}\right)^{15} + \cdots + \binom{20}{0} \left(\frac{1}{2}\right)^{0} \left(\frac{1}{2}\right)^{20} =0.041 = 0.041

Example 5

  • pp値が0.0410.041となった
  • 5%5\%以下と低いので仮説が間違っていると判断する
  • よってH0H_0を棄却しH1H_1が正しいする

→ このコインはイカサマコインである

ハイパー補足タイム

両側検定 vs 片側検定
  • 両側検定ではCVRが特定の値ドンピシャであるかどうかを検証する
  • 片側検定ではCVRが特定の値より高いか低いかを検証する
  • p0.5p\leq0.5 の場合は左図、p0.5p\geq0.5 の場合は右図の確率を計算する
leftright

Hypothesis Testing for AB Test

コインの裏表のように、AB Testでも仮説検定を行なうことができる

  • H0H_0: 新デザインのCVRはxx%である
  • H1H_1: 新デザインのCVRはxx%より高い
  • pp値: H0H_0のもとで観測されたクリック数またはそれ以上が観測される確率

Hypothesis Testing for AB Test + 1

デザイン間で仮説検定を行なうこともできる

  • H0H_0: デザインAとデザインBのCVRは等しい
  • H1H_1: デザインAとデザインBのCVRは異なる
  • pp値: CVRA\text{CVR}_ACVRB\text{CVR}_Bの差を計算し、その差が観測される確率(正規分布)

よくある仮説検定

よくある仮説検定

  • 二項検定 ← 今やったやつ
  • フィッシャーの正確確率検定
  • χ2\chi^2検定
  • tt検定
  • ウィルコクソンの順位和検定
  • FF検定

いくつか紹介する

二項検定

  • CVRなどの「成功」か「失敗」の2値データに対して使われる
  • 例:あるデザインのCVRが0.10.1であるかどうかを検証する

bg right contain

χ2\chi^2検定

  • 二項検定と同じ目的で使われる
  • サンプル数が十分に大きい場合に使用する、概ね 30n30\leq n

bg right contain

tt検定

  • 連続値データにも使える
  • 平均値の差を検証する
  • 例:あるデザインの平均滞在時間が1010秒であるかどうかを検証する
  • データに対応がある場合、対応のあるtt検定を使う

bg right contain

まとめ

まとめ

  • 単純な分析だと思わぬ落とし穴がある
  • 意思決定には統計的な根拠を持たせよう
  • 仮説検定はそのための有力なツール

おまけ

なぜエンジニアにこんな知識が必要なのか

  • 主観性を排除する
  • PDCAを高速に回す
  • ユーザーデータの利用に最適化したシステム、DB設計ができる
  • (詳しくは今度)設計者の知識を取り込んだ分析ができる

次回は ベイズ統計学でABテストを考える をお送りします(難しいです)