p-waarden

Hypothesetoetsen in Python

James Chapman

Curriculum Manager, DataCamp

Strafzaken

  • Twee mogelijke waarheden:
    1. Verdachte heeft het misdrijf gepleegd
    2. Verdachte heeft het misdrijf niet gepleegd
  • Twee mogelijke uitspraken:
    1. Schuldig
    2. Niet schuldig
  • Aanvankelijk geldt de verdachte als niet schuldig
  • De aanklager moet bewijs leveren "beyond reasonable doubt" voor een schuldigverklaring
Hypothesetoetsen in Python

Leeftijd van eerste programmeerervaring

  • age_first_code_cut classificeert wanneer een Stack Overflow-gebruiker startte met programmeren
    • "adult" betekent start op 14 jaar of ouder
    • "child" betekent start vóór 14 jaar
  • Eerder onderzoek: 35% van de developers begon als kind
  • Is het aandeel data scientists dat als kind begon groter?
Hypothesetoetsen in Python

Definities

Een hypothese is een uitspraak over een onbekende populatieparameter

Een hypothesetest is een test van twee concurrerende hypothesen

  • De nulhypothese ($H_{0}$) is de bestaande aanname

  • De alternatieve hypothese ($H_{A}$) is het nieuwe, uitdagende idee van de onderzoeker

Voor ons probleem:

  • $H_{0}$: Het aandeel data scientists dat als kind begon met programmeren is 35%
  • $H_{A}$: Het aandeel data scientists dat als kind begon met programmeren is groter dan 35%
1 "Naught" is Brits-Engels voor "nul". Om historische redenen is "H-naught" de internationale uitspraak voor de nulhypothese.
Hypothesetoetsen in Python

Strafzaken vs. hypothesetesten

  • Ofwel $H_{A}$ of $H_{0}$ is waar (niet beide)
  • Aanvankelijk neem je $H_{0}$ als waar aan
  • De test eindigt in "verwerp $H_{0}$" of "verwerp $H_{0}$ niet"
  • Is het steekproefbewijs "significant" voor $H_{A}$, dan verwerp $H_{0}$; anders kies $H_{0}$

Significantieniveau is de variant van "beyond a reasonable doubt" bij hypothesetesten

Hypothesetoetsen in Python

Eenzijdige en tweezijdige tests

Dichtheidsplot van de pdf van de standaardnormale verdeling met de linker- en rechterstaart rood gemarkeerd.

Hypothesetests checken of de steekproefstatistiek in de staarten van de nulverdeling ligt

Test Staarten
alternatief anders dan nul tweezijdig
alternatief groter dan nul rechtszijdig
alternatief kleiner dan nul linkszijdig

 

$H_{A}$: Het aandeel data scientists dat als kind met programmeren begon is groter dan 35%

Dit is een rechtszijdige test

Hypothesetoetsen in Python

p-waarden

p-waarden: kans op het waargenomen resultaat, uitgaande van de nulhypothese

  • Grote p-waarde: veel steun voor $H_{0}$
    • Statistiek waarschijnlijk niet in de staart van de nulverdeling
  • Kleine p-waarde: sterk bewijs tegen $H_{0}$
    • Statistiek waarschijnlijk wel in de staart van de nulverdeling
  • De "p" in p-waarde → probability (kans)
  • "klein" betekent "dicht bij nul"
Hypothesetoetsen in Python

De z-score berekenen

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

De p-waarde berekenen

  • norm.cdf() is de normale CDF uit scipy.stats.
  • Linkszijdige test → gebruik norm.cdf().
  • Rechtszijdige test → gebruik 1 - norm.cdf().

 

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

Laten we oefenen!

Hypothesetoetsen in Python

Preparing Video For Download...