p-Werte

Hypothesentests in Python

James Chapman

Curriculum Manager, DataCamp

Strafprozesse

  • Zwei mögliche wahre Zustände:
    1. Angeklagte/r hat die Tat begangen
    2. Angeklagte/r hat die Tat nicht begangen
  • Zwei mögliche Urteile:
    1. Schuldig
    2. Nicht schuldig
  • Zu Beginn gilt die Unschuldsvermutung
  • Die Anklage muss „ohne vernünftigen Zweifel“ Beweise für ein Schuldspruch liefern
Hypothesentests in Python

Alter beim ersten Programmieren

  • age_first_code_cut klassifiziert, wann Stack-Overflow-Nutzende mit dem Programmieren begonnen haben
    • "adult" heißt Start mit 14 oder älter
    • "child" heißt Start vor 14
  • Frühere Forschung: 35 % der Softwareentwickler/innen starteten als Kinder
  • Gibt es Evidenz, dass bei Data Scientists der Anteil höher ist?
Hypothesentests in Python

Definitionen

Eine Hypothese ist eine Aussage über einen unbekannten Populationsparameter

Ein Hypothesentest prüft zwei konkurrierende Hypothesen

  • Die Nullhypothese ($H_{0}$) ist die bestehende Annahme

  • Die Alternativhypothese ($H_{A}$) ist die neue, „herausfordernde“ Annahme der Forschenden

Für unser Problem:

  • $H_{0}$: Der Anteil von Data Scientists, die als Kinder mit dem Programmieren starteten, beträgt 35 %
  • $H_{A}$: Der Anteil von Data Scientists, die als Kinder mit dem Programmieren starteten, ist größer als 35 %
1 „Naught“ ist britisches Englisch für „null“. Aus historischen Gründen ist „H-naught“ die internationale Konvention für die Aussprache der Nullhypothese.
Hypothesentests in Python

Strafprozess vs. Hypothesentest

  • Entweder $H_{A}$ oder $H_{0}$ ist wahr (nicht beide)
  • Zunächst wird $H_{0}$ als wahr angenommen
  • Am Ende: „$H_{0}$ verwerfen“ oder „$H_{0}$ nicht verwerfen“
  • Ist die Evidenz aus der Stichprobe „signifikant“ für $H_{A}$, verwerfe $H_{0}$, sonst wähle $H_{0}$

Signifikanzniveau entspricht „ohne vernünftigen Zweifel“ beim Hypothesentesten

Hypothesentests in Python

Einseitige vs. zweiseitige Tests

Dichtediagramm der pdf der Standardnormalverteilung mit den linken und rechten Endbereichen in Rot hervorgehoben.

Hypothesentests prüfen, ob die Stichprobenstatistik in den Endbereichen der Nullverteilung liegt

Test Endbereich
Alternative ungleich Null zweiseitig
Alternative größer als Null rechtsseitig
Alternative kleiner als Null linksseitig

 

$H_{A}$: Der Anteil von Data Scientists, die als Kinder mit dem Programmieren starteten, ist größer als 35 %

Das ist ein rechtsseitiger Test

Hypothesentests in Python

p-Werte

p-Werte: Wahrscheinlichkeit eines Ergebnisses, angenommen die Nullhypothese ist wahr

  • Großer p-Wert, starke Unterstützung für $H_{0}$
    • Statistik liegt nicht im Endbereich der Nullverteilung
  • Kleiner p-Wert, starke Evidenz gegen $H_{0}$
    • Statistik liegt im Endbereich der Nullverteilung
  • „p“ in p-Wert → probability (Wahrscheinlichkeit)
  • „klein“ heißt „nahe Null“
Hypothesentests in Python

z-Score berechnen

prop_child_samp = (stack_overflow['age_first_code_cut'] == "child").mean()
0.39141972578505085
prop_child_hyp = 0.35
std_error = np.std(first_code_boot_distn, ddof=1)
0.010351057228878566
z_score = (prop_child_samp - prop_child_hyp) / std_error
4.001497129152506
Hypothesentests in Python

p-Wert berechnen

  • norm.cdf() ist die Normalverteilungs-CDF aus scipy.stats.
  • Linksseitiger Test → norm.cdf() verwenden.
  • Rechtsseitiger Test → 1 - norm.cdf() verwenden.

 

from scipy.stats import norm
1 - norm.cdf(z_score, loc=0, scale=1)
3.1471479512323874e-05
Hypothesentests in Python

Lass uns üben!

Hypothesentests in Python

Preparing Video For Download...