UX Analytics & A/B Testing

Overview

Correlation & Anova

Demo : https://github.com/MarvinEdorh/Data-Mining/blob/main/Correlation%20%26%20Anova.py

Lorsque l'on effectue une analyse en ux analytics et que l'on souhaite savoir si des variables ont un lien les unes avec les autres, plusieurs tests statistiques peuvent permettre d'analyser cette question. Le test de corrélation est un test statistique qui permet de savoir quel est le degré de relation linéaire entre 2 variables numériques. Il calcule un coefficient de corrélation pouvant aller de -1 à 1. Plus ce coefficient est proche de 1 en valeur absolue plus il y a une forte relation de proportionnalité (positif ou négatif) entre ces 2 variables et donc cela signifie que ces variables sont liées entre elles. Plus ce coefficient est proche de 0, moins ces variables sont liées entre elles.

Également dans le cadre d'un A/B testing on peut être amené à comparer le nombre moyen de conversions sur plusieurs effectifs. Mais comment savoir si ces effectifs sont significatifs? L'analyse de variance (anova) nous permet justement de savoir si les effectifs sont suffisamment importants pour conclure à une significativité des résultats. En statistique on pose l'hypothèse nulle (H0) estimant d'une égalité entre les groupes. Si cette hypothèse est vraie alors la différence de moyenne est due à un échantillon trop faible puisque chaque effectif provient de la même distribution et en augmentant la taille de l'échantillon les moyennes devraient tendre vers une même valeur. En revanche si l'hypothèse nulle est fausse alors même en augmentant la taille de l'échantillon on ne pourrait pas faire disparaitre les différences entre les moyennes puisque les effectifs viendraient de 2 distributions distinctes. Le test calcule la probabilité (p-valeur) d'observer ces résultats sous H0 et si celle-ci est très petite (souvent inférieure au seuil de 0,05) alors on rejette H0. On se tourne alors vers l'hypothèse alternative (H1), que nos effectifs proviennent de 2 distributions significativement différentes et on conclut alors à une différence significative entre les moyennes. En revanche si la p-valeur est supérieure à 5% alors on ne peut pas rejeter H0.

Chi-2 & Logistic Regression

Demo : https://github.com/MarvinEdorh/Data-Mining/blob/main/Chi-2%20%26%20Logistic%20Regression.py

En A/B testing, lorsqu'on souhaite maintenant savoir s'il y a un lien entre 2 variables catégorielles, par exemple la mise à jour d'une page et le fait d'effectuer une conversion, on peut utiliser le test statistique du chi-2 afin d'analyser la significativité des résultats. Le test du chi-2 est un test statistique qui comme le test de corrélation permet de savoir si des variables sont liées entre elles mais cette fois pour 2 variables catégorielles. Ici la première variable sera le type de page vue (originale, A ou B) et la seconde, le fait d'effectuer une conversion (oui ou non). Comme tout test statistique, le test du chi-2 pose H0 estimant d'une égalité entre les groupes, c'est à dire ici qu'il y aurait en proportion autant de conversions effectuées parmi les personnes qui ont vu la page originale que parmi celles qui ont vu la page A et celles qui ont vu la page B, et l'hypothèse alternative H1 estimant d'une différence significative entre les groupes. Si la p-valeur calculée par le test sous H0 est inférieure à 5% alors on rejette H0 et on se tourne vers H1 pour en conclure qu'il y a bien un lien significatif entre les variables, le type de page vue et le fait d'effectuer une conversion.

Si à la suite du test du chi-2 on conclut à un lien significatif entre les 2 variables et que la variable dépendante est dichotomique (2 modalités) alors il est pertinent d'effectuer un modèle de régression logistique binomiale afin de mesurer l'impact de la variable explicative sur la variable dépendante. Ici on modélise le fait d'effectuer une conversion (variable dépendante) en fonction du type de page vue (variable explicative). Le modèle de régression logistique calcule la probabilité qu'un individu a de prendre la première modalité de la variable dépendante connaissant ses modalités de variables explicatives par rapport au profil de référence. Généralement on prend comme profil de référence les modalités des variables explicatives qui ont le plus fort effectif mais ici dans le cadre d'un A/B testing le profil de référence sera le fait d'avoir vu la page originale. On pourra ainsi mesurer de combien fait évoluer les chances d'effectuer une transaction le fait d'avoir vu la page A ou B par rapport au fait d'avoir vu la page originale.

