[PYTHON] Ich habe versucht, das Ergebnis des A / B-Tests mit dem Chi-Quadrat-Test zu überprüfen

Im Bereich des digitalen Marketings wird täglich eine PDCA mit verschiedenen Maßnahmen durchgeführt. In einem solchen Prozess kann es schwierig sein, die Wirkung der Maßnahmen einfach durch Vergleichen der Größe der Zahlen genau zu überprüfen. Unter dem Gesichtspunkt, wie das Wissen über Statistiken auf bessere Analyse- und Verbesserungsvorschläge angewendet werden kann, arbeitete ich an einer Fallstudie unter Verwendung der Methode der statistischen Tests.

Dieses Mal geht es darum, das Vorhandensein oder Fehlen signifikanter Unterschiede in den Ergebnissen von A / B-Tests auf einer Website zu überprüfen (unter der Annahme eines Signifikanzniveaus von 0,05). Wir haben den Chi-Quadrat-Test (Unabhängigkeitstest) angewendet, der häufig zur Überprüfung der Wirksamkeit von A / B-Tests verwendet wird, und für die Daten auf Kaggles "Audacity Ab Testing" verwiesen. https://www.kaggle.com/samtyagi/audacity-ab-testing

Importieren Sie zunächst die Bibliothek und laden Sie die Daten.

import math
import numpy as np
import pandas as pd
import scipy.stats
df=pd.read_csv("homepage_actions.csv")
df.head()

Capture.PNG

Die Erklärung jeder Spalte ist wie folgt. Zeitstempel: Zugriff auf Datum und Uhrzeit id: Benutzer-ID Gruppe: Kontrollgruppe ist Kontrolle, Testgruppe ist Experiment Aktion: Klicken Sie, wenn Sie darauf klicken, und zeigen Sie es an, wenn es gerade gesehen wurde

Aggregieren Sie dann die Daten. Lassen Sie uns die Gesamtzahl für jede Gruppe erhalten.

group=df.groupby('group').count()
group

Capture4.PNG

Darüber hinaus aggregiert die Pivot-Tabelle die Anzahl der Klicks für jede Gruppe.

pd.pivot_table(df,index='group',columns='action',values=['group','action'],aggfunc='count')

Capture3.PNG

Die Klickrate jeder Gruppe beträgt Kontrollgruppe: 932 ÷ 4264 = 0,21857410881801126 Testgruppe: 928/3924 = 0,2364937410805302 Es ist ersichtlich, dass die Klickrate selbst in der Testgruppe höher ist.

Kann man sagen, dass die Testgruppe eine deutlich höhere Klickrate hat? Lassen Sie uns mit dem Chi-Quadrat-Test überprüfen. Verwenden Sie für Python die Funktion chi2_contingency in scipy.stats.

data=np.matrix([[932,3332],[928,2996]])
chi2,p,ddof,expected=scipy.stats.chi2_contingency(data,correction=False)

print("Chi-Quadrat-Wert:", chi2)
print("p-Wert:", p)
print("Freiheitsgrad:", ddof)
print("Erwartete Frequenz:", expected)

Capture1.PNG

Bei Betrachtung der Ausgabeergebnisse war der p-Wert, der eine signifikante Wahrscheinlichkeit darstellt, höher als 0,05. In diesem Fall wird die Nullhypothese "Es gibt keinen signifikanten Unterschied zwischen den beiden Stichproben" nicht zurückgewiesen. Dies bedeutet, dass die Testgruppe keine wesentlich höhere Klickrate aufweist. Sie können sehen, dass es nicht möglich ist, anhand der Größe einfacher Zahlen zu beurteilen.

In einigen Fällen ist es möglicherweise nicht angebracht, allein anhand der Klickrate zu beurteilen, ob eine Maßnahme gut oder schlecht ist. Es scheint jedoch, dass die Analyse mit einer solchen Methode als Bewertungsmaterial für wirksamere Maßnahmen verwendet werden kann.

Recommended Posts

