# Statistiek voor Data Science 2026: Kansrekening, Hypothesetoetsen en Sollicitatievragen > Gids voor statistische concepten in data science sollicitaties: kansverdelingen, hypothesetoetsen, betrouwbaarheidsintervallen en veelgestelde vragen bij Google, Meta en Netflix. - Published: 2026-08-21 - Updated: 2026-08-21 - Author: Anthony Fillion-Maillet - Reading time: 5 min --- Statistiek vormt de wiskundige basis van elke data science functie. Interviewers bij bedrijven zoals Google, Meta en Netflix testen statistisch redeneren omdat het kandidaten onderscheidt die modellen kunnen bouwen van degenen die begrijpen waarom die modellen werken. > **Wat interviewers zoeken** > > Statistiekvragen beoordelen drie vaardigheden: bedrijfsproblemen vertalen naar statistische frameworks, de juiste test kiezen voor de data, en resultaten interpreteren zonder overhaaste conclusies te trekken. ## Kansverdelingen die elke Data Scientist moet kennen Kansverdelingen beschrijven hoe datapunten zich verspreiden over mogelijke waarden. Interviewers verwachten bekendheid met deze verdelingen omdat ze de basis vormen voor steekproeftrekking, A/B-testen en modelaannames. De **normale verdeling** (Gaussiaanse verdeling) verschijnt overal: meetfouten, lengte, testscores. De klokvormige curve centreert zich rond het gemiddelde, met 68% van de data binnen één standaarddeviatie en 95% binnen twee. Wanneer steekproefgroottes groter zijn dan 30, garandeert de Centrale Limietstelling dat steekproefgemiddelden een normale verdeling volgen, ongeacht de vorm van de oorspronkelijke populatie. De **binomiale verdeling** modelleert succes-/mislukkingsproeven. Doorklikratio's, conversiegebeurtenissen en kwaliteitscontroles met geslaagd/niet-geslaagd volgen binomiale patronen. Voor n proeven met succeskans p is de verwachte waarde np en de variantie np(1-p). De **Poissonverdeling** telt zeldzame gebeurtenissen over vaste intervallen: websitebezoeken per minuut, defecten per batch, oproepen per uur. De enkele parameter λ vertegenwoordigt zowel gemiddelde als variantie. Wanneer gebeurtenissen onafhankelijk optreden met een constante gemiddelde snelheid, past Poisson. ```python # distributions_demo.py import numpy as np from scipy import stats # Normal: customer spend follows N(μ=50, σ=15) normal_samples = stats.norm.rvs(loc=50, scale=15, size=1000) prob_above_80 = 1 - stats.norm.cdf(80, loc=50, scale=15) # P(X > 80) # Binomial: 100 users, 5% conversion rate binom_samples = stats.binom.rvs(n=100, p=0.05, size=1000) prob_at_least_10 = 1 - stats.binom.cdf(9, n=100, p=0.05) # P(X >= 10) # Poisson: 3 support tickets per hour on average poisson_samples = stats.poisson.rvs(mu=3, size=1000) prob_zero_tickets = stats.poisson.pmf(0, mu=3) # P(X = 0) ``` Deze drie verdelingen dekken de meeste praktische scenario's. Interviewers vragen vaak welke verdeling past bij een bepaalde bedrijfscontext, dus oefen met het koppelen van echte problemen aan het juiste model. ## Hypothesetoetsen: Het Framework achter A/B-Tests Hypothesetoetsen bieden een formele structuur voor het nemen van beslissingen op basis van data. Het framework begint met een nulhypothese (H₀) die geen effect of geen verschil vertegenwoordigt, en een alternatieve hypothese (H₁) die vertegenwoordigt wat het experiment probeert te detecteren. Een typische A/B-test nulhypothese stelt: "De nieuwe functie heeft geen effect op de conversieratio." Het alternatief beweert dat er een effect bestaat. De test berekent hoe waarschijnlijk de waargenomen data zou zijn als de nulhypothese waar zou zijn. De **p-waarde** kwantificeert deze waarschijnlijkheid. Een p-waarde van 0,03 betekent dat er een kans van 3% is om resultaten zo extreem te zien als de nulhypothese geldt. Wanneer de p-waarde onder het significantieniveau valt (gewoonlijk α = 0,05), wordt de nulhypothese verworpen. ```python # ab_test_analysis.py import numpy as np from scipy import stats # A/B test data: control vs treatment conversion rates control_conversions = 120 control_visitors = 2000 treatment_conversions = 145 treatment_visitors = 2000 # Proportions p_control = control_conversions / control_visitors # 0.060 p_treatment = treatment_conversions / treatment_visitors # 0.0725 # Pooled proportion under null hypothesis p_pooled = (control_conversions + treatment_conversions) / (control_visitors + treatment_visitors) # Standard error se = np.sqrt(p_pooled * (1 - p_pooled) * (1/control_visitors + 1/treatment_visitors)) # Z-statistic z_stat = (p_treatment - p_control) / se # Two-tailed p-value p_value = 2 * (1 - stats.norm.cdf(abs(z_stat))) print(f"Z-statistic: {z_stat:.3f}") # Z-statistic: 1.681 print(f"P-value: {p_value:.4f}") # P-value: 0.0928 ``` Met een p-waarde van 0,0928 verwerpt deze test de nulhypothese niet bij α = 0,05. Het waargenomen verschil kan willekeurige variatie zijn. Meer data of een grotere effectgrootte zou nodig zijn om statistische significantie te bereiken. ## Type I en Type II Fouten: De Afwegingen die Interviewers Onderzoeken Statistische tests balanceren twee soorten fouten. Een **Type I fout** (vals positief) treedt op wanneer een ware nulhypothese wordt verworpen. Een **Type II fout** (vals negatief) treedt op wanneer een valse nulhypothese niet wordt verworpen. Het significantieniveau α controleert direct de Type I fout waarschijnlijkheid. Het instellen van α = 0,05 betekent het accepteren van een 5% kans op vals positieven. Het verlagen van α naar 0,01 vermindert vals positieven maar verhoogt vals negatieven. **Statistisch vermogen** (1 - β) meet de waarschijnlijkheid van het correct verwerpen van een valse nulhypothese. Vermogen hangt af van effectgrootte, steekproefgrootte en significantieniveau. De industriestandaard richt zich op 80% vermogen, wat een 20% kans betekent om echte effecten te missen. > **Sollicitatieval** > > Kandidaten verwarren vaak "geen significant verschil" met "er bestaat geen verschil". Het niet verwerpen van de nulhypothese bewijst niet dat de nulhypothese waar is. De test kan onvoldoende vermogen hebben om een klein maar echt effect te detecteren. Steekproefgrootteberekeningen balanceren deze zorgen. Voor een A/B-test gericht op een 2% stijging in conversie (van 5% naar 7%) met 80% vermogen en α = 0,05: ```python # sample_size_calculation.py from statsmodels.stats.power import zt_ind_solve_power # Baseline conversion: 5%, expected lift: 2 percentage points baseline = 0.05 expected = 0.07 effect_size = (expected - baseline) / np.sqrt(baseline * (1 - baseline)) # Cohen's h # Required sample size per group n_per_group = zt_ind_solve_power( effect_size=effect_size, alpha=0.05, power=0.80, alternative='two-sided' ) print(f"Sample size per group: {int(np.ceil(n_per_group))}") # ~1,570 per group ``` Tests met onvoldoende vermogen verspillen middelen door experimenten uit te voeren die realistische effecten niet kunnen detecteren. ## Betrouwbaarheidsintervallen: Onzekerheid Kwantificeren Een 95% betrouwbaarheidsinterval betekent: als hetzelfde steekproefproces vele malen zou worden herhaald, zou 95% van de geconstrueerde intervallen de ware parameter bevatten. Betrouwbaarheidsintervallen communiceren onzekerheid beter dan puntschattingen alleen. Voor gemiddelden met bekende populatievariantie gebruikt het interval de z-verdeling. Voor kleine steekproeven of onbekende variantie is de t-verdeling van toepassing. De t-verdeling heeft zwaardere staarten dan de normale verdeling en produceert bredere intervallen die rekening houden met extra onzekerheid. ```python # confidence_intervals.py import numpy as np from scipy import stats # Sample data: response times in milliseconds response_times = np.array([245, 312, 278, 299, 256, 334, 287, 301, 265, 289]) n = len(response_times) mean = np.mean(response_times) # 286.6 std_err = stats.sem(response_times) # Standard error of the mean # 95% confidence interval using t-distribution (df = n-1) t_critical = stats.t.ppf(0.975, df=n-1) margin_of_error = t_critical * std_err ci_lower = mean - margin_of_error ci_upper = mean + margin_of_error print(f"Mean: {mean:.1f}ms") # Mean: 286.6ms print(f"95% CI: [{ci_lower:.1f}, {ci_upper:.1f}]ms") # 95% CI: [265.4, 307.8]ms ``` Smallere intervallen duiden op preciezere schattingen. Steekproefgrootte bepaalt de precisie: het verviervoudigen van n halveert de foutmarge. ## Bayesiaans vs Frequentistisch: Sollicitatievragen over Statistische Filosofie Interviewers onderzoeken soms het begrip van concurrerende statistische paradigma's. **Frequentistische statistiek** behandelt kans als langetermijnfrequentie: parameters zijn vast en data varieert over herhaalde experimenten. P-waarden en betrouwbaarheidsintervallen komen uit deze traditie. **Bayesiaanse statistiek** behandelt kans als mate van overtuiging: voorkennis combineert met data om posterior overtuigingen te produceren. Het framework maakt het mogelijk om domeinexpertise te incorporeren en produceert direct kansuitspraken over parameters. A/B-testen gebruiken steeds vaker Bayesiaanse methoden omdat ze de vraag beantwoorden die stakeholders daadwerkelijk stellen: "Wat is de kans dat behandeling B beter presteert dan behandeling A?" in plaats van "Hoe verrassend is deze data als er geen verschil zou zijn?" ```python # bayesian_ab_test.py import numpy as np from scipy import stats # Prior: Beta(1, 1) = uniform prior for conversion rate # Posterior: Beta(alpha + successes, beta + failures) control_successes, control_failures = 120, 1880 treatment_successes, treatment_failures = 145, 1855 # Posterior distributions posterior_control = stats.beta(1 + control_successes, 1 + control_failures) posterior_treatment = stats.beta(1 + treatment_successes, 1 + treatment_failures) # Monte Carlo estimation: P(treatment > control) samples_control = posterior_control.rvs(100000) samples_treatment = posterior_treatment.rvs(100000) prob_treatment_better = np.mean(samples_treatment > samples_control) print(f"P(treatment > control): {prob_treatment_better:.2%}") # ~95% ``` Bayesiaanse resultaten communiceren direct: "Er is een 95% kans dat de conversieratio van de behandeling die van de controle overtreft." Frequentistische resultaten vereisen zorgvuldigere interpretatie. ## Veelvoorkomende Sollicitatievragen over Statistische Inferentie Deze vragen verschijnen frequent in data science sollicitaties bij technologiebedrijven. Elke vraag test een specifiek statistisch concept. **"Leg de Centrale Limietstelling uit en waarom het belangrijk is."** De CLS stelt dat steekproefgemiddelden van elke populatie (met eindige variantie) een normale verdeling benaderen naarmate de steekproefgrootte toeneemt. Dit is belangrijk omdat normaliteitsaannames in hypothesetoetsen gelden voor grote steekproeven, ongeacht de onderliggende verdeling. Steekproefgroottes van 30+ zijn doorgaans voldoende. **"Wat is p-hacking en hoe voorkom je het?"** P-hacking verhoogt vals positieve percentages door meerdere hypothesen te testen totdat significantie wordt gevonden, of door dataverzameling te stoppen wanneer resultaten significant worden. Preventiestrategieën: analyseplannen vooraf registreren, correcties voor meervoudige vergelijkingen toepassen (Bonferroni, FDR) en steekproefgroottes vaststellen voordat data wordt verzameld. **"Wanneer zou je een t-test versus een Mann-Whitney U-test gebruiken?"** De t-test neemt normaal verdeelde data aan (of grote steekproeven via CLS) en vergelijkt gemiddelden. De [Mann-Whitney U](https://nl.wikipedia.org/wiki/Mann-Whitney_U-test) is een niet-parametrisch alternatief dat verdelingen vergelijkt zonder normaliteitsaannames. Gebruik Mann-Whitney voor kleine steekproeven met duidelijk niet-normale data of bij het vergelijken van ordinale metingen. **"Hoe ga je om met meervoudige vergelijkingen in A/B-testen?"** Het testen van meerdere varianten verhoogt de Type I fout. Met 20 vergelijkingen bij α = 0,05 overschrijdt de kans op minstens één vals positief resultaat 60%. De Bonferroni-correctie deelt α door het aantal tests. De Benjamini-Hochberg-procedure controleert de valse ontdekkingsratio terwijl meer vermogen behouden blijft dan bij Bonferroni. ## De Paradox van Simpson: Een Favoriet Sollicitatieonderwerp De [paradox van Simpson](https://nl.wikipedia.org/wiki/Simpsonparadox) treedt op wanneer trends in geaggregeerde data omkeren op subgroepniveau. Interviewers houden van dit onderwerp omdat het causaal redeneren test, niet alleen statistische mechanica. Een klassiek voorbeeld: Ziekenhuis A heeft een hoger algemeen sterftecijfer dan Ziekenhuis B. Maar Ziekenhuis A heeft lagere sterfte voor zowel milde als ernstige gevallen. De paradox ontstaat omdat Ziekenhuis A meer ernstige gevallen behandelt, die hogere sterfte hebben ongeacht de ziekenhuiskwaliteit. ```python # simpsons_paradox.py import pandas as pd # Hospital mortality data data = { 'Hospital': ['A', 'A', 'B', 'B'], 'Severity': ['Mild', 'Severe', 'Mild', 'Severe'], 'Patients': [200, 800, 800, 200], 'Deaths': [10, 160, 48, 50] } df = pd.DataFrame(data) df['Mortality'] = df['Deaths'] / df['Patients'] # Subgroup mortality print(df[['Hospital', 'Severity', 'Mortality']]) # Hospital A: Mild 5%, Severe 20% # Hospital B: Mild 6%, Severe 25% # Aggregate mortality agg = df.groupby('Hospital').agg({'Deaths': 'sum', 'Patients': 'sum'}) agg['Mortality'] = agg['Deaths'] / agg['Patients'] print(agg['Mortality']) # Hospital A: 17%, Hospital B: 9.8% ``` De oplossing vereist het identificeren van de verstorende variabele (ernst) en het afzonderlijk analyseren van subgroepen. Geaggregeerde analyse misleidt wanneer subgroepverhoudingen verschillen. ## Statistische Concepten voor Feature Engineering Statistische kennis verbetert direct feature engineering. Begrip van verdelingen stuurt transformaties; begrip van relaties stuurt feature-creatie. **Scheefheid** (skewness) meet de asymmetrie van de verdeling. Rechts-scheve data (inkomen, prijzen) profiteert van logtransformaties die de verdeling normaliseren en modelprestaties verbeteren. Links-scheve data gebruikt kwadratische of exponentiële transformaties. **Correlatie** kwantificeert lineaire relaties. Pearson-correlatie neemt normaliteit en lineariteit aan. Spearman-correlatie behandelt monotone niet-lineaire relaties. Sterk gecorreleerde features veroorzaken multicollineariteit in lineaire modellen, dus wordt er typisch één verwijderd. **Uitbijters** beïnvloeden gemiddelden en standaarddeviaties onevenredig. Robuuste statistieken (mediaan, IQR) weerstaan de invloed van uitbijters. Beslissing: uitbijters verwijderen, afkappen of transformeren, afhankelijk van of ze fouten of echte extreme waarden vertegenwoordigen. Voor meer informatie over het toepassen van deze concepten op machine learning modellen, zie de [feature engineering sollicitatiegids](/blog/data-science/feature-engineering-machine-learning-techniques-interview-2026) en verken de [oefenmodule voor inferentiële statistiek](/technologies/data-science/interview-questions/statistics-inferential). ## Wat Sterke Kandidaten Onderscheidt bij Statistiekvragen Statistische competentie in data science sollicitaties vereist meer dan leerboekdefinities. Sterke kandidaten demonstreren deze vaardigheden: - **Statistiek verbinden met bedrijfsresultaten**: A/B-testresultaten formuleren in termen van omzetimpact of gebruikersbetrokkenheid, niet alleen p-waarden - **De aannames kennen**: elke test heeft voorwaarden (onafhankelijkheid, normaliteit, gelijke variantie) en kandidaten moeten aangeven wanneer deze voorwaarden mogelijk niet gelden - **Onzekerheid kwantificeren**: puntschattingen zonder betrouwbaarheidsintervallen of geloofwaardige intervallen laten stakeholders raden over betrouwbaarheid - **Causaliteitsgrenzen herkennen**: observationele data toont correlatie, en kandidaten moeten articuleren welk experimenteel ontwerp causaliteit zou vaststellen - **De juiste test kiezen**: datatype (continu vs categoriaal), steekproefgrootte en onderzoeksvraag matchen aan de juiste statistische methode - **Resultaten helder communiceren**: statistische bevindingen vertalen naar uitvoerbare aanbevelingen die niet-technische stakeholders kunnen begrijpen en waarop zij kunnen handelen --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/nl/blog/data-science/statistics-data-science-probability-hypothesis-testing-interview-2026