Ga naar hoofdinhoud

Normaliteitstest: hoe je controleert of je data normaal verdeeld is

Leer wat een normaliteitstest is, waarom die ertoe doet, en hoe je veelgebruikte toetsen zoals Shapiro-Wilk, Kolmogorov-Smirnov en visuele methoden gebruikt om je data te controleren + voorbeelden in Python en R.
Bijgewerkt 4 mei 2026  · 14 min lezen

Heb je ooit een t-toets uitgevoerd, een keurige p-waarde gekregen en je toen gerealiseerd dat je nooit hebt gecontroleerd of je data normaal verdeeld was?

Statistische toetsen vertellen je niet wanneer hun aannames geschonden worden. Ze geven gewoon de waarde terug. Het probleem is dat toetsen zoals t-toetsen en ANOVA ervan uitgaan dat je data een normale verdeling volgt. Als dat niet zo is, bouw je conclusies op wankele grond.

Normaliteitstesten geven je een manier om die aanname te verifiëren. Er zijn zowel visuele als statistische methoden, en weten welke je gebruikt - en hoe je de resultaten leest - stelt je in staat vol vertrouwen achter je resultaten te staan.

In dit artikel neem ik je mee door de meest voorkomende visuele en statistische methoden om normaliteit te controleren, laat ik zien hoe je ze uitvoert in Python en R, en leg ik uit wat je kunt doen als je data de test niet doorstaat.

Wat normale verdeling in de praktijk is

Je hebt vast eerder de klokvormige curve gezien - maar dit is wat die daadwerkelijk voor je data betekent.

Een normale verdeling is een patroon waarbij de meeste waarden rond het midden clusteren, en er minder waarden voorkomen naarmate je verder naar links of rechts gaat. Als je het plot, krijg je een symmetrische, klokvormige curve. De linkerkant spiegelt de rechterkant.

Normale verdelingsplot

Plot van een normale verdeling

Wat normale verdeling uniek maakt, is dat gemiddelde, mediaan en modus allemaal op hetzelfde punt liggen - het midden van de curve. Er is geen scheefheid naar links of rechts. Met andere woorden: de data is in balans.

Dit komt voortdurend voor in meetdata uit de echte wereld. Lichaamslengte, bloeddrukmetingen, maattoleranties in de productie, testscores - ze neigen allemaal naar een normale verdeling wanneer je genoeg steekproeven verzamelt. Natuurlijke variatie in biologische en fysieke systemen produceert vaak deze vorm.

Dat gezegd hebbende: niet alle data gedraagt zich zo. Inkomensdata is rechts-scheef. Reactietijden van websites hebben lange staarten.

In de echte wereld kan het flink misgaan als je normaliteit aanneemt zonder te controleren.

Waarom normaliteit testen ertoe doet

Het probleem met het niet controleren van normaliteit is dat de meeste gangbare statistische toetsen - t-toetsen, ANOVA - parametrische toetsen zijn.

Dat betekent dat ze berusten op aannames over de verdeling van je data. Normaliteit is er daar één van. Wanneer die aanname niet klopt, gaat de wiskunde van de toets ook mis. Je krijgt nog steeds een resultaat, maar dat kan tot verkeerde conclusies leiden.

Parametrische toetsen werken door wiskundige aannames te maken over de populatie waaruit je steekproef komt. Als die aannames gelden, zijn deze toetsen nuttig en accuraat. Als dat niet zo is, worden je p-waarden onbetrouwbaar en kun je geen juiste conclusies trekken.

Daar komen niet-parametrische toetsen om de hoek kijken.

Toetsen zoals Mann-Whitney U of Kruskal-Wallis gaan niet uit van normaliteit - ze werken met rangen in plaats van ruwe waarden. Ze zijn flexibeler, maar vaak ook minder nuttig als je data wél normaal is. Onnodig overschakelen is dus niet de oplossing.

De echte fout die veel beginners in data science maken, is de controle helemaal overslaan.

Normaliteit testen kost een paar regels code. Niet testen betekent dat je je data op goed vertrouwen neemt - of er helemaal niet over nadenkt.

Visuele methoden om normaliteit te controleren

Plot je data voordat je een formele toets draait. Visualisaties vertellen je veel over wat je in handen hebt.