Ich habe versucht, das Ergebnis des A / B-Tests mit dem Chi-Quadrat-Test zu überprüfen
Ich habe versucht, die Beschleunigung von Python durch Cython zu verifizieren und zu analysieren
Ich habe versucht, den besten Weg zu finden, um einen guten Ehepartner zu finden
Ich habe versucht, die Sprecheridentifikation mithilfe der Sprechererkennungs-API von Azure Cognitive Services mit Python zu überprüfen. # 1
Ich habe versucht, die optimale Route des Traumlandes durch (Quanten-) Tempern zu finden
Ich habe versucht, die Sprecheridentifikation mithilfe der Sprechererkennungs-API von Azure Cognitive Services in Python zu überprüfen. # 2
[Linux] Ich habe versucht, die sichere Bestätigungsmethode von FQDN (CentOS7) zu überprüfen.
Ich habe versucht, die Texte von Hinatazaka 46 zu vektorisieren!
Django super Einführung von Python-Anfängern! Teil 2 Ich habe versucht, die praktischen Funktionen der Vorlage zu nutzen
Ich habe versucht, das Vorhandensein oder Nichtvorhandensein von Schnee durch maschinelles Lernen vorherzusagen.
Ich habe versucht, die Daten des Laptops durch Booten unter Ubuntu zu retten
Ich habe versucht, den G-Test und die E-Qualifikation durch Training ab 50 zu bestehen
Ich habe versucht, ein Modell mit dem Beispiel von Amazon SageMaker Autopilot zu erstellen
Ich möchte das Ausführungsergebnis von strace erfassen
Ich habe versucht, die Grundform von GPLVM zusammenzufassen
Ich habe versucht, die Spacha-Informationen von VTuber zu visualisieren
Ich habe versucht, den negativen Teil von Meros zu löschen
Ich habe versucht, die Stimmen der Sprecher zu klassifizieren
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe versucht zu bestätigen, ob die unvoreingenommene Schätzung der Standardabweichung wirklich unvoreingenommen ist, indem ich "10.000 Mal Münzen geworfen" habe.
Ich habe versucht, mit dem Seq2Seq-Modell von TensorFlow so etwas wie einen Chatbot zu erstellen
Ich habe versucht, das Update von "Werde ein Romanautor" mit "IFTTT" und "Werde ein Romanautor API" zu benachrichtigen.
Ich habe versucht, die Entropie des Bildes mit Python zu finden
[Pferderennen] Ich habe versucht, die Stärke des Rennpferdes zu quantifizieren
Ich habe versucht, die Standortinformationen des Odakyu-Busses zu erhalten
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
So testen Sie die Attribute, die durch add_request_method of pyramid hinzugefügt wurden
Ich habe eine Funktion erstellt, um das Modell von DCGAN zu überprüfen
Ich habe versucht, den Chi-Quadrat-Test in Python und Java zu programmieren.
[TF] Ich habe versucht, das Lernergebnis mit Tensorboard zu visualisieren
[Maschinelles Lernen] Ich habe versucht, die Theorie von Adaboost zusammenzufassen
Ich habe versucht, das lokale Minimum der Goldstein-Preis-Funktion zu bekämpfen
Django super Einführung von Python-Anfängern! Teil 6 Ich habe versucht, die Login-Funktion zu implementieren
Ich habe versucht, die Anzahl der Todesfälle pro Kopf von COVID-19 (neues Koronavirus) nach Ländern zu tabellieren
Ich habe versucht, die Genauigkeit von Modellen für maschinelles Lernen mit Kaggle als Thema zu vergleichen.
Ich schrieb einen Test in "Ich habe versucht, die Wahrscheinlichkeit eines Bingospiels mit Python zu simulieren".
Ich habe versucht, den Ball zu bewegen
Ich habe versucht, die Erstellung einer praktischen Umgebung mithilfe der SoftLayer-API der IBM Cloud zu automatisieren
Ich habe versucht, den Verkauf von Spielesoftware mit VARISTA anhand des Artikels von Codexa vorherzusagen
Ich habe versucht, den Abschnitt zu schätzen.
[Linux] Ich habe versucht, die Ressourcenbestätigungsbefehle zusammenzufassen
Ich habe versucht, mit Pandas eine Pferderenn-Datenbank zu erstellen
Ich habe versucht, einen einfachen Kredit-Score mit logistischer Regression zu erstellen.
Ich habe versucht, den Index der Liste mithilfe der Aufzählungsfunktion abzurufen
Ich habe versucht, mit Python einen regulären Ausdruck für "Betrag" zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck von "Zeit" zu erstellen
Ich habe versucht, das SD-Boot-Image von LicheePi Nano zu erstellen
[Einführung in StyleGAN] Ich habe mit "The Life of a Man" ♬ gespielt
Ich habe versucht, den Getränkepräferenzdatensatz durch Tensorzerlegung zu visualisieren.
Ich habe versucht, mit Python eine Liste von Primzahlen zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck von "Datum" zu erstellen
So geben Sie das Ausgabeergebnis des Linux-Befehls man in eine Datei aus
Ich habe versucht, mit Boto3 eine Liste der AMI-Namen zu erhalten
Ich habe versucht, einen Sender auf der IoT-Plattform "Rimotte" zu registrieren.
Ich habe versucht, die Befehle zusammenzufassen, die Anfängeringenieure heute verwenden
Ich ließ RNN Sin Wave lernen und versuchte vorherzusagen
Ich habe versucht, die Größe des logischen Volumes mit LVM zu erweitern