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

Сравнивает ли Манна-Уитни медианы?

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

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

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

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

Mann-Whitney U Test: что он на самом деле сравнивает?

Короткий ответ: НЕ совсем медианы

Это частая ошибка даже опытных аналитиков. Часто говорят: "Mann-Whitney сравнивает медианы", но это неправильно (или точнее, неполно).

Что на самом деле сравнивает Mann-Whitney U

Нулевая гипотеза: Две выборки имеют одинаковое распределение.

Более точно: Тест проверяет, является ли вероятность того, что случайное значение из первой выборки больше, чем из второй, равна 50%.

Это называется "stochastic dominance" или "probabilistic ordering".

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

H0: P(X > Y) = 0.5
H1: P(X > Y) ≠ 0.5

где X — случайное значение из первой выборки
     Y — случайное значение из второй выборки

Когда Mann-Whitney сравнивает медианы?

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

Если форма распределения одинакова, но сдвинута, тогда:

  • Различие в медианах ↔ различие в распределениях

Пример: две нормальные кривые, сдвинутые вправо/влево

Выборка 1: N(mean=50, std=10)
Выборка 2: N(mean=60, std=10)
↓
Медиана 1 = 50, Медиана 2 = 60
↓
Mann-Whitney скажет: "Выборки отличаются"
И это действительно медианы отличаются

Но часто форма НЕ одинакова

Пример 1: Разные формы распределений

Выборка 1: [1, 2, 3, 4, 5]          (равномерное)
Выборка 2: [1, 1, 1, 1, 100]        (асимметричное)

Медиана 1 = 3
Медиана 2 = 1

Mann-Whitney U вывод: выборки отличаются
Причина отличия: разные распределения, не обязательно медианы

Пример 2: Почти одинаковые медианы, но Mann-Whitney найдет разницу

Выборка 1: [5, 6, 7, 8]        медиана = 6.5
Выборка 2: [5, 6, 7, 15]       медиана = 6.5

Медианы одинаковые!
Но Mann-Whitney скажет: "Выборки отличаются"
Причина: хвосты распределений разные (outlier в выборке 2)

Python: демонстрация

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt

# Пример 1: одинаковые медианы, но разные формы
group1 = np.array([5, 6, 7, 8])
group2 = np.array([5, 6, 7, 15])  # outlier

print("Медиана группы 1:", np.median(group1))      # 6.5
print("Медиана группы 2:", np.median(group2))      # 6.5
print("Медианы равны!")

# Mann-Whitney тест
u_stat, p_value = stats.mannwhitneyu(group1, group2)
print(f"\nMann-Whitney U: {u_stat}")
print(f"p-value: {p_value:.4f}")

if p_value < 0.05:
    print("Результат: выборки отличаются!")
    print("\nВывод: несмотря на равные медианы, выборки статистически разные")
else:
    print("Результат: выборки не отличаются")

# Визуализируем
plt.figure(figsize=(10, 4))

plt.subplot(1, 2, 1)
plt.hist([group1, group2], label=['Group 1', 'Group 2'], alpha=0.6)
plt.axvline(np.median(group1), color='blue', linestyle='--', label='Median 1')
plt.axvline(np.median(group2), color='orange', linestyle='--', label='Median 2')
plt.legend()
plt.title('Распределения (медианы совпадают)')

plt.subplot(1, 2, 2)
plt.boxplot([group1, group2], labels=['Group 1', 'Group 2'])
plt.title('Box plot (видно различие в разбросе)')

plt.tight_layout()
plt.show()

Что именно тестирует Mann-Whitney математически?

Тест основан на ranks (рангах):

  1. Объединяем обе выборки
  2. Присваиваем ранги от меньшего к большему
  3. Суммируем ранги для каждой группы
  4. Если одна группа имеет значительно большие ранги, выборки отличаются
# Пример расчета рангов
group1 = [10, 20, 30]
group2 = [15, 25, 35]

combined = [10, 15, 20, 25, 30, 35]  # объединенные и отсортированные
ranks =    [1,  2,  3,  4,  5,  6]    # присвоенные ранги

# Ранги для группы 1: 1, 3, 5 → сумма = 9
# Ранги для группы 2: 2, 4, 6 → сумма = 12

U_stat = len(group2) * len(group1) + (len(group1) * (len(group1) + 1)) / 2 - 9
# U_stat = 3*3 + (3*4)/2 - 9 = 9 + 6 - 9 = 6

Важное уточнение для интерпретации

Если p-value < 0.05:

❌ НЕ говори: "Медианы отличаются" ✅ Говори: "Выборки имеют статистически значимо различные распределения"

Или более скромно: "Нет оснований полагать, что выборки из одного распределения"

Когда использовать Mann-Whitney?

Используй Mann-Whitney когда:

  • Данные не нормально распределены
  • Есть outliers
  • Размер выборки маленький (< 30)
  • Данные ранжированные или порядковые

Не используй Mann-Whitney если:

  • Хочешь сравнить конкретно медианы (используй другой тест)
  • Нужна информация о величине эффекта (тест только говорит значим ли он)
  • Данные совершенно не сопоставимы

Альтернатива: медианный тест (Mood's Median Test)

Если ты действительно хочешь сравнить медианы (не выборки в целом):

from scipy.stats import median_test

stat, p_value, med, table = median_test(group1, group2)

print(f"Общая медиана: {med}")
print(f"p-value: {p_value}")
# Этот тест более специфичен для медиан

Практический пример из реальной жизни

Ситуация: Сравниваешь время ответа поддержки в две разные недели

import numpy as np
from scipy import stats

week1_response_time = [5, 6, 7, 8, 9, 10, 11]  # минуты
week2_response_time = [5, 6, 7, 8, 9, 10, 200]  # outlier (отчет за выходной)

print(f"Week 1 median: {np.median(week1_response_time)}")
print(f"Week 2 median: {np.median(week2_response_time)}")
# Медианы похожи (7 и 8)

u_stat, p_val = stats.mannwhitneyu(week1_response_time, week2_response_time)

if p_val < 0.05:
    print(f"\nМанн-Уитни: выборки отличаются (p={p_val:.3f})")
    print("Причина: наличие экстремального значения (200)")
    print("\nВывод: неправильно говорить 'медианы отличаются'")
    print("Правильно: 'распределения отличаются из-за outlier'")

Итоговое резюме

АспектОписание
Полное имяMann-Whitney U test (Wilcoxon rank-sum test)
Что сравниваетРаспределения (stochastic dominance)
Сравнивает ли медианы?Только если распределения имеют одинаковую форму
Параметрический?Нет (непараметрический)
ТребованияТолько независимость наблюдений
Чувствителен кРазличиям в центре и хвостах распределения
АльтернативаMedian Test (Mood's test) для специфичного сравнения медиан

Ключевой момент: Это одна из самых частых ошибок в интерпретации статистических тестов. Даже в научных работах часто видишь неправильное утверждение: "Mann-Whitney тест показал, что медианы отличаются". На самом деле он показывает, что выборки из разных распределений.