3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ABテスト結果をベイズ統計で見る①

Last updated at Posted at 2019-01-13

だれに向けた内容か

・ABテスト知ってるよ。
・数学や統計は苦手。数式じゃなくて図で見たい!
かつ
・Pythonとか知らんけど、コピペとShift+Enterくらいはできるよ。
・自分で数字を動かして結果を見たい!
という人向けです。(ニッチ過ぎてゴメンナサイ)

やること

ABテストの結果として、訪問数とコンバージョン数が与えられたときに
Pythonを使ってコンバージョン率の分布をグラフ化します。(今回①ではここまで)
また、各テストパターンの勝率計算の考え方について説明します。(次回②でやる予定です)

おことわり

ベイズの理論や内容については書籍やブログなどでたくさんの方々が説明してくださっています。
ですので、この記事ではグラフの表示と、確率分布を見て、動かしてもらうことのみを目指します。

環境

Python 3.6.7
numpy 1.15.4
matplotlib 3.0.2
※手元に環境がなければGoogle Colabを使うのもよいかもしれません。

コード

確率分布を作るための関数を用意します。

from scipy.stats import beta
import numpy as np

def GetSamplesPosteriors(vs, cs):
    
    a, b = 1, 1
    ps = np.array([beta(a + c, (b + v - c)) for v, c in zip(vs, cs)])

    samples = 100000
    samples_ps = np.array([p.rvs(samples) for p in ps])

    return samples_ps

つぎに、訪問数とコンバージョン数を与えます。
(visitとconversionsの配列内の数字をいろいろ変えてみてください。)

visits = [100,100,100]
conversions = [5, 11, 15]

最後に、グラフの表示。

import matplotlib.pyplot as plt

SPs = GetSamplesPosteriors(visits, conversions)
c = ["b", "g", "r"]
for i, prob in enumerate(SPs):
    plt.hist(prob, bins=100, alpha=0.8, histtype='stepfilled', color=c[i]) 

plt.show()

上の3つのコードブロックをコピペして実行してみてください。
↓こんなグラフが表示されると思います。

ABテスト.png
縦軸が発生頻度、横軸がコンバージョン率に対応します。

今回はグラフの表示までです。
次回は勝率の考え方と計算方法について書きます。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?