Квантильные преобразования в Vega и Vega-Lite используются для построения статистических распределений, разбиения данных по процентилям и анализа формы распределения без предварительной агрегации во внешнем коде. Основная задача — преобразование набора значений в дискретные точки квантильной функции распределения, где каждому уровню вероятности соответствует значение переменной.
Квантиль ( q(p) ) определяется как значение, ниже которого находится доля ( p ) наблюдений:
[ q(p) = ]
где ( F(x) ) — функция распределения.
В контексте визуализации это позволяет:
В Vega квантильное преобразование реализуется через трансформацию
quantile, которая принимает массив значений и вычисляет
значения для заданных вероятностей.
Основные задачи:
Типовая структура в Vega:
{
"type": "quantile",
"field": "value",
"probs": [0.1, 0.25, 0.5, 0.75, 0.9],
"as": ["prob", "value"]
}
field Поле исходных данных, по которому вычисляются квантили.
probs Массив вероятностей ( p ), для которых вычисляются квантили.
Пример:
"probs": [0.05, 0.5, 0.95]
означает расчет 5%, медианы и 95% квантилей.
as Имена выходных полей.
Обычно:
Квантильное преобразование часто применяется отдельно для подмножеств данных.
{
"type": "quantile",
"field": "value",
"groupby": ["category"],
"probs": [0.25, 0.5, 0.75],
"as": ["prob", "quantile"]
}
При наличии groupby:
Это позволяет строить:
В Vega-Lite квантильные трансформации интегрируются в pipeline
transform, упрощая описание статистической обработки.
Пример:
{
"data": {"url": "data.json"},
"transform": [
{
"quantile": "value",
"probs": [0.1, 0.5, 0.9],
"as": ["prob", "quantile"]
}
],
"mark": "line",
"encoding": {
"x": {"field": "prob", "type": "quantitative"},
"y": {"field": "quantile", "type": "quantitative"}
}
}
Квантильное преобразование часто используется для визуализации inverse CDF.
{
"transform": [
{
"quantile": "value",
"probs": [
0.01, 0.05, 0.1,
0.25, 0.5, 0.75,
0.9, 0.95, 0.99
],
"as": ["p", "q"]
}
]
}
Результат:
Такая форма отображает распределение в виде монотонной кривой.
Квантили позволяют формализовать границы выбросов:
При визуализации можно выделять области:
{
"transform": [
{
"quantile": "value",
"probs": [0.05, 0.95],
"as": ["p", "q"]
}
]
}
Далее результат используется для построения диапазонов доверия или межквартильного интервала.
Хотя Vega-Lite имеет встроенную поддержку boxplot через
boxplot mark, квантильное преобразование позволяет вручную
воспроизводить структуру:
Пример:
{
"transform": [
{
"quantile": "value",
"probs": [0.25, 0.5, 0.75],
"as": ["p", "q"]
}
]
}
Полученные значения далее используются для построения визуальных элементов:
Квантильное преобразование в Vega/Vega-Lite опирается на сортировку данных и интерполяцию:
Квантильные вычисления часто комбинируются с:
filter — предварительное ограничение выборки;formula — подготовка производных значений;aggregate — предварительная агрегация по группам;window — скользящие вычисления.Пример цепочки:
"transform": [
{"filter": "datum.value > 0"},
{
"quantile": "value",
"groupby": ["segment"],
"probs": [0.1, 0.5, 0.9],
"as": ["p", "q"]
}
]
Квантильные данные часто служат альтернативой KDE (kernel density estimation):
Визуально формируют ступенчатую или гладко интерполированную кривую распределения.
Результирующая таблица после quantile обычно имеет структуру:
| prob | quantile |
|---|---|
| 0.1 | x₁ |
| 0.5 | x₂ |
| 0.9 | x₃ |
где:
prob — вероятность;quantile — значение исходного признака.Такая форма является универсальной для последующей визуализации в любых mark типах: line, area, rule.
При использовании quantile трансформации необходимо учитывать:
Квантильные вычисления в Vega соответствуют классическим методам:
Они особенно эффективны при асимметричных распределениях, где среднее значение не отражает структуру данных.