Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Уровень значимости (Significance Level, α)
Уровень значимости — это вероятность совершить ошибку типа I (отклонить верную нулевую гипотезу), когда вы проводите статистический тест. Обычно устанавливается до проведения теста.
Определение и интерпретация
α (alpha) — вероятность ложно отклонить H₀
H₀: нулевая гипотеза (предположение)
H₁: альтернативная гипотеза
Если p-value < α → отклоняем H₀
Если p-value ≥ α → не отклоняем H₀
Типичные значения
α = 0.05 → 95% доверительный уровень (standard)
α = 0.01 → 99% доверительный уровень (более строгий)
α = 0.10 → 90% доверительный уровень (менее строгий)
α = 0.001 → 99.9% доверительный уровень (очень строгий)
Ошибки типа I и II
Таблица:
│ H₀ истинна │ H₀ ложна
───────────┼────────────┼─────────
Отклоняем │ Type I (α) │ ✓ Correct
не отклон. │ ✓ Correct │ Type II (β)
Тип I: ложное срабатывание (false positive)
Тип II: ложное негативное (false negative)
import numpy as np
from scipy import stats
# Пример: тест на эффект лекарства
# H₀: лекарство не работает
# H₁: лекарство работает
treatment = np.array([7.5, 8.2, 6.9, 8.5, 7.8])
control = np.array([5.2, 5.8, 6.1, 5.9, 6.2])
# t-test
t_stat, p_value = stats.ttest_ind(treatment, control)
alpha = 0.05
if p_value < alpha:
print(f"p-value={p_value:.4f} < {alpha}")
print("Отклоняем H₀: лекарство работает ✓")
else:
print(f"p-value={p_value:.4f} ≥ {alpha}")
print("Не отклоняем H₀: нет доказательства эффекта")
P-value vs α
# p-value: вероятность увидеть такие или более экстремальные данные,
# если H₀ истинна
# Принцип:
if p_value < alpha:
print("Результат статистически значим")
print("Отклоняем H₀")
else:
print("Результат не статистически значим")
print("Не отклоняем H₀")
# Пример
p_value = 0.03
alpha = 0.05
# p_value < alpha → значим ✓
p_value = 0.07
alpha = 0.05
# p_value ≥ alpha → не значим ✗
Доверительный интервал
Доверительный уровень = 1 - α
α = 0.05 → 95% CI
α = 0.01 → 99% CI
from scipy import stats
data = np.array([1.2, 1.5, 1.3, 1.4, 1.6])
mean = np.mean(data) # 1.4
std_err = stats.sem(data) # стандартная ошибка
alpha = 0.05
ci = stats.t.interval(1-alpha, len(data)-1, loc=mean, scale=std_err)
print(f"95% CI: {ci}")
# 95% CI: (1.15, 1.65)
# Вероятность, что истинное значение в [1.15, 1.65] = 95%
Практические примеры
1. A/B тест
from scipy.stats import chi2_contingency
# A/B тест: выбор цвета кнопки
# H₀: цвет не влияет на клики
# H₁: цвет влияет
data = np.array([
[150, 100], # красная кнопка: клики, не-клики
[130, 120] # синяя кнопка
])
chi2, p_value, dof, expected = chi2_contingency(data)
alpha = 0.05
if p_value < alpha:
print(f"Цвет значимо влияет (p={p_value:.4f})")
else:
print(f"Нет значимого эффекта (p={p_value:.4f})")
2. Проверка нормальности
from scipy.stats import shapiro
data = np.random.normal(100, 15, 50)
stat, p_value = shapiro(data)
alpha = 0.05
if p_value < alpha:
print("Данные не нормальны")
else:
print("Данные нормально распределены")
3. Корреляция
from scipy.stats import pearsonr
X = np.array([1, 2, 3, 4, 5])
Y = np.array([2, 4, 5, 4, 6])
corr, p_value = pearsonr(X, Y)
alpha = 0.05
if p_value < alpha:
print(f"Корреляция {corr:.3f} статистически значима")
else:
print(f"Корреляция не значима (p={p_value:.4f})")
Выбор уровня значимости
Добро пожаловать к выбору α!
α = 0.05 (95%)
→ стандартный выбор
→ баланс между Type I и Type II
→ используй для большинства тестов
α = 0.01 (99%)
→ когда Type I ошибка очень дорогая
→ медицина, авиация (нужна высокая уверенность)
→ требует больший размер выборки
α = 0.10 (90%)
→ exploratory анализ
→ когда данных мало
→ выше риск Type I
Multiple testing problem
# Если проводишь много тестов, вероятность Type I растёт!
# Например, 20 тестов с α=0.05:
n_tests = 20
alpha_nominal = 0.05
alpha_family = 1 - (1 - alpha_nominal)**n_tests # ~64%!
print(f"Семейный α: {alpha_family:.2%}")
# Вероятность хотя бы одна ошибка Type I = 64%!
# Решение: Bonferroni correction
alpha_bonferroni = 0.05 / n_tests # 0.0025
print(f"Bonferroni α: {alpha_bonferroni:.4f}")
Мощность теста (Power)
Мощность = 1 - β
β = вероятность ошибки типа II
Цель: высокая мощность (обычно > 80%)
from scipy.stats import ttest_ind_from_stats
# Анализ мощности
# Какой размер выборки нужен?
# Какая мощность при текущем n?
from statsmodels.stats.power import tt_solve_power
required_n = tt_solve_power(
effect_size=0.5, # Cohen's d
alpha=0.05,
power=0.8,
alternative='two-sided'
)
print(f"Нужно n={required_n:.0f} образцов на группу")
Резюме
Уровень значимости (α):
- Вероятность ошибки типа I (false positive)
- Стандартное значение: α = 0.05
- p-value < α → результат статистически значим
- Связана с доверительным интервалом: CI = 1 - α
- Выбор зависит от стоимости ошибок и области