ホームページ > バックエンド開発 > Python チュートリアル > tea-tasting: A/B テストの統計分析用の Python パッケージ

tea-tasting: A/B テストの統計分析用の Python パッケージ

WBOY
リリース: 2024-08-12 22:35:32
オリジナル
962 人が閲覧しました

tea-tasting: a Python package for the statistical analysis of A/B tests

イントロ

私は、以下の機能を備えた A/B テストの統計分析用の Python パッケージである tea-tasting を開発しました。

  • スチューデントの t 検定、ブートストラップ、CUPED による分散削減、検出力分析、その他のすぐに使える統計手法とアプローチ。
  • BigQuery、ClickHouse、PostgreSQL/GreenPlum、Snowflake、Spark、Pandas、および Ibis がサポートする 20 以上のバックエンドなど、幅広いデータ バックエンドをサポートします。
  • 拡張可能な API: カスタム指標を定義し、選択した統計テストを使用します。
  • 手作業を軽減するための便利な API と、エラーを最小限に抑えるためのフレームワーク。
  • 詳細なドキュメント。

このブログ投稿では、実験の分析に お茶の試飲 を使用する利点をそれぞれ探ります。

試してみたい場合は、ドキュメントを確認してください。

統計的手法

ティーテイスティングには、実験の分析で必要となる可能性のあるもののほとんどをカバーする統計的手法とテクニックが含まれています。

スチューデントの t 検定と Z 検定を使用して、メトリクスの平均と比率を分析します。または、ブートストラップを使用して、選択した他の統計を分析します。また、Bootstrap を使用して分位数を分析するための事前定義されたメソッドもあります。 ティーテイスティング は、A/B テストのさまざまなバリエーションのサンプル比の不一致も検出します。

tea-tasting は、平均値の比率の分析にデルタ法を適用します。たとえば、セッションがランダム化単位ではないと仮定した場合の、平均セッション数ごとの平均注文数です。

実験前のデータ、指標予測、またはその他の共変量を使用して、分散を減らし、実験の感度を高めます。このアプローチは、CUPED または CUPAC とも呼ばれます。

スチューデントの t 検定と Z 検定における パーセンテージ の変化の信頼区間の計算は難しい場合があります。 絶対変化の信頼区間を取得し、それを管理平均で割るだけでは、偏った結果が生成されます。 ティーテイスティングは、デルタ法を適用して正しい間隔を計算します。

Student の t 検定と Z 検定の統計的検出力を分析します。可能なオプションは 3 つあります:

  • 与えられた統計検出力と観測値の総数に基づいて、効果の大きさを計算します。
  • 統計検出力と効果サイズを指定して、観測値の合計数を計算します。
  • 効果の大きさと観測値の合計数を指定して、統計検出力を計算します。

詳細については、詳細なユーザーガイドをご覧ください。

ロードマップには以下が含まれます:

  • 複数の仮説テスト:
    • 家族ごとの誤り率: ホルム・ボンフェローニ法。
    • 誤検出率: Benjamini-Hochberg 手順。
  • 統計テストの検出力を分析するための A/A テストとシミュレーション。
  • その他の統計的テスト:
    • 周波数データの漸近的かつ正確な検定。
    • マン-ホイットニーの U 検定。
  • 逐次テスト: mSPRT では常に有効な p 値。

選択した統計テストを使用してカスタム指標を定義できます。

データバックエンド

実験データを保存および処理するためのさまざまなデータベースとエンジンが多数あります。また、ほとんどの場合、詳細な実験データを Python 環境に取り込むのは効率的ではありません。スチューデントの t テストや Z テストなどの多くの統計テストでは、分析のために集計されたデータのみが必要です。

たとえば、生の実験データが ClickHouse に保存されている場合、Python 環境で詳細なデータを取得して集計を実行するよりも、ClickHouse で直接個数、平均、分散、共分散を計算する方が高速かつ効率的です。

必要なすべての統計を手動でクエリすることは、困難でエラーが発生しやすい作業になる可能性があります。たとえば、CUPED を使用した比率メトリクスの分析と分散削減には、行数と分散だけでなく、共分散も必要です。でも心配しないでください。お茶の試飲 がこれらすべての作業を行ってくれます。

tea-tasting は、データを Pandas DataFrame または Ibis Table として受け入れます。 Ibis は、さまざまなデータ バックエンドへの DataFrame API として機能する Python パッケージです。 BigQuery、ClickHouse、PostgreSQL/GreenPlum、Snowflake、Spark を含む 20 以上のバックエンドをサポートします。 SQL クエリを作成し、Ibis テーブルとしてラップして、tea-tasting に渡すことができます。

