Диаграмма рассеяния представляет собой базовый инструмент визуального анализа взаимосвязи между двумя количественными переменными. В контексте Vega и Vega-Lite она используется как основа для построения более сложных аналитических визуализаций, включая добавление регрессионных моделей, группировку данных и наложение статистических преобразований.
В основе любой диаграммы рассеяния лежит отображение набора точек, где каждая точка соответствует наблюдению из набора данных. Координаты определяются двумя полями:
Базовая спецификация Vega-Lite строится вокруг ключевых блоков:
data — источник данныхmark — тип графического примитива (точка, линия и
т.д.)encoding — правила отображения данных на визуальные
каналыПростейшая диаграмма рассеяния:
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"data": {
"values": [
{"x": 1, "y": 2},
{"x": 2, "y": 3},
{"x": 3, "y": 5},
{"x": 4, "y": 4}
]
},
"mark": "point",
"encoding": {
"x": {"field": "x", "type": "quantitative"},
"y": {"field": "y", "type": "quantitative"}
}
}
Каждая точка в этой модели является независимым наблюдением, а визуальная структура позволяет выявлять корреляции, кластеры и выбросы.
Регрессия в Vega-Lite реализуется через трансформацию данных
regression, которая вычисляет аппроксимацию зависимости
между переменными. Наиболее распространённый вариант — линейная
регрессия.
Технически процесс включает:
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"data": {
"values": [
{"x": 1, "y": 2},
{"x": 2, "y": 3},
{"x": 3, "y": 5},
{"x": 4, "y": 4},
{"x": 5, "y": 6}
]
},
"layer": [
{
"mark": "point",
"encoding": {
"x": {"field": "x", "type": "quantitative"},
"y": {"field": "y", "type": "quantitative"}
}
},
{
"transform": [
{
"regression": "y",
"on": "x"
}
],
"mark": {
"type": "line",
"color": "red"
},
"encoding": {
"x": {"field": "x", "type": "quantitative"},
"y": {"field": "y", "type": "quantitative"}
}
}
]
}
Конструкция layer позволяет накладывать несколько
визуальных уровней, где точки отображают исходные данные, а линия —
результат статистической аппроксимации.
Трансформация регрессии в Vega-Lite формирует модель зависимости вида:
genui{“math_block_widget_always_prefetch_v2”:{“content”:“y = ax + b”}}
где:
a — коэффициент наклона (slope)b — свободный член (intercept)Алгоритм внутри Vega-Lite автоматически вычисляет параметры методом наименьших квадратов, минимизируя сумму квадратов отклонений между наблюдаемыми и предсказанными значениями.
При наличии категориального признака регрессионная модель может быть
построена отдельно для каждой группы. Это достигается использованием
groupby.
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"data": {
"values": [
{"x": 1, "y": 2, "group": "A"},
{"x": 2, "y": 3, "group": "A"},
{"x": 3, "y": 4, "group": "A"},
{"x": 1, "y": 5, "group": "B"},
{"x": 2, "y": 6, "group": "B"},
{"x": 3, "y": 7, "group": "B"}
]
},
"layer": [
{
"mark": "point",
"encoding": {
"x": {"field": "x", "type": "quantitative"},
"y": {"field": "y", "type": "quantitative"},
"color": {"field": "group", "type": "nominal"}
}
},
{
"transform": [
{
"regression": "y",
"on": "x",
"groupby": ["group"]
}
],
"mark": "line",
"encoding": {
"x": {"field": "x", "type": "quantitative"},
"y": {"field": "y", "type": "quantitative"},
"color": {"field": "group", "type": "nominal"}
}
}
]
}
Каждая группа получает собственную регрессионную линию, что позволяет сравнивать тенденции между сегментами данных.
Vega-Lite поддерживает различные типы регрессионных моделей через
параметр method. Помимо линейной модели доступны:
Пример полиномиальной регрессии:
{
"transform": [
{
"regression": "y",
"on": "x",
"method": "poly",
"order": 3
}
]
}
Полиномиальная модель расширяет базовую форму уравнения:
genui{“math_block_widget_always_prefetch_v2”:{“content”:“y = a_3 x^3 + a_2 x^2 + a_1 x + a_0”}}
Такая форма позволяет описывать более сложные зависимости, включая изгибы и точки перегиба.
При построении диаграммы рассеяния с регрессией важную роль играет тип шкал осей. В Vega-Lite используются следующие типы масштабирования:
Логарифмическое преобразование особенно полезно при экспоненциальных зависимостях:
"x": {"field": "x", "type": "quantitative", "scale": {"type": "log"}}
Изменение шкалы влияет на форму регрессионной линии, так как модель строится уже в преобразованном пространстве значений.
Помимо классической регрессии, Vega-Lite поддерживает сглаживание с
помощью LOESS-подобных методов через loess.
{
"transform": [
{
"loess": "y",
"on": "x"
}
]
}
LOESS не задаёт глобальной функции, а строит локальные аппроксимации, что позволяет лучше отражать нелинейные и шумные зависимости.
В одной визуализации возможно комбинировать несколько регрессионных подходов для сравнения поведения моделей.
"layer": [
{
"transform": [{"regression": "y", "on": "x"}],
"mark": "line",
"encoding": {"color": {"value": "red"}}
},
{
"transform": [{"loess": "y", "on": "x"}],
"mark": "line",
"encoding": {"color": {"value": "blue"}}
}
]
Такая структура позволяет оценивать расхождения между глобальной линейной моделью и локально сглаженной функцией.
При увеличении объёма данных диаграмма рассеяния может терять информативность из-за наложения точек. Для решения используются:
opacity)Пример настройки прозрачности:
"mark": {
"type": "point",
"opacity": 0.5
}
Регрессионная линия при этом сохраняет устойчивость, так как вычисляется на исходных данных, а не на визуальном представлении.
Vega-Lite автоматически интерполирует точки регрессии для построения гладкой линии. Количество промежуточных точек определяется внутренними параметрами трансформации, что позволяет избегать дискретности отображения.
При необходимости можно контролировать визуальную гладкость через
сортировку и плотность исходного диапазона x.
Регрессионные модели в Vega-Lite чувствительны к экстремальным значениям. Наличие выбросов может существенно изменять наклон линии, особенно в линейной модели.
Практически это проявляется в:
Для минимизации влияния выбросов используется предварительная фильтрация или альтернативные робастные методы, реализуемые на уровне подготовки данных до передачи в Vega-Lite.
Система Vega опирается на декларативный pipeline обработки данных:
Регрессия является частью этапа трансформации и не зависит от визуального слоя. Это позволяет:
Такая архитектура обеспечивает предсказуемость результата и упрощает масштабирование визуализаций при росте объёма данных.