Квантиль

Содержание
  1. Выбор алгоритма вычисления квантилей для распределённой системы
  2. Критерии оценки
  3. Точность вычисления
  4. Время выполнения
  5. Объём памяти
  6. Типы данных
  7. Язык программирования
  8. Naive
  9. Algebird
  10. Ted Dunning T-Digest
  11. Airlift Quantile Digest
  12. High Dynamic Range (HDR) Histogram
  13. Качественная оценка
  14. Performance-тесты
  15. Raw-тест
  16. Volume test
  17. Map/Reduce-тест
  18. Анализ результатов
  19. Квантили распределений EXCEL
  20. Определение
  21. Квантили специальных видов
  22. Квантили стандартного нормального распределения
  23. Квантили распределения Стьюдента
  24. Квантили распределения ХИ-квадрат
  25. Квантили F-распределения
  26. Квантили распределения Вейбулла
  27. Квантили экспоненциального распределения
  28. Параметры дискретного закона распределения
  29. Математическое описание
  30. Среднее значение
  31. Квантиль
  32. Двусторонний доверительный интервал
  33. Построить ряд распределения
  34. Совет
  35. Список параметров
  36. Шаблон гистограммы в OpenOffice Calc
  37. Тестирование нормальности: графический способ
  38. Проблема с гистограммами
  39. Простой квантиль-квантильный график с использованием Plotly
  40. Квантиль-квантиль графики для данных из различных распределений

Выбор алгоритма вычисления квантилей для распределённой системы

Квантиль

Всем привет! Меня зовут Александр, я руковожу отделом Data Team в Badoo. Сегодня я расскажу вам о том, как мы выбирали оптимальный алгоритм для вычисления квантилей в нашей распределённой системе обработки событий.

Ранее мы рассказывали о том, как устроена наша система обработки событий UDS (Unified Data Stream). Вкратце – у нас есть поток гетерогенных событий, на котором нужно в скользящем окне проводить агрегацию данных в различных разрезах. Каждый тип события характеризуется своим набором агрегатных функций и измерений.

В ходе развития системы нам потребовалось внедрить поддержку агрегатной функции для квантилей.

Более подробно о том, что такое перцентили и почему они лучше представляют поведение метрики, чем min/avg/max, вы можете узнать из нашего поста про использование Pinba в Badoo.

Вероятно, мы могли бы взять ту же имплементацию, что используется в Pinba, но стоит принять во внимание следующие особенности UDS:

  1. Вычисления «размазаны» по Hadoop-кластеру.
  2. Дизайн системы подразумевает группировку по произвольному набору атрибутов. Это означает, что количество метрик вида «перцентиль» исчисляется миллионами.
  3. Поскольку вычисления производятся с использованием Map/Reduce, то все промежуточные вычисления агрегатных функций должны обладать свойством аддитивности (мы должны иметь возможность «сливать» их с разных нод, производящих вычисления независимо).
  4. Pinba и UDS имеют различные языки имплементации – C и Java соответственно.

Критерии оценки

Исходя из этих архитектурных особенностей, мы выдвинули ряд параметров, по которым будем оценивать алгоритмы расчёта квантилей:

Точность вычисления

Мы решили, что нас устроит точность вычислений вплоть до 1,5%.

Время выполнения

Нам важно минимизировать период времени от возникновения события до визуализации его квантилей на графиках. Этот фактор складывается из трёх других:

  • время «математики» (стадия Map) – накладные расходы на инициализацию структур данных и добавление данных в них;
  • время сериализации – для того чтобы произвести слияние двух структур данных, они должны быть сериализованы и переданы по сети.
  • время слияния (стадия Reduce) – накладные расходы на слияние двух структур данных, вычисленных независимо.

Объём памяти

В нашей системе обрабатываются миллионы метрик, и нам важно следить за разумным использованием вычислительных ресурсов. Под памятью мы подразумеваем следующее:

  • RAM – объём, занимаемый структурами данных для квантилей.
  • Shuffle – так как расчёт производится с использованием Map/Reduce, то неизбежен обмен промежуточными результатами между нодами. Для того, чтобы это было возможно, структура данных должна быть сериализована и записана на диск/в сеть.

Также мы выдвигаем следующие условия:

Типы данных

Алгоритм должен поддерживать вычисления для неотрицательных величин, представленных типом double.

Язык программирования

Должна присутствовать имплементация на Java без использования JNI.

Naive

Чтобы иметь некий референс для сравнения, мы написали реализацию «в лоб», которая хранит все входящие значения в double[]. При необходимости вычисления квантиля массив сортируется, вычисляется ячейка, соответствующая квантилю, и берётся её значение. Слияние двух промежуточных результатов происходит путём конкатенации двух массивов.

Algebird

Это решение было найдено нами в ходе рассмотрения алгоритмов, заточенных под Spark (используется в основе UDS). Библиотека Algebird предназначена для расширения алгебраических операций, доступных в языке Scala.

Она содержит ряд широко используемых функций ApproximateDistinct, CountMinSketch и, помимо всего прочего, реализацию перцентилей на основании алгоритма Q-Digest. Математическое обоснование алгоритма вы можете найти здесь.

Вкратце структура представляет собой бинарное дерево, в котором каждый узел хранит некоторые дополнительные атрибуты.

Ted Dunning T-Digest

Библиотека представляет собой улучшение вышеупомянутого алгоритма Q-Digest с заявленным меньшим потреблением памяти, улучшенной производительностью и более высокой точностью.

Airlift Quantile Digest

На этот продукт мы наткнулись при реверс-инжиниринге распределённого SQL-движка Presto. Было несколько удивительно увидеть реализацию квантилей в REST-фреймворке, но высокая скорость работы и архитектура Presto (схожая с Map/Reduce) подтолкнули нас к тому, чтобы протестировать это решение. В качестве математического аппарата используется опять же Q-Digest.

High Dynamic Range (HDR) Histogram

Это решение являлось идейным вдохновителем реализации перцентилей в Pinba. Его отличительной особенностью является то, что при инициализации структуры необходимо знать верхний диапазон данных. Весь диапазон значений разбивается на N-ное количество ячеек, и при добавлении мы инкрементируем значение в какой-то из них.

Качественная оценка

