Открыть сервис

Нан-диаграмма в языке 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 →