„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > tea-tasting: ein Python-Paket zur statistischen Analyse von A/B-Tests

tea-tasting: ein Python-Paket zur statistischen Analyse von A/B-Tests

Veröffentlicht am 08.11.2024
Durchsuche:257

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

Einführung

Ich habe tea-tasting entwickelt, ein Python-Paket für die statistische Analyse von A/B-Tests mit:

  • Student-T-Test, Bootstrap, Varianzreduktion mit CUPED, Leistungsanalyse und andere sofort einsatzbereite statistische Methoden und Ansätze.
  • Unterstützung für eine Vielzahl von Daten-Backends, wie BigQuery, ClickHouse, PostgreSQL/GreenPlum, Snowflake, Spark, Pandas und 20 weitere von Ibis unterstützte Backends.
  • Erweiterbare API: Definieren Sie benutzerdefinierte Metriken und verwenden Sie statistische Tests Ihrer Wahl.
  • Bequeme API zur Reduzierung manueller Arbeit und ein Framework zur Minimierung von Fehlern.
  • Detaillierte Dokumentation.

In diesem Blogbeitrag erkunde ich jeden dieser Vorteile der Verwendung von Teeverkostungen bei der Analyse von Experimenten.

Wenn Sie es unbedingt ausprobieren möchten, schauen Sie sich die Dokumentation an.

Statistische Methoden

Teeverkostung umfasst statistische Methoden und Techniken, die den Großteil dessen abdecken, was Sie für die Analyse von Experimenten benötigen.

Analysieren Sie metrische Durchschnittswerte und Proportionen mit dem Student-T-Test und dem Z-Test. Oder verwenden Sie Bootstrap, um eine beliebige andere Statistik Ihrer Wahl zu analysieren. Und es gibt eine vordefinierte Methode für die Analyse von Quantilen mithilfe von Bootstrap. tea-tasting erkennt auch Abweichungen in den Stichprobenverhältnissen verschiedener Varianten eines A/B-Tests.

tea-tasting wendet die Delta-Methode zur Analyse von Durchschnittsverhältnissen an. Beispiel: durchschnittliche Anzahl von Bestellungen pro durchschnittliche Anzahl von Sitzungen, vorausgesetzt, dass es sich bei dieser Sitzung nicht um eine Randomisierungseinheit handelt.

Verwenden Sie Daten vor dem Experiment, metrische Prognosen oder andere Kovariaten, um die Varianz zu reduzieren und die Sensitivität eines Experiments zu erhöhen. Dieser Ansatz wird auch als CUPED oder CUPAC bezeichnet.

Die Berechnung von Konfidenzintervallen für die prozentuale Änderung im Student-T-Test und Z-Test kann schwierig sein. Wenn man einfach das Konfidenzintervall für die absolute Änderung nimmt und es durch den Kontrolldurchschnitt dividiert, erhält man ein verzerrtes Ergebnis. tea-tasting wendet die Delta-Methode an, um das richtige Intervall zu berechnen.

Analysieren Sie die statistische Aussagekraft für den Student-T-Test und den Z-Test. Es gibt drei mögliche Optionen:

  • Berechnen Sie die Effektgröße anhand der statistischen Aussagekraft und der Gesamtzahl der Beobachtungen.
  • Berechnen Sie die Gesamtzahl der Beobachtungen unter Berücksichtigung der statistischen Aussagekraft und der Effektgröße.
  • Berechnen Sie die statistische Aussagekraft anhand der Effektgröße und der Gesamtzahl der Beobachtungen.

Weitere Informationen finden Sie im ausführlichen Benutzerhandbuch.

Die Roadmap umfasst:

  • Testen mehrerer Hypothesen:
    • Familienbezogene Fehlerrate: Holm-Bonferroni-Methode.
    • Falsche Entdeckungsrate: Benjamini-Hochberg-Verfahren.
  • A/A-Tests und Simulationen zur Analyse der Leistungsfähigkeit jedes statistischen Tests.
  • Weitere statistische Tests:
    • Asymptotische und exakte Tests für Häufigkeitsdaten.
    • Mann-Whitney-U-Test.
  • Sequentielles Testen: Immer gültiger p-Wert mit mSPRT.

Sie können eine benutzerdefinierte Metrik mit einem statistischen Test Ihrer Wahl definieren.

Daten-Backends

Es gibt viele verschiedene Datenbanken und Engines zum Speichern und Verarbeiten experimenteller Daten. Und in den meisten Fällen ist es nicht effizient, die detaillierten experimentellen Daten in eine Python-Umgebung zu übertragen. Viele statistische Tests, wie der Student-T-Test oder der Z-Test, erfordern für die Analyse nur aggregierte Daten.

Wenn beispielsweise die rohen experimentellen Daten in ClickHouse gespeichert werden, ist es schneller und effizienter, Zählungen, Durchschnittswerte, Varianzen und Kovarianzen direkt in ClickHouse zu berechnen, anstatt granulare Daten abzurufen und Aggregationen in einer Python-Umgebung durchzuführen.

Das manuelle Abfragen aller erforderlichen Statistiken kann eine entmutigende und fehleranfällige Aufgabe sein. Beispielsweise erfordert die Analyse von Verhältnismetriken und Varianzreduktion mit CUPED nicht nur die Anzahl der Zeilen und die Varianz, sondern auch Kovarianzen. Aber keine Sorge – Teeverkostung nimmt die ganze Arbeit für Sie ab.