Каждое из рассматриваемых программных решений было обёрнуто некоторой прослойкой (моделью) (чтобы адаптировать его под фреймворк для тестирования).

Перед проведением performance-тестов для каждой модели были написаны unit-тесты для проверки её достоверности.

Эти тесты проверяют, что модель (её нижележащее программное решение) может выдавать квантили с заданной точностью (проверялись точности 1% и 0,5%).

Performance-тесты

Для каждой из моделей были написаны тесты с использованием JMH. Они были разделены на категории, про каждую из которых я расскажу подробно. Не буду «засорять» пост сырыми выводом от JMH – лучше сразу буду визуализировать в виде графиков.

Raw-тест

В этом тесте мы измеряем производительность структур данных на вставку, то есть производятся замеры времени, требуемого на инициализацию структуры и на заполнение её данными.

Также мы рассмотрим, как изменяется это время в зависимости от точности и количества элементов. Измерения производились для последовательностей монотонно возрастающих чисел в диапазонах 10, 100, 1000, 10000, 100000, 1000000 при погрешности вычисления 0,5% и 1%.

Вставка производилась пачкой (если структура поддерживает) или поэлементно.

В результате мы получили следующую картину (шкала ординат логарифмическая, меньшие значения – лучше):

Результаты приведены для точности 1%, но для точности 0,5% картина принципиально не меняется. Невооружённым глазом видно, что с точки зрения вставки HDR является оптимальным вариантом при условии наличия более чем 1000 элементов в модели.

Volume test

В этом тесте мы производим замеры объёма, занимаемого моделями в памяти и в сериализованном виде. Модель заполняется последовательностями данных, затем производится оценка её размера. Ожидается, что лучшей окажется модель с меньшим объёмом занимаемой памяти. Замер производится с использованием SizeEstimator из Spark.

Как видно, при незначительном количестве элементов HDR проигрывает прочим имплементациям, однако имеет лучшую скорость роста в дальнейшем.

Оценка сериализованного размера производилась путём сериализации модели через Kryo, являющийся де-факто стандартом в области сериализации. Для каждой модели был написан свой сериализатор, который преобразует её максимально быстрым и компактным образом.

Абсолютным чемпионом вновь является HDR.

Map/Reduce-тест

Этот тест наиболее полно отражает поведение системы в боевой ситуации. Методика теста следующая:

  1. Предсоздаётся десять моделей, содержащих n-ное количество значений.
  2. Производится их слияние (эмуляция map-side combine).
  3. Полученное значение сериализуется и десериализуется десять раз (эмуляция передачи по сети с разных воркеров).
  4. Десериализованные модели сливаются (эмуляция финальной reduce-стадии).

Результаты теста (меньшие значения – лучше):

И в данном тесте мы снова отчётливо видим уверенное доминирование HDR в долгосрочной перспективе.

Анализ результатов

Проанализировав результаты, мы пришли к выводу, что HDR является оптимальной имплементацией на большом количестве элементов, в то время как на моделях с небольшим количеством данных есть более выгодные реализации.

Специфика агрегации по многим измерениям такова, что одно физическое событие влияет на несколько ключей агрегации. Представим себе, что одно событие EPayment должно быть сгруппировано по стране и полу пользователя.

В этом случае мы получаем четыре ключа агрегации:

Очевидно, что при обработке потока событий ключи с меньшим числом измерений будут иметь большее число значений для перцентилей. Статистика использования нашей системы даёт нам следующую картину:

Эта статистика позволила нам принять решение о необходимости посмотреть на поведение метрик с большим количеством измерений.

В результате мы выяснили, что 90 перцентиль числа событий на одну метрику (то есть нашу тестовую модель) находится в пределах 2000.

Как мы видели ранее, при подобном количестве элементов есть модели, которые ведут себя лучше, чем HDR. Так у нас появилась новая модель – Combined, которая объединяет в себе лучшее от двух миров:

  1. Если модель содержит менее n элементов, используются алгоритмы Naive модели
  2. При превышении порога n инициализируется модель HDR.

Смотрим результаты этого нового участника!

Как видно из приведённых графиков, Combined-модель действительно ведёт себя лучше HDR на малой выборке и сравнивается с ней при увеличении числа элементов.

Источник: https://habr.com/ru/company/badoo/blog/332568/

Квантили распределений EXCEL

Квантиль

Рассмотрим вычисление квантилей для некоторых функций распределений, представленных в MS EXCEL .

Понятие Квантиля основано на определении Функции распределения . Поэтому, перед изучением Квантилей рекомендуем освежить в памяти понятия из статьи Функция распределения вероятности .

статьи:

Сначала дадим формальное определение квантиля, затем приведем примеры их вычисления в MS EXCEL.

Определение

Пусть случайная величина X , имеет функцию распределения F ( x ). α-квантилем ( альфа- квантиль, x a , квантиль порядка α, нижний α- квантиль ) называют решение уравнения x a =F -1 (α), где α — вероятность, что случайная величина х примет значение меньшее или равное x a , т.е. Р(х a )= α.

Из определения ясно, что нахождение квантиля распределения является обратной операцией нахождения вероятности. Т.е. если при вычислении функции распределения мы находим вероятность α, зная x a , то при нахождении квантиля мы, наоборот, ищем x a зная α .

Чтобы пояснить определение, используем график функции стандартного нормального распределения (см. файл примера Лист Определение ):

Примечание : О построении графиков в MS EXCEL можно прочитать статью Основные типы диаграмм в MS EXCEL .

Например, с помощью графика вычислим 0,21-ю квантиль , т.е. такое значение случайной величины, что Р(X 0,21 )=0,21.

Для этого найдем точку пересечения горизонтальной линии на уровне вероятности равной 0,21 с функцией распределения . Абсцисса этой точки равна -0,81. Соответственно, 0,21-я квантиль равна -0,81. Другими словами, вероятность того, что случайная величина, распределенная стандартному нормальному закону, примет значение меньше -0,81, равна 0,21 (21%).

Примечание : При вычислении квантилей в MS EXCEL используются обратные функции распределения : НОРМ.СТ.ОБР() , ЛОГНОРМ.ОБР() , ХИ2.ОБР(), ГАММА.ОБР() и т.д. Подробнее о распределениях, представленных в MS EXCEL, можно прочитать в статье Распределения случайной величины в MS EXCEL .

