Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Hypothesis testing is een fundamentele statistische methode om te bepalen of waargenomen data consistent is met een bepaalde kansverdeling. Het biedt een formeel kader om beslissingen te nemen onder onzekerheid en is van cruciaal belang in machine learning voor model evaluatie en validatie.

ML Toepassingenยถ

Model vergelijkingยถ

Wanneer we twee of meer modellen trainen, willen we weten of het ene model significant (of betekenisvol) beter presteert dan het andere, of dat waargenomen verschillen louter het gevolg zijn van toeval in de data. Bijvoorbeeld: is model A met een accuraatheid van 87% werkelijk beter dan model B met 85%, of zou dit verschil verdwijnen bij een andere random train/test split?

Modelvergelijking is niet alleen van toepassing tijdens de training, maar ook bij:

  • Featureselectie: Bij het bepalen welke features relevant zijn, testen we of een feature een significante invloed heeft op de voorspelling. Dit helpt bij het vermijden van overfitting door irrelevante features te verwijderen.

  • A/B Testing: In productie-omgevingen testen we of een nieuwe versie van een model beter presteert dan de bestaande versie. Hypothesis testing vertelt ons wanneer we voldoende bewijs hebben om over te schakelen.

  • Hyperparameter tuning: Bij het vergelijken van verschillende hyperparameter configuraties helpt hypothesis testing om te bepalen of waargenomen prestatieverschillen statistisch significant zijn.

Dataset vergelijkingยถ

We kunnen testen of trainings- en testdata uit dezelfde distributie komen, of dat er bij incrementele data verschuivingen zijn opgetreden - zogenaamde data drift (wat leidt tot gedegradeerde modelprestaties of model drift).

Basisconceptยถ

Bij hypothesis testing vergelijken we twee veronderstellingen of hypotheses:

  • Nulhypothese (H0H_0): De standaardaanname, meestal de meest conservatieve veronderstelling: de data zijn consistent met een veronderstelde kansverdeling.

  • Alternatieve hypothese (H1H_1 of HaH_a): De hypothese die we willen testen, meestal dat de data zijn niet-consistent met een veronderstelde kansverdeling.

Het doel is om te bepalen of de data voldoende bewijs levert om H0H_0 te verwerpen ten gunste van H1H_1.

p-waardeยถ

De p-waarde is de kans om de waargenomen data en extremere waarden te observeren, gegeven dat de nulhypothese waar is. Een lage p-waarde (<0.05< 0.05) suggereert dat de data onwaarschijnlijk is onder H0H_0, wat leidt tot verwerping van H0H_0.

Veronderstel dat onder de nulhypothese een observatie afkomstig is van een standaard normale verdeling N(0,12)\mathcal{N}(0, 1^2). Als we een waarde van 2 observeren, dan kunnen we de p-waarde P(Xโ‰ฅ2โˆฃH0)P(X \geq 2 \mid H_0) beschouwen - de kans om een waarde van 2 of groter te observeren als H0H_0 waar is. Als we een waarde -5 observeren, dan kunnnen we de p-waarde P(Xโ‰คโˆ’5โˆฃH0)P(X \leq -5 \mid H_0) bekijken - de kans om een waarde van -5 of kleiner te observeren als H0H_0 waar is. We kunnen ook de p-waarde berekenen om een extremer verschil ten opzichte van het gemiddelde te observeren als H0H_0 waar is. Bijvoorbeeld P(Xโ‰คโˆ’6โˆฃH0)+P(Xโ‰ฅ6โˆฃH0)P(X \leq -6 \mid H_0) + P(X \geq 6 \mid H_0).

Source
<Figure size 1000x600 with 1 Axes>

Significantieniveauยถ

Het significantieniveau (ฮฑ\alpha) is de drempel voor verwerping van H0H_0. Typisch wordt ฮฑ=0.05\alpha = 0.05 gebruikt, wat betekent dat we een 5%5\% kans op een type I fout accepteren (ten onrechte H0H_0 verwerpen).

Type I en Type II foutenยถ

Bij hypothesis testing zijn twee soorten fouten mogelijk:

  • Type I fout (ฮฑ\alpha): H0H_0 verwerpen terwijl deze waar is (vals positief)

  • Type II fout (ฮฒ\beta): H0H_0 niet verwerpen terwijl deze vals is (vals negatief)

Source
<Figure size 1200x600 with 1 Axes>

Eenzijdige vs. Tweezijdige Testsยถ

Bij hypothesis testing kunnen we kiezen tussen eenzijdige en tweezijdige tests:

  • Tweezijdige test: We testen of de parameter verschilt van de hypothetische waarde (kan groter of kleiner zijn). Het significantieniveau ฮฑ\alpha wordt verdeeld over beide staarten van de verdeling (ฮฑ/2\alpha/2 aan elke kant).

  • Eenzijdige test: We testen of de parameter groter of kleiner is dan de hypothetische waarde. Het volledige significantieniveau ฮฑ\alpha wordt aan รฉรฉn kant geplaatst.

Bij een tweezijdige test met ฮฑ=0.05\alpha = 0.05 gebruiken we kritische waarden van ยฑ1.96\pm 1.96 voor de standaard normale verdeling, waarbij elk uiteinde 2.5% van de verdeling bevat.

Source
<Figure size 1600x500 with 2 Axes>
Critical Values:
Two-sided test (ฮฑ = 0.05): z = ยฑ1.960
One-sided test (ฮฑ = 0.05): z = 1.645

Note: For a two-sided test, we split ฮฑ between both tails.
This is why we use ยฑ1.96 for ฮฑ=0.05 (2.5% in each tail).

Specifieke testsยถ

Er bestaan heel veel verschillende types statistische tests naargelang het soort data en de veronderstelde theoretische of populatieverdelingen.

zz-testยถ

In de veronderstelling van normaal verdeelde data kan bijvoorbeeld worden gekeken of het gemiddelde van een steekproef mm significant verschilt van een vooropgesteld populatiegemiddelde ฮผ\mu. Theoretisch is het zo dat als we het verschil mโˆ’ฮผm-\mu standaardiseren met de standaardfout van het steekproefgemiddelde, we een standaard normaalverdeling moeten bekomen.

Z=mโˆ’ฮผฯƒ/nโˆผN(0,12)Z = \frac{m-\mu}{\sigma/\sqrt{n}} \sim \mathcal{N}(0, 1^2)

De standaardfout SE=ฯƒ/nSE = \sigma/\sqrt{n} is de standaardafwijking van de sampling distributie van de gemiddeldes. Ze vertelt ons wat de verwachte spreiding is bij een bepaalde sample grootte over verschillende samples (zie illustratie).

Voor een bepaalde zz kunnen we drie versies van de nulhypothese testen, afhankelijk van het feit of we een eenzijdige of tweezijdige test van het verschil willen uitvoeren:

  1. eenzijdige test H0:P(Zโ‰ฅz)>ฮฑH_0: P(Z \geq z) > \alpha

  2. eenzijdige test H0:P(Zโ‰คz)>ฮฑH_0: P(Z \leq z) > \alpha

  3. tweezijdige test H0:min{P(Zโ‰ฅz),P(Zโ‰คz)}>ฮฑ/2H_0: min\{P(Z \geq z), P(Z \leq z)\} > \alpha/2

Source
<Figure size 1500x1000 with 6 Axes>
<Figure size 1000x600 with 1 Axes>

Studentโ€™s tt-testยถ

Bij de zz-test veronderstellen we dat we de standaardfout op het gemiddelde ฯƒ/n\sigma/\sqrt{n} exact kennen op basis van de populatievariantie ฯƒ2\sigma^2. Dit is echter in de meeste gevallen niet waar. Er wordt gewerkt met de steekproefvariantie s2s^2 die op zich een schatting is. Vooral bij kleine steekproefgroottes is dit problematisch. Statisticus en chemicus/brouwer William Sealy Gosset (die voor Guinness Breweries werkte en onder het pseudoniem โ€œStudentโ€ publiceerde), toonde aan dat bij standaardisatie van verschillen tussen gemiddeldes met de sample SE=s/nSE=s/\sqrt{n}, geen standaard normaal verdeling bekomen wordt, maar wel een zogenaamde tt-distributie met als parameter nโˆ’1n-1 zogenaamde vrijheidsgraden (degrees of freedom; dfdf; Student (1908)).

T=mโˆ’ฮผs/nโˆผt(nโˆ’1)T = \frac{m - \mu}{s/\sqrt{n}} \sim t(n-1)

t-distributies hebben volgende kenmerkende eigenschappen:

  1. Zwaardere staarten: De t-distributie heeft dikkere staarten dan de normale verdeling, wat de extra onzekerheid reflecteert

  2. Afhankelijk van steekproefgrootte: De vorm wordt bepaald door de vrijheidsgraden (df=nโˆ’1df = n - 1)

  3. Convergentie: Voor grote nn (ongeveer n>30n > 30) convergeert de t-distributie naar de normale verdeling

Source
<Figure size 1400x500 with 2 Axes>

Hieronder illustreren we een t-test voor een voorbeeld waarbij we in een steekproef de lengte van volwassenen hebben gemeten (in cm) en de hypothese willen testen dat het populatiegemiddelde 170 cm bedraagt (H0:min{P(Tโ‰ฅt),P(Tโ‰คt)}>ฮฑ/2H_0: min\{P(T \geq t), P(T \leq t)\} > \alpha/2, met ฮฑ=0.05\alpha = 0.05)

Dit is een voorbeeld van een zogenaamde one-sample tt-test

Source
<Figure size 1400x500 with 2 Axes>

Two-Sample tt-testยถ

De two-sample tt-test vergelijkt de gemiddelden van twee onafhankelijke steekproeven. Er bestaan twee versies afhankelijk van het feit of we gelijke of ongelijke populaties veronderstellen.

Gelijke variantiesยถ

Als we veronderstellen dat beide steekproeven dezelfde populatievariantie hebben (ฯƒ12=ฯƒ22\sigma_1^2 = \sigma_2^2), kunnen we een gepoolde variantie gebruiken:

sp2=(n1โˆ’1)s12+(n2โˆ’1)s22n1+n2โˆ’2s_p^2 = \frac{(n_1-1)s_1^2 + (n_2-1)s_2^2}{n_1 + n_2 - 2}
T=m1โˆ’m2sp1n1+1n2โˆผt(n1+n2โˆ’2)T = \frac{m_1 - m_2}{s_p\sqrt{\frac{1}{n_1} + \frac{1}{n_2}}} \sim t(n_1 + n_2 - 2)

waarbij m1m_1 en m2m_2 de steekproefgemiddeldes zijn, s12s_1^2 en s22s_2^2 de steekproefvarianties, en n1n_1 en n2n_2 de steekproefgroottes.

Ongelijke varianties (Welchโ€™s t-test)ยถ

Deze versie veronderstelt niet dat de twee steekproeven dezelfde variantie hebben:

T=m1โˆ’m2s12n1+s22n2โˆผt(df)T = \frac{m_1 - m_2}{\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}} \sim t(df)

De vrijheidsgraden dfdf worden berekend via de Welch-Satterthwaite vergelijking:

df=(s12n1+s22n2)2(s12/n1)2n1โˆ’1+(s22/n2)2n2โˆ’1df = \frac{\left(\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}\right)^2}{\frac{(s_1^2/n_1)^2}{n_1-1} + \frac{(s_2^2/n_2)^2}{n_2-1}}

In de praktijk wordt meestal Welchโ€™s t-test gebruikt omdat deze robuuster is en geen assumptie van gelijke varianties vereist.

Hieronder illustreren we Welchโ€™s t-test om na te gaan of twee groepen van personen uit verschillende populaties van lengtes komen.

Source
/tmp/ipykernel_964515/903277991.py:23: MatplotlibDeprecationWarning: The 'labels' parameter of boxplot() has been renamed 'tick_labels' since Matplotlib 3.9; support for the old name will be dropped in 3.11.
  axes[1].boxplot(
<Figure size 1600x500 with 3 Axes>
Group 1 mean: 176.76 ยฑ 7.79
Group 2 mean: 166.25 ยฑ 5.20

t-statistic: 6.6798
p-value: 0.0000

Conclusion: Reject Hโ‚€ at ฮฑ=0.05

Binomiaaltestยถ

De binomiaaltest wordt gebruikt om te testen of de waargenomen proportie in een steekproef overeenkomt met een veronderstelde populatieproportie. Deze test is geschikt voor binaire uitkomsten (succes/falen, ja/nee, etc.).

Hypothese: We testen of de proportie successen pp gelijk is aan een hypothetische waarde p0p_0:

  • H0:p=p0H_0: p = p_0

  • H1:pโ‰ p0H_1: p \neq p_0 (tweezijdig) of H1:p>p0H_1: p > p_0 of H1:p<p0H_1: p < p_0 (eenzijdig)

Onder H0H_0 volgt het aantal successen kk in nn trials een binomiale verdeling:

P(X=kโˆฃH0)=(nk)p0k(1โˆ’p0)nโˆ’kP(X = k \mid H_0) = \binom{n}{k} p_0^k (1-p_0)^{n-k}

De p-waarde wordt berekend als de kans om kk of een extremere waarde te observeren onder H0H_0.

Source
<Figure size 1400x500 with 2 Axes>
Referencesยถ
  1. Student. (1908). The Probable Error of a Mean. Biometrika, 6(1), 1. 10.2307/2331554