Statystyka w Data Science 2026: Prawdopodobieństwo, Testowanie Hipotez i Pytania Rekrutacyjne
Kompletny przewodnik po statystyce dla data science: rozkłady prawdopodobieństwa, testy hipotez, przedziały ufności i najczęstsze pytania rekrutacyjne z praktycznymi przykładami w Pythonie.

Statystyka stanowi matematyczny fundament każdej roli w data science. Rekruterzy w firmach takich jak Google, Meta czy Netflix testują rozumowanie statystyczne, ponieważ odróżnia ono kandydatów potrafiących budować modele od tych, którzy rozumieją, dlaczego te modele działają.
Pytania statystyczne oceniają trzy umiejętności: przekładanie problemów biznesowych na ramy statystyczne, wybór odpowiedniego testu dla danych oraz interpretację wyników bez nadmiernych wniosków.
Rozkłady Prawdopodobieństwa, Które Musi Znać Każdy Data Scientist
Rozkłady prawdopodobieństwa opisują, jak punkty danych rozprzestrzeniają się po możliwych wartościach. Rekruterzy oczekują biegłości w tych rozkładach, ponieważ stanowią one podstawę próbkowania, testów A/B i założeń modeli.
Rozkład normalny (Gaussa) pojawia się wszędzie: błędy pomiarowe, wzrost, wyniki testów. Jego krzywa dzwonowa skupia się wokół średniej, z 68% danych w obrębie jednego odchylenia standardowego i 95% w obrębie dwóch. Gdy wielkość próby przekracza 30, Centralne Twierdzenie Graniczne gwarantuje, że średnie próbek podążają za rozkładem normalnym niezależnie od kształtu oryginalnej populacji.
Rozkład dwumianowy modeluje próby sukces/porażka. Współczynniki klikalności, zdarzenia konwersji i kontrole jakości typu pass/fail podążają za wzorcami dwumianowymi. Dla n prób z prawdopodobieństwem sukcesu p, wartość oczekiwana wynosi np, a wariancja np(1-p).
Rozkład Poissona zlicza rzadkie zdarzenia w ustalonych przedziałach: wizyty na stronie na minutę, defekty na partię, połączenia na godzinę. Jego pojedynczy parametr λ reprezentuje zarówno średnią, jak i wariancję. Gdy zdarzenia występują niezależnie ze stałą średnią częstością, rozkład Poissona pasuje idealnie.
# 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)Te trzy rozkłady obsługują większość praktycznych scenariuszy. Rekruterzy często pytają, który rozkład pasuje do danego kontekstu biznesowego, więc warto ćwiczyć mapowanie rzeczywistych problemów na odpowiedni model.
Testowanie Hipotez: Ramy Stojące za Testami A/B
Testowanie hipotez zapewnia formalną strukturę podejmowania decyzji na podstawie danych. Proces rozpoczyna się od hipotezy zerowej (H₀) reprezentującej brak efektu lub różnicy oraz hipotezy alternatywnej (H₁) reprezentującej to, co eksperyment ma wykryć.
Typowa hipoteza zerowa testu A/B brzmi: "Nowa funkcja nie ma wpływu na współczynnik konwersji." Alternatywna twierdzi, że efekt istnieje. Test oblicza, jak prawdopodobne byłyby zaobserwowane dane, gdyby hipoteza zerowa była prawdziwa.
Wartość p kwantyfikuje to prawdopodobieństwo. Wartość p równa 0,03 oznacza, że istnieje 3% szans na zobaczenie wyników tak ekstremalnych, jeśli hipoteza zerowa jest prawdziwa. Gdy wartość p spada poniżej poziomu istotności (zwykle α = 0,05), hipoteza zerowa zostaje odrzucona.
# 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.0928Przy wartości p równej 0,0928 ten test nie odrzuca hipotezy zerowej przy α = 0,05. Zaobserwowana różnica może być przypadkową zmiennością. Potrzeba więcej danych lub większego rozmiaru efektu, aby osiągnąć istotność statystyczną.
Błędy Typu I i II: Kompromisy Badane przez Rekruterów
Testy statystyczne balansują dwa rodzaje błędów. Błąd typu I (fałszywie pozytywny) występuje przy odrzuceniu prawdziwej hipotezy zerowej. Błąd typu II (fałszywie negatywny) występuje przy nieodrzuceniu fałszywej hipotezy zerowej.
Poziom istotności α bezpośrednio kontroluje prawdopodobieństwo błędu typu I. Ustawienie α = 0,05 oznacza akceptację 5% szans na fałszywe pozytywy. Obniżenie α do 0,01 zmniejsza fałszywe pozytywy, ale zwiększa fałszywe negatywy.
Moc statystyczna (1 - β) mierzy prawdopodobieństwo prawidłowego odrzucenia fałszywej hipotezy zerowej. Moc zależy od wielkości efektu, wielkości próby i poziomu istotności. Standard branżowy to 80% mocy, co oznacza 20% szans na przeoczenie rzeczywistych efektów.
Kandydaci często mylą "brak istotnej różnicy" z "różnica nie istnieje." Nieodrzucenie hipotezy zerowej nie dowodzi, że jest ona prawdziwa. Test może nie mieć wystarczającej mocy, aby wykryć mały, ale rzeczywisty efekt.
Obliczenia wielkości próby równoważą te obawy. Dla testu A/B celującego w 2% wzrost konwersji (z 5% do 7%) przy 80% mocy i α = 0,05:
# sample_size_calculation.py
from statsmodels.stats.power import zt_ind_solve_power
import numpy as np
# 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 groupTesty o niedostatecznej mocy marnują zasoby, przeprowadzając eksperymenty, które nie są w stanie wykryć realistycznych efektów.
Przedziały Ufności: Kwantyfikacja Niepewności
95% przedział ufności oznacza: gdyby ten sam proces próbkowania został powtórzony wiele razy, 95% skonstruowanych przedziałów zawierałoby prawdziwy parametr. Przedziały ufności komunikują niepewność lepiej niż same estymacje punktowe.
Dla średnich ze znaną wariancją populacji przedział używa rozkładu z. Dla małych próbek lub nieznanej wariancji stosuje się rozkład t. Rozkład t ma cięższe ogony niż normalny, tworząc szersze przedziały uwzględniające dodatkową niepewność.
# 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]msWęższe przedziały wskazują na bardziej precyzyjne szacunki. Wielkość próby napędza precyzję: czterokrotne zwiększenie n zmniejsza margines błędu o połowę.
Gotowy na rozmowy o Data Science & ML?
Ćwicz z naszymi interaktywnymi symulatorami, flashcards i testami technicznymi.
Bayesian vs Frequentist: Pytania Rekrutacyjne o Filozofię Statystyczną
Rekruterzy czasami badają zrozumienie konkurencyjnych paradygmatów statystycznych. Statystyka frequentystyczna traktuje prawdopodobieństwo jako częstość długoterminową: parametry są stałe, a dane zmieniają się w kolejnych eksperymentach. Wartości p i przedziały ufności pochodzą z tej tradycji.
Statystyka bayesowska traktuje prawdopodobieństwo jako stopień przekonania: wcześniejsza wiedza łączy się z danymi, tworząc przekonania a posteriori. Podejście to pozwala uwzględniać wiedzę ekspercką i bezpośrednio tworzy stwierdzenia probabilistyczne o parametrach.
Testy A/B coraz częściej wykorzystują metody bayesowskie, ponieważ odpowiadają na pytanie, które faktycznie zadają interesariusze: "Jakie jest prawdopodobieństwo, że wariant B przewyższa wariant A?" zamiast "Jak zaskakujące są te dane, jeśli nie byłoby różnicy?"
# 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%Wyniki bayesowskie komunikują się bezpośrednio: "Istnieje 95% prawdopodobieństwo, że współczynnik konwersji wariantu testowego przekracza współczynnik kontrolny." Wyniki frequentystyczne wymagają ostrożniejszej interpretacji.
Popularne Pytania Rekrutacyjne o Wnioskowanie Statystyczne
Te pytania pojawiają się często podczas rozmów rekrutacyjnych na stanowiska data science w firmach technologicznych. Każde testuje konkretną koncepcję statystyczną.
"Wyjaśnij Centralne Twierdzenie Graniczne i dlaczego jest ważne."
CTG stwierdza, że średnie próbek z dowolnej populacji (o skończonej wariancji) zbliżają się do rozkładu normalnego wraz ze wzrostem wielkości próby. Ma to znaczenie, ponieważ założenia normalności w testach hipotez są spełnione dla dużych próbek niezależnie od rozkładu bazowego. Próbki 30+ zazwyczaj wystarczają.
"Czym jest p-hacking i jak mu zapobiegać?"
P-hacking zawyża wskaźniki fałszywych pozytywów przez testowanie wielu hipotez do momentu znalezienia istotności lub przez zatrzymywanie zbierania danych, gdy wyniki stają się istotne. Strategie zapobiegania: pre-rejestracja planów analizy, stosowanie korekt dla porównań wielokrotnych (Bonferroni, FDR) i ustalanie wielkości próby przed zbieraniem danych.
"Kiedy użyć testu t a kiedy testu Manna-Whitneya U?"
Test t zakłada normalnie rozłożone dane (lub duże próbki poprzez CTG) i porównuje średnie. Test Manna-Whitneya U to nieparametryczna alternatywa porównująca rozkłady bez założeń normalności. Należy używać Manna-Whitneya dla małych próbek z wyraźnie nienormalnymi danymi lub przy porównywaniu pomiarów porządkowych.
"Jak radzić sobie z porównaniami wielokrotnymi w testach A/B?"
Testowanie wielu wariantów zawyża błąd typu I. Przy 20 porównaniach przy α = 0,05 prawdopodobieństwo co najmniej jednego fałszywego pozytywa przekracza 60%. Korekta Bonferroniego dzieli α przez liczbę testów. Procedura Benjaminiego-Hochberga kontroluje wskaźnik fałszywych odkryć przy zachowaniu większej mocy niż Bonferroni.
Paradoks Simpsona: Ulubiony Temat Rekrutacyjny
Paradoks Simpsona występuje, gdy trendy w zagregowanych danych odwracają się na poziomie podgrup. Rekruterzy uwielbiają ten temat, ponieważ testuje rozumowanie przyczynowe, a nie tylko mechanikę statystyczną.
Klasyczny przykład: Szpital A ma wyższy ogólny wskaźnik śmiertelności niż Szpital B. Ale Szpital A ma niższą śmiertelność zarówno dla łagodnych, jak i ciężkich przypadków. Paradoks powstaje, ponieważ Szpital A leczy więcej ciężkich przypadków, które mają wyższą śmiertelność niezależnie od jakości szpitala.
# 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%Rozwiązanie wymaga zidentyfikowania zmiennej zakłócającej (ciężkość) i osobnej analizy podgrup. Analiza zagregowana wprowadza w błąd, gdy proporcje podgrup się różnią.
Koncepcje Statystyczne w Inżynierii Cech
Wiedza statystyczna bezpośrednio poprawia inżynierię cech. Zrozumienie rozkładów kieruje transformacjami; zrozumienie relacji kieruje tworzeniem cech.
Skośność mierzy asymetrię rozkładu. Dane skośne prawostronne (dochody, ceny) korzystają z transformacji logarytmicznych, które normalizują rozkład i poprawiają wydajność modelu. Dane skośne lewostronne używają transformacji kwadratowych lub wykładniczych.
Korelacja kwantyfikuje relacje liniowe. Korelacja Pearsona zakłada normalność i liniowość. Korelacja Spearmana obsługuje monotoniczne relacje nieliniowe. Silnie skorelowane cechy powodują współliniowość w modelach liniowych, więc jedna z nich jest zazwyczaj usuwana.
Wartości odstające wpływają na średnie i odchylenia standardowe nieproporcjonalnie. Statystyki odporne (mediana, IQR) są odporne na wpływ wartości odstających. Decyzja: usunąć, ograniczyć lub przekształcić wartości odstające w zależności od tego, czy reprezentują błędy, czy prawdziwe wartości ekstremalne.
Więcej informacji o stosowaniu tych koncepcji w modelach uczenia maszynowego można znaleźć w przewodniku rekrutacyjnym po inżynierii cech oraz w module ćwiczeniowym ze statystyki wnioskowej.
Zacznij ćwiczyć!
Sprawdź swoją wiedzę z naszymi symulatorami rozmów i testami technicznymi.
Co Wyróżnia Silnych Kandydatów w Pytaniach Statystycznych
Kompetencje statystyczne w rozmowach rekrutacyjnych data science wymagają więcej niż podręcznikowych definicji. Silni kandydaci demonstrują następujące umiejętności:
- Łączenie statystyki z wynikami biznesowymi: prezentowanie wyników testów A/B w kategoriach wpływu na przychody lub zaangażowanie użytkowników, a nie tylko wartości p
- Znajomość założeń: każdy test ma warunki (niezależność, normalność, równość wariancji) i kandydaci powinni określić, kiedy te warunki mogą zawieść
- Kwantyfikacja niepewności: szacunki punktowe bez przedziałów ufności lub wiarygodności pozostawiają interesariuszy w niepewności co do rzetelności
- Rozpoznawanie ograniczeń przyczynowości: dane obserwacyjne pokazują korelację, a kandydaci powinni artykułować, jaki projekt eksperymentalny ustaliłby przyczynowość
- Wybór odpowiedniego testu: dopasowanie typu danych (ciągłe vs kategoryczne), wielkości próby i pytania badawczego do odpowiedniej metody statystycznej
- Jasna komunikacja wyników: przekładanie ustaleń statystycznych na praktyczne rekomendacje, które nietechniczni interesariusze mogą zrozumieć i według nich działać
Znajdziesz błąd w Data Science & ML?
Prawdziwy fragment kodu, ukryty błąd, jedna próba dziennie. Bez konta, żeby spróbować.