Точное значение квантиля в нашем случае можно найти с помощью формулы =НОРМ.СТ.ОБР(0,21)

СОВЕТ : Процедура вычисления квантилей имеет много общего с вычислением процентилей выборки (см. статью Процентили в MS EXCEL ).

Квантили специальных видов

Часто используются Квантили специальных видов:

В качестве примера вычислим медиану (0,5-квантиль) логнормального распределения LnN(0;1) (см. файл примера лист Медиана ).

Это можно сделать с помощью формулы =ЛОГНОРМ.ОБР(0,5; 0; 1)

Квантили стандартного нормального распределения

Необходимость в вычислении квантилей стандартного нормального распределения возникает при проверке статистических гипотез и при построении доверительных интервалов.

Примечание : Про проверку статистических гипотез см. статью Проверка статистических гипотез в MS EXCEL . Про построение доверительных интервалов см. статью Доверительные интервалы в MS EXCEL .

В данных задачах часто используется специальная терминология:

  • Нижний квантиль уровня альфа ( α percentage point) ;
  • Верхний квантиль уровня альфа (upper α percentage point) ;
  • Двусторонние квантили уровня альфа .

Нижний квантиль уровня альфа — это обычный α-квантиль. Чтобы пояснить название « нижний» квантиль , построим график плотности вероятности и функцию вероятности стандартного нормального распределения (см. файл примера лист Квантили ).

Выделенная площадь на рисунке соответствует вероятности, что случайная величина примет значение меньше α-квантиля . Из определения квантиля эта вероятность равна α . Из графика функции распределения становится понятно, откуда происходит название » нижний квантиль» — выделенная область расположена в нижней части графика.

Для α=0,05, нижний 0,05-квантиль стандартного нормального распределения равен -1,645. Вычисления в MS EXCEL можно сделать по формуле:

=НОРМ.СТ.ОБР(0,05)

Однако, при проверке гипотез и построении доверительных интервалов чаще используется «верхний» α-квантиль. Покажем почему.

Верхним α — квантилем называют такое значение x α , для которого вероятность, того что случайная величина X примет значение больше или равное x α равна альфа: P(X>= x α )= α .

Из определения понятно, что верхний альфа — квантиль любого распределения равен нижнему (1- α) — квантилю. А для распределений, у которых функция плотности распределения является четной функцией, верхний α — квантиль равен нижнему α — квантилю со знаком минус .

Это следует из свойства четной функции f(-x)=f(x), в силу симметричности ее относительно оси ординат.

Действительно, для α=0,05, верхний 0,05-квантиль стандартного нормального распределения равен 1,645. Т.к. функция плотности вероятности стандартного нормального распределения является четной функцией, то вычисления в MS EXCEL верхнего квантиля можно сделать по двум формулам:

=НОРМ.СТ.ОБР(1-0,05)

=-НОРМ.СТ.ОБР(0,05)

Почему применяют понятие верхний α — квантиль? Только из соображения удобства, т.к. он при α всегда положительный (в случае стандартного нормального распределения ). А при проверке гипотез α равно уровню значимости , который обычно берут равным 0,05, 0,1 или 0,01.

 В противном случае, в процедуре проверки гипотез пришлось бы записывать условие отклонения нулевой гипотезы μ>μ 0 как Z 0 >Z 1- α , подразумевая, что Z 1- α – обычный квантиль порядка 1- α (или как Z 0 >-Z α ). C верхнем квантилем эта запись выглядит проще Z 0 >Z α .

Примечание : Z 0 — значение тестовой статистики , вычисленное на основе выборки . Подробнее см. статью Проверка статистических гипотез в MS EXCEL о равенстве среднего значения распределения (дисперсия известна) .

Чтобы пояснить название « верхний» квантиль , построим график плотности вероятности и функцию вероятности стандартного нормального распределения для α=0,05.

Выделенная площадь на рисунке соответствует вероятности, что случайная величина примет значение больше верхнего 0,05-квантиля , т.е. больше значения 1,645. Эта вероятность равна 0,05.

На графике плотности вероятности площадь выделенной области равна 0,05 (5%) от общей площади под графиком (равна 1). Из графика функции распределения становится понятно, откуда происходит название «верхний» квантиль — выделенная область расположена в верхней части графика. Если Z 0 больше верхнего квантиля , т.е. попадает в выделенную область, то нулевая гипотеза отклоняется.

Также при проверке двухсторонних гипотез и построении соответствующих доверительных интервалов иногда используется понятие «двусторонний» α-квантиль.

В этом случае условие отклонения нулевой гипотезы звучит как |Z 0 |>Z α /2 , где Z α /2 – верхний α/2-квантиль . Чтобы не писать верхний α/2-квантиль , для удобства используют «двусторонний» α-квантиль.

Почему двусторонний? Как и в предыдущих случаях, построим график плотности вероятности стандартного нормального распределения и график функции распределения .

Невыделенная площадь на рисунке соответствует вероятности, что случайная величина примет значение между нижним квантилем уровня α /2 и верхним квантилем уровня α /2, т.е. будет между значениями -1,960 и 1,960 при α=0,05. Эта вероятность равна в нашем случае 1-(0,05/2+0,05/2)=0,95. Если Z 0 попадает в одну из выделенных областей, то нулевая гипотеза отклоняется.

Вычислить двусторонний 0,05 — квантиль это можно с помощью формул MS EXCEL: =НОРМ.СТ.ОБР(1-0,05/2) или =-НОРМ.СТ.ОБР(0,05/2)

Другими словами, двусторонние α-квантили задают интервал, в который рассматриваемая случайная величина попадает с заданной вероятностью α.

Квантили распределения Стьюдента

Аналогичным образом квантили вычисляются и для распределения Стьюдента . Например, вычислять верхний α/2- квантиль распределения Стьюдента с n -1 степенью свободы требуется, если проводится проверка двухсторонней гипотезы о среднем значении распределения при неизвестной дисперсии ( см. эту статью ).

Для верхних квантилей распределения Стьюдента часто используется запись t α/2,n-1 . Если такая запись встретилась в статье про проверку гипотез или про построение доверительного интервала , то это именно верхний квантиль .

Примечание : Функция плотности вероятности распределения Стьюдента , как и стандартного нормального распределения , является четной функцией.

