Hypotestester och z-värden

Hypotestestning i Python

James Chapman

Curriculum Manager, DataCamp

A/B-testning

  • 2013 lanserade Electronic Arts (EA) SimCity 5
  • De ville öka förhandsbeställningarna av spelet
  • De använde A/B-testning för att testa olika reklamscenarier
  • Det innebar att dela upp användare i kontroll- och behandlingsgrupper

Electronic Arts-byggnad

1 Bildkälla: "Electronic Arts" av majaX1 CC BY-NC-SA 2.0
Hypotestestning i Python

A/B-test av butikssida

Kontroll:

SimCity-webbsida med banner som säger "förhandsbeställ och få 20 dollar rabatt på nästa köp"

Behandling:

SimCity-webbsida utan banner

Hypotestestning i Python

A/B-testresultat

  • Behandlingsgruppen (utan annons) hade 43,4 % fler köp än kontrollgruppen (med annons)
  • Intuitionen att "en annons ökar försäljningen" visade sig vara felaktig
  • Var resultatet statistiskt signifikant eller enbart slumpmässigt?
  • EA:s data behövs för att avgöra det
  • Tekniker från Sampling in Python och den här kursen används för det
Hypotestestning i Python

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]
Hypotestestning i Python

Hypotes om medelvärdet

En hypotes:

Medelvärdet för den årliga ersättningen i populationen av datavetare är 110 000 dollar

Punktskattnig (stickprovsstatistika):

mean_comp_samp = stack_overflow['converted_comp'].mean()
119574.71738168952
Hypotestestning i Python

Generera en bootstrapfördelning

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 Bootstrapfördelningar behandlas i kapitel 4 i Sampling in Python
Hypotestestning i Python

Visualisera bootstrapfördelningen

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

Histogram över bootstrapfördelningen – klockformad och sträcker sig ungefär från 110 000 till 140 000

Hypotestestning i Python

Standardfel

std_error = np.std(so_boot_distn, ddof=1)
5607.997577378606
Hypotestestning i Python

z-värden

$\text{standardiserat värde} = \dfrac{\text{värde} - \text{medelvärde}}{\text{standardavvikelse}}$

$z = \dfrac{\text{stickprovsstat.} - \text{hyp. param. värde}}{\text{standardfel}}$

Hypotestestning i Python

$z = \dfrac{\text{stickprovsstat.} - \text{hyp. param. värde}}{\text{standardfel}}$

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
Hypotestestning i Python

Testa hypotesen

  • Är 1,707 ett högt eller lågt tal?
  • Det är målet med kursen!
Hypotestestning i Python

Testa hypotesen

  • Är 1,707 ett högt eller lågt tal?
  • Det är målet med kursen!

 

Användningsområde för hypotestestning:

 

Avgöra om stickprovsstatistikor ligger nära eller långt från förväntade (eller "hypotetiserade") värden

Hypotestestning i Python

Standardnormal (z)-fördelning

Standardnormalfördelning: normalfördelning med medelvärde = 0 + standardavvikelse = 1

Täthetskurva för PDF för standardnormalfördelningen

Hypotestestning i Python

Nu kör vi en övning!

Hypotestestning i Python

Preparing Video For Download...