Autor:
Anthony Fillion-MailletZałożyciel SharpSkill
Programista fullstack od ponad 10 lat. Prowadzi SharpSkill i odpowiada za wszystko, co się tu ukazuje.
Zaktualizowano 21 sierpnia 2026
Udostępnij
Powiązane artykuły

Wizja Komputerowa z PyTorch w 2026: CNN, Transfer Learning i Pytania Rekrutacyjne
Kompleksowy przewodnik po wizji komputerowej z wykorzystaniem PyTorch. Poznaj sieci konwolucyjne CNN, transfer learning oraz przygotuj się do rozmów kwalifikacyjnych z tego zakresu.

LangChain dla Data Scientists w 2026: LLM, Agenci i Pytania Rekrutacyjne
Kompletny tutorial LangChain dla analityków danych. Poznaj LCEL, wzorce RAG, agentów ReAct oraz najczęstsze pytania na rozmowach kwalifikacyjnych z praktycznymi przykładami kodu Python.

MLOps w 2026: MLflow, Model Registry i pytania na rozmowach technicznych
Pytania rekrutacyjne o MLOps obejmujące cykl życia ML, śledzenie eksperymentów w MLflow, promocję w model registry, wzorce wdrożeń, monitorowanie dryfu i projektowanie systemów na 2026 rok, wraz z kodem w Pythonie i odpowiedziami.