Чтобы вычислить в MS EXCEL верхний 0,05/2 — квантиль для t-распределения с 10 степенями свободы (или тоже самое двусторонний 0,05-квантиль ), необходимо записать формулу =СТЬЮДЕНТ.ОБР.2Х(0,05; 10) или =СТЬЮДРАСПОБР(0,05; 10) или =СТЬЮДЕНТ.ОБР(1-0,05/2; 10) или =-СТЬЮДЕНТ.ОБР(0,05/2; 10)

.2X означает 2 хвоста, т.е. двусторонний квантиль .

Квантили распределения ХИ-квадрат

Вычислять квантили распределения ХИ-квадрат с n -1 степенью свободы требуется, если проводится проверка гипотезы о дисперсии нормального распределения (см. статью Проверка статистических гипотез в MS EXCEL о дисперсии нормального распределения ).

При проверке таких гипотез также используются верхние квантили. Например, при двухсторонней гипотезе требуется вычислить 2 верхних квантиля распределения ХИ 2 : χ 2 α/2,n-1 и χ 2 1- α/2,n-1 . Почему требуется вычислить два квантиля , не один, как при проверке гипотез о среднем , где используется стандартное нормальное распределение или t-распределение ?

Дело в том, что в отличие от стандартного нормального распределения и распределения Стьюдента , плотность распределения ХИ 2 не является четной (симметричной относительно оси х). У него все квантили больше 0, поэтому верхний альфа-квантиль не равен нижнему (1-альфа)-квантилю или по-другому: верхний альфа-квантиль не равен нижнему альфа-квантилю со знаком минус.

Чтобы вычислить верхний 0,05/2 — квантиль для ХИ 2 -распределения с числом степеней свободы 10, т.е. χ 2 0,05/2,n-1 , необходимо в MS EXCEL записать формулу =ХИ2.ОБР.ПХ(0,05/2; 10) или =ХИ2.ОБР(1-0,05/2; 10)

Результат равен 20,48. .ПХ означает правый хвост распределения, т.е. тот который расположен вверху на графике функции распределения .

Чтобы вычислить верхний (1-0,05/2)- квантиль при том же числе степеней свободы , т.е. χ 2 1-0,05/2,n-1 и необходимо записать формулу =ХИ2.ОБР.ПХ(1-0,05/2; 10) или =ХИ2.ОБР(0,05/2; 10)

Результат равен 3,25.

Квантили F-распределения

Вычислять квантили распределения Фишера с n 1 -1 и n 2 -1 степенями свободы требуется, если проводится проверка гипотезы о равенстве дисперсий двух нормальных распределений (см. статью Двухвыборочный тест для дисперсии: F-тест в MS EXCEL ).

При проверке таких гипотез используются, как правило, верхние квантили. Например, при двухсторонней гипотезе требуется вычислить 2 верхних квантиля F -распределения: F α/2,n1-1, n 2 -1 и F 1-α/2,n1-1, n 2 -1 .

Почему требуется вычислить два квантиля , не один, как при проверке гипотез о среднем ? Причина та же, что и для распределения ХИ 2 – плотность F-распределения не является четной . Эти квантили нельзя выразить один через другой как для стандартного нормального распределения .

Верхний альфа-квантиль F -распределения не равен нижнему альфа-квантилю со знаком минус.

Чтобы вычислить верхний 0,05/2-квантиль для F -распределения с числом степеней свободы 10 и 12, необходимо записать формулу =F.ОБР.ПХ(0,05/2;10;12) =FРАСПОБР(0,05/2;10;12) =F.ОБР(1-0,05/2;10;12)

Результат равен 3,37. .ПХ означает правый хвост распределения, т.е. тот который расположен вверху на графике функции распределения .

Квантили распределения Вейбулла

Иногда обратная функция распределения может быть представлена в явном виде с помощью элементарных функций, например как для распределения Вейбулла . Напомним, что функция этого распределения задается следующей формулой:

После логарифмирования обеих частей выражения, выразим x через соответствующее ему значение F(x) равное P:

Примечание : Вместо обозначения α-квантиль может использоваться p — квантиль. Суть от этого не меняется.

Это и есть обратная функция, которая позволяет вычислить P — квантиль ( p — quantile ). Для его вычисления в формуле нужно подставить известное значение вероятности P и вычислить значение х p (вероятность того, что случайная величина Х примет значение меньше или равное х p равна P).

Квантили экспоненциального распределения

Задача : Случайная величина имеет экспоненциальное распределение :

Требуется выразить p -квантиль x p через параметр распределения λ и заданную вероятность p .

Примечание : Вместо обозначения α-квантиль может использоваться p-квантиль . Суть от этого не меняется.

Решение : Вспоминаем, что p -квантиль – это такое значение x p случайной величины X, для которого P(X p )= p . Т.е. вероятность, что случайная величина X примет значение меньше или равное x p равна p . Запишем это утверждение с помощью формулы:

По сути, мы записали функцию вероятности экспоненциального распределения : F(x p )= p .

Из определения квантиля следует, что для его нахождения нам потребуется обратная функция распределения .

Проинтегрировав вышеуказанное выражение, получим:

Используя это уравнение, выразим x p через λ и вероятность p .

Конечно, явно выразить обратную функцию распределения можно не для всех функций распределений .

Источник: https://excel2.ru/articles/kvantili-raspredeleniy-ms-excel

Параметры дискретного закона распределения

Квантиль

В статье описано как найти среднее значение и стандартное отклонение. Вы узнаете, что такое квантиль и каких он бывает видов, а также, как построить доверительный интервал.

Математическое описание

Смотря на закон распределения, мы можем понять, какова вероятность того или иного события, можем сказать, какова вероятность, что произойдёт группа событий, а в этой статье мы рассмотрим, как наши выводы «на глаз» перевести в математически обоснованное утверждение.

Крайне важное определение: математическое ожидание — это площадь под графиком распределения. Если мы говорим о дискретном распределении — это сумма событий умноженных на соответсвующие вероятности, также известно как момент:

(2)  E(X) = Σ(pi•Xi) E — от английского слова Expected (ожидание) Для математического ожидания справедливы равенства:

(3)  E(X + Y) = E(X) + E(Y)

(4)  E(X•Y) = E(X) • E(Y)

Момент степени k:

(5)  νk = E(Xk)