ティーテイスティングでは次のことを前提としていることに留意してください。

  • データは、個々のユーザーなどのランダム化単位によってグループ化されます。
  • A/B テストのバリエーションを示す列があります (通常、A、B などのラベルが付けられます)。
  • メトリクスの計算に必要なすべての列 (注文数、収益など) がテーブルに含まれています。

ブートストラップなどの一部の統計手法では、分析に詳細なデータが必要です。この場合、tea-tasting も詳細なデータを取得します。

データ バックエンドに関するガイドで詳細をご覧ください。

便利なAPI

NumPy、SciPy、Ibis だけを使用して、上記のすべてのタスクを実行できます。実際、ティーテイスティング は内部でこれらのパッケージを使用しています。 tea-tasting が提供するのは、便利な高レベル API です。

説明するよりも見せる方が簡単です。基本的な例は次のとおりです:

import tea_tasting as tt


data = tt.make_users_data(seed=42)

experiment = tt.Experiment(
    sessions_per_user=tt.Mean("sessions"),
    orders_per_session=tt.RatioOfMeans("orders", "sessions"),
    orders_per_user=tt.Mean("orders"),
    revenue_per_user=tt.Mean("revenue"),
)

result = experiment.analyze(data)
print(result)
#>             metric control treatment rel_effect_size rel_effect_size_ci pvalue
#>  sessions_per_user    2.00      1.98          -0.66%      [-3.7%, 2.5%]  0.674
#> orders_per_session   0.266     0.289            8.8%      [-0.89%, 19%] 0.0762
#>    orders_per_user   0.530     0.573            8.0%       [-2.0%, 19%]  0.118
#>   revenue_per_user    5.24      5.73            9.3%       [-2.4%, 22%]  0.123
ログイン後にコピー

統計モデリングでは、パラメーター化と推論を個別に行う 2 段階のアプローチが一般的です。この分離により、コードがよりモジュール化され、理解しやすくなります。

tea-tasting は、トリッキーでエラーが発生しやすい計算を実行します。

  • デルタ法による比率メトリクスの分析。
  • CUPED/CUPAC による分散削減 (比率指標のデルタ法との組み合わせも)。
  • 絶対変化とパーセント変化の両方の信頼区間の計算。
  • 統計力の分析

エラーを回避するために実験データを表現するためのフレームワークも提供します。正しい分析のためには、ランダム化単位ごとにデータをグループ化し、データセットにすべての単位を含めることが重要です。

さらに、tea-tasting は、結果のきれいな書式設定やメトリック パラメーターのコンテキスト マネージャーなど、いくつかの便利なメソッドと関数を提供します。

ドキュメント

最後に重要なこと: ドキュメント。私は、ツールの導入には適切なドキュメントが不可欠であると信じています。そのため、私はいくつかのユーザー ガイドと API リファレンスを作成しました。

ユーザーガイドの基本的な使用例から始めることをお勧めします。その後、同じガイドで分散削減や検出力分析などの特定のトピックを検討できます。

お茶の試飲で選択したデータ バックエンドを使用する方法については、データ バックエンドに関するガイドを参照してください。

お茶の試飲に含まれない統計テストを実行する場合は、カスタム指標に関するガイドを参照してください。

API リファレンスを使用して、tea-tasting で使用できるすべてのパラメーターと関数、クラス、メソッドに関する詳細情報を調べます。

結論

実験の分析にはさまざまな統計手法を適用できます。しかし、ほとんどの場合、実際に使用されるのはそのうちのほんの一握りだけです。

一方で、SciPy のような汎用統計パッケージには含まれていない、A/B テストの分析に特化したメソッドもあります。

ティーテイスティング 機能には、最も重要な統計テストと、A/B テストの分析に特有のメソッドが含まれています。

tea-tasting は、分析にかかる時間を短縮し、エラーの可能性を最小限に抑えるのに役立つ便利な API を提供します。

さらに、ティーテイスティングは、データが保存されている選択したデータバックエンドで統計を計算することにより、計算効率を最適化します。

詳細なドキュメントにより、実験の分析に ティーテイスティング を使用する方法をすぐに学ぶことができます。

追伸パッケージ名

パッケージ名「tea-tasting」は、次の 2 つの主題を指す言葉遊びです。

  • レディ・テイスティング・ティーは、ロナルド・フィッシャーが考案した有名な実験です。この実験で、フィッシャーは帰無仮説有意性検定フレームワークを開発し、紅茶とミルクのどちらを先にカップに入れたかを見分けることができたという女性の主張を分析しました。
  • 「ティーテイスティング」は、ウィリアム・ゴセットによって開発された統計検定である「t 検定」またはスチューデントの t 検定に音声的に似ています。

以上がtea-tasting: A/B テストの統計分析用の Python パッケージの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート