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

WBOY
Release: 2024-08-12 22:35:32
Original
785 people have browsed it

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

Intro

I developedtea-tasting, a Python package for the statistical analysis of A/B tests featuring:

  • Student's t-test, Bootstrap, variance reduction with CUPED, power analysis, and other statistical methods and approaches out of the box.
  • Support for a wide range of data backends, such as BigQuery, ClickHouse, PostgreSQL/GreenPlum, Snowflake, Spark, Pandas, and 20+ other backends supported by Ibis.
  • Extensible API: define custom metrics and use statistical tests of your choice.
  • Convenient API for reducing manual work, and a framework for minimizing errors.
  • Detailed documentation.

In this blog post, I explore each of these advantages of usingtea-tastingin the analysis of experiments.

If you are eager to try it, check the documentation.

Statistical methods

tea-tastingincludes statistical methods and techniques that cover most of what you might need in the analysis of experiments.

Analyze metric averages and proportions with the Student's t-test and the Z-test. Or use Bootstrap to analyze any other statistic of your choice. And there is a predefined method for the analysis of quantiles using Bootstrap.tea-tastingalso detects mismatches in the sample ratios of different variants of an A/B test.

tea-tastingapplies delta method for the analysis of ratios of averages. For example, average number of orders per average number of sessions, assuming that session is not a randomization unit.

Use pre-experiment data, metric forecasts, or other covariates to reduce variance and increase the sensitivity of an experiment. This approach is also known as CUPED or CUPAC.

The calculation of confidence intervals forpercentagechange in Student's t-test and Z-test can be tricky. Just taking confidence interval forabsolutechange and dividing it by control average will produce a biased result.tea-tastingapplies delta method to calculate the correct interval.

Analyze statistical power for Student's t-test and Z-test. There are three possible options:

  • Calculate the effect size, given statistical power and the total number of observations.
  • Calculate the total number of observations, given statistical power and the effect size.
  • Calculate statistical power, given the effect size and the total number of observations.

Learn more in the detailed user guide.

The roadmap includes:

  • Multiple hypotheses testing:
    • Family-wise error rate: Holm–Bonferroni method.
    • False discovery rate: Benjamini–Hochberg procedure.
  • A/A tests and simulations to analyze power of any statistical test.
  • More statistical tests:
    • Asymptotic and exact tests for frequency data.
    • Mann–Whitney U test.
  • Sequential testing: always valid p-value with mSPRT.

You can define a custom metric with a statistical test of your choice.

Data backends

There are many different databases and engines for storing and processing experimental data. And in most cases it's not efficient to pull the detailed experimental data into a Python environment. Many statistical tests, such as the Student's t-test or the Z-test, require only aggregated data for analysis.

For example, if the raw experimental data are stored in ClickHouse, it's faster and more efficient to calculate counts, averages, variances, and covariances directly in ClickHouse rather than fetching granular data and performing aggregations in a Python environment.

Querying all the required statistics manually can be a daunting and error-prone task. For example, analysis of ratio metrics and variance reduction with CUPED require not only number of rows and variance, but also covariances. But don't worry—tea-tastingdoes all this work for you.

tea-tastingaccepts data either as a Pandas DataFrame or an Ibis Table. Ibis is a Python package which serves as a DataFrame API to various data backends. It supports 20+ backends including BigQuery, ClickHouse, PostgreSQL/GreenPlum, Snowflake, and Spark. You can write an SQL query, wrap it as an Ibis Table, and pass it totea-tasting.

Keep in mind thattea-tastingassumes that:

  • Les données sont regroupées par unités de randomisation, telles que les utilisateurs individuels.
  • Il y a une colonne indiquant la variante du test A/B (généralement étiquetée comme A, B, etc.).
  • Toutes les colonnes nécessaires aux calculs de métriques (comme le nombre de commandes, les revenus, etc.) sont incluses dans le tableau.

Certaines méthodes statistiques, comme Bootstrap, nécessitent des données granulaires pour l'analyse. Dans ce cas,tea-tastingrécupère également les données détaillées.

Apprenez-en plus dans le guide sur les backends de données.

API pratique

Vous pouvez effectuer toutes les tâches répertoriées ci-dessus en utilisant uniquement NumPy, SciPy et Ibis. En fait,tea-tastingutilise ces emballages sous le capot. Ce quetea-tastingoffre en plus, c'est une API pratique de niveau supérieur.

C'est plus facile à montrer qu'à décrire. Voici l'exemple de base :

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
Copy after login

L'approche en deux étapes, avec paramétrisation et inférence séparées, est courante dans la modélisation statistique. Cette séparation contribue à rendre le code plus modulaire et plus facile à comprendre.

tea-tastingeffectue des calculs qui peuvent être délicats et sujets aux erreurs :

  • Analyse des métriques de ratio avec la méthode delta.
  • Réduction de la variance avec CUPED/CUPAC (également en combinaison avec la méthode delta pour les mesures de ratio).
  • Calcul des intervalles de confiance pour la variation absolue et en pourcentage.
  • Analyse de la puissance statistique.

Il fournit également un cadre pour représenter les données expérimentales afin d'éviter les erreurs. Le regroupement des données par unités de randomisation et l'inclusion de toutes les unités dans l'ensemble de données sont importants pour une analyse correcte.

De plus,tea-tastingfournit des méthodes et fonctions pratiques, telles qu'un joli formatage du résultat et un gestionnaire de contexte pour les paramètres métriques.

Documentation

Dernier point mais non le moindre : la documentation. Je pense qu'une bonne documentation est cruciale pour l'adoption d'un outil. C'est pourquoi j'ai écrit plusieurs guides d'utilisation et une référence API.

Je recommande de commencer par l'exemple d'utilisation de base dans le guide de l'utilisateur. Vous pourrez ensuite explorer des sujets spécifiques, tels que la réduction de la variance ou l'analyse de puissance, dans le même guide.

Consultez le guide sur les backends de données pour apprendre à utiliser un backend de données de votre choix avectea-tasting.

Consultez le guide sur les métriques personnalisées si vous souhaitez effectuer des tests statistiques qui ne sont pas inclus dansdégustation de thé.

Utilisez la référence API pour explorer tous les paramètres et informations détaillées sur les fonctions, classes et méthodes disponibles danstea-tasting.

Conclusions

Il existe une variété de méthodes statistiques qui peuvent être appliquées dans l’analyse d’une expérience. Mais seule une poignée d’entre eux sont réellement utilisés dans la plupart des cas.

D'autre part, il existe des méthodes spécifiques à l'analyse des tests A/B qui ne sont pas incluses dans les packages statistiques à usage général comme SciPy.

La fonctionnalité

tea-tastinginclut les tests statistiques les plus importants, ainsi que des méthodes spécifiques à l'analyse des tests A/B.

tea-tastingfournit une API pratique qui permet de réduire le temps consacré à l'analyse et de minimiser la probabilité d'erreur.

De plus,tea-tastingoptimise l'efficacité des calculs en calculant les statistiques dans le backend de données de votre choix, où les données sont stockées.

Grâce à la documentation détaillée, vous pourrez rapidement apprendre à utilisertea-tastingpour l'analyse de vos expériences.

P.S. Nom du package

Le nom du package « tea-tasting » est un jeu de mots qui fait référence à deux sujets :

  • La dégustation du thé par une femme est une expérience célèbre conçue par Ronald Fisher. Dans cette expérience, Fisher a développé le cadre de test de signification de l'hypothèse nulle pour analyser l'affirmation d'une femme selon laquelle elle pouvait discerner si le thé ou le lait avait été ajouté en premier dans la tasse.
  • « tea-tasting » ressemble phonétiquement au « t-testing » ou au Student's t-test, un test statistique développé par William Gosset.

The above is the detailed content of tea-tasting: a Python package for the statistical analysis of A/B tests. For more information, please follow other related articles on the PHP Chinese website!

source:dev.to
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!