はじめに
こんにちは、19卒でGunosy Tech LabのBIチームの齊藤です。
この記事はGunosy Advent Calender 2019の4日目の記事です。昨日の記事は高橋さん(@tkhs0604)によるプロダクトマネージャーカンファレンス2019 参加レポート でした。
背景
GunosyではUI・ロジックの変更等を行う際にA/Bテストにより効果検証を行っています。
上記のブログの通り、従来の(頻度論に基づく)仮説検定ではA/Bテストを開始する前に有意水準、検出力、効果量を定めてサンプルサイズを求めなければなりません。またサンプルサイズを定めても必要なサイズを満たすのに何日かかるかも不透明であり、施策の実行→A/Bテスト→振り返り、の1サイクルに時間がかかってしまう場合があります(継続率や広告のCVRを主要メトリクスとする場合は特に)。
上記の問題点を解決するため、本記事では試しにベイズ統計によるA/Bテストの導入を検討したいと思います。
ベイズ統計
頻度論に基づく仮説検定では帰無仮説の元で調べたい母数を固定し、得られた標本がどの程度起こりうるかを論じるものでした。一方ベイズ統計では自体を確率変数とし、データを得た上でのの事後分布をベイズの定理
を用いて導出します。ここで、はを固定した時のについての確率分布(尤度)、は事前分布、は周辺尤度(に依存しないため一旦保留)となります。
例: 継続率
登録日から7日後の継続率を考えます。各ユーザーについて、7日後に再度アプリへの来訪があった場合、そうでなければとするとは
という継続率を持つベルヌーイ分布の実現値とみなすことができ、尤度は
となります。また登録人数のうちの継続人数 の確率分布はという二項分布で表すことができます。
事前分布は事後分布の計算を楽にするため共役事前分布を用います。今回は尤度がベルヌーイ分布に従うため、事前分布としてベータ分布を使用します。ベータ分布は
と表され、のとき一様分布となり、の事前分布として を利用することと同じになります。
実際に事後分布を計算してみると、
となります。
事後分布のプロット
コードは以下のブログを参考にしました
http://tdual.hatenablog.com/entry/2018/04/21/004620
A群とB群のそれぞれで事後分布の従うベータ分布をプロットし、2つの分布の重なり具合を見ます。
1日分のデータを使用しただけだと、差のある確率は0.5程度のままでした。
これを2日目、3日目・・・と続けていきます。
6日目でかなり差が出てきました。
このように事前にサンプルサイズを定めることなく、逐次的に2群の差を観察することができました。
継続率以外の指標は?
継続率以外にも、広告のコンバージョン率や記事のCTRなど比率で表せるものは上記の方法で簡単に出すことができますが、単純な記事のクリック数やインプレッション数などの指標はベルヌーイ分布とはならないため別の手法を用いる必要があります。
指標が正規分布に従うと仮定すれば共役事前分布も正規分布となり事後分布を簡単に導出できるのですが、なんでもかんでも正規分布に従うとは限らないので・・・
この辺りは現在チームのメンバーと検討中です。
おわりに
ベイズ統計を用いた仮説検定はここ数年での流行となっている(と勝手に感じている)のでより深く勉強していきたいです。。。
明日は吉岡さん(rikusouda)さんによるiOSアプリについての記事です!