Центральный момент степени k:

(6)  μk = E[X — E(X)]k

Среднее значение

Среднее значение (μ) закона распределения — это математическое ожидание случайной величины (случайная величина — это событие), например, сколько в среднем посетителей заходит в магазин в час:

Кол-во посетителей0123456
Количество наблюдений611516224523218
Таблица 1. Количество посетителей в час

График 1. Количество посетителей в час

Чтобы найти среднее значение всех результатов необходимо сложить всё вместе и разделить на количество результатов:

μ = (61 • 0 + 15 • 1 + 16 • 2 + 22 • 3 + 45 • 4 + 23 • 5 + 218 • 6) / 400 = 1716/400 = 4.29

То же самое мы можем проделать используя формулу 2:

μ = M(X) = Σ(Xi•pi) = 0 • 0.15 + 1 • 0.04 + 2 • 0.04 + 3 • 0.06 + 4 • 0.11 + 5 • 0.06 + 6 • 0.55 = 4.29 Момент первой степени, формула (5)

Собственно, формула 2 представляет собой среднее арифметическое всех значений
Итог: в среднем, 4.29 посетителя в час

Количество посетителей0123456
Вероятность (%)15.33.845.511.35.854.5
Таблица 2. Закон распределения количества посетителей

Посмотрите на это распределение, можно предположить, что в среднем случайная величина равна 100±5, поскольку кажется, что таких значений несравнимо больше чем тех, что меньше 95 или больше 105:

График 2. График функции вероятности. Распределение ≈ 100±5

Среднее значение по формуле (2): μ = 99.95, но как посчитать, насколько далеко все значения находятся от среднего? Вам должна быть знакома запись 100±5. Что бы получить это значение ±, нам необходимо определить диапазон значений вокруг среднего. И мы могли бы использовать в качестве меры удалённости «разность» между средним и случайными величинами:

(7) xi — μ

но сумма таких расстояний, а следовательно и любое производное от этого числа, будет равно нулю, поэтому в качестве меры выбрали квадрат разниц между величинами и средним значением:

(8) (xi — μ)2

Соответственно, среднее значение удалённости — это математическое ожидание квадратов удалённости:

(9) σ2 = E[(X — E(X))2] Поскольку вероятности любой удалённости равносильны — вероятность каждого из них — 1/n, откуда: (10) σ2 = E[(X — E(X))2] = ∑[(Xi — μ)2]/n Она же формула центрального момента (6) второй степени

σ возведена в квадрат, поскольку вместо расстояний мы взяли квадрат расстояний. σ2 называется дисперсией. Корень из дисперсии называется средним квадратическим отклонением, или среднеквадратическим отклоненим, и его используют в качестве меры разброса:

(11) μ±σ
(12) σ = √(σ2) = √[∑[(Xi — μ)2]/n]

Возвращаясь к примеру, посчитаем среднеквадратическое отклонение для графика 2:

σ = √(∑(x-μ)2/n) = √{[(90 — 99.95)2 + (91 — 99.95)2 + (92 — 99.95)2 + (93 — 99.95)2 + (94 — 99.95)2 + (95 — 99.95)2 + (96 — 99.95)2 + (97 — 99.95)2 + (98 — 99.95)2 + (99 — 99.95)2 + (100 — 99.95)2 + (101 — 99.95)2 + (102 — 99.95)2 + (103 — 99.95)2 + (104 — 99.95)2 + (105 — 99.95)2 + (106 — 99.95)2 + (107 — 99.95)2 + (108 — 99.95)2 + (109 — 99.95)2 + (110 — 99.95)2]/21} = 6.06 Итак, для графика 2 мы получили:

X = 99.95±6.06 ≈ 100±6 , что немного отличается от полученного «на глаз»

Квантиль

График 3. Функция распределения. МедианаГрафик 4. Функция распределения. 4-квантиль или квартильГрафик 5. Функция распределения. 0.34-квантиль

Для анализа функции распределения ввели понятие квантиль.

Квантиль — это случайная величина при заданном уровне вероятности, т.е.: квантиль для уровня вероятности 50% — это случайная величина на графике плотности вероятности, которая имеет вероятность 50%. На примере с графиком 3, квантиль уровня 0.

5 = 99 (ближайшее значение, поскольку распределение дискретно и события со значением 99.3 просто не существует)

  • 2-квантиль — медиана
  • 4-квантиль — квартиль
  • 10-квантиль — дециль
  • 100-квантиль — перцентиль

То есть, если мы говорим о дециле (10-квантиле), то это означает, что мы разбили график на 10 частей, что соответствует девяти линяям, и для каждого дециля нашли значение случайной величины.

Также, используется обозначение x-квантиль, где х — дробное число, например, 0.34-квантиль, такая запись означает значение случайной величины при p = 0.34.

Для дискретного распределения квантиль необходимо выбирать следующим образом: квантиль гарантирует вероятность, поэтому, если рассчитанный квантиль не совпадает с одним и значений, необходимо выбирать меньшее значение.

Квантили используют для построения доверительных интервалов, которые необходимы для исследования статистики не одного конкретного события (например, интерес — случайное число = 98), а для группы событий (например, интерес — случайное число между 96 и 99). Доверительный интервал бывает двух видов: односторонний и двусторонний. Параметр доверительного интервала — уровень доверия. Уровень доверия означает процент событий, которые можно считать успешными.

Двусторонний доверительный интервал

Двусторонний доверительный интервал строится следующим образом: мы задаёмся уровнем значимости, например, 10%, и выделяем область на графике так, что 90% всех событий попадут в эту область.

Поскольку интервал двусторонний, то мы отсекаем по 5% с каждой стороны, т.е.

мы ищем 5й перцентиль, 95й перцентиль и значения случайной величины между ними будут являться доверительной областью, значения за пределами доверительной области называются «критическая область«

График 6. Плотность вероятностиГрафик 7. Функция распределения с 5 и 95 перцентилями. Цветом выделен доверительный интервал с уровнем доверия 0.9 График 8. Функция вероятности и двусторонний доверительный интервал с уровнем доверия 90%

Левосторонний и правосторонний доверительные интервалы строятся аналогично двустороннему: для левостороннего интервала мы находим перцентиль уровня ['один' минус 'уровень значимости'].