Également si on veut aussi modéliser une variable numérique en fonction de variables catégorielles on peut utiliser le modèle linéaire généralisé qui comme la régression logistique calcule l'impact des modalités des variables explicatives sur la variable dépendante par rapport au profil de référence. On peut par exemple pour un site de e-commerce analyser le montant des transactions en fonction des versions du site et voir de combien fait évoluer ce montant le fait d'avoir vu la page A ou B par rapport au fait d'avoir vu la page originale.

Factor Analyzes & Clustering

Demo : https://github.com/MarvinEdorh/Data-Mining/blob/main/Clustering%20K-Means.py

En marketing digital il est assez important de bien connaître ses consommateurs, la façon dont ils se comportent afin de bien les segmenter et ainsi de pouvoir diriger des actions marketing ciblées. Le modèle de machine learning de clustering k-means peut justement aider à effectuer une segmentation optimale car il permet de découper une population de manière à ce que les groupes constitués soient à la fois en intra les plus homogènes possible et en extra les plus différents les un des autres. Dans un contexte e-commerce on peut par exemple segmenter les transactions afin de mieux comprendre le comportement des acheteurs sur le site. On va donc créer un jeu de données provenant des données Google Analytics requêtées dans BigQuery, indiquant pour chaque achat le device et son os, la source de traffic et de campagne de l'acheteur, son pays, les produits et catégories produits qu'il a achetés, le nombre de visites que l'acheteur a effectuées sur les produits et catégories produits achetés, et enfin le CA.

L'inconvénient du modelé K-Means est que l'on ne sait pas à priori quel est le nombre optimal de groupes (clusters) il faut choisir pour que le population soit séparée de manière à ce que les clusters constitués soient à la fois le plus homogènes possible et différents les uns des autres. On utilise pour cela la courbe d'elbow en testant une décomposition de 1 à 10 groupes.

Figure 2021-08-20 201348

Le nombre optimal de clusters qu'il faut choisir afin que la population soit découpée de la meilleure des manières est celui du point des abscisses où la courbe marque une cassure et devient linéaire. On voit ici que la meilleure des manières de segmenter nos acheteurs est de les séparer en 3 ou 4 groupes. On verra que ce qui caractérise le plus les clusters constitués est le niveau de CA par transaction. On renvoie ainsi ces résultats vers Google Cloud pour une analyse plus en détail de ce qui différencie ces différents clusters sur un outil BI : https://datastudio.google.com/s/hRcohz4T4DI.

Ce modèle peut également être utiliser de manière prédictive afin d'assigner de nouveaux individus aux goupes dejà existant : https://github.com/MarvinEdorh/Machine-Learning/blob/main/README.md

Kaplan Meier Survival

Demo : https://github.com/MarvinEdorh/Data-Mining/blob/main/Kaplan%20Meier%20Survival.py

Lorsqu'on effectue un A/B testing on peut également être amener à analyser la performance du site en termes de durée. Quelle version permet de gêner une conversion le plus rapidement ? Pour cela il peut être pertinent d'effectuer une analyse de survie de Kaplan Meier. Souvent utilisée en médecine et en finance cette analyse permet de calculer la probabilité qu'un évènement a de ne pas se produire (le décès) à un instant t. C'est la raison pour laquelle elle se nomme analyse de "survie", la fonction S(t) donne la probabilité d'être en vie à l'instant t. Pendant la durée complète de l'analyse on observe des individus pour qui après une certaine durée, soit l'évènement est intervenu (ils sont décédés) soit on a arrêté de les observer (ils sont censurés).

