だれに向けた内容か
・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つのコードブロックをコピペして実行してみてください。
↓こんなグラフが表示されると思います。
今回はグラフの表示までです。
次回は勝率の考え方と計算方法について書きます。