Таким образом, для построения доверительного левостороннего интервала уровня значимости 4% нам необходимо найти четвёртый перцентиль и всё, что справа — доверительный интервал, всё что слева — критическая область.

График 9. Левосторонний доверительный интервал с уровнем значимости 4%. Заливкой выделен доверительный интервалГрафик 10. Правосторонний доверительный интервал с уровнем значимости 4%. Заливкой выделен доверительный интервал

Среднее значение — математическое ожидание случайной величины, находится по формуле:

μ = E(X) = Σ(pi•Xi)

Среднеквадратичное отклонение — математическое ожидание удалённости значений от среднего, находится по формуле:

σ = √(σ2) = √[∑[(Xi — μ)2]/n]

n-квантиль — разделение функции распределения на n равных отрезков, основные типы квантилей:

  • 2-квантиль — медиана
  • 4-квантиль — квартили
  • 10-квантиль — децили
  • 100-квантиль — перцентили

Доверительный интервал уровня α — участок функции вероятности, содержащий α всех возможных значений. Двусторонний доверительный интервал строится отсечением (1-α)/2 справа и слева. Левосторонний и правосторонний доверительные интервалы строятся отсечением области (1-α) слева и справа соответственно.

Построить ряд распределения

Предположим, мы имеем 100 значений и все разные, например: масса тела Сомалийских пиратов. Такой набор данных обрабатывать неудобно, мы даже не можем представить их на обычном графике. Поэтому нам необходимо категоризировать имеющиеся данные и для этого мы делаем следующее:

Запишем наши данные в таблицу:

1027510412414410110910992144
6710812512312811413114011066
11969117716613813912412999
1171409564731161431259172
1259668140651311071238288
671016513212111770115142103
117140121122821126867118136
1151188670129841357698102
8869758693981451309293
12614699759896133846886
Таблица 3. Вес сомалийских пиратов

Данные разобьём на группы, для начала предлагаю разбить на десять интервалов:

Узнаём максимальное и минимальное значения, вычитаем их друг из друга и делим на количество интервалов — получили отрезки: Максимальное значение: 146 Минимальное значение: 64 Разница: 146 — 64 = 82

Длина интервала: 82 / 10 = 8.2

Теперь посчитаем количество пиратов (весов, я имею ввиду) в каждом интервале:

# Интервал Количество элементов
1.64 — 72.217
2.72.2 — 80.45
3.80.4 — 88.69
4.88.6 — 96.88
5.96.8 — 10511
6.105 — 113.26
7.113.2 — 121.413
8.121.4 — 129.612
9.129.6 — 137.87
10.137.8 — 14611
Таблица 4. Количество элементов в интервалах

Вуа-ля, наше распределение на графике:

График 11. Ряд распределения массы тела сомалийских пиратов

Интервалы лучше брать целыми числами, поэтому, если с выбранным количеством интервалов размер выходит нецелым, то можно раздвинуть диапазон значений, пример:

Значение интервала равно 8.2, число не является целым, поэтому отодвигаем верхнюю границу: Остаток от деления: [(146 — 64) / 10] = 2 Подвинуть на: 8 Новый диапазон: [64;154]

Диапазон можно двигать как вверх, так и вниз, но лучше в обе стороны.

Совет

Принято делить распределение на 7-8 интервалов, но в каждой конкретной ситуации Вы можете выбрать отличное количество интервалов, впрочем, как и сделать их различной длины.

Список параметров

Итак, вот список основных параметров дискретного закона распределения:

НазваниеСимволФормулаМатематическое ожидание (среднее)Центральный момент (среднеквадратичное отклонение)Длина интервалаМода1й квантильМедианаДециль
E(X)Σ(pi•Xi)
σxσ = √(σ2) = √[∑[(Xi — μ)2]/n]
Rmax(x) — min(x)
momax P(x = mo)
F(x) = 0.25
meF(x) = 0.5
F(x) = 0.1
Таблица 5. Основные параметры дискретного закона распределения

Шаблон гистограммы в OpenOffice Calc

Файл histogram_mock.ods содержит шаблон построения гистограммы.

Источник: https://k-tree.ru/articles/statistika/analiz_dannyh/svoistva_raspredeleniia

Тестирование нормальности: графический способ

Квантиль

Дата публикации Nov 19, 2019

Весь код приведен ниже.

Существует определенный набор допущений, применимых при работе с проблемами регрессии. Возьмем, например, линейную регрессию, где у нас есть следующие предположения:

1) У нас есть линейная связь между независимой переменной и целевой переменной.2) Наши данные гомоскедастичны3) остатки имеют нормальное распределение

4) Минимальная мультиколлинеарность

Предметом этой записной книжки является третий пункт: как мы узнаем, что остатки из-за модели линейной регрессии обычно распределяются? Это приводит к более общему вопросу.

Учитывая набор данных, можем ли мы сказать, что данные обычно распределяются? Это кажется довольно тривиальной проблемой, просто нарисуйте гистограмму данных и посмотрите, выглядит ли это как нормальное распределение.

Гистограммы могут быть обманчивы, это зависит от количества выбранных бинов, которое, в свою очередь, зависит от количества доступных точек данных.

К счастью, нам доступны определенные инструменты для определения того, поступает ли набор данных из нормального дистрибутива или нет.

В этом блокноте мы рассмотрим два графических инструмента:1) Графический способ: гистограмма

2) Графический способ: квантиль-квантиль (qq) графики

Тесты, используемые для определения того, поступают ли данные из нормального распределения, называются тестами нормальности.

Прежде чем мы углубимся в это, давайте создадим проблему. Мы генерируем набор данных и устанавливаем задачу линейной регрессии. Мы подгоняем модель к ней и получаем остатки.