Dans un contexte ux, on peut symboliser le décès par le fait d'effectuer une conversion. Sur un site de e-commerce on va par exemple générer un jeu de données provenant des données Google Analytics requêtées dans BigQuery indiquant pour chaque visiteur la durée entre sa première visite et son premier achat (le décès) s'il en a effectué, et la durée entre sa première et sa dernière visite s'il n'en a pas effectué (la censure). On indique également le device sur lequel il a effectué la transaction ou sa dernière visite s'il n'en a pas effectué afin de voir quelle version du site est la plus performante.

KMF

On voit ici la survie globale, indépendamment des versions du site, qui signifie ici la probabilité de n'avoir effectué aucun achat x jours après sa première visite (99% le premier jour, 58% après 1 an (le site n'est pas très efficace)). Mais l'intérêt de l'analyse est bien de segmenter les individus afin de voir dans quelle situation la survie est la meilleure ou la moins bonne suivant le contexte de l'étude.

KMF_Device

On regarde maintenant la survie en fonction du device et on constate que la survie la moins bonne est celle de la version du site sur desktop, ce qui signifie que l'on y décède plus rapidement. Dans un contexte de santé cela serait négatif mais ici dans notre contexte e-commerce cela signifie en fait que la version du site sur desktop est la plus performante en termes de durée pour gêner une conversion. La probabilité de n'avoir effectué aucun achat 200 jours après sa première visite est de 95% sur mobile et tablet et de 75% sur desktop (plus faible mais tout de même élevé). Afin de savoir si ces résultats sont significatifs on effectue le test statistique du log rank qui pose H0 et H1, et conclut à une significativité des résultats si la p-valeur calculée sous H0 est inférieure à 5%. On peut également à l'aide du modèle de cox calculer l'impact des différents segments sur le risque absolu de décès.

KMF_2 Également si l'on souhaite maintenant non plus analyser la rapidité d'une conversion mais la durée de rétention, on ne calcule plus la durée entre la première visite et le premier achat mais avec le dernier. On voit que l'analyse de survie en termes de rétention vient corroborer la constatation de l'inefficacité du site. La probabilité qu'un individu continue d'acheter sur le site un an après sa première visite est de 48%.

KMF_Device_2

Si on analyse maintenant la survie en fonction du device, on voit que c'est la version sur tablet qui a la meilleure rétention. La probabilité qu'un individu continue d'acheter un an après sa première visite est de 95% sur tablet et de 40% sur desktop. Ce résultat peut néanmoins comporter un biais car on voit que nos fonctions de conversion de rétention sont assez similaires, cela peut en fait signifier que la plupart des individus n'ont en fait réalisé qu'une seule transaction et que ceux qui l'ont fait sur tablet l'ont fait tardivement. Pour mieux analyser la rétention il faudrait ajouter aux individus censurés ceux qui n'ont effectué qu'un seul achat.

Owner
Marvin EDORH
Marvin EDORH
PyBuster A directory busting tool for web application penetration tester, written in python

PyBuster A directory busting tool for web application penetration tester, written in python. Supports custom wordlist,recursive search. Screenshots Pr

Anukul Pandey 4 Jan 30, 2022
pywinauto is a set of python modules to automate the Microsoft Windows GUI

pywinauto is a set of python modules to automate the Microsoft Windows GUI. At its simplest it allows you to send mouse and keyboard actions to windows dialogs and controls, but it has support for mo

3.8k Jan 06, 2023
WEB PENETRATION TESTING TOOL 💥

N-WEB ADVANCE WEB PENETRATION TESTING TOOL Features 🎭 Admin Panel Finder Admin Scanner Dork Generator Advance Dork Finder Extract Links No Redirect H

56 Dec 23, 2022
Photostudio是一款能进行自动化检测网页存活并实时给网页拍照的工具,通过调用Fofa/Zoomeye/360qua/shodan等 Api快速准确查询资产并进行网页截图,从而实施进一步的信息筛查。

Photostudio-红队快速爬取网页快照工具 一、简介: 正如其名:这是一款能进行自动化检测,实时给网页拍照的工具 信息收集要求所收集到的信息要真实可靠。 当然,这个原则是信息收集工作的最基本的要求。为达到这样的要求,信息收集者就必须对收集到的信息反复核实,不断检验,力求把误差减少到最低限度。我

