Hypothesentests und z‑Scores

Hypothesentests in Python

James Chapman

Curriculum Manager, DataCamp

A/B‑Testing

  • 2013 veröffentlichte Electronic Arts (EA) SimCity 5
  • Ziel: mehr Vorbestellungen
  • Sie nutzten A/B‑Tests für verschiedene Werbeszenarien
  • Nutzer in Kontroll‑ und Treatment‑Gruppe aufteilen

Electronic-Arts-Gebäude

1 Bildnachweis: „Electronic Arts“ von majaX1 CC BY-NC-SA 2.0
Hypothesentests in Python

A/B‑Test auf einer Retail‑Seite

Kontrollgruppe:

SimCity-Webseite mit Banner „pre-order and get $20 off your next purchase“

Treatment:

SimCity-Webseite ohne Banner

Hypothesentests in Python

A/B‑Testergebnisse

  • Die Treatment‑Gruppe (ohne Anzeige) kaufte 43,4 % öfter als die Kontrollgruppe (mit Anzeige)
  • Die Intuition „Eine Anzeige erhöht den Umsatz“ war falsch
  • War das Ergebnis statistisch signifikant oder Zufall?
  • Dafür brauchen wir EAs Daten
  • Methoden aus Sampling in Python + diesem Kurs helfen dabei
Hypothesentests in 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]
Hypothesentests in Python

Hypothesen zum Mittelwert

Eine Hypothese:

Der mittlere Jahreslohn der Population von Data Scientists beträgt 110.000 $

Punktschätzer (Stichprobenstatistik):

mean_comp_samp = stack_overflow['converted_comp'].mean()
119574.71738168952
Hypothesentests in Python

Bootstrap-Verteilung erzeugen

import numpy as np

# Schritt 3. Schritte 1 & 2 oft wiederholen und anhängen so_boot_distn = [] for i in range(5000): so_boot_distn.append(
# Schritt 2. Punktschätzer berechnen np.mean(
# Schritt 1. Neu ziehen (Resampling) stack_overflow.sample(frac=1, replace=True)['converted_comp']
)
)
1 Bootstrap-Verteilungen werden in Kapitel 4 von Sampling in Python behandelt
Hypothesentests in Python

Bootstrap-Verteilung visualisieren

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

Histogramm der Bootstrap-Verteilung – glockenförmig, etwa zwischen 110000 und 140000

Hypothesentests in Python

Standardfehler

std_error = np.std(so_boot_distn, ddof=1)
5607.997577378606
Hypothesentests in Python

z‑Scores

$\text{standardized value} = \dfrac{\text{value} - \text{mean}}{\text{standard deviation}}$

$z = \dfrac{\text{sample stat} - \text{hypoth. param. value}}{\text{standard error}}$

Hypothesentests in Python

$z = \dfrac{\text{sample stat} - \text{hypoth. param. value}}{\text{standard error}}$

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
Hypothesentests in Python

Die Hypothese testen

  • Ist 1,707 hoch oder niedrig?
  • Genau das klärt dieser Kurs!
Hypothesentests in Python

Die Hypothese testen

  • Ist 1,707 hoch oder niedrig?
  • Genau das klärt dieser Kurs!

 

Use Case für Hypothesentests:

 

Prüfen, ob Stichprobenstatistiken nahe bei oder weit weg von erwarteten (bzw. „hypothetischen“) Werten liegen

Hypothesentests in Python

Standardnormale (z)‑Verteilung

Standardnormalverteilung: Normalverteilung mit Mittelwert = 0 und Standardabweichung = 1

Dichtediagramm der PDF der Standardnormalverteilung

Hypothesentests in Python

Lass uns üben!

Hypothesentests in Python

Preparing Video For Download...