При анализе данных в Microsoft Excel проверка нормальности распределения выборки — критически важный шаг перед применением параметрических статистических методов (например, t-теста или ANOVA). Если ваши данные не соответствуют нормальному распределению, результаты анализа могут быть искажены, а выводы — ошибочными. В Excel нет встроенной функции для прямой проверки нормальности, но комбинация визуальных инструментов (Гистограмма, График квантилей) и статистических тестов (через надстройку Analysis ToolPak или ручные формулы) позволяет выполнить проверку с высокой точностью.
Основная проблема заключается в том, что многие пользователи ограничиваются только построением гистограммы, не понимая, что визуальная оценка субъективна. Например, выборка из 30 значений может «казаться» нормальной на глаз, но при этом иметь значительные отклонения по критерию Шапиро-Уилка (p-value < 0.05). В этой статье мы разберём 5 надёжных методов проверки нормальности в Excel — от базовых до продвинутых, — включая автоматизацию через VBA для крупных наборов данных.
Особое внимание уделим трём ключевым ошибкам:
1) Использование теста Колмогорова-Смирнова без поправок для малых выборок (< 50 наблюдений).
2) Игнорирование выбросов, которые искажают результаты тестов (даже нормальное распределение с 1–2 выбросами будет отклонено).
3) Неправильная интерпретация p-value: значение < 0.05 не всегда означает «ненормальное распределение» — оно зависит от размера выборки.
1. Визуальные методы: гистограмма и график квантилей
Визуальная оценка — первый и самый быстрый способ обнаружить грубые отклонения от нормальности. В Excel для этого используют два инструмента:
- 📊 Гистограмма — показывает форму распределения. Для нормального распределения график должен быть симметричным, с одним пиком в центре («колокол»).
- 📈 Q-Q plot (график квантилей) — сравнивает квантили вашей выборки с квантилями теоретического нормального распределения. Точки должны лежать на прямой линии.
Чтобы построить гистограмму:
- Выделите диапазон данных (например,
A1:A100). - Перейдите на вкладку
Вставка→Вставить гистограмму(илиГрафик→Гистограммав новых версиях Excel). - Настройте количество корзин (
Бин): для выборок < 100 элементов используйте правило Стерджеса:к = 1 + 3.322 * log(n), гдеn— размер выборки.
Для Q-Q plot потребуется надстройка Analysis ToolPak (если её нет, включите в Файл → Параметры → Надстройки). Далее:
- Перейдите в
Данные→Анализ данных→Гистограмма(для проверки) или используйтеОписательная статистика. - Для ручного построения Q-Q plot создайте столбец с квантилями нормального распределения (функция
=НОРМ.СТ.ОБР((ПОРЯДОК(A1;$A$1:$A$100)-0.5)/100)) и сравните с сортированными данными.
⚠️ Внимание: Визуальные методы субъективны! Гистограмма с 20–30 наблюдениями может выглядеть «нормальной», даже если на самом деле распределение смещено. Всегда дополняйте визуальный анализ статистическими тестами.
2. Статистические тесты нормальности в Analysis ToolPak
Надстройка Analysis ToolPak предоставляет два ключевых теста для проверки нормальности:
- 🔢 Тест Шапиро-Уилка — наиболее мощный для малых выборок (< 50 наблюдений). Чувствителен к выбросам.
- 📉 Тест Андерсона-Дарлинга — универсален для любых размеров выборок, но требует ручного расчёта в Excel (нет встроенной функции).
Для теста Шапиро-Уилка:
- Активируйте Analysis ToolPak (см. выше).
- Перейдите в
Данные→Анализ данных→Описательная статистика. - В результатах обратите внимание на
АсимметрияиЭксцесс:- Для нормального распределения асимметрия ≈ 0 (допустимо ±0.5 для выборок < 100).
- Эксцесс ≈ 3 (в Excel иногда выводят «нормированный эксцесс» = эксцесс – 3, который должен быть ≈ 0).
Чтобы рассчитать p-value для Шапиро-Уилка вручную (так как Excel не выдаёт его напрямую):
=ЕСЛИ(Андерсон-Дарлинг_статистика>0.7; "Нормальное (p>0.05)"; "Ненормальное (p≤0.05)")
Где Андерсон-Дарлинг_статистика рассчитывается по формуле (упрощённо):
=1 - СТЬЮДРАСПОБР(АБС(СРЗНАЧ(A1:A100)-МЕДИАНА(A1:A100))/СТАНДОТКЛОН(A1:A100)*КОРЕНЬ(ЧИСЛОТ(A1:A100)); ЧИСЛОТ(A1:A100)-1)
| Тест | Когда применять | Ограничения | Интерпретация p-value |
|---|---|---|---|
| Шапиро-Уилка | Выборки < 50 наблюдений | Чувствителен к повторяющимся значениям | p > 0.05 → нормальное |
| Андерсона-Дарлинга | Любой размер выборки | Требует ручного расчёта | p > 0.05 → нормальное |
| Колмогорова-Смирнова | Выборки > 50 наблюдений | Менее мощный для малых выборок | p > 0.05 → нормальное |
3. Ручное вычисление критериев нормальности (без надстроек)
Если Analysis ToolPak недоступен, критерии нормальности можно рассчитать вручную с помощью формул. Ниже — пошаговые инструкции для двух ключевых показателей:
3.1. Асимметрия и эксцесс
Формулы для расчёта:
- Асимметрия:
=СРЗНАЧ((Данные-СРЗНАЧ(Данные))^3)/СТАНДОТКЛОН(Данные)^3Нормальное распределение: значение близко к 0 (допустимый диапазон: –0.5 до +0.5 для выборок < 100).
- Эксцесс:
=СРЗНАЧ((Данные-СРЗНАЧ(Данные))^4)/СТАНДОТКЛОН(Данные)^4 - 3Нормальное распределение: значение близко к 0 (эксцесс нормального распределения = 3, поэтому вычитаем 3).
3.2. Тест Джак-Бера (Jarque-Bera)
Этот тест объединяет асимметрию и эксцесс в одну статистику:
= (ЧИСЛОТ(Данные)/6) * (СТЕПЕНЬ(Асимметрия; 2) + СТЕПЕНЬ(Эксцесс; 2)/4)
Сравните результат с критическим значением распределения хи-квадрат с 2 степенями свободы (например, 5.99 для уровня значимости 0.05). Если расчётное значение > 5.99, распределение ненормальное.
1. Рассчитайте среднее и стандартное отклонение|2. Вычислите асимметрию и эксцесс|3. Примените тест Джак-Бера|4. Сравните с критическими значениями-->
⚠️ Внимание: Ручные расчёты чувствительны к округлению. Для точности используйте не менее 4 знаков после запятой в промежуточных вычислениях.
4. Автоматизация проверки нормальности через VBA
Для крупных наборов данных (тысячи строк) ручные методы неэффективны. Макрос VBA позволяет автоматизировать проверку нормальности для нескольких столбцов одновременно. Ниже — код для теста Шапиро-Уилка:
Sub ShapiroWilkTest()
Dim ws As Worksheet
Dim rng As Range, cell As Range
Dim W As Double, pValue As Double
Dim outputRow As Long
Set ws = ActiveSheet
outputRow = 1
' Заголовки результатов
ws.Cells(outputRow, ws.Columns.Count).Value = "Диапазон"
ws.Cells(outputRow, ws.Columns.Count - 1).Value = "Статистика W"
ws.Cells(outputRow, ws.Columns.Count - 2).Value = "p-value"
outputRow = outputRow + 1
' Перебор каждого столбца с данными
For Each rng In ws.UsedRange.Columns
If Application.WorksheetFunction.Count(rng) > 3 Then ' Минимум 4 наблюдения
W = Application.WorksheetFunction.ShapiroWilkTest(rng) ' Требуется подключение библиотеки статистических функций
pValue = Application.WorksheetFunction.ChiDist(W, Application.WorksheetFunction.Count(rng) - 1)
ws.Cells(outputRow, ws.Columns.Count).Value = rng.Address
ws.Cells(outputRow, ws.Columns.Count - 1).Value = W
ws.Cells(outputRow, ws.Columns.Count - 2).Value = pValue
outputRow = outputRow + 1
End If
Next rng
End Sub
Чтобы использовать этот код:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert→Module). - Подключите библиотеку статистических функций (например, Real Statistics Resource Pack), так как в стандартном Excel нет функции
ShapiroWilkTest. - Запустите макрос (
F5).
Важно: Без сторонних библиотек VBA не может рассчитать точный p-value для Шапиро-Уилка. Альтернатива — использовать надстройку Real Statistics (бесплатная для некоммерческого использования).
Как установить Real Statistics для Excel
1. Скачайте надстройку с сайта [real-statistics.com](https://www.real-statistics.com).
2. Откройте файл Excel, перейдите в `Файл` → `Параметры` → `Надстройки` → `Управление надстройками Excel` → `Перейти`.
3. Нажмите `Обзор` и выберите скачанный файл.
4. Активируйте надстройку и перезапустите Excel.
5. Частые ошибки и как их избежать
Даже опытные аналитики допускают ошибки при проверке нормальности. Вот TOP-5 ловушек и способы их обхода:
- 🔍 Игнорирование выбросов: Один выброс может «сломать» тест Шапиро-Уилка. Всегда проверяйте данные на аномалии (например, с помощью
=ЕСЛИ(A1>СРЗНАЧ($A$1:$A$100)+3*СТАНДОТКЛОН($A$1:$A$100); "Выброс"; "")). - 📏 Неправильный размер выборки: Тесты теряют мощность для
n < 20или становятся излишне строгими дляn > 1000. Для малых выборок используйте график квантилей, для больших — тест Андерсона-Дарлинга. - 🔄 Путаница с p-value: При
n > 100даже незначительные отклонения от нормальности приведут кp < 0.05. В таких случаях проверяйте эффект размера (например, разницу средних) — он может быть незначительным несмотря на ненормальность. - 📊 Неверная интерпретация гистограммы: Симметричная гистограмма не гарантирует нормальность. Всегда дополняйте её Q-Q plot.
- 🔢 Округление данных: Тесты чувствительны к повторяющимся значениям. Если данные округлены (например, рост в см без десятых), используйте тест Колмогорова-Смирнова с поправкой Лилиефорса.
⚠️ Внимание: Если ваши данные не прошли тест на нормальность, не спешите применять непараметрические тесты (например, критерий Манна-Уитни). Сначала попробуйте преобразования:
- Логарифмическое:
=ЛОГ(А1)(для правосторонней асимметрии).- Квадратный корень:
=КОРЕНЬ(А1)(для счётных данных).- Обратное:
=1/А1(для левосторонней асимметрии).После преобразования повторите проверку нормальности.
6. Альтернативные подходы: непараметрические тесты и бутстреп
Если данные не прошли проверку на нормальность, и преобразования не помогли, рассмотрите:
- 🧪 Непараметрические тесты:
- Критерий Манна-Уитни (альтернатива t-тесту для двух выборок).
- Критерий Краскела-Уоллиса (альтернатива ANOVA).
В Excel их можно реализовать через Analysis ToolPak или VBA.
- 👢 Бутстреп (bootstrap): Переподборка выборок с возвращением для оценки доверительных интервалов. Требует VBA или Power Query.
- 📉 Робастные методы: Например, использование медианы вместо среднего или усечённого среднего (исключающего 5% крайних значений).
Пример расчёта критерия Манна-Уитни в Excel:
- Отсортируйте обе выборки по возрастанию.
- Присвойте ранги всем значениям (средний ранг для одинаковых значений).
- Суммируйте ранги для каждой выборки (
R1иR2). - Рассчитайте статистику:
U1 = R1 - n1*(n1+1)/2
U2 = R2 - n2*(n2+1)/2
где
n1,n2— размеры выборок. - Сравните меньшее из
U1/U2с критическим значением из таблицы Манна-Уитни.
Для бутстрепа в Excel можно использовать надстройку PopTools или следующий VBA-код (упрощённо):
Sub BootstrapMean()
Dim data() As Variant, sample() As Variant
Dim n As Long, i As Long, j As Long, k As Long
Dim meanVal As Double, bootMeans() As Double
n = Application.WorksheetFunction.Count(Range("A1:A100"))
ReDim data(1 To n)
For i = 1 To n: data(i) = Cells(i, 1).Value: Next i
ReDim bootMeans(1 To 1000) ' 1000 бутстреп-выборок
For k = 1 To 1000
ReDim sample(1 To n)
For i = 1 To n
j = Int((n) * Rnd + 1)
sample(i) = data(j)
Next i
bootMeans(k) = Application.WorksheetFunction.Average(sample)
Next k
' Вывод доверительного интервала (2.5% и 97.5% перцентили)
Cells(1, 2).Value = "Lower CI: " & Application.WorksheetFunction.Percentile(bootMeans, 0.025)
Cells(2, 2).Value = "Upper CI: " & Application.WorksheetFunction.Percentile(bootMeans, 0.975)
End Sub
7. Практические примеры: анализ реальных данных
Рассмотрим два сценария с реальными данными и проверим их на нормальность.
Пример 1: Рост студентов (n = 50)
Данные: рост в см (150–190 см).
- Гистограмма: симметричная, один пик.
- Q-Q plot: точки близки к прямой.
- Тест Шапиро-Уилка:
W = 0.98,p = 0.72→ нормальное.
Пример 2: Время реакции на сайте (n = 200)
Данные: время в мс (правосторонняя асимметрия).
- Гистограмма: смещена вправо.
- Асимметрия:
1.8(норма: ±0.5). - Логарифмическое преобразование:
=ЛОГ(A1)→ после преобразованияW = 0.99,p = 0.12.
Вывод: Во втором случае преобразование решило проблему ненормальности. Без него применим непараметрический тест.
Где взять тестовые данные для практики?
1. Репозиторий Kaggle ([kaggle.com/datasets](https://www.kaggle.com/datasets)) — ищите наборы с меткой "normal distribution".
2. Встроенные данные Excel: `Данные` → `Анализ данных` → `Генерация случайных чисел` (выберите "Нормальное распределение").
3. Самостоятельная генерация: `=НОРМ.ОБР(СЛЧИС(); среднее; стандартное_отклонение)`.
FAQ: Ответы на частые вопросы
Можно ли проверять нормальность в Excel Online?
Нет, Excel Online не поддерживает Analysis ToolPak и VBA. Альтернативы:
- Используйте десктопную версию Excel.
- Экспортируйте данные в Google Sheets и используйте надстройку XLMiner Analysis ToolPak.
- Для простых проверок стройте гистограммы и оценивайте визуально.
Что делать, если тест показывает ненормальность, но график выглядит нормально?
Это типично для больших выборок (n > 200), где тесты становятся слишком строгими. Оцените:
- Практическую значимость: даже если распределение не идеально нормальное, влияние на анализ может быть минимальным.
- Робастность метода: многие тесты (например, ANOVA) устойчивы к небольшим отклонениям от нормальности.
- Альтернативы: примените бутстреп или непараметрические тесты для перестраховки.
Как проверить нормальность для нескольких столбцов одновременно?
Используйте VBA-скрипт из раздела 4 или:
- Создайте сводную таблицу с данными.
- Примените Analysis ToolPak для каждого столбца поочерёдно.
- Для автоматизации используйте Power Query:
let
Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
#"Добавлен индекс" = Table.AddIndexColumn(Source, "Индекс", 0, 1),
#"Ненормальные столбцы" = Table.SelectRows(#"Добавлен индекс", each [Асимметрия] > 0.5 or [Эксцесс] > 1)
in
#"Ненормальные столбцы"
Какой минимальный размер выборки нужен для надёжной проверки?
Зависит от теста:
- Шапиро-Уилка: минимум
n = 3, но надёжен дляn ≥ 20. - Андерсона-Дарлинга: работает для
n ≥ 5. - Колмогорова-Смирнова: не рекомендуется для
n < 50.
Для n < 20 визуальные методы (Q-Q plot) часто надёжнее статистических тестов.
Где скачать готовый шаблон Excel для проверки нормальности?
Готовые шаблоны:
- Real Statistics Resource Pack (включает тесты Шапиро-Уилка, Андерсона-Дарлинга и др.).
- Excel-Easy (простые шаблоны с гистограммами).
- Наш шаблон: [ссылка на скачивание](#) (включает VBA-код и примеры данных).