Статистика для Data Science у 2026: Ймовірність, Перевірка Гіпотез та Питання на Співбесідах

Повний посібник зі статистики для data science: розподіли ймовірностей, перевірка гіпотез, довірчі інтервали та найпоширеніші питання на співбесідах з практичними прикладами на Python.

Статистика для Data Science у 2026: Ймовірність, Перевірка Гіпотез та Питання на Співбесідах

Статистика формує математичний фундамент кожної ролі в data science. Інтерв'юери в компаніях Google, Meta та Netflix перевіряють статистичне мислення, оскільки воно відрізняє кандидатів, які вміють будувати моделі, від тих, хто розуміє, чому ці моделі працюють.

Що Шукають Інтерв'юери

Статистичні питання оцінюють три здібності: перетворення бізнес-проблем у статистичні рамки, вибір правильного тесту для даних та інтерпретацію результатів без надмірних висновків.

Розподіли Ймовірностей, Які Повинен Знати Кожен Data Scientist

Розподіли ймовірностей описують, як точки даних розподіляються по можливих значеннях. Інтерв'юери очікують вільного володіння цими розподілами, оскільки вони лежать в основі вибірки, A/B тестів та припущень моделей.

Нормальний розподіл (Гауса) зустрічається скрізь: похибки вимірювань, зріст, результати тестів. Його дзвоноподібна крива центрується на середньому, з 68% даних в межах одного стандартного відхилення та 95% в межах двох. Коли розмір вибірки перевищує 30, Центральна Гранична Теорема гарантує, що середні вибірок слідують нормальному розподілу незалежно від форми початкової сукупності.

Біноміальний розподіл моделює випробування успіх/невдача. Показники клікабельності, події конверсії та перевірки якості pass/fail слідують біноміальним патернам. Для n випробувань з ймовірністю успіху p, математичне сподівання дорівнює np, а дисперсія — np(1-p).

Розподіл Пуассона підраховує рідкісні події у фіксованих інтервалах: відвідування сайту за хвилину, дефекти на партію, дзвінки на годину. Його єдиний параметр λ представляє як середнє, так і дисперсію. Коли події відбуваються незалежно із постійною середньою частотою, розподіл Пуассона підходить ідеально.

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)

Ці три розподіли охоплюють більшість практичних сценаріїв. Інтерв'юери часто запитують, який розподіл підходить до конкретного бізнес-контексту, тому важливо практикувати зіставлення реальних проблем із відповідною моделлю.

Перевірка Гіпотез: Рамки для A/B Тестів

Перевірка гіпотез забезпечує формальну структуру для прийняття рішень на основі даних. Процес починається з нульової гіпотези (H₀), яка представляє відсутність ефекту або різниці, та альтернативної гіпотези (H₁), яка представляє те, що експеримент має виявити.

Типова нульова гіпотеза A/B тесту стверджує: "Нова функція не впливає на коефіцієнт конверсії." Альтернативна стверджує, що ефект існує. Тест обчислює, наскільки ймовірними були б спостережувані дані, якби нульова гіпотеза була істинною.

p-значення кількісно визначає цю ймовірність. p-значення 0,03 означає, що є 3% шанс побачити такі екстремальні результати, якщо нульова гіпотеза вірна. Коли p-значення падає нижче рівня значущості (зазвичай α = 0,05), нульова гіпотеза відхиляється.

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

При p-значенні 0,0928 цей тест не відхиляє нульову гіпотезу при α = 0,05. Спостережувана різниця може бути випадковою варіацією. Для досягнення статистичної значущості потрібно більше даних або більший розмір ефекту.

Помилки Типу I та II: Компроміси, Які Досліджують Інтерв'юери

Статистичні тести балансують два типи помилок. Помилка типу I (хибнопозитивна) виникає при відхиленні істинної нульової гіпотези. Помилка типу II (хибнонегативна) виникає при невідхиленні хибної нульової гіпотези.

Рівень значущості α безпосередньо контролює ймовірність помилки типу I. Встановлення α = 0,05 означає прийняття 5% шансу хибнопозитивних результатів. Зниження α до 0,01 зменшує хибнопозитивні, але збільшує хибнонегативні результати.