s7ck Team 41 Dec 11, 2022
✅ Python web automation and testing. 🚀 Fast, easy, reliable. 💠

Build fast, reliable, end-to-end tests. SeleniumBase is a Python framework for web automation, end-to-end testing, and more. Tests are run with "pytes

SeleniumBase 3k Jan 04, 2023
A toolbar overlay for debugging Flask applications

Flask Debug-toolbar This is a port of the excellent django-debug-toolbar for Flask applications. Installation Installing is simple with pip: $ pip ins

863 Dec 29, 2022
Enabling easy statistical significance testing for deep neural networks.

deep-significance: Easy and Better Significance Testing for Deep Neural Networks Contents ⁉️ Why 📥 Installation 🔖 Examples Intermezzo: Almost Stocha

Dennis Ulmer 270 Dec 20, 2022
Python version of the Playwright testing and automation library.

🎭 Playwright for Python Docs | API Playwright is a Python library to automate Chromium, Firefox and WebKit browsers with a single API. Playwright del

Microsoft 7.8k Jan 02, 2023
Coverage plugin for pytest.

Overview docs tests package This plugin produces coverage reports. Compared to just using coverage run this plugin does some extras: Subprocess suppor

pytest-dev 1.4k Dec 29, 2022
nose is nicer testing for python

On some platforms, brp-compress zips man pages without distutils knowing about it. This results in an error when building an rpm for nose. The rpm bui

1.4k Dec 12, 2022
Network automation lab using nornir, scrapli, and containerlab with Arista EOS

nornir-scrapli-eos-lab Network automation lab using nornir, scrapli, and containerlab with Arista EOS. Objectives Deploy base configs to 4xArista devi

Vireak Ouk 13 Jul 07, 2022
FauxFactory generates random data for your automated tests easily!

FauxFactory FauxFactory generates random data for your automated tests easily! There are times when you're writing tests for your application when you

Og Maciel 37 Sep 23, 2022
Ward is a modern test framework for Python with a focus on productivity and readability.

Ward is a modern test framework for Python with a focus on productivity and readability.

Darren Burns 1k Dec 31, 2022
Just for testing video streaming using pytgcalls.

tgvc-video-tests Just for testing video streaming using pytgcalls. Note: The features used in this repository is highly experimental and you might not

wrench 34 Dec 27, 2022
Python selenium script to bypass simaster.ugm.ac.id weak captcha.

Python selenium script to bypass simaster.ugm.ac.id weak "captcha".

Hafidh R K 1 Feb 01, 2022
A Simple Unit Test Matcher Library for Python 3

pychoir - Python Test Matchers for humans Super duper low cognitive overhead matching for Python developers reading or writing tests. Implemented in p

Antti Kajander 15 Sep 14, 2022
Automatic SQL injection and database takeover tool

sqlmap sqlmap is an open source penetration testing tool that automates the process of detecting and exploiting SQL injection flaws and taking over of

sqlmapproject 25.7k Jan 04, 2023
Active Directory Penetration Testing methods with simulations

AD penetration Testing Project By Ruben Enkaoua - GL4Di4T0R Based on the TCM PEH course (Heath Adams) Index 1 - Setting Up the Lab Intallation of a Wi

GL4DI4T0R 3 Aug 12, 2021
API Rest testing FastAPI + SQLAchmey + Docker

Transactions API Rest Implement and design a simple REST API Description We need to a simple API that allow us to register users' transactions and hav

TxeMac 2 Jun 30, 2022
masscan + nmap 快速端口存活检测和服务识别

masnmap masscan + nmap 快速端口存活检测和服务识别。 思路很简单,将masscan在端口探测的高速和nmap服务探测的准确性结合起来,达到一种相对比较理想的效果。 先使用masscan以较高速率对ip存活端口进行探测,再以多进程的方式,使用nmap对开放的端口进行服务探测。 安

starnightcyber 75 Dec 19, 2022