Histogram

Een histogram laat de vorm van je verdeling zien.

Voorbeeldhistogram

Voorbeeldhistogram

Als je data normaal verdeeld is, ziet het histogram eruit als een klok - hoog in het midden, symmetrisch aflopend aan beide kanten. Waar je op let is scheefheid: een lange staart naar rechts betekent positieve scheefheid, een staart naar links negatieve scheefheid. In beide gevallen kan dat een teken zijn dat je data niet normaal is.

Het probleem met histograms is dat de vorm afhangt van de bakgrootte:

  • Te weinig bakken en de verdeling oogt vlak
  • Te veel en hij wordt grillig

Probeer altijd een paar bakgroottes voordat je conclusies trekt.

Q-Q-plot

Een Q-Q-plot (quantile-quantile plot) vergelijkt de kwantielen van je data met die van een theoretische normale verdeling.

Voorbeeld Q-Q-plot

Voorbeeld Q-Q-plot

Als je data normaal is, vallen de punten op een rechte diagonale lijn. Afwijkingen van die lijn laten zien waar de normaliteit afbreekt. Punten die aan de uiteinden omhoog buigen duiden op zware staarten. Een S-vorm wijst op scheefheid.

Q-Q-plots zijn preciezer dan histograms voor het opsporen van subtiele afwijkingen van normaliteit - vooral in de staarten, waar histograms dingen vaak missen.

Boxplot

Een boxplot laat in één oogopslag de mediaan, spreiding en uitschieters zien.

Voorbeeldboxplot

Een normaal verdeelde dataset levert een boxplot op waarbij de mediaan ongeveer in het midden van de box ligt en de snorharen aan beide kanten ongeveer even lang zijn. Als de mediaan uit het midden ligt of één snor veel langer is dan de andere, is dat scheefheid. Puntjes buiten de snorharen zijn uitschieters.

Het algemene probleem met visuals is dat ze subjectief zijn. Twee mensen kunnen naar hetzelfde histogram kijken en het oneens zijn. Gebruik ze om eerst gevoel voor je data te krijgen en bevestig daarna met een formele test.

Veelgebruikte normaliteitstesten in de statistiek

Er is geen enkele normaliteitstest die in elke situatie het beste werkt. De juiste keuze hangt af van je steekproefgrootte en wat je wilt detecteren.

Shapiro-Wilk-toets

De Shapiro-Wilk-toets is de eerste keus voor kleine tot middelgrote steekproeven, doorgaans tot enkele honderden observaties.

Hij meet hoe dicht je data een normale verdeling benadert door de geobserveerde waarden te vergelijken met wat je zou verwachten als de data normaal was. Hij is wijdverbreid, goed begrepen en beschikbaar in elke grote statistiekbibliotheek. Voor de meeste analisten is dit de eerste test om naar te grijpen.

De belangrijkste beperking is dat hij bij grote steekproeven overgevoelig wordt. Dan markeert hij piepkleine, praktisch onbeduidende afwijkingen als statistisch significant.

Kolmogorov-Smirnov-toets

De Kolmogorov-Smirnov (KS) toets vergelijkt de cumulatieve verdeling van je steekproef met een theoretische - in dit geval normaal.

Hij is algemener dan Shapiro-Wilk en kan tegen elke verdeling testen, niet alleen normaal. De KS-toets is minder krachtig dan Shapiro-Wilk voor normaliteit, wat betekent dat hij subtiele afwijkingen eerder mist. Je moet ook de parameters van de verdeling vooraf specificeren, wat bias introduceert als je ze uit dezelfde data schat.

Gebruik hem als je een snelle, algemene check nodig hebt - niet als je primaire normaliteitstest.

Anderson-Darling-toets

De Anderson-Darling-toets is een variant van de KS-toets, maar met één belangrijk verschil: hij geeft meer gewicht aan de staarten van de verdeling.

Daardoor is hij beter in het vangen van afwijkingen die zich aan de extremen laten zien - zware staarten, uitschieters of niet-normaal gedrag dat de KS-toets zou missen. Als je usecase gevoelig is voor staartgedrag, is Anderson-Darling een goede keuze.

D'Agostino-Pearson-toets

De D'Agostino-Pearson-toets pakt het anders aan.

