← Назад к вопросам

Как связан размер выборки и величина стандарта ошибки среднего?

2.0 Middle🔥 201 комментариев
#A/B-тестирование#Статистика и теория вероятностей

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Размер выборки и стандартная ошибка среднего

Связь между размером выборки и стандартной ошибкой среднего (SEM) — это одна из самых важных концепций в статистике. Понимание этой зависимости критично для планирования исследований и интерпретации результатов в работе Data Analyst.

Математическая формула

Стандартная ошибка среднего рассчитывается по формуле:

SE(x̄) = σ / √n

Где:

  • σ (сигма) — стандартное отклонение генеральной совокупности
  • n — размер выборки
  • √n — квадратный корень из размера выборки

Ключевое наблюдение: стандартная ошибка обратно пропорциональна корню из размера выборки.

Обратная пропорциональность к корню из n

Это означает:

import numpy as np
import matplotlib.pyplot as plt

# Стандартное отклонение генеральной совокупности
sigma = 20

# Размеры выборок
sample_sizes = np.array([10, 25, 50, 100, 200, 400, 1000])

# Рассчитываем стандартную ошибку для каждого размера
standard_errors = sigma / np.sqrt(sample_sizes)

print("Зависимость SEM от размера выборки:")
for n, se in zip(sample_sizes, standard_errors):
    print(f"n = {n:4d} → SE = {se:.2f}")

Вывод:

n =   10 → SE = 6.32
n =   25 → SE = 4.00
n =   50 → SE = 2.83
n =  100 → SE = 2.00
n =  200 → SE = 1.41
n =  400 → SE = 1.00
n = 1000 → SE = 0.63

Вывод: Чтобы уменьшить ошибку в 2 раза, нужно увеличить выборку в 4 раза (так как √4 = 2).

Закон убывающей отдачи

Основная практическая проблема:

  • От n=10 к n=100: SE падает с 6.32 до 2.00 (в 3.16 раз)
  • От n=100 к n=400: SE падает с 2.00 до 1.00 (в 2 раза)
  • От n=400 к n=1600: SE падает с 1.00 до 0.50 (в 2 раза)

Каждое увеличение точности требует всё больше данных.

Доверительный интервал и размер выборки

Доверительный интервал (ДИ) для среднего:

ДИ = x̄ ± z* × SE

Где z* — критическое значение (обычно 1.96 для 95% уровня).

from scipy import stats

def calculate_ci_width(sample_size, sigma=20, confidence=0.95):
    """Рассчитать ширину доверительного интервала"""
    se = sigma / np.sqrt(sample_size)
    z_critical = stats.norm.ppf((1 + confidence) / 2)
    ci_width = 2 * z_critical * se
    return ci_width, se

print("Ширина 95% ДИ от размера выборки:")
for n in [25, 50, 100, 200, 400]:
    width, se = calculate_ci_width(n)
    print(f"n = {n:3d} → SE = {se:.2f} → ДИ±: {width:.2f}")

Результат:

n =  25 → SE = 4.00 → ДИ±: 7.84
n =  50 → SE = 2.83 → ДИ±: 5.55
n = 100 → SE = 2.00 → ДИ±: 3.92
n = 200 → SE = 1.41 → ДИ±: 2.77
n = 400 → SE = 1.00 → ДИ±: 1.96

Практические рекомендации для Data Analyst

1. Определение требуемого размера выборки

Чтобы достичь нужной точности, используйте:

def required_sample_size(margin_of_error, sigma=20, confidence=0.95):
    """Рассчитать необходимый размер выборки"""
    z_critical = stats.norm.ppf((1 + confidence) / 2)
    n = (z_critical * sigma / margin_of_error) ** 2
    return int(np.ceil(n))

# Если нужна ошибка ±2
n_needed = required_sample_size(margin_of_error=2)
print(f"Для ошибки ±2 нужна выборка из {n_needed} объектов")

Для ошибки ±2 при σ=20 потребуется n ≈ 385.

2. A/B тестирование

В тестировании конверсии размер выборки определяет:

  • Вероятность обнаружить реальный эффект (мощность теста)
  • Вероятность ложноположительного результата (alpha)
  • Минимальный размер эффекта, который можно обнаружить
from scipy.stats import binom

# Две выборки по 1000 посещений каждая
conversion_a = 0.10  # 10%
conversion_b = 0.12  # 12%
n = 1000

# С большой выборкой разница в 2% будет значима
# С малой выборкой (n=100) эту разницу можно не заметить

3. Время отклика к размеру выборки

Для метрик с высокой вариабельностью нужны большие выборки:

# Низкая вариабельность (конверсия)
sigma_conversion = 0.03
n_conversion = required_sample_size(margin_of_error=0.02, sigma=sigma_conversion)
print(f"Для конверсии: n = {n_conversion}")

# Высокая вариабельность (средняя покупка, $ потрачено)
sigma_spending = 50
n_spending = required_sample_size(margin_of_error=5, sigma=sigma_spending)
print(f"Для среднего расхода: n = {n_spending}")

Визуализация связи

import matplotlib.pyplot as plt

sample_sizes = np.arange(10, 1001, 10)
ses = 20 / np.sqrt(sample_sizes)

plt.figure(figsize=(10, 6))
plt.plot(sample_sizes, ses, linewidth=2)
plt.xlabel("Размер выборки (n)")
plt.ylabel("Стандартная ошибка среднего")
plt.title("Зависимость SE от размера выборки")
plt.grid(True, alpha=0.3)
plt.show()

График показывает гиперболическую зависимость: крутой спад в начале, затем выравнивание.

Ключевые выводы

  1. SE пропорциональна 1/√n — это неизменный закон
  2. Увеличение выборки в 4 раза уменьшает SE в 2 раза
  3. После n=400 каждое удвоение выборки дает только ~40% улучшение точности
  4. Для практики обычно хватает n=30-100 для нормальных распределений
  5. Доверительный интервал уже→выборка больше, что дорого в сборе данных

Для Data Analyst: всегда проверяйте расчётный размер выборки перед началом исследования, чтобы избежать траты ресурсов на неоправданно большие выборки или получения нерепрезентативных данных из-за выборок, которые слишком малы.

Как связан размер выборки и величина стандарта ошибки среднего? | PrepBro