Статистична потужність (1 - β) вимірює ймовірність правильного відхилення хибної нульової гіпотези. Потужність залежить від розміру ефекту, розміру вибірки та рівня значущості. Галузевий стандарт — 80% потужності, що означає 20% шанс пропустити реальні ефекти.

Пастка на Співбесіді

Кандидати часто плутають "немає значущої різниці" з "різниці не існує." Невідхилення нульової гіпотези не доводить, що вона істинна. Тест може не мати достатньої потужності для виявлення малого, але реального ефекту.

Розрахунки розміру вибірки балансують ці занепокоєння. Для A/B тесту, що має на меті 2% зростання конверсії (з 5% до 7%) при 80% потужності та α = 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

Тести з недостатньою потужністю марнують ресурси, проводячи експерименти, які не здатні виявити реалістичні ефекти.

Довірчі Інтервали: Кількісне Визначення Невизначеності

95% довірчий інтервал означає: якби той самий процес вибірки повторювався багато разів, 95% побудованих інтервалів містили б істинний параметр. Довірчі інтервали передають невизначеність краще, ніж самі точкові оцінки.

Для середніх із відомою дисперсією сукупності інтервал використовує z-розподіл. Для малих вибірок або невідомої дисперсії застосовується t-розподіл. t-розподіл має важчі хвости, ніж нормальний, створюючи ширші інтервали, що враховують додаткову невизначеність.

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

Вужчі інтервали вказують на точніші оцінки. Розмір вибірки визначає точність: збільшення n вчетверо зменшує похибку вдвічі.

Готовий до співбесід з Data Science & ML?

Практикуйся з нашими інтерактивними симуляторами, flashcards та технічними тестами.

Bayesian vs Frequentist: Питання на Співбесідах про Статистичну Філософію

Інтерв'юери іноді досліджують розуміння конкуруючих статистичних парадигм. Частотна статистика розглядає ймовірність як довгострокову частоту: параметри є фіксованими, а дані змінюються в повторних експериментах. p-значення та довірчі інтервали походять з цієї традиції.

Байєсівська статистика розглядає ймовірність як ступінь переконання: попередні знання поєднуються з даними для формування апостеріорних переконань. Цей підхід дозволяє включати експертні знання та безпосередньо створює імовірнісні твердження про параметри.

A/B тести все частіше використовують байєсівські методи, оскільки вони відповідають на питання, яке насправді ставлять зацікавлені сторони: "Яка ймовірність, що варіант B перевершує варіант A?" замість "Наскільки несподіваними є ці дані, якби різниці не було?"

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%

Байєсівські результати комунікують безпосередньо: "Є 95% ймовірність, що коефіцієнт конверсії тестового варіанту перевищує контрольний." Частотні результати потребують обережнішої інтерпретації.

Поширені Питання на Співбесідах про Статистичний Висновок

Ці питання часто з'являються на співбесідах з data science в технологічних компаніях. Кожне тестує конкретну статистичну концепцію.

"Поясніть Центральну Граничну Теорему та чому вона важлива."

ЦГТ стверджує, що середні вибірок з будь-якої сукупності (зі скінченною дисперсією) наближаються до нормального розподілу зі збільшенням розміру вибірки. Це важливо, тому що припущення нормальності в тестах гіпотез виконуються для великих вибірок незалежно від базового розподілу. Вибірки 30+ зазвичай достатні.

"Що таке p-hacking і як йому запобігти?"

p-hacking завищує показники хибнопозитивних результатів шляхом тестування багатьох гіпотез до знаходження значущості або зупинки збору даних, коли результати стають значущими. Стратегії запобігання: попередня реєстрація планів аналізу, застосування поправок на множинні порівняння (Бонферроні, FDR) та визначення розмірів вибірки до збору даних.

"Коли використовувати t-тест, а коли тест Манна-Вітні U?"

t-тест передбачає нормально розподілені дані (або великі вибірки через ЦГТ) і порівнює середні. Тест Манна-Вітні U — це непараметрична альтернатива, що порівнює розподіли без припущень нормальності. Слід використовувати Манна-Вітні для малих вибірок з явно ненормальними даними або при порівнянні порядкових вимірювань.