In plaats van verdelingen direct te vergelijken, meet hij twee eigenschappen van je data: scheefheid (asymmetrie) en kurtosis (hoe zwaar of licht de staarten zijn).

Hij combineert beide in één teststatistiek. Daardoor is hij goed in het aanwijzen waarom je data mogelijk niet normaal is - niet alleen of ze dat is. Hij werkt het best bij grotere steekproeven, waar schattingen van scheefheid en kurtosis betrouwbaar zijn.

Jarque-Bera-toets

De Jarque-Bera-toets gebruikt ook scheefheid en kurtosis, vergelijkbaar met D'Agostino-Pearson.

Hij is gangbaar in econometrie en tijdreeksanalyse. Net als D'Agostino-Pearson heeft hij een redelijk grote steekproef nodig voor betrouwbare resultaten. Bij kleine steekproeven is de test niet zo betrouwbaar. Werk je in een finance- of economietcontext, dan kom je deze vaak tegen.

Kortom: begin met Shapiro-Wilk voor kleine steekproeven en combineer met een Q-Q-plot. Gebruik Anderson-Darling wanneer staartgedrag ertoe doet, en D'Agostino-Pearson als je de aard van de afwijking wilt begrijpen.

Hoe je normaliteitstestresultaten interpreteert

Elke normaliteitstest is een hypothesetoets.

De nulhypothese bij elke normaliteitstest is dat je data normaal verdeeld is. De test vraagt dan: gegeven wat we in de data zien, hoe waarschijnlijk is het dat die nulhypothese waar is?

Het antwoord komt terug als een p-waarde:

  • p > 0,05 - je hebt niet genoeg bewijs om normaliteit te verwerpen. Ga uit van normaliteit en ga door met parametrische toetsen
  • p < 0,05 - de data wijkt genoeg af van normaliteit om statistisch detecteerbaar te zijn. Verwerp de normaliteitsaannames

Klinkt simpel, maar hier gaat het vaak mis.

Een lage p-waarde vertelt je niet hoe niet-normaal je data is - alleen dat er een verschil is gedetecteerd. Bij grote steekproeven worden normaliteitstesten extreem gevoelig. Ze markeren afwijkingen die zo klein zijn dat ze geen echte impact op je analyse hebben.

Het omgekeerde probleem bestaat ook. Bij kleine steekproeven kan zelfs zichtbaar scheve data p > 0,05 opleveren omdat de test niet genoeg power heeft om de afwijking te detecteren.

Statistische significantie en praktische significantie zijn niet hetzelfde.

Een p-waarde vertelt je of er een afwijking van normaliteit bestaat. Ze vertelt je niet of die afwijking ertoe doet voor jouw specifieke analyse. Combineer je testresultaat altijd met een Q-Q-plot - als de punten de lijn nauw volgen, is je data waarschijnlijk normaal genoeg, ongeacht wat de p-waarde zegt.

Normaliteitstesten in Python

Pythons scipy.stats module heeft alles wat je nodig hebt om normaliteitstesten in een paar regels code uit te voeren.

Voor alle voorbeelden hieronder gebruik ik dezelfde dataset - 100 steekproeven getrokken uit een normale verdeling - zodat je de code kunt draaien en meelezen.

import numpy as np
from scipy import stats

np.random.seed(42)
data = np.random.normal(loc=0, scale=1, size=100)

Shapiro-Wilk-toets

Gebruik shapiro() als je eerste check, vooral bij kleinere datasets.

stat, p_value = stats.shapiro(data)
print(f"Statistic: {stat:.4f}, p-value: {p_value:.4f}")

Dit is wat je terugkrijgt:

Output van een Shapiro-Wilk-toets in Python

Output van een Shapiro-Wilk-toets in Python

De p-waarde is ruim boven 0,05, dus we verwerpen normaliteit niet. De data oogt normaal - wat logisch is, want we hebben haar uit een normale verdeling gegenereerd.

Kolmogorov-Smirnov-toets

kstest() vergelijkt je steekproef met een benoemde verdeling. Voor normaliteit geef je "norm" mee, samen met het gemiddelde en de standaardafwijking van de steekproef.

stat, p_value = stats.kstest(data, 'norm', args=(data.mean(), data.std()))
print(f"Statistic: {stat:.4f}, p-value: {p_value:.4f}")