# # generate data and visualize itnp.random.seed(1)x = np.arange(0,1000)noise = np.random.normal(0,10,1000)slope = 0.1b = 5.0y = (slope*x)+b y_noised = y+noise# test train split x_train, x_test, y_train, y_test = train_test_split(x,y_noised, test_size=0.2, random_state=1)x_train_shape = x_train.shape[0]y_train_shape = y_train.shape[0]x_train_reshaped = x_train.reshape(x_train_shape, 1)y_train_reshaped = y_train.reshape(y_train_shape, 1)x_test_shape = x_test.shape[0]x_test_reshaped = x_test.reshape(x_test_shape, 1)# fitting the model in sklearn lr = LinearRegression()lr.fit(x_train_reshaped, y_train_reshaped)pred_slope = lr.coef_pred_b = lr.intercept_y_pred= lr.predict(x_test_reshaped)residuals = y_test — y_pred.reshape(y_pred.shape[0],)# fitting the model line to the data model_line = (pred_slope*x)+pred_bmodel_line_reshaped = model_line.reshape(model_line.shape[1])fig = make_subplots(rows=1, cols=2,subplot_titles=[“Linear data”, “Residual Plot”])fig.add_trace(go.Scatter(x=x,y=y_noised, mode=’markers’, marker={‘color’:’green’}, name=”noised data”), row=1, col=1)fig.add_trace(go.Scatter(x=x, y=model_line_reshaped, mode=’lines’, marker={‘color’:’red’}, name=’model’), row=1, col=1)fig.add_trace(go.Scatter(x=x_test, y=residuals, mode=’markers’, marker={‘color’:’blue’}, name=’residuals’), row=1, col=2)fig.update_xaxes(title_text=”x” ,row=1, col=1)fig.update_xaxes(title_text=”x”, row=1, col=2)fig.update_yaxes(title_text=”Y noised”, row=1, col=1)fig.update_yaxes(title_text=”error = predicted-observed” , row=1, col=2)

fig.update_layout(title_text=”Figure 1″)iplot(fig)

Проблема с гистограммами

График справа на рисунке 1 представляет собой график остатков. Остаток — это разница между фактическими значениями, которые представляют собой зеленые точки на левом графике на рисунке 1, и прогнозными значениями, которые попадают на красную линию.

Одно из предположений о линейной регрессии состоит в том, что остатки взяты из нормального распределения, другой способ сказать, что график гистограммы будет нормальным. Посмотрите на рисунок 2 ниже. Гистограмма имеет один пик с 20 бинами вокруг бина от -5 до 0 и падает с обеих сторон.

Однако можно ли сказать, что эта гистограмма представляет собой нормальное распределение? Может быть. Когда мы меняем размер бина, наш вывод становится более мрачным, поскольку нет простого способа определить, где находится пик нормального распределения.

Это мешает нам судить о том, какой размер корзины подходит для интерпретации распределения.

Гистограмма — это один из графических способов сказать, что данные поступают из нормального распределения, но гистограмма может быть обманчивой, поскольку изменение количества бинов изменяет форму распределения, и это может привести к некоторой путанице. Нам нужен лучший способ определить, поступают ли данные из нормального распределения. Это где квантиль-квантиль графики появляются.

residual_df = pd.DataFrame(data=residuals,columns=[“residuals”])# callback function for the sliderdef change_bins(number_bins): return px.histogram(residual_df, x=”residuals”, nbins=int(number_bins), title=”Figure 2″)slider_obj = widgets.FloatSlider(value=20, min=10, max=100,step=5, description=”Num of bins”, continuous_update=False)

interact(change_bins, number_bins=slider_obj);

Простой квантиль-квантильный график с использованием Plotly

Альтернативой использованию гистограммы является использование графика квантиль-квантиль.

График квантиль-квантиль (график qq) — это график рассеяния, на котором мы наносим значения набора данных в зависимости от значений нормального распределения для квантилей, определенных из набора данных.

Координата y графика qq — это значения набора данных, координаты x — значения из нормального распределения.

Чтобы сгенерировать данные для графика квантиль-квантиль, мы должны определить квантили, для которых нам нужны значения из нормального распределения, поэтому сначала мы напишем:

num_divisions = residuals.shape[0]+1quantiles = np.arange(1,residuals.shape[0])/num_divisions

Num_divisions говорит нам, сколько делений в нормальном распределении нам нужно. Если вы запустите приведенный выше код, вы увидите, что квантили будут:

[0.00497512, 0.00995025, 0.01492537, 0.0199005 …]

Поэтому, если у нас есть * n * точек данных в наборе данных, нам нужно разделить нормальное распределение на * n + 1 * областей, чтобы получить * n * из нормального распределения.

Так, например, в нашем случае у нас есть 200 точек в наборе данных, поэтому нам нужно иметь 201 деление в нормальном распределении. Когда у нас есть квантильные значения, мы вставляем их в функцию ppf. Это обратное кумулятивному распределению, которое дает нам z-показатель нормального распределения для данного значения квантиля.

Квантильные значения, которые мы вводим в функцию ppf, являются не чем иным, как отношением площади под нормальной кривой, нормированной на 1.

qq_x_data = sps.norm.ppf(quantiles)

Эти значения являются значениями x для графика qq, мы получаем значения y, просто сортируя остатки

qq_y_data = np.sort(residuals)

Далее, нам необходимо получить данные для построения опорной линии. Для этого нам понадобятся две точки для определения наклона и y-пересечения линии.