"Як обробляти множинні порівняння в A/B тестуванні?"

Тестування багатьох варіантів завищує помилку типу I. При 20 порівняннях при α = 0,05 ймовірність принаймні одного хибнопозитивного результату перевищує 60%. Поправка Бонферроні ділить α на кількість тестів. Процедура Бенджаміні-Хохберга контролює частку хибних відкриттів, зберігаючи більшу потужність, ніж Бонферроні.

Парадокс Сімпсона: Улюблена Тема Співбесід

Парадокс Сімпсона виникає, коли тренди в агрегованих даних змінюються на рівні підгруп. Інтерв'юери люблять цю тему, оскільки вона тестує причинно-наслідкове мислення, а не лише статистичну механіку.

Класичний приклад: Лікарня A має вищий загальний показник смертності, ніж Лікарня B. Але Лікарня A має нижчу смертність як для легких, так і для важких випадків. Парадокс виникає тому, що Лікарня A лікує більше важких випадків, які мають вищу смертність незалежно від якості лікарні.

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%

Рішення вимагає ідентифікації конфаундера (тяжкість) та окремого аналізу підгруп. Агрегований аналіз вводить в оману, коли пропорції підгруп відрізняються.

Статистичні Концепції для Інженерії Ознак

Статистичні знання безпосередньо покращують інженерію ознак. Розуміння розподілів керує трансформаціями; розуміння взаємозв'язків керує створенням ознак.

Асиметрія вимірює асиметрію розподілу. Праворуч скошені дані (дохід, ціни) виграють від логарифмічних трансформацій, які нормалізують розподіл та покращують продуктивність моделі. Ліворуч скошені дані використовують квадратичні або експоненціальні трансформації.

Кореляція кількісно визначає лінійні залежності. Кореляція Пірсона передбачає нормальність і лінійність. Кореляція Спірмена обробляє монотонні нелінійні залежності. Сильно корельовані ознаки спричиняють мультиколінеарність у лінійних моделях, тому одну зазвичай видаляють.

Викиди непропорційно впливають на середні та стандартні відхилення. Робастні статистики (медіана, IQR) стійкі до впливу викидів. Рішення: видалити, обмежити або трансформувати викиди залежно від того, чи представляють вони помилки чи справжні екстремальні значення.

Більше інформації про застосування цих концепцій до моделей машинного навчання можна знайти в посібнику з інженерії ознак для співбесід та в модулі практики з інференційної статистики.

Починай практикувати!

Перевір свої знання з нашими симуляторами співбесід та технічними тестами.

Що Вирізняє Сильних Кандидатів у Статистичних Питаннях

Статистична компетентність на співбесідах з data science вимагає більше, ніж підручникових визначень. Сильні кандидати демонструють такі здібності:

  • Зв'язування статистики з бізнес-результатами: представлення результатів A/B тестів з точки зору впливу на дохід або залучення користувачів, а не лише p-значень
  • Знання припущень: кожен тест має умови (незалежність, нормальність, рівність дисперсій), і кандидати повинні вказати, коли ці умови можуть не виконуватися
  • Кількісне визначення невизначеності: точкові оцінки без довірчих або ймовірнісних інтервалів залишають зацікавлених осіб у здогадках щодо надійності
  • Визнання обмежень причинності: спостережувані дані показують кореляцію, і кандидати повинні сформулювати, який експериментальний дизайн встановить причинність
  • Вибір правильного тесту: відповідність типу даних (неперервні vs категоріальні), розміру вибірки та дослідницького питання до відповідного статистичного методу
  • Чітка комунікація результатів: переведення статистичних висновків у дієві рекомендації, які нетехнічні зацікавлені сторони можуть зрозуміти та діяти відповідно
Щоденний виклик

Чи знайдеш ти помилку в Data Science & ML?

Справжній фрагмент коду, прихована помилка, одна спроба на день. Щоб спробувати, акаунт не потрібен.

Anthony Fillion-Maillet

Автор:

Anthony Fillion-Maillet

Засновник SharpSkill

Fullstack-розробник понад 10 років. Керує SharpSkill і відповідає за все, що тут публікується.

Оновлено 21 серпня 2026 р.

Поділитися

Пов'язані статті