Гистограмма — статистический график¶
Гистограмма — это графическое представление распределения числовых данных, при котором интервал значений разбивается на ряд участков (бинов), а высота столбца пропорциональна количеству наблюдений, попавших в соответствующий интервал. Термин ввёл в употребление Карл Пирсон в 1895 году. Гистограмма широко применяется в статистике, анализе данных, обработке сигналов и компьютерном зрении.
¶Принцип построения
При построении гистограммы область значений наблюдаемой величины делится на непересекающиеся интервалы (бинов). Для каждого бина подсчитывается число наблюдений, попавших в него. Затем вдоль оси абсцисс располагаются столбцы, ширина которых равна ширине бина, а высота — частоте (или относительной частоте) наблюдений. Столбцы, как правило, рисуются без зазоров, что отличает гистограмму от столбчатой диаграммы, где столбцы разделены промежутками и используются для категориальных данных.
Ключевые параметры построения:
- Число бинов — определяет степень детализации. Слишком малое число скрывает структуру распределения, слишком большое приводит к «шумному» виду с многочисленными провалами.
- Ширина бинов — может быть постоянной или переменной.
- Границы бинов — обычно выбираются так, чтобы каждое наблюдение попало ровно в один бин.
Существует несколько эмпирических правил выбора числа бинов: правило Стёрджеса (k = 1 + 3,322·log₁₀ n), правило Райса (k = 2·∛n), правило Скотта и правило Фридмана-Диакониса, учитывающего межквартильный размах. В пакете matplotlib для языка Python по умолчанию используется правило Фридмана-Диакониса, а в R функция hist() применяет правило Стёрджеса.
¶Виды гистограмм
По типу представляемых данных различают:
- Абсолютную — высота столбца равна числу наблюдений.
- Относительную (нормированную) — высота пропорциональна доле наблюдений, что позволяет сравнивать выборки разного объёма.
- Накопленную (стековую) — несколько подвыборок представлены сегментами одного столбца.
- Сглаженную — столбцы заменяются оценкой плотности вероятности (kernel density estimation), что даёт гладкую кривую.
¶Гистограмма в компьютерном зрении
Отдельное значение имеет гистограмма изображения — распределение яркостей пикселей по каналам цвета. В цифровой фотографии гистограмма по яркости показывает, сколько пикселей имеет каждое значение интенсивности от 0 (чёрный) до 255 (белый) для 8-битного изображения. Левая часть гистограммы отвечает за тени, правая — за света, середина — за средние тона.
По гистограмме изображения можно оценить корректность экспозиции: «прижатая» к левому краю гистограмма указывает на недоэкспозицию, к правому — на переэкспозицию. Многие цифровые камеры и графические редакторы (Adobe Lightroom, Adobe Photoshop, RawTherapee) отображают гистограмму в реальном времени.
На основе гистограммы строится алгоритм гистограммной эквализации — метод повышения контрастности изображения, при котором распределение яркостей выравнивается по равномерному закону. Метод был предложен в 1970-х годах и остаётся базовым в обработке изображений.
¶Гистограмма в статистике и анализе данных
В описательной статистике гистограмма служит основным инструментом визуализации эмпирического распределения. По её форме можно судить о:
- симметричности — нормальное распределение даёт колоколообразную гистограмму;
- смещении (skewness) — правостороннее смещение означает вытянутый правый «хвост»;
- эксцессе — остроте пика относительно нормального распределения;
- модальности — одномодальное, бимодальное или многомодальное распределение.
Гистограммы применяются в промышленной статистике (контроль качества), эконометрике (распределение доходов), биометрии (распределение морфологических признаков), лингвистике (частотный анализ текстов) и многих других областях.
¶Отличие от столбчатой диаграммы
Часто гистограмму путают со столбчатой диаграммой (bar chart). Различие принципиально:
| Признак | Гистограмма | Столбчатая диаграмма |
|---|---|---|
| Тип данных | Непрерывные числовые | Категориальные |
| Ось X | Числовой интервал | Названия категорий |
| Зазоры между столбцами | Нет | Есть |
| Порядок столбцов | Определяется значениями | Произвольный |
¶Программная реализация
Построение гистограмм поддерживается практически всеми статистическими пакетами и библиотеками:
- Python — matplotlib.pyplot.hist(), numpy.histogram(), seaborn.histplot(), pandas.DataFrame.hist().
- R — функции hist(), ggplot2::geom_histogram().
- Excel — встроенная «Гистограмма» в разделе анализа данных.
- gnuplot — команда
plot ... using ... with boxes.
В языке Python функция numpy.histogram() возвращает пару массивов: значения частот и границы бинов, что позволяет использовать её как низкоуровневый инструмент для построения собственных визуализаций.
¶Ограничения
Гистограмма чувствительна к выбору числа и границ бинов: одно и то же наблюдение данных может дать принципиально разные картинки при разных параметрах. Этот недостаток частично устраняется сглаженными оценками плотности. Кроме того, гистограмма неприменима напрямую для категориальных данных и малоинформативна для очень малых выборок.
Источники:
- Клайн М. Математика. Справочник с комментариями и примерами. — М.: ФИЗМАТЛИТ, 2007.
- Четвериков Н. С., Сухорукова Н. Л. Статистические методы в биологии. — М.: Издательство КМК, 2017.
- Scott D. W. Multivariate Density Estimation: Theory, Practice, and Visualization. — Wiley, 2015.
- Gonzalez R. C., Woods R. E. Digital Image Processing. — Pearson, 2018.
- Documentation NumPy: numpy.histogram. — URL: numpy.org/doc/stable/reference/generated/numpy.histogram.html.
