Картинка выше это boxplot (ящик с усами). Boxplot - это удобный способ изобразить распределение данных, используя всего 5 метрик:
1. «Минимум» = Q1 - 1.5 * IQR
2. Первый квартиль (Q1)
3. Медиана
4. Третий квартиль (Q3)
5. «Максимум» = Q3 + 1.5 * IQR
По графику сразу можно понять выбросы (outliers), симметричен ли дата-сет, как плотно лежат значения и как скошено распределение. Обратите внимание, что для ящика с усами «минимум» и «максимум» не являются минимальным и максимальным значением, а лишь помогают определить выбросы.
В этой статье мы рассмотрим:
- А что же такое Boxplot?
- Постараемся разобраться в структуре графика, сравнивая его с плотностью вероятности распределения (на примере нормального распределения)
- Как строить Boxplot в Python
Погнали!
Что же такое Boxplot?
быДля того, что, сделать правильные выводы о данных, не всегда достаточно посмотреть только на меры центральной тенденции (медиана, средняя или мода).
Очень важно также смотреть на разброс или дисперсию. Boxplot как раз тот график, который поможет ответить на все вопросы. Не смотря на то, что ящик с усами выглядит немного примитивно по сравнению с гистограммами или графиком плотности распределения, у него есть преимущество как раз в компактности - удобно сравнивать распределения большого набора разных факторов.
Boxplot для нормального распределения
Скорее всего до этого ты сталкивался только с нижним графиком - используем его, чтобы лучше понять Boxplot.
Для начала давай немного вспомним теорию. Плотность вероятности (probability density function - PDF) показывает вероятность попадания случайной величины в определенный диапазон значений. Эта вероятность определяется интегралом, то есть площадью под функцией плотности, ограниченной осью ОХ и крайними значениями случайной величины. Слова словами, но все любят картинки - давай построим график. Для этого воспользуемся функцией:
Немного упростим, предположив, что среднее (мю) равно 0, а стандартное отклонение (сигма) - единице.
Посмотрим график этой функции в Python.
График выше показывает не вероятность события, а плотность вероятности. Чтобы посчитать саму вероятность на определенном диапазоне, нужно проинтегрировать. Предположим, мы хотим посчитать вероятность попадания значения в межквартильный размах в 0.6745 от среднего, тогда нужно проинтегрировать от -0.6745 до 0.6745.
Также важно помнить простое правило - вся площадь под кривой всегда равна 1 (так как вероятность получить хоть какое-то значение равна 100%).
Как стоить Boxplot в Python
Конечно, в реальной жизни далеко не всегда данные будут иметь нормальное распределение. Возьмём для примера дата-сет с Kaggle с данными о диагностировании рака груди.
Построим Boxplot для взаимосвязи между категориальными признаками (доброкачественная и злокачественная опухоль) и числовыми характеристиками (средняя площадь опухоли).
На самом деле сделать это можно несколькими способами - seaborn, pandas и seaborn.
Вот собственно и все :)