Tests d’hypothèse et scores z

Tests d'hypothèses en Python

James Chapman

Curriculum Manager, DataCamp

Test A/B

  • En 2013, Electronic Arts (EA) a sorti SimCity 5
  • Objectif : augmenter les précommandes du jeu
  • EA a utilisé des tests A/B pour comparer des scénarios publicitaires
  • On sépare les utilisateurs en groupes de contrôle et de traitement

Bâtiment Electronic Arts

1 Crédit image : « Electronic Arts » par majaX1 CC BY-NC-SA 2.0
Tests d'hypothèses en Python

Test A/B sur une page e-commerce

Contrôle :

Page SimCity avec bannière « précommandez et obtenez 20 $ de réduction sur votre prochain achat »

Traitement :

Page SimCity sans bannière

Tests d'hypothèses en Python

Résultats du test A/B

  • Le groupe traitement (sans pub) a eu 43,4 % d’achats en plus que le contrôle (avec pub)
  • L’intuition « montrer une pub augmente les ventes » était fausse
  • Ce résultat est-il statistiquement significatif ou dû au hasard ?
  • Il faut les données d’EA pour le déterminer
  • Utiliser Sampling in Python + ce cours pour le faire
Tests d'hypothèses en Python

Enquête Stack Overflow 2020

import pandas as pd
print(stack_overflow)
      respondent  age_1st_code  ...   age  hobbyist
0           36.0          30.0  ...  34.0       Yes
1           47.0          10.0  ...  53.0       Yes
2           69.0          12.0  ...  25.0       Yes
3          125.0          30.0  ...  41.0       Yes
4          147.0          15.0  ...  28.0        No
...          ...           ...  ...   ...       ...
2259     62867.0          13.0  ...  33.0       Yes
2260     62882.0          13.0  ...  28.0       Yes

[2261 rows x 8 columns]
Tests d'hypothèses en Python

Formuler une hypothèse sur la moyenne

Une hypothèse :

La rémunération annuelle moyenne des data scientists dans la population est de 110 000 $

L’estimateur ponctuel (statistique d’échantillon) :

mean_comp_samp = stack_overflow['converted_comp'].mean()
119574.71738168952
Tests d'hypothèses en Python

Générer une distribution bootstrap

import numpy as np

# Étape 3. Répéter les étapes 1 et 2 plusieurs fois et ajouter à une liste so_boot_distn = [] for i in range(5000): so_boot_distn.append(
# Étape 2. Calculer l’estimateur ponctuel np.mean(
# Étape 1. Rééchantillonner stack_overflow.sample(frac=1, replace=True)['converted_comp']
)
)
1 Les distributions bootstrap sont abordées au chapitre 4 de Sampling in Python
Tests d'hypothèses en Python

Visualiser la distribution bootstrap

import matplotlib.pyplot as plt
plt.hist(so_boot_distn, bins=50)
plt.show()

Histogramme de la distribution bootstrap : en cloche, environ de 110000 à 140000

Tests d'hypothèses en Python

Erreur standard

std_error = np.std(so_boot_distn, ddof=1)
5607.997577378606
Tests d'hypothèses en Python

Scores z

$\text{valeur standardisée} = \dfrac{\text{valeur} - \text{moyenne}}{\text{écart-type}}$

$z = \dfrac{\text{stat. d’échantillon} - \text{valeur param. hypoth.}}{\text{erreur standard}}$

Tests d'hypothèses en Python

$z = \dfrac{\text{stat. d’échantillon} - \text{valeur param. hypoth.}}{\text{erreur standard}}$

stack_overflow['converted_comp'].mean()
119574.71738168952
mean_comp_hyp = 110000
std_error
5607.997577378606
z_score = (mean_comp_samp - mean_comp_hyp) / std_error
1.7073326529796957
Tests d'hypothèses en Python

Tester l’hypothèse

  • 1,707 est-il élevé ou faible ?
  • C’est l’objectif du cours !
Tests d'hypothèses en Python

Tester l’hypothèse

  • 1,707 est-il élevé ou faible ?
  • C’est l’objectif du cours !

 

Cas d’usage du test d’hypothèse :

 

Déterminer si les statistiques d’échantillon sont proches ou éloignées des valeurs attendues (ou « hypothétiques »)

Tests d'hypothèses en Python

Loi normale (z) standard

Distribution normale standard : normale avec moyenne = 0 et écart-type = 1

Courbe de densité de la loi normale standard

Tests d'hypothèses en Python

Passons à la pratique !

Tests d'hypothèses en Python

Preparing Video For Download...