Testy hypotéz a z-skóre

Testování hypotéz v Pythonu

James Chapman

Curriculum Manager, DataCamp

A/B testování

  • V roce 2013 vydala společnost Electronic Arts (EA) hru SimCity 5
  • Chtěla zvýšit počet předobjednávek hry
  • Použila A/B testování k porovnání různých reklamních scénářů
  • To zahrnuje rozdělení uživatelů do kontrolní a testovací skupiny

Budova Electronic Arts

1 Autorství obrázku: „Electronic Arts“ od majaX1, licence CC BY-NC-SA 2.0
Testování hypotéz v Pythonu

A/B test webové stránky obchodu

Kontrolní:

Webová stránka SimCity s bannerem „předobjednejte si a získejte slevu 20 $ na další nákup“

Testovací:

Webová stránka SimCity bez banneru

Testování hypotéz v Pythonu

Výsledky A/B testu

  • Testovací skupina (bez reklamy) měla o 43,4 % více nákupů než kontrolní (s reklamou)
  • Domněnka, že „zobrazení reklamy zvýší prodeje“, byla nesprávná
  • Byl tento výsledek statisticky významný, nebo jen náhoda?
  • K určení jsou potřeba data EA
  • Využijeme techniky z kurzu Sampling in Python a tohoto kurzu
Testování hypotéz v Pythonu

Průzkum vývojářů 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]
Testování hypotéz v Pythonu

Hypotéza o průměru

Hypotéza:

Průměrná roční odměna populace datových vědců je 110 000 $

Bodový odhad (výběrová statistika):

mean_comp_samp = stack_overflow['converted_comp'].mean()
119574.71738168952
Testování hypotéz v Pythonu

Generování bootstrapového rozdělení

import numpy as np

# Step 3. Repeat steps 1 & 2 many times, appending to a list so_boot_distn = [] for i in range(5000): so_boot_distn.append(
# Step 2. Calculate point estimate np.mean(
# Step 1. Resample stack_overflow.sample(frac=1, replace=True)['converted_comp']
)
)
1 Bootstrapová rozdělení jsou vyučována v kapitole 4 kurzu Sampling in Python
Testování hypotéz v Pythonu

Vizualizace bootstrapového rozdělení

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

Histogram bootstrapového rozdělení – má tvar zvonu a pohybuje se zhruba mezi 110 000 a 140 000

Testování hypotéz v Pythonu

Standardní chyba

std_error = np.std(so_boot_distn, ddof=1)
5607.997577378606
Testování hypotéz v Pythonu

z-skóre

$\text{standardizovaná hodnota} = \dfrac{\text{hodnota} - \text{průměr}}{\text{směrodatná odchylka}}$

$z = \dfrac{\text{výběrová stat.} - \text{hypot. hodnota param.}}{\text{standardní chyba}}$

Testování hypotéz v Pythonu

$z = \dfrac{\text{výběrová stat.} - \text{hypot. hodnota param.}}{\text{standardní chyba}}$

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
Testování hypotéz v Pythonu

Testování hypotézy

  • Je 1,707 vysoké, nebo nízké číslo?
  • To je cílem tohoto kurzu!
Testování hypotéz v Pythonu

Testování hypotézy

  • Je 1,707 vysoké, nebo nízké číslo?
  • To je cílem tohoto kurzu!

 

Použití testování hypotéz:

 

Určit, zda jsou výběrové statistiky blízko, nebo daleko od očekávaných (či „hypotetických“) hodnot

Testování hypotéz v Pythonu

Standardní normální (z) rozdělení

Standardní normální rozdělení: normální rozdělení s průměrem = 0 a směrodatnou odchylkou = 1

Graf hustoty pravděpodobnosti standardního normálního rozdělení

Testování hypotéz v Pythonu

Pojďme cvičit!

Testování hypotéz v Pythonu

Preparing Video For Download...