Teste de ipoteză și scoruri z

Testarea ipotezelor în Python

James Chapman

Curriculum Manager, DataCamp

Testarea A/B

  • În 2013, Electronic Arts (EA) a lansat SimCity 5
  • Au dorit creșterea pre-comenzilor pentru joc
  • Au folosit testarea A/B pentru a testa diferite scenarii publicitare
  • Aceasta presupune împărțirea utilizatorilor în grupuri de control și tratament

Clădirea Electronic Arts

1 Credit imagine: "Electronic Arts" de majaX1 CC BY-NC-SA 2.0
Testarea ipotezelor în Python

Test A/B pe pagina web de vânzări

Control:

Pagina web SimCity cu banner „pre-comandați și primiți $20 reducere la următoarea achiziție"

Tratament:

Pagina web SimCity fără banner

Testarea ipotezelor în Python

Rezultatele testului A/B

  • Grupul de tratament (fără reclamă) a înregistrat cu 43,4% mai multe achiziții decât grupul de control (cu reclamă)
  • Intuiția că „afișarea unei reclame ar crește vânzările" s-a dovedit falsă
  • A fost acest rezultat semnificativ statistic sau doar întâmplător?
  • Este nevoie de datele EA pentru a determina acest lucru
  • Tehnici din Sampling in Python + acest curs pentru a face acest lucru
Testarea ipotezelor în Python

Sondajul Stack Overflow pentru dezvoltatori 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]
Testarea ipotezelor în Python

Emiterea de ipoteze despre medie

O ipoteză:

Compensația anuală medie a populației de oameni de știință în date este $110.000

Estimarea punctuală (statistică de eșantion):

mean_comp_samp = stack_overflow['converted_comp'].mean()
119574.71738168952
Testarea ipotezelor în Python

Generarea unei distribuții bootstrap

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 Distribuțiile bootstrap sunt predate în Capitolul 4 din Sampling in Python
Testarea ipotezelor în Python

Vizualizarea distribuției bootstrap

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

Histogramă a distribuției bootstrap - formă de clopot, între aproximativ 110.000 și 140.000

Testarea ipotezelor în Python

Eroarea standard

std_error = np.std(so_boot_distn, ddof=1)
5607.997577378606
Testarea ipotezelor în Python

Scoruri z

$\text{valoare standardizată} = \dfrac{\text{valoare} - \text{medie}}{\text{abatere standard}}$

$z = \dfrac{\text{stat. eșantion} - \text{val. param. ipotezat}}{\text{eroare standard}}$

Testarea ipotezelor în Python

$z = \dfrac{\text{stat. eșantion} - \text{val. param. ipotezat}}{\text{eroare 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
Testarea ipotezelor în Python

Testarea ipotezei

  • 1,707 este un număr mare sau mic?
  • Acesta este scopul cursului!
Testarea ipotezelor în Python

Testarea ipotezei

  • 1,707 este un număr mare sau mic?
  • Acesta este scopul cursului!

 

Cazul de utilizare al testării ipotezelor:

 

Determinați dacă statisticile de eșantion sunt aproape sau departe de valorile așteptate (sau „ipotezate")

Testarea ipotezelor în Python

Distribuția normală standard (z)

Distribuția normală standard: distribuție normală cu medie = 0 + abatere standard = 1

Grafic de densitate al PDF pentru distribuția normală standard

Testarea ipotezelor în Python

Să exersăm!

Testarea ipotezelor în Python

Preparing Video For Download...