[PYTHON] J'ai essayé de vérifier le résultat du test A / B avec le test du chi carré

Dans le domaine du marketing digital, PDCA de diverses mesures circule chaque jour. Dans un tel processus, il peut être difficile de vérifier avec précision l'effet des mesures simplement en comparant l'ampleur des nombres. Dans l'optique d'appliquer les connaissances statistiques à de meilleures propositions d'analyse et d'amélioration, j'ai travaillé sur une étude de cas en utilisant la méthode des tests statistiques.

Le sujet cette fois est de vérifier la présence ou l'absence de différences significatives dans les résultats des tests A / B sur un site Web (en supposant un niveau de signification de 0,05). Nous avons adopté le test du chi carré (test d'indépendance), qui est souvent utilisé pour vérifier l'efficacité des tests A / B, et nous nous sommes référés au «test d'ab audace» de kaggle pour les données. https://www.kaggle.com/samtyagi/audacity-ab-testing

Tout d'abord, importez la bibliothèque et chargez les données.

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

Capture.PNG

L'explication de chaque colonne est la suivante. horodatage: date et heure d'accès id: ID utilisateur groupe: le groupe témoin est témoin, le groupe d'essai est l'expérience action: cliquez lorsque vous cliquez dessus, voir si juste vu

Puis agrégez les données. Obtenons le nombre total pour chaque groupe.

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

Capture4.PNG

De plus, le tableau croisé dynamique regroupe le nombre de clics pour chaque groupe.

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

Capture3.PNG

Le taux de clics de chaque groupe est Groupe témoin: 932 ÷ 4264 = 0,21857410881801126 Groupe de test: 928/3924 = 0,2364937410805302 On peut voir que le taux de clic lui-même est plus élevé dans le groupe de test.

Est-il possible de dire que le groupe de test a un taux de clics nettement plus élevé? Vérifions avec le test du chi carré. Pour Python, utilisez la fonction chi2_contingency dans scipy.stats.

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

print("Valeur du chi carré:", chi2)
print("valeur p:", p)
print("Degré de liberté:", ddof)
print("Fréquence attendue:", expected)

Capture1.PNG

En regardant les résultats de sortie, la valeur p, qui est une probabilité significative, était supérieure à 0,05. Dans ce cas, l'hypothèse nulle selon laquelle "il n'y a pas de différence significative entre les deux échantillons" n'est pas rejetée. Cela signifie que le groupe de test n'a pas un taux de clics significativement plus élevé. Vous pouvez voir qu'il n'est pas possible de juger par la taille de nombres simples.

Dans certains cas, il peut ne pas être approprié de juger si une mesure est bonne ou mauvaise en se basant uniquement sur le taux de clics, mais il semble que l'analyse par une telle méthode puisse être utilisée comme un élément de jugement pour prendre des mesures plus efficaces.

Recommended Posts

J'ai essayé de vérifier le résultat du test A / B avec le test du chi carré
J'ai essayé de vérifier et d'analyser l'accélération de Python par Cython
J'ai essayé de vérifier la meilleure façon de trouver un bon partenaire de mariage
J'ai essayé de vérifier l'identification du locuteur par l'API de reconnaissance du locuteur d'Azure Cognitive Services avec Python. # 1
J'ai essayé de trouver l'itinéraire optimal du pays des rêves par recuit (quantique)
J'ai essayé de vérifier l'identification du locuteur par l'API de reconnaissance du locuteur d'Azure Cognitive Services avec Python. # 2
[Linux] J'ai essayé de vérifier la méthode de confirmation sécurisée du FQDN (CentOS7)
J'ai essayé de vectoriser les paroles de Hinatazaka 46!
Django super introduction par les débutants Python! Partie 2 J'ai essayé d'utiliser les fonctions pratiques du modèle
J'ai essayé de prédire la présence ou l'absence de neige par apprentissage automatique.
J'ai essayé de récupérer les données de l'ordinateur portable en le démarrant sur Ubuntu
J'ai essayé de passer le test G et la qualification E en m'entraînant à partir de 50
J'ai essayé de créer un modèle avec l'exemple d'Amazon SageMaker Autopilot
Je veux grep le résultat de l'exécution de strace
J'ai essayé de résumer la forme de base de GPLVM
J'ai essayé de visualiser les informations spacha de VTuber
J'ai essayé d'effacer la partie négative de Meros
J'ai essayé de classer les voix des acteurs de la voix
J'ai essayé de résumer les opérations de chaîne de Python
J'ai essayé de confirmer si l'estimation impartiale de l'écart-type était vraiment impartiale en "jetant des pièces 10 000 fois"
J'ai essayé de faire quelque chose comme un chatbot avec le modèle Seq2Seq de TensorFlow
J'ai essayé de notifier la mise à jour de "Devenir romancier" en utilisant "IFTTT" et "Devenir un romancier API"
J'ai essayé de trouver l'entropie de l'image avec python
[Courses de chevaux] J'ai essayé de quantifier la force du cheval de course
J'ai essayé d'obtenir les informations de localisation du bus Odakyu
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
Comment tester les attributs ajoutés par add_request_method de pyramid
J'ai fait une fonction pour vérifier le modèle de DCGAN
J'ai essayé de programmer le test du chi carré en Python et Java.
[TF] J'ai essayé de visualiser le résultat de l'apprentissage en utilisant Tensorboard
[Apprentissage automatique] J'ai essayé de résumer la théorie d'Adaboost
J'ai essayé de combattre le minimum local de la fonction Goldstein-Price
Django super introduction par les débutants Python! Partie 6 J'ai essayé d'implémenter la fonction de connexion
J'ai essayé de classer le nombre de décès par habitant de COVID-19 (nouveau virus corona) par pays
J'ai essayé de comparer la précision des modèles d'apprentissage automatique en utilisant kaggle comme thème.
J'ai écrit un doctest dans "J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python"
J'ai essayé de déplacer le ballon
J'ai essayé d'automatiser la construction d'un environnement pratique à l'aide de l'API SoftLayer d'IBM Cloud
J'ai essayé de prédire les ventes de logiciels de jeux avec VARISTA en me référant à l'article du Codexa
J'ai essayé d'estimer la section.
[Linux] J'ai essayé de résumer les commandes de confirmation des ressources
J'ai essayé d'obtenir une base de données sur les courses de chevaux en utilisant Pandas
J'ai essayé de créer un pointage de crédit simple avec régression logistique.
J'ai essayé d'obtenir l'index de la liste en utilisant la fonction énumérer
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
J'ai essayé de créer l'image de démarrage SD de LicheePi Nano
[Introduction à StyleGAN] J'ai joué avec "The Life of a Man" ♬
J'ai essayé de visualiser l'ensemble de données de préférence de boisson par décomposition tenseur.
J'ai essayé de créer une liste de nombres premiers avec python
J'ai essayé de créer une expression régulière de "date" en utilisant Python
Comment afficher le résultat de sortie de la commande man Linux dans un fichier
J'ai essayé d'obtenir une liste de noms AMI en utilisant Boto3
J'ai essayé d'enregistrer une station sur la plateforme IoT "Rimotte"
J'ai essayé de résumer les commandes utilisées par les ingénieurs débutants aujourd'hui
J'ai fait apprendre à RNN la vague de péché et j'ai essayé de prédire
J'ai essayé d'agrandir la taille du volume logique avec LVM