# 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. - Published: 2026-08-21 - Updated: 2026-08-21 - Author: Anthony Fillion-Maillet - Reading time: 5 min --- 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ą. > **Czego Szukają Rekruterzy** > > 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. ```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) ``` 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. ```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 ``` Przy 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. > **Pułapka Rekrutacyjna** > > 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: ```python # 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 group ``` Testy 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ść. ```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 ``` Węż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ę. ## 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?" ```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% ``` 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](https://en.wikipedia.org/wiki/Mann%E2%80%93Whitney_U_test) 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](https://en.wikipedia.org/wiki/Simpson%27s_paradox) 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. ```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% ``` 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](/blog/data-science/feature-engineering-machine-learning-techniques-interview-2026) oraz w [module ćwiczeniowym ze statystyki wnioskowej](/technologies/data-science/interview-questions/statistics-inferential). ## 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ć --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/pl/blog/data-science/statistics-data-science-probability-hypothesis-testing-interview-2026