Для этого мы собираемся принять рекомендацию Кливленда по визуализации данных [[1] (https://dl.acm.org/citation.cfm?id=529269)].
Значения x для первого и третьего квартилей будут получены из нормального распределения.

Значения y будут получены из нашего упорядоченного набора данных Поэтому мы пишем

# guide line dataline_x0 = sps.norm.ppf(0.25)line_x1 = sps.norm.ppf(0.75)line_y0 = np.quantile(residuals, 0.25)

line_y1 = np.quantile(residuals, 0.75)

используя эти две точки, мы формируем линию

slope = (line_y1-line_y0)/(line_x1-line_x0)line_intercept = line_y1 — (slope*line_x1)x_range_line = np.arange(-3,3,0.001)

y_values_line = (slope*x_range_line) + line_intercept

Замечание: не подгонка линии регрессии к точкам на графике qq не удовлетворит предположениям о линейной регрессии (подумайте об этом! Почему?)

Теперь, когда у нас есть данные для ¯qq участка и опорной линии мы будем использовать plotly, чтобы построить их.

fig = go.Figure()fig.add_trace(go.Scatter(x=qq_x_data, y=qq_y_data, mode=’markers’, marker={‘color’:’blue’}, name=”qq data”))fig.add_trace(go.Scatter(x=x_range_line, y=y_values_line, mode=’lines’, marker={‘color’:’red’}, name=”guide line”))fig[‘layout’].update(title=’Figure 3', xaxis={ ‘title’: ‘Theoritical Quantities’, ‘zeroline’: True }, yaxis={ ‘title’: ‘Sample Quantities’ }, showlegend=True,

)iplot(fig)

Способ читать ¯qq сюжет, чтобы увидеть, сколько очков падать вдоль опорной линии. Если большинство ПУНКТОВ попадают в эту строку, то мы предполагаем, что данные представляют собой нормальное распределение.

Если большинство точек не следуют этой тенденции, то мы можем сказать, что данные не имеют нормальной тенденции. Обычно в этом случае мы должны попробовать другие тесты нормальности, такие как тест Андерсона Дарлинга, тест KS и т. Д., Чтобы убедиться, что данные не являются нормальными.

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

Основным выводом этого графика является то, что график qq представляет собой простой графический способ расшифровки, если набор данных соответствует нормальному распределению или нет.

Квантиль-квантиль графики для данных из различных распределений

В этом разделе мы рассмотрим данные, полученные из разных типов распределения, и покажем, как вы можете использовать график qq для сравнения их с нормальным распределением.

Предположим, у нас есть набор данных, который следует за равномерным распределением. тогда сюжет qq будет выглядеть иначе.

uniform_data = np.random.uniform(0,10,1000)num_divisions = uniform_data.shape[0]+1quantiles = np.arange(1,uniform_data.shape[0])/num_divisions# scatter data qq_uniform_x = sps.norm.ppf(quantiles)qq_uniform_y = np.sort(uniform_data)line_y0 = np.quantile(uniform_data, 0.25)line_y1 = np.quantile(uniform_data, 0.75)slope = (line_y1-line_y0)/(line_x1-line_x0)line_intercept = line_y1 — (slope*line_x1)# points to plot the line x_uniform = np.arange(-3,3,0.001)y_uniform = (slope*x_range_line) + line_interceptfig = make_subplots(rows=1, cols=2,subplot_titles=[“Data histogram”, “QQ plot”])fig.add_trace(go.Histogram(x=uniform_data, name=”uniform data”), row=1, col=1)fig.add_trace(go.Scatter(x=qq_uniform_x, y=qq_uniform_y, mode=’markers’, marker={‘color’:’blue’}, name=”qq data”), row=1, col=2)fig.add_trace(go.Scatter(x=x_uniform, y=y_uniform, mode=’lines’, marker={‘color’:’red’}, name=”guide line”), row=1, col=2)fig.update_xaxes(title_text=”data values”, row=1, col=1)fig.update_xaxes(title_text=”theoretical quantiles”, range=[-4,4], row=1, col=2)fig.update_yaxes(title_text=”Count”, row=1, col=1)

fig.update_yaxes(title_text=”observed quantiles” , row=1, col=2)iplot(fig)

Вы можете видеть, что точки рассеяния имеют S-образную кривую, и многие точки не совпадают на контрольной линии. Это хороший признак того, что наблюдаемые данные не поступают из нормального распределения. То же самое можно увидеть и на гистограмме.

Фактически, мы можем сделать это для многих других типов распространения. Вот график, на котором сравниваются остаточные данные с несколькими распределениями. Для этого мы будем использовать виджеты ipython для сжатия нескольких графиков в сюжет.

Изучите аргументы распределений в функции распределений, чтобы генерировать различные формы распределений данных. Например, измените среднее значение и стандартное логарифмическое распределение, чтобы увидеть, что происходит с гистограммой и графиком qq. Это поможет вам увидеть различные типы данных и их график qq.

def get_qqdata(observed_data): np.random.seed(0) num_divisions = observed_data.shape[0]+1 quantiles = np.arange(1,observed_data.shape[0])/num_divisions# scatter data qq_x = sps.norm.ppf(quantiles) qq_y = np.sort(observed_data)line_y0 = np.quantile(observed_data, 0.25) line_y1 = np.quantile(observed_data, 0.75)slope = (line_y1-line_y0)/(line_x1-line_x0) line_intercept = line_y1 — (slope*line_x1)# points to plot the line x_line = np.arange(-3,3,0.001) y_line = (slope*x_range_line) + line_interceptqq_data = {‘qqx’: qq_x, ‘qqy’:qq_y, ‘linex’: x_line, ‘liney’:y_line} return qq_datadef dist_qqplot(dist_data, dist_name) : qq_data = get_qqdata(dist_data)fig = make_subplots(rows=1, cols=2,subplot_titles=[“Data histogram”, “QQ plot”]) fig.add_trace(go.Histogram(x=dist_data, name=dist_name), row=1, col=1) fig.update_xaxes(title_text=”data values” ,row=1, col=1) fig.add_trace(go.Scatter(x=qq_data[“qqx”] , y=qq_data[“qqy”], mode=’markers’, marker={‘color’:’blue’}, name=”qq data”), row=1,col=2) fig.add_trace(go.Scatter(x=qq_data[“linex”], y=qq_data[“liney”], mode=’lines’, marker={‘color’:’red’}, name=”guide line”), row=1,col=2)fig.update_xaxes(title_text=”theoretical quantiles”, range=[-4,4], row=1, col=2) fig.update_yaxes(title_text=”Count”, row=1, col=1) fig.update_yaxes(title_text=”observed quantiles” , row=1, col=2) return iplot(fig)def distributions(dist): # change parameter values here to see how the qq plot can change selected_data ={“triangular”: np.random.triangular(10,100,115,1000), ‘lognormal’: np.random.lognormal(10,1,1000), ‘chi square’: np.random.chisquare(8,1000)} return dist_qqplot(selected_data[dist], dist )toggle_obj = widgets.ToggleButtons(description=”Distribution:”, options=[“triangular”,”lognormal”, “chi square”])

interact(distributions, dist=toggle_obj);

Гистограмма и график qq для треугольного распределения с правым значением = 10, режимом = 100, левым = 115 с 1000 выборками. Гистограмма и график qq для логнормального распределения со средним значением = 10 и стандартным отклонением = 1. Было получено 1000 выборок. Гистограмма и график qq для распределения хи-квадрат со степенью свободы = 8 и генерируется 1000 выборок

Оригинальная статья

Источник: https://www.machinelearningmastery.ru/normality-testing-the-graphical-way-20902abd8543/

Все термины
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: