Testy hipotez i z-score

Testowanie hipotez w Pythonie

James Chapman

Curriculum Manager, DataCamp

Testy A/B

  • W 2013 r. Electronic Arts (EA) wydało SimCity 5
  • Chcieli zwiększyć przedsprzedaż gry
  • Użyli testów A/B do sprawdzenia różnych scenariuszy reklamowych
  • Polega to na podziale użytkowników na grupę kontrolną i testową

Budynek Electronic Arts

1 Źródło zdjęcia: "Electronic Arts" by majaX1 CC BY-NC-SA 2.0
Testowanie hipotez w Pythonie

Test A/B strony sklepu

Kontrolna:

Strona SimCity z banerem "zamów w przedsprzedaży i zyskaj $20 zniżki na kolejny zakup"

Testowa:

Strona SimCity bez banera

Testowanie hipotez w Pythonie

Wyniki testu A/B

  • Grupa testowa (bez reklamy) miała 43,4% więcej zakupów niż kontrolna (z reklamą)
  • Intuicja, że "reklama zwiększy sprzedaż", okazała się błędna
  • Czy wynik był statystycznie istotny, czy to przypadek?
  • Potrzebujemy danych EA, by to ustalić
  • Pomogą w tym techniki z kursu Sampling in Python oraz tego kursu
Testowanie hipotez w Pythonie

Stack Overflow Developer Survey 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]
Testowanie hipotez w Pythonie

Hipoteza o średniej

Hipoteza:

Średnie roczne wynagrodzenie w populacji data scientistów wynosi $110 000

Estymator punktowy (statystyka próby):

mean_comp_samp = stack_overflow['converted_comp'].mean()
119574.71738168952
Testowanie hipotez w Pythonie

Generowanie rozkładu bootstrap

import numpy as np

# Krok 3. Powtórz kroki 1 i 2 wielokrotnie, dopisując do listy so_boot_distn = [] for i in range(5000): so_boot_distn.append(
# Krok 2. Oblicz estymator punktowy np.mean(
# Krok 1. Próbkuj ponownie stack_overflow.sample(frac=1, replace=True)['converted_comp']
)
)
1 Rozkłady bootstrap są omawiane w rozdziale 4 kursu Sampling in Python
Testowanie hipotez w Pythonie

Wizualizacja rozkładu bootstrap

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

Histogram rozkładu bootstrap - kształt dzwonu, mniej więcej od 110000 do 140000

Testowanie hipotez w Pythonie

Błąd standardowy

std_error = np.std(so_boot_distn, ddof=1)
5607.997577378606
Testowanie hipotez w Pythonie

z-score

$\text{wartość standaryzowana} = \dfrac{\text{wartość} - \text{średnia}}{\text{odchylenie standardowe}}$

$z = \dfrac{\text{statystyka próby} - \text{wart. hipot. param.}}{\text{błąd standardowy}}$

Testowanie hipotez w Pythonie

$z = \dfrac{\text{statystyka próby} - \text{wart. hipot. param.}}{\text{błąd standardowy}}$

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
Testowanie hipotez w Pythonie

Testowanie hipotezy

  • Czy 1,707 to dużo, czy mało?
  • O tym jest ten kurs!
Testowanie hipotez w Pythonie

Testowanie hipotezy

  • Czy 1,707 to dużo, czy mało?
  • O tym jest ten kurs!

 

Zastosowanie testowania hipotez:

 

Sprawdź, czy statystyki próby są blisko, czy daleko od oczekiwanych (lub "hipotetycznych") wartości

Testowanie hipotez w Pythonie

Standardowy rozkład normalny (z)

Standardowy rozkład normalny: rozkład normalny ze średnią = 0 + odchyleniem standardowym = 1

Wykres gęstości PDF dla standardowego rozkładu normalnego

Testowanie hipotez w Pythonie

Czas na praktykę!

Testowanie hipotez w Pythonie

Preparing Video For Download...