LoginSignup
7

簡易ベイジアンABテスト&アンケート分析のPyMC3版

Last updated at Posted at 2022-11-06

PyMC3版が動かなくなっていたため,以下で置き換えました.

経緯

タイトルの通り,以下の記事を基に作ったCoLabを利用したツールのPyMC3版を2つ,GitHubに上げました.手作り版はアクセス数・CV数が大きくなるとエラーになってしまう不具合があり,今回ライブラリを使用したバージョンを作り直すことにしました.

注意

  • コード複製・改変・その他諸々フリーですが,ツールから得た結果について一切責任を負いません
  • このツールはGoogleドライブ上に保存することができるので,セキュリティに注意ください!
  • ツール紹介がメインなので,技術的な説明や使用条件は省略しています
  • とは言え記載に致命的な誤りがある場合はコメントください

過去記事

ベイジアンABテストに関する記事

旧手作り版ツールの記事

新しいツール

ABテストPyMC3版

使い方は前記事とほぼ同じですが,ビジュアライズを若干改良しているので,変更部分だけ説明します.CoLabへの直接リンクではなく,CoLabのGitHubにコピーを保存を利用しています.

Open in CoLabボタンをクリックすればCoLabが起動して使用できます.
スクリーンショット 2022-11-03 16.58.28.png

今回PyMC3というライブラリを使用しているためpip install ..の実行が必要です.「▶」を押してしばらく待てばインストール完了.
スクリーンショット 2022-11-03 16.59.56.png

情報の入力は前回と同じで,同様に左上の「▶」を押します.
スクリーンショット 2022-11-03 17.01.47.png

しばらく待つと確率分布が表示されます.アクセス数とCV数から推定した分布を使用し,指定したサンプル数分の試行をシミュレートした結果を得ることができます!ライブラリを初期化しているのか,最初の実行だけ妙に時間がかかります,,,

テスト アクセス数 CV数 CV率 HDI下限値 HDI上限値
A 122 11 0.090 0.054 0.141
B 169 24 0.142 0.101 0.190

スクリーンショット 2022-11-06 8.07.02.png
HDI(Highest density interval)は誤差のようなものですが,厳密には異なります.例えばしきい値を0.9とした場合,90%の確率でこの範囲内に収まります.詳細は以下.

今回は検証を分けているため,こちらも「▶」を押して実行します.
スクリーンショット 2022-11-03 17.15.47.png

A - Bが0以上となる確率の合計から,AよりBが高くなる確率を求めることができます.

実行結果
AよりBが高い確率:90.48%
AよりBが低い確率:9.53%

スクリーンショット 2022-11-06 8.09.01.png

AよりBが高い確率,しきい値による判定,B - Aの確率分布が表示されます.AよりBが何%高くなるか,の確率分布を確認することができます.オレンジと青のグラフに若干のズレがあるようです,,,こちらは時間のあるときに修正を試みます,,,

ABテストの判定
================================
しきい値90.0%での判定: Bの勝利!
================================

しきい値を基にABテストの判定結果を表示しています.しきい値を下回る場合は優位差無しとなります.

B - A HDI下限値 HDI上限値
0.905 -0.012 0.113

スクリーンショット 2022-11-06 8.14.26.png

この図からはHDIの範囲を確認することができます.

レポート上にも注意点として記載していますが,HDIはAよりBが何%高いかという値が90%の確率でこの範囲に収まる,としたものであり,AよりBが高い確率とは異なるものです.具体的には,HDIは確率分布の右側の確率を含みませんが,AよりBが高い確率は,右側の確率を含んでいます.

アンケート分析PyMC3版

こっちは今回新たに作ったものです.アンケートやレビューなどの結果から得られたデータを分析するツールです.それぞれの確率分布とHDIを計算してくれます.

スクリーンショット 2022-11-03 17.28.28.png
値のリストvaluesには,アンケートなどから得られた結果を選択肢分入力します.複数回答が可能な場合は件数が重複するため,総数all_sizeを入力.その他はベイジアンABテストと同じパラメータです.期待値を算出したいときは,それぞれの選択肢に対する重みweightsを入力します.

実行結果

選択肢 総数 選択数 割合 HDI下限値 HDI上限値
選択1 185 25 0.135 0.096 0.178
選択2 185 45 0.243 0.191 0.293
選択3 185 31 0.168 0.122 0.212
選択4 185 78 0.422 0.358 0.476
選択5 185 6 0.032 0.0149 0.058

スクリーンショット 2022-11-06 8.29.08.png
スクリーンショット 2022-11-06 8.30.18.png

各選択肢の平均の割合とHDIの範囲を比較することができます.それぞれの選択肢でどちらがどれだけ高いか,などの細かい比較は,ベイジアンABテストを使えば実現できます.例えば選択1より選択3の比較をしたい場合,ベイジアンABテストツールでそれぞれの総数と選択数を入力します.

更に,それぞれの選択肢に対する重み(レビューの星の数,課金額など)から,期待値の確率分布を表示します.今回の実行例では,それぞれの選択肢1〜5をそのままレビューの星の数として,期待値の確率分布とHDIを算出しています.

期待値 HDI下限値 HDI上限値
2.974 2.833 3.108

スクリーンショット 2022-11-06 8.39.22.png

おわりに

以前から,意思決定の材料として確からしさが重要だと感じていて,それを定量的に確認できるツールを作りたいと考えていました.簡易的なツールで用途は限られますが,このツールをきっかけにして,新たな知識・技術を得てカスタマイズすることで,より適切な意思決定の助けになるのではないか,と思います.

また,以前であればアプリやWebサイト公開する必要がありましたが,CoLabを使えばスタンドアローンに近い実行環境を手軽に提供できます.GitHubからポチっとすれば,ユーザーのクラウド環境で,ある程度無料で実行できるのはめちゃくちゃ便利ですね.

まだまだ知識不足ですが,今後も勉強を続けながらツールを作り,公開できそうなものは公開していきます.最後まで読んで頂き,ありがとうございました!

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
7