Как связан размер выборки и величина стандарта ошибки среднего?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Размер выборки и стандартная ошибка среднего
Связь между размером выборки и стандартной ошибкой среднего (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()
График показывает гиперболическую зависимость: крутой спад в начале, затем выравнивание.
Ключевые выводы
- SE пропорциональна 1/√n — это неизменный закон
- Увеличение выборки в 4 раза уменьшает SE в 2 раза
- После n=400 каждое удвоение выборки дает только ~40% улучшение точности
- Для практики обычно хватает n=30-100 для нормальных распределений
- Доверительный интервал уже→выборка больше, что дорого в сборе данных
Для Data Analyst: всегда проверяйте расчётный размер выборки перед началом исследования, чтобы избежать траты ресурсов на неоправданно большие выборки или получения нерепрезентативных данных из-за выборок, которые слишком малы.