Output van een Kolmogorov-Smirnov-toets in Python

Output van een Kolmogorov-Smirnov-toets in Python

Wederom p > 0,05 - geen bewijs tegen normaliteit.

Geef bij deze test in Python altijd expliciet het gemiddelde en de standaardafwijking door via args. Als je dat overslaat, gebruikt kstest() standaard een standaardnormaal (gemiddelde=0, sd=1), wat onbetrouwbare resultaten geeft tenzij je data al gestandaardiseerd is.

D'Agostino-Pearson-toets

normaltest() test normaliteit door scheefheid en kurtosis gecombineerd te controleren. Werkt het best met grotere steekproeven.

stat, p_value = stats.normaltest(data)
print(f"Statistic: {stat:.4f}, p-value: {p_value:.4f}")

Output van een D'Agostino-Pearson-toets in Python

Output van een D'Agostino-Pearson-toets in Python

Opnieuw p > 0,05. De data slaagt hier voor alle drie de testen, maar dat is te verwachten - ik heb haar normaal gegenereerd. In de praktijk zul je vaak zien dat deze testen het oneens zijn, zeker rond de 0,05-grens. Val in dat geval terug op je Q-Q-plot om de knoop door te hakken.

Normaliteitstesten in R

R heeft ingebouwde functies voor normaliteitstesten. Voor de basis zijn geen extra packages nodig.

Net als bij de Python-voorbeelden gebruik ik dezelfde dataset: 100 steekproeven uit een normale verdeling.

set.seed(42)
data <- rnorm(100, mean = 0, sd = 1)

Shapiro-Wilk-toets

shapiro.test() is de go-to voor kleine tot middelgrote steekproeven. Geef simpelweg je vector met data door:

shapiro.test(data)

Output van een Shapiro-Wilk-toets in R

Output van een Shapiro-Wilk-toets in R

p > 0,05 - geen bewijs tegen normaliteit. De W-statistiek loopt van 0 tot 1, waarbij waarden dicht bij 1 aangeven dat de data een normale verdeling goed volgt.

Kolmogorov-Smirnov-toets

ks.test() vergelijkt je steekproef met een theoretische verdeling. Voor normaliteit specificeer je "pnorm" en geef je het steekproefgemiddelde en de standaardafwijking mee.

ks.test(data, "pnorm", mean(data), sd(data))

Output van een Kolmogorov-Smirnov-toets in R

Output van een Kolmogorov-Smirnov-toets in R

Weer p > 0,05. Deze test in R heeft dezelfde kanttekening als in Python: geef altijd mean(data) en sd(data) mee. Anders wordt vergeleken met een standaardnormaal, wat het resultaat vertekent tenzij je data al gestandaardiseerd is.

Q-Q-plot

R's ingebouwde qqnorm() en qqline() geven je in twee regels code een Q-Q-plot.

qqnorm(data, main = "Q-Q Plot")
qqline(data, col = "steelblue", lwd = 2)

Q-Q-plot in R

Q-Q-plot in R

qqnorm() plot je steekproefkwantielen tegen theoretische normale kwantielen. qqline() tekent de referentielijn. Punten die die lijn nauw volgen betekenen dat je data zich normaal gedraagt. Afwijkingen aan de uiteinden signaleren staartproblemen die het onderzoeken waard zijn.

Wat te doen als data niet normaal is

Als je data een normaliteitstest niet haalt, heb je een paar degelijke opties.

Transformeer de data

Soms is de oplossing om je data te transformeren zodat ze zich normaal gedraagt, en daarna je oorspronkelijke toetsen op de getransformeerde waarden te draaien.

Logtransformatie is de meest gebruikte keuze. Ze werkt goed bij rechts-scheve data - denk aan inkomen, reactietijden of biologische metingen met een lange staart aan de rechterkant. De functie in Python is np.log(data) en het R-equivalent is log(data).

Vierkantsworteltransformatie is een mildere optie voor matige scheefheid, en handig wanneer je data nullen bevat (je kunt immers geen log van nul nemen). Gebruik np.sqrt(data) in Python of sqrt(data) in R.

Voer na het transformeren je normaliteitstest opnieuw uit. Als de getransformeerde data slaagt, ga dan verder met je parametrische toetsen - onthoud alleen dat je resultaten in de getransformeerde schaal geïnterpreteerd moeten worden.

Gebruik niet-parametrische toetsen

Als transformeren niet werkt of niet logisch is voor je data, schakel dan over op niet-parametrische toetsen. Die gaan niet uit van normaliteit - ze rangschikken de data in plaats van met ruwe waarden te werken.

  • Mann-Whitney U-toets is het niet-parametrische alternatief voor de onafhankelijke t-toets. Gebruik hem wanneer je twee groepen vergelijkt
  • Kruskal-Wallis-toets is de niet-parametrische versie van eenweg-ANOVA. Gebruik hem wanneer je drie of meer groepen vergelijkt

Beide zijn beschikbaar in scipy.stats (mannwhitneyu() en kruskal()) en in R's basispakket (wilcox.test() en kruskal.test()).

Vertrouw op grote steekproeven

Met voldoende grote steekproeven kun je de normaliteitszorg vaak overslaan.

De centrale limietstelling zegt dat naarmate je steekproef groter wordt, de steekproevenverdeling van het gemiddelde normaal nadert - ongeacht hoe de oorspronkelijke data verdeeld is. In de praktijk betekent dit dat parametrische toetsen bij grote steekproeven vaak betrouwbaar zijn, zelfs als de onderliggende data niet perfect normaal is.

Veelgemaakte fouten bij het testen op normaliteit

Normaliteit testen is eenvoudig - je hebt gezien dat het één regel code kost. Toch zijn er een paar manieren om het verkeerd te doen.

Hier zijn enkele veelgemaakte fouten van beginnende data scientists:

  • Alleen vertrouwen op p-waarden: Een p-waarde vertelt je of een afwijking van normaliteit is gedetecteerd, niet hoe groot die is of of ze ertoe doet. p > 0,05 als groen licht en p < 0,05 als rood licht behandelen is te bot. Combineer je testresultaat altijd met een Q-Q-plot
  • Effecten van steekproefgrootte negeren: Bij kleine steekproeven kunnen normaliteitstesten echte afwijkingen missen en p > 0,05 teruggeven, zelfs als je data zichtbaar scheef is. Bij grote steekproeven wordt de test zo gevoelig dat piepkleine, betekenisloze afwijkingen als significant worden aangemerkt. Steekproefgrootte kan de betekenis van de p-waarde veranderen
  • Te veel testen op normaliteit: Niet elke analyse heeft een formele normaliteitstest nodig. Bij verkennend werk volstaan meestal een histogram en een Q-Q-plot
  • Kleine afwijkingen verkeerd interpreteren: Data uit de echte wereld is bijna nooit perfect normaal. Een kleine afwijking van de referentielijn op een Q-Q-plot, of een p-waarde net onder 0,05, betekent niet dat je data ver van normaal is. De vraag is of ze normaal genoeg is voor de toets die je draait

Dus, normaliteit testen is slechts één controle van je data. Gebruik het als één input onder vele, niet als het laatste woord.

Wanneer je normaliteitstesten kunt overslaan

Normaliteit testen is niet altijd nodig. Als je een deadline hebt, kan weten wanneer je het kunt overslaan je tijd besparen zonder de resultaten te beïnvloeden.

Grote datasets

Bij een grote steekproef garandeert de centrale limietstelling dat de steekproevenverdeling van het gemiddelde ongeveer normaal is, ongeacht de vorm van je ruwe data. Parametrische toetsen zijn dan doorgaans betrouwbaar, dus een formele normaliteitstest voegt weinig toe.

Sommige statistische methoden zijn ook robuust tegen niet-normaliteit. Technieken zoals lineaire regressie houden zich vaak goed, mits steekproeven redelijk groot zijn en schendingen niet extreem. (Lineaire regressie gaat nog steeds uit van normaliteit in de residuen.)

Verkennende analyse

Wanneer je data scant op patronen, gevoel opbouwt of beslist welke variabelen verdere aandacht verdienen, is een snel histogram of Q-Q-plot genoeg. Formele toetsen zijn voor bevestigende analyses - wanneer je conclusies moeten standhouden.