tea-tasting akzeptiert Daten entweder als Pandas DataFrame oder als Ibis Table. Ibis ist ein Python-Paket, das als DataFrame-API für verschiedene Daten-Backends dient. Es unterstützt 20 Backends, darunter BigQuery, ClickHouse, PostgreSQL/GreenPlum, Snowflake und Spark. Sie können eine SQL-Abfrage schreiben, sie als Ibis-Tabelle einpacken und an tea-tasting übergeben.

Denken Sie daran, dass eine Teeverkostung Folgendes voraussetzt:

  • Daten werden nach Randomisierungseinheiten gruppiert, beispielsweise nach einzelnen Benutzern.
  • Es gibt eine Spalte, die die Variante des A/B-Tests angibt (normalerweise mit A, B usw. gekennzeichnet).
  • Alle notwendigen Spalten für Metrikberechnungen (wie Anzahl der Bestellungen, Umsatz usw.) sind in der Tabelle enthalten.

Einige statistische Methoden wie Bootstrap erfordern granulare Daten für die Analyse. In diesem Fall ruft tea-tasting auch die detaillierten Daten ab.

Erfahren Sie mehr im Leitfaden zu Daten-Backends.

Bequeme API

Sie können alle oben aufgeführten Aufgaben nur mit NumPy, SciPy und Ibis ausführen. Tatsächlich verwendet tea-tasting diese Pakete unter der Haube. Was tea-tasting darüber hinaus bietet, ist eine praktische API auf höherer Ebene.

Es ist einfacher zu zeigen als zu beschreiben. Hier ist das grundlegende Beispiel:

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

Der zweistufige Ansatz mit getrennter Parametrisierung und Inferenz ist in der statistischen Modellierung üblich. Diese Trennung trägt dazu bei, den Code modularer und verständlicher zu machen.

tea-tasting führt Berechnungen durch, die knifflig und fehleranfällig sein können:

  • Analyse von Verhältnismetriken mit der Delta-Methode.
  • Varianzreduzierung mit CUPED/CUPAC (auch in Kombination mit der Delta-Methode für Verhältnismetriken).
  • Berechnung von Konfidenzintervallen für absolute und prozentuale Änderungen.
  • Analyse der statistischen Aussagekraft.

Es bietet auch einen Rahmen für die Darstellung experimenteller Daten, um Fehler zu vermeiden. Für eine korrekte Analyse ist es wichtig, die Daten nach Randomisierungseinheiten zu gruppieren und alle Einheiten in den Datensatz einzubeziehen.

Darüber hinaus bietet tea-tasting einige praktische Methoden und Funktionen, wie z. B. eine hübsche Formatierung des Ergebnisses und einen Kontextmanager für metrische Parameter.

Dokumentation

Zu guter Letzt: Dokumentation. Ich glaube, dass eine gute Dokumentation für die Werkzeugeinführung von entscheidender Bedeutung ist. Aus diesem Grund habe ich mehrere Benutzerhandbücher und eine API-Referenz geschrieben.

Ich empfehle, mit dem Beispiel der grundlegenden Verwendung im Benutzerhandbuch zu beginnen. Anschließend können Sie im selben Leitfaden spezifische Themen wie Varianzreduktion oder Leistungsanalyse untersuchen.

Lesen Sie den Leitfaden zu Daten-Backends, um zu erfahren, wie Sie ein Daten-Backend Ihrer Wahl mit Teeverkostung verwenden.

Lesen Sie den Leitfaden zu benutzerdefinierten Metriken, wenn Sie einen statistischen Test durchführen möchten, der nicht in der Teeverkostung enthalten ist.

Verwenden Sie die API-Referenz, um alle Parameter und detaillierten Informationen zu den Funktionen, Klassen und Methoden zu erkunden, die in tea-tasting verfügbar sind.

Schlussfolgerungen

Es gibt eine Vielzahl statistischer Methoden, die bei der Analyse eines Experiments angewendet werden können. Aber nur eine Handvoll davon werden in den meisten Fällen tatsächlich verwendet.

Andererseits gibt es Methoden speziell für die Analyse von A/B-Tests, die nicht in den Allzweck-Statistikpaketen wie SciPy enthalten sind.

Die

Funktionalität zur Teeverkostung umfasst die wichtigsten statistischen Tests sowie Methoden speziell für die Analyse von A/B-Tests.

tea-tasting bietet eine praktische API, die dabei hilft, den Zeitaufwand für die Analyse zu reduzieren und die Fehlerwahrscheinlichkeit zu minimieren.

Darüber hinaus optimiert tea-tasting die Recheneffizienz durch die Berechnung der Statistiken im Daten-Backend Ihrer Wahl, wo die Daten gespeichert werden.

Mit der ausführlichen Dokumentation können Sie schnell lernen, wie Sie Teeverkostung für die Analyse Ihrer Experimente nutzen können.

P.S. Paketname

Der Paketname „Teeverkostung“ ist ein Wortspiel, das sich auf zwei Themen bezieht:

  • „Lady Tasting Tea“ ist ein berühmtes Experiment, das von Ronald Fisher erfunden wurde. In diesem Experiment entwickelte Fisher den Nullhypothese-Signifikanztestrahmen, um die Behauptung einer Dame zu analysieren, sie könne erkennen, ob der Tee oder die Milch zuerst in die Tasse gegeben wurde.
  • „Teeverkostung“ ähnelt phonetisch dem „T-Test“ oder dem Student-T-Test, einem von William Gosset entwickelten statistischen Test.
Freigabeerklärung Dieser Artikel ist reproduziert unter: https://dev.to/e10v/tea-tasting-a-python-package-for-statistical-analysisof-ab-tests-4fnj?1 Wenn es zu Verstößen gibt, bitte Wenden Sie sich an study_golang@163 .com löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3