Приветствую уважаемых читателей, случайно или нет наткнувшихся на эту статью. Адресована она всем тем, кто исследует распределение разнообразных эмпирических данных.
В моей публикации вас ждут: небольшой ликбез по теории вероятностей, развивающий её интуитивное и практическое понимание; детективная история о том, как решение дифференциального уравнения привело нас к двум важнейшим статистическим характеристикам выборочных последовательностей; ревизионизм в области проверки распределений на соответствие гауссовскому и объяснение пресловутого p-value с нуля за 5 минут (можете засекать).
![](https://habrastorage.org/getpro/habr/upload_files/92b/120/84d/92b12084dd3b4c7466227dc23a81618a.jpg)
Давайте начнем с ликбеза.
Перед началом должен предупредить, так как эта статья раcсчитана на широкий круг читателей, то здесь мы откажемся от строгого изложения теории вероятностей. Вместо этого будем пользоваться оценками нужных нам терминов в качестве определений. Такой подход даст уважаемым читателям интуитивное понимание описываемых понятий, которое пригодится в дальнейшем, более основательном изучении математической статистики.
Сопутствующие определения и термины
Определение 1 Случайная величина — переменная, принимающая, в зависимости от случая, те или иные числовые значения с определенными вероятностями.
Определение 2 Выборка (или статистический ряд) — последовательность из наблюдений случайной величины
. Представляет собой набор
, где — i-ый элемент выборки, а
— объем выборки.
Определение 3 Мода — самое часто встречающееся значение во множестве наблюдений случайной величины . Название как бы намекает.
Определение 4 Математическое ожидание (выборочное среднее) — среднее арифметическое выборки, рассчитываемое по формуле:
Определение 5 Среднеквадратичное отклонение (стандартное отклонение) — показатель разброса значений случайной величины относительно её математического ожидания. Рассчитывается по формуле:
Определение 6 k-м центральным моментом случайной величины называется величина
Нетрудно увидеть, что есть не что иное, как квадрат среднеквадратичного отклонения
и показывает разброс распределения вокруг среднего значения. А с моментами
и
мы еще пересечемся.
Определение 7 Распределение вероятностей — это закон, описывающий какие значения может принимать случайная величина и соответствующие вероятности появления этих значений.
Определение 8 Нормальное (гауссовское) распределение — это распределение вероятностей, которое играет важную роль во многих областях науки. Случайная величина подчиняется нормальному распределению, когда она подвержена влиянию огромного числа случайных помех. Такая ситуация крайне распространена, поэтому в природе это самое часто встречающееся распределение.
Нормальное распределение зависит от двух параметров — смещения (соответствует математическому ожиданию ) и разброса (соответствует стандартному отклонению
).С математической точки зрения нормальное распределение является целым семейством распределений.
Определение 9 Стандартное нормальное распределение — нормальное распределение с математическим ожиданием и стандартным отклонением
.
Кто эти ваши кривые Пирсона?
Теперь начнем нашу небольшую детективную историю. Представьте, что вам на почту анонимно прислали письмо. Во вложениях у него архив, содержащий энное количество наборов из 256 вещественных чисел каждый. В письме вас просят найти, к какому типу вероятностого распределения относятся эти статистические ряды. К счастью, вам дали одну зацепку — кривые Пирсона. Google по этому запросу в первой строчке выдает статью [1]. Из неё мы узнаем, что кривые Пирсона - это семейство решений дифференциального уравнения
где — коэффициенты уравнения.
Более того, кривые Пирсона позволяют аппроксимировать практически любое известное распределение вероятностей. Иными словами, для каждого распределения найдется такая кривая Пирсона, которая по общим чертам будет походить на данное распределение.
Возникает вопрос: а каким же образом устанавливается связь между распределением и соответствующей ему кривой Пирсона?
Ответ: через коэффициенты в уравнении выше, которые согласно [1] могут быть вычислены при помощи центральных моментов данного распределения из соотношений:
где
— центральные моменты 2, 3 и 4 порядков соответственно, а
— мода.
Получается, имея на руках статистический ряд некоторой случайной величины , мы можем посчитать первые четыре момента её распределения, получить коэффициенты для вышеупомянутого дифференциального уравнения, решить его как-то и ... Непонятно, что делать с этим решением. Да, мы получим некую аппроксимацию распределения, но как нам с её помощью его классифицировать? Как определить к какому типу принадлежат распределения наших выборочных данных?
Чтобы ответить на эти вопросы, полистаем статью [1] дальше. В ней вводится критерий(каппа Пирсона), который легко выражается через стандартизированные третий и четвертый моменты
и
. Значения
и вспомогательных параметров определяют 8 типов кривых Пирсона, соответствующих некоторым распространенным распределениям случайной величины
. В статье даже приводится график классификации областей в
координатах по этим 8 типам. Вы можете увидеть его на рис. 1:
![Рис. 1. Графики для определения типа кривой Пирсона в зависимости от и Рис. 1. Графики для определения типа кривой Пирсона в зависимости от и](https://habrastorage.org/getpro/habr/upload_files/9ed/e5c/9f9/9ede5c9f90e543909a5de85da16da649.jpg)
Внимательный читатель заметил, что я писал о 8 типах, а на рис. 1 обозначено всего 7. Дело в том, что восьмой тип кривых Пирсона представляет собой точку с координатами (0, 3) и соответствует нормальному распределению. Иными словами, выборки, у которых , а
имеют нормальное распределение.
Любопытный товарищ, скорее всего, захотел бы увидеть распределение своих выборочных наблюдений на рис. 1. Может, это даст нам некую общую информацию о характере распределений наших данных. На рис. 2 можем увидеть соответствующую диаграмму рассеивания.
![Рис. 2. Диаграмма рассеяния имеющихся статистических рядов. Красная прямая изображает верхнюю границу всех распределений. Синяя прямая — линию кривых III типа. Рис. 2. Диаграмма рассеяния имеющихся статистических рядов. Красная прямая изображает верхнюю границу всех распределений. Синяя прямая — линию кривых III типа.](https://habrastorage.org/getpro/habr/upload_files/8c4/569/aae/8c4569aae59ccefc54a0b663abd5a42e.jpg)
Нетрудно сравнить с рис. 1 и заметить, что все наши выборки находятся в области кривых I типа, причем в непосредственной близости к точке (0, 3). Ну и, естественно, теперь хочется понять, каким образом по высчитанным и
можно оценить, насколько наше распределение соответствует нормальному.
Встречайте асимметрию и эксцесс
В широко известной в узких кругах статье "A Suggestion for Using Powerful and Informative Tests of Normality" [2] приводится подробное описание статистик (вместо
, с корнем формула симпатичнее выходит) и
как мы знаем, задаваемые формулами (распишем чуть подробнее):
и
де
— 3-й центральный момент,
— 4-й центральный момент, а
— среднее выборочное. Эти моменты, будучи стандартизированными (т.е. поделенными на σ в соответствующей степени), являются числовыми характеристиками асимметрии (skewness) распределения и его эксцесса (kurtosis), величины, показывающей, насколько ярко выражена вершина распределения в окрестности его среднего.
Преимущество этих статистик в их наглядности. Нормальное распределение симметрично, как мы знаем, поэтому для него . В то же время ненормальное асимметрично распределение имеет ненулевое значение асимметрии:
соответствует асимметрии вправо, а
соответствует асимметрии влево. Пусть вас не смущает, что арифметический корень может быть отрицательным,
— это просто обозначение, если посмотрите на (9), то увидите, что в числите дроби третий момент который вполне может оказаться отрицательным числом. На рис. 3 приведена соответствующая иллюстрация.
![Рис. 3. Иллюстрация распределений с разной асимметрией Рис. 3. Иллюстрация распределений с разной асимметрией](https://habrastorage.org/getpro/habr/upload_files/ca8/432/f3f/ca8432f3f3e0df981c221c71416bde79.jpg)
Что касается четвертого момента, то у нормального распределения значение равно 3, а если быть точным
, где
— объем выборки. Унимодальные распределения, т.е. распределения с одним пиком, чьи хвосты тяжелее (т.е. находятся ниже), чем у нормального, имеют
. Помимо этого, они обычно имеют более высокие пики в центре распределения. Унимодальные распределения с более легкими хвостами обычно имеют
. На рис. 4 проиллюстрированы описываемые распределения.
![Рис. 4. Иллюстрация распределений с разной хвостатостью Рис. 4. Иллюстрация распределений с разной хвостатостью](https://habrastorage.org/getpro/habr/upload_files/3fe/ea2/28c/3feea228c5df7e4e6c474e3c16adfa9f.jpg)
Теперь мы вполне понимаем смысл, стоящий за статистиками и
, и интуиция подсказывает нам, что немалую роль они играют в важном деле проверки распределений на нормальность. Но пока отложим этот вопрос и подумаем вот над чем.
Хорошо, рассчитали мы эти статистики для нашей выборки, получили числа. Вот, например, . Вроде оно небольшое, близко к нули. А вроде и не такое уж и маленькое, вот 0.04 в 10 раз меньше. Понимаете проблему, да? На руках мы имеем абсолютные значения, а хотелось бы знать, если ли общепринятый порог, которые значения наших статистик могут перепрыгнуть ненароком. Вот тут нам и пригодится пресловутое p-value, ликбез которого был провокационно анонсирован уважаемым читателям в начале данной публикации. Ну что же, засекайте, товарищи.
Что такое p-value?
Если вы посмотрите документацию по любому статистическому тесту на нормальность из библиотеки SciPy (например, тот же самый тест на асимметрию), то каждый из них возвращает ровно два числа: значение статистики (statistics) и загадочное число p-value. Ну с первым более-менее все ясно: почти каждый критерий нормальности определяется некоторой статистикой, и значение этой статистики по наблюдаемой выборке возвращается нам в качестве первого выходного значения функции.
А что же p-value? Тут нужно идти с самого начала. Тестирование выполняется путем сравнения значения статистики на конкретной выборки с нулевым распределением (в англоязычной литературе null distribution), то есть распределением уже самой статистики на множестве случайно сгенерированных выборок из нормального распределения. Другими словами, для того, чтобы построить нулевое распределение, нужно вычислить значения статистики на большом количестве статистических рядов из нормального распределения и построить из этих значений гистограмму. Важно отметить, что выборки для расчета нулевого распределения должны быть того же размера, что и наблюдаемый статистический ряд.
В уже упоминаемой выше статье [2], где представлен тест на асимметрию на основе нормированного третьего момента, вместо простого предлагается использовать в качестве статистики
(в SciPy реализации используется этот вариант), где
-
довольно муторное отображение из
в
. Возникает 2 вопроса: что оно делает и зачем оно нужно? Давайте сравним нулевое распределение для
и для
.
На рис. 5 продемонстрированы их гистограммы.
![Рис. 5. Сравнение нулевых распределений для статистик (custom) и (scipy) Рис. 5. Сравнение нулевых распределений для статистик (custom) и (scipy)](https://habrastorage.org/getpro/habr/upload_files/fa4/b28/6e2/fa4b286e233f43902e2eed3f7e343b5c.jpg)
Гистограммы были получены с помощью теста Монте-Карло библиотеки SciPy, который случайным образом отбирает выборки из нормального распределения, рассчитывает нужную статистику на каждой из них и возвращает нулевое распределение. Несложно посчитать среднее значение и среднеквадратичное отклонение для каждого нулевого распределения. Для
,
, а для
,
. Видно, что нулевое распределение статистики из статьи [2] является стандартным нормальным распределением. А если почитать оригинальную статью [3], где впервые представлен skewness test, то можно понять, что это неслучайно: отображение
есть не что иное, как общее преобразование Джонсона [4], которое приводит распределение подаваемой на вход статистики к стандартному нормальному.
Хорошо, с вопросом, что оно делает, мы разобрались. Остался второй вопрос: зачем оно нужно? Ответ прост: уже незачем. Вот у нас есть тест на нормальность на основе какой-то статистики. Мы можем вычислить её нулевое распределение, можем вычислить её значение применительно к наблюдаемой выборке. А как все-таки узнать по этому наблюдаемому значению статистики, нормальна наша выборка или нет? Для этого нам нужно оценить насколько наблюдаемое значение выбивается из общего распределения статистики для выборок из нормального распределения того же размера, иными словами, оценить долю значений нулевого распределения такой же или большей экстремальности, чем наблюдаемое значение. Эту долю и называют p-value.
Вообще говоря, существует 3 способа расчета p-value: подсчет доли значений статистики больше наблюдаемого (greater), меньше наблюдаемого (less) и больше наблюдаемого и меньше его значения, взятого со знаком минус (two-sided).
На рис. 6 приведена графическая интерпретация two-sided p-value.
![Рис.6. Графическая интерпретация значения p-value Рис.6. Графическая интерпретация значения p-value](https://habrastorage.org/getpro/habr/upload_files/a59/728/eab/a59728eab6441df8a2d850f842d8e1a8.jpg)
Так вот, сейчас рассчитать эту долю не составляет труда, но в допотопные 60-80-ые, когда все эти методы тестирования на нормальность активно развивались, техника была ограниченная, поэтому рассчитать p-value для каждой степени уверенности, то есть доли более экстремальных значений, чем наблюдаемое, было трудоемко для всех известных распределений. Поэтому степени уверенности рассчитали довольно подробно только для стандартного нормального распределения, а статистики брали такими, чтобы их нулевое распределение соответствовало стандартному нормальному. Вот и весь секрет. Поэтому можно смело пользоваться статистиками и
без дополнительных преобразований.
Практические результаты
Вообще говоря, для всех статистических тестов на нормальность можно улучшить точность вердикта. Дело в том, что при вычислении p-value никакого построения нулевого распределения не происходит — берется его приближение. Например, считается, как я уже говорил, что нулевое распределение у статистики похоже на стандартное нормальное, так же как и у
. Или у не менее знаменитого критерия Д’Агостино Пирсона [5] cо статистикой
нулевое распределение близко к распределению
с двумя степенями свободы.
На рис. 7-8 приведены соответствующие гистограммы нулевого распределения вместе с их асимптотическими аппроксимациями.
![Рис.7. Гистограмма нулевого распределения для Рис.7. Гистограмма нулевого распределения для](https://habrastorage.org/getpro/habr/upload_files/a14/d26/197/a14d2619743054c7cb7e55cc1f7ed44d.jpg)
![Рис.8. Гистограмма нулевого распределения для Рис.8. Гистограмма нулевого распределения для](https://habrastorage.org/getpro/habr/upload_files/b94/ece/78c/b94ece78c0cda68c86f7cffd601acdba.jpg)
Видно, что хоть аппроксимации эти и близки, но все же погрешность присутствует, особенно для выборок с малым количеством наблюдений. На рис. 9 приведен подтверждающий это пример. А значит, для того, чтобы повысить точность тестов, мы захотим использовать метод Монте Карло. И тут к нам на помощь и придет знание о том, что статистики и
можно использовать без дополнительного преобразования
, а это сакральное знание, в свою очередь, дает нам выигрыш в скорости. Давайте проверим, насколько он велик.
![Рис. 9. Гистограмма нулевого распределения для статистики с малым количеством экспериментов Рис. 9. Гистограмма нулевого распределения для статистики с малым количеством экспериментов](https://habrastorage.org/getpro/habr/upload_files/105/3be/302/1053be302f951506341c3ff12ae46e9d.jpg)
Тест (статистика) | Время работы на одной выборке (в секундах) | Разница p-value на всех наборах (в %) |
Our Skewness Test | 1.9 | 0.75 |
SciPy Skewness Test | 3.0 | |
Our Kurtosis Test | 1.9 | 0.16 |
SciPy Kurtosis Test | 3.1 | |
Our Omnibus Test | 3.7 | 3.88 |
SciPy Normal Test | 6.4 |
В данной таблице можно видеть, что реализованные в SciPy тесты даже на одной выборке заметно уступают нашим ревизионистским тестам по времени при весьма маленькой разнице в p-value на всех имеющихся у нас выборках.
Небольшое дополнение
В предыдущих двух главах ненароком упоминалось, что выявленные нами статистики лежат в основе критерия Д’Агостино Пирсона, настолько популярного, что в библиотеке SciPy его назвали normaltest. Но не только его. Наши и
лежат, помимо прочего, в основе теста Харке-Бера, который использует оценку p-value для статистики
(11)
Этот тест со звучным названием упоминается в статье [6] как самый мощный критерий для симметричных распределений с большим эксцессом (с тяжелыми хвостами). Ну и для фильтрации других типов ненормальных распределений он отлично подходит.
Итого, в данной статье мы
познакомились с целой группой тестов на нормальность, называемой в англоязычной литература moment tests,
разобрались в том, что такое p-value и в общем принципе тестирования распределений на нормальность,
представили более быстрый способ применения вышеперечисленных критериев, чем тот, что реализован в SciPy.
References
[1] Ralph B D’agostino, Albert Belanger, and Ralph B D’Agostino Jr. A suggestion for using powerful and informative tests of normality. The American Statistician, 44(4):316–321, 1990.
[2] Ralph B D’Agostino. Transformation to normality of the null distribution of g1. Biometrika, pages 679–681, 1970.
[3] Norman L Johnson. Systems of frequency curves generated by methods of translation. Biometrika, 36(1/2):149–176, 1949.
[4] RALPH D’agostino and Egon S Pearson. Tests for departure from normality. empirical results for the distributions of b 2 and b 1. Biometrika, 60(3):613–622, 1973.
[5] Bee Wah Yap and Chiaw Hock Sim. Comparisons of various types of normality tests. Journal of Statistical Computation and Simulation, 81(12):2141–2155, 2011.