Нан-диаграмма в языке R¶
Нан-диаграмма (от англ. NaN — Not a Number, «не число») — это графический способ визуализации пропущенных значений в таблице данных, при котором каждая ячейка набора данных отображается точкой или пикселем, а цвет кодирует наличие или отсутствие значения. Диаграмма позволяет быстро оценить распределение пропусков по столбцам и строкам, выявить закономерности их появления и принять решение о методах обработки данных. Термин широко используется в анализе данных и машинном обучении, особенно в среде языка программирования R.
¶Происхождение и назначение
Пропущенные значения — одна из наиболее частых проблем при работе с реальными наборами данных. В языке R отсутствующие значения кодируются специальным литералом NA (Not Available), а неопределённые результаты вычислений — NaN. Перед построением моделей аналитик, как правило, выполняет разведочный анализ, частью которого является оценка полноты данных.
Нан-диаграмма решает задачу наглядного представления структуры пропусков. В отличие от таблиц с числом пропусков по столбцам, она сохраняет информацию о взаимном расположении пропущенных ячеек, что позволяет заметить, например, что значения отсутствуют целыми блоками, чередуются или привязаны к определённым периодам времени.
¶Принцип построения
Диаграмма строится по матрице данных размером n строк на m столбцов. Каждой ячейке сопоставляется точка на координатной плоскости:
- по оси абсцисс откладываются столбцы (переменные);
- по оси ординат — строки (наблюдения), часто в порядке следования в таблице;
- цвет или заливка точки указывает, является ли значение пропущенным.
Обычно используется два цвета: один для присутствующих значений, другой для пропущенных. В некоторых реализациях цвет кодирует также тип значения — числовое, категориальное, текстовое. Плотность точек позволяет оценить долю пропусков визуально, без вычислений.
¶Реализация в языке R
Наиболее известная реализация — функция vis_miss() из пакета naniar, разработанного для работы с пропущенными данными. Пакет предоставляет набор инструментов: подсчёт пропусков, построение диаграмм, сравнение распределений присутствующих и отсутствующих значений.
Типичный вызов функции сводится к передаче таблицы данных:
``r library(naniar) vis_miss(dataset) ``
Функция возвращает объект ggplot, который можно донастроить: изменить сортировку столбцов по доле пропусков, добавить подписи, изменить палитру. Родственная функция gg_miss_var() строит столбчатую диаграмму доли пропусков по переменным, а gg_miss_upset() показывает сочетания одновременных пропусков в разных столбцах.
Альтернативные реализации существуют в пакетах VIM, mice и Amelia, а также в других языках — например, библиотека missingno в Python.
¶Что позволяет выявить
Нан-диаграмма помогает обнаружить несколько типовых ситуаций:
| Закономерность | Возможная причина |
|---|---|
| Пропуски сосредоточены в одном столбце | Переменная не собиралась на части наблюдений |
| Пропуски образуют блок по строкам | Часть объектов описана неполно |
| Пропуски чередуются через равные интервалы | Сбой в процессе сбора данных |
| Пропуски коррелируют между столбцами | Совместное отсутствие связанных признаков |
| Пропусков нет | Данные полны, обработка не требуется |
Выявление таких структур важно, поскольку от механизма возникновения пропусков зависит выбор метода их обработки: удаление строк, заполнение средним, интерполяция или специальные статистические модели.
¶Связь с механизмами пропусков
В статистике различают несколько механизмов появления пропусков:
- MCAR (missing completely at random) — пропуски полностью случайны и не зависят ни от наблюдаемых, ни от ненаблюдаемых величин;
- MAR (missing at random) — вероятность пропуска зависит от наблюдаемых переменных;
- MNAR (missing not at random) — вероятность пропуска зависит от самого пропущенного значения.
Нан-диаграмма не определяет механизм напрямую, но даёт первичную визуальную подсказку. Например, систематическое расположение пропусков в одном столбце наводит на мысль о MNAR, тогда как хаотичное распределение совместимо с MCAR.
¶Ограничения
При больших объёмах данных (сотни тысяч строк) точки на диаграмме сливаются, и она теряет информативность. В таких случаях прибегают к агрегированным представлениям: доле пропусков по столбцам, тепловым картам с укрупнёнными блоками или кластеризации строк. Кроме того, диаграмма не показывает, чем именно являются пропущенные значения — пустой строкой, нулём или специальным кодом, — поэтому требует предварительной проверки типов данных.
¶Значение в анализе данных
Нан-диаграмма является стандартным элементом разведочного анализа в R и входит в большинство учебных курсов по обработке данных. Её основное достоинство — компактность и наглядность: один график заменяет просмотр десятков столбцов таблицы. В сочетании с числовыми сводками она образует базовый набор инструментов для оценки качества данных перед построением статистических и машинных моделей.
IRONLIVE — база данных и аналитика по компаниям России.
На главную IRONLIVE →