Onthoud dat normaliteitstesten bestaat om je te beschermen tegen verkeerde conclusies. Als je je in een context bevindt waar een verkeerde conclusie geen echte consequenties heeft, of waar je methode niet afhankelijk is van normaliteit, is de test optioneel.

Conclusie

Normaliteit testen draait erom te controleren of je aannames voldoende kloppen om je resultaten te vertrouwen.

Geen enkele dataset is perfect normaal. Het doel is te begrijpen hoe je data zich gedraagt en je methoden daarop af te stemmen. Een Q-Q-plot laat zien waar de afwijkingen zitten. Een formele test vertelt of ze statistisch detecteerbaar zijn. Samen geven ze een helderder beeld dan elk afzonderlijk.

De juiste test hangt af van je context. Gebruik Shapiro-Wilk voor kleine steekproeven, Anderson-Darling wanneer staarten ertoe doen, niet-parametrische alternatieven wanneer je normaliteit niet kunt aannemen. En soms - bij grote steekproeven of robuuste methoden - geen test.

Vind je het hele concept van p-waarden verwarrend? Lees ons artikel Hypothesetoetsing made easy om zeker te weten dat je ze correct interpreteert.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Senior Data Scientist, gevestigd in Kroatië. Top Tech-schrijver met meer dan 700 gepubliceerde artikelen en meer dan 10 miljoen weergaven. Auteur van het boek Machine Learning Automation with TPOT.

Normaliteitstest FAQ

Wat is een normaliteitstest?

Een normaliteitstest is een statistische methode die controleert of je data een normale (Gaussische) verdeling volgt. De meeste gangbare statistische toetsen - zoals t-toetsen, ANOVA en lineaire regressie - gaan uit van normaliteit, dus het controleren van deze aanname voordat je je analyse draait helpt je om verkeerde conclusies te vermijden.

Moet ik altijd testen op normaliteit?

Niet altijd. Bij grote steekproeven zorgt de centrale limietstelling ervoor dat parametrische toetsen betrouwbaar zijn, ongeacht de onderliggende verdeling. Voor verkennende analyses volstaat meestal een snel histogram of een Q-Q-plot - formele normaliteitstesten zijn het nuttigst wanneer je bevestigende analyses doet en je conclusies moeten standhouden.

Wat moet ik doen als mijn data een normaliteitstest niet haalt?

Je hebt een paar opties. Je kunt de data transformeren met een log- of vierkantsworteltransformatie en daarna opnieuw testen. Als de transformatie niet werkt, schakel dan over op niet-parametrische toetsen zoals Mann-Whitney U (voor twee groepen) of Kruskal-Wallis (voor drie of meer groepen), die niet van normaliteit uitgaan.

Wat is het verschil tussen de Shapiro-Wilk- en Kolmogorov-Smirnov-toetsen?

Shapiro-Wilk is specifiek ontworpen voor normaliteitstesten en werkt het best met kleine tot middelgrote steekproeven. De Kolmogorov-Smirnov-toets is algemener - hij kan een steekproef met elke theoretische verdeling vergelijken, niet alleen normaal - maar is minder krachtig dan Shapiro-Wilk specifiek voor normaliteit, waardoor hij subtiele afwijkingen eerder mist.

Hoe interpreteer ik een Q-Q-plot voor normaliteit?

Een Q-Q-plot vergelijkt de kwantielen van je data met de kwantielen van een theoretische normale verdeling. Als de punten dicht bij de diagonale referentielijn vallen, gedraagt je data zich normaal. Afwijkingen aan de uiteinden van de lijn signaleren staartproblemen - een S-vorm wijst op scheefheid, terwijl punten die aan beide uiteinden van de lijn afbuigen zwaardere of lichtere staarten suggereren dan een normale verdeling zou hebben.

Onderwerpen

Leer met DataCamp

Cursus

Data Science begrijpen

2 Hr
856.8K
Introductie in data science zonder coderen.
Bekijk detailsRight Arrow
Begin met de cursus
Meer zienRight Arrow
Gerelateerd

blog

AI vanaf nul leren in 2026: een complete gids van de experts

Ontdek alles wat je moet weten om in 2026 AI te leren, van tips om te beginnen tot handige resources en inzichten van industrie-experts.
Adel Nehme's photo

Adel Nehme

15 min

Meer zienMeer zien