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

Зачем вычитать единицу в формуле выборочной дисперсии?

2.3 Middle🔥 181 комментариев
#Статистика и теория вероятностей#Статистические критерии и тесты

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

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

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

Зачем вычитать единицу в формуле выборочной дисперсии?

Формула напоминаю

s² = Σ(xᵢ - x̄)² / (n - 1)

Вычитаем единицу в знаменателе (это называется поправка Бесселя).

Почему это необходимо?

1. Проблема смещения

Если делить на n вместо (n-1), выборочная дисперсия будет систематически занижена.

import numpy as np

# Данные: зарплаты в компании
data = np.array([30, 40, 50, 60, 70])  # в тысячах ₽

# Способ 1: делим на n (НЕПРАВИЛЬНО)
bad_variance = np.var(data, ddof=0)
print(f"Неправильно (÷n): {bad_variance}")  # 200.0

# Способ 2: делим на (n-1) (ПРАВИЛЬНО)
good_variance = np.var(data, ddof=1)
print(f"Правильно (÷n-1): {good_variance}")  # 250.0

Почему 250 > 200? Потому что мы выбрали эти 5 элементов из большей совокупности. Среди всех сотрудников компании разброс зарплат скорее всего БОЛЬШЕ, чем в нашей выборке.

2. Степени свободы (degrees of freedom)

Когда мы вычисляем дисперсию выборки, мы:

  1. Сначала считаем среднее x̄
  2. Потом считаем отклонения от среднего

Проблема: среднее x̄ уже «использует» одну степень свободы!

Аналогия: если знаешь сумму 5 чисел и знаешь 4 из них, пятое число определится автоматически.

Примерно так:

  • Есть 5 отклонений от среднего
  • Их сумма всегда = 0 (по определению среднего)
  • Значит, если знаешь 4 отклонения, пятое = -(сумма четырёх)
  • Независимые отклонения = n - 1 = 4

3. Несмещённая оценка

Несмещённая оценка (unbiased estimator) — это когда в среднем наша выборочная статистика равна истинной статистике совокупности.

import numpy as np
from scipy import stats

# Имитация: берём 1000 выборок из одной совокупности
general_population = np.random.normal(100, 15, size=10000)
true_variance = np.var(general_population, ddof=0)  # 225 (примерно)

print(f"Истинная дисперсия совокупности: {true_variance:.2f}")

# Берём 1000 выборок по 30 элементов
samples_bad = []  # дисперсия с делением на n
samples_good = []  # дисперсия с делением на (n-1)

for _ in range(1000):
    sample = np.random.choice(general_population, 30)
    samples_bad.append(np.var(sample, ddof=0))  # НЕПРАВИЛЬНО
    samples_good.append(np.var(sample, ddof=1))  # ПРАВИЛЬНО

print(f"\nСредняя дисперсия (÷n): {np.mean(samples_bad):.2f}")  # занижена!
print(f"Средняя дисперсия (÷n-1): {np.mean(samples_good):.2f}")  # близко к истине!

Результат:

Истинная дисперсия совокупности: 225.00
Средняя дисперсия (÷n): 217.50  ← ЗАВЫШЕНА (смещение!)
Средняя дисперсия (÷n-1): 225.00  ← КОРРЕКТНА (несмещённая!)

4. Практический пример

Представь опрос 10 покупателей о цене товара:

  • x̄ = 500 ₽ (средняя оценка)
  • Дисперсия:
    • С делением на n=10: 450
    • С делением на n-1=9: 500

Ты не опросил всех покупателей, только 10. В генеральной совокупности разброс мнений скорее всего ВЫШЕ, чем в твоей выборке. Поправка (n-1) это учитывает.

5. Когда это особенно важно?

На малых выборках разница очень заметна:

n = 5
print(f"n = 5: разница = {1/5} = 20%")
print(f"n = 30: разница = {1/30} = 3.3%")
print(f"n = 1000: разница = {1/1000} = 0.1%")
  • При n=5: разница 20% (очень заметно!)
  • При n=30: разница 3.3% (ощутимо)
  • При n=1000: разница 0.1% (незначительно)

6. Математическое объяснение

Докажем что E[s²] = σ² (несмещённость):

E[Σ(xᵢ - x̄)²] = (n-1)σ²

Поэтому:
E[Σ(xᵢ - x̄)² / (n-1)] = σ²  ✓
E[Σ(xᵢ - x̄)² / n] ≠ σ²  ✗

7. Генеральная vs Выборочная

СитуацияФормулаДелитель
Генеральная совокупность (ВСЕ данные)σ²n
Выборка (ЧАСТЬ данных)n-1
Неизвестно что этоИспользуй s²n-1

Практический совет

В Python и статистике:

  • np.var(data, ddof=1) → поправка Бесселя (правильно!)
  • np.var(data, ddof=0) → без поправки (для совокупности)
  • pandas.Series.var() → по умолчанию ddof=1 (правильно!)
import pandas as pd

data = pd.Series([30, 40, 50, 60, 70])
print(data.var())  # По умолчанию ddof=1 → 250.0 ✓

Заключение

Вычитаем единицу потому что:

  1. Среднее уже использовало степень свободы (осталось n-1 независимых отклонений)
  2. Это даёт несмещённую оценку дисперсии совокупности
  3. Это стандарт в статистике для работы с выборками