quantile: квантильные вычисления

Квантильные преобразования в Vega и Vega-Lite используются для построения статистических распределений, разбиения данных по процентилям и анализа формы распределения без предварительной агрегации во внешнем коде. Основная задача — преобразование набора значений в дискретные точки квантильной функции распределения, где каждому уровню вероятности соответствует значение переменной.


Математическая интерпретация квантилей

Квантиль ( q(p) ) определяется как значение, ниже которого находится доля ( p ) наблюдений:

[ q(p) = ]

где ( F(x) ) — функция распределения.

В контексте визуализации это позволяет:

  • строить эмпирические функции распределения;
  • определять медиану и перцентили;
  • анализировать разброс данных без биннинга фиксированной ширины.

Квантильное преобразование в Vega

В Vega квантильное преобразование реализуется через трансформацию quantile, которая принимает массив значений и вычисляет значения для заданных вероятностей.

Основные задачи:

  • вычисление набора точек квантильной функции;
  • подготовка данных для графиков распределений;
  • построение линий percentiles и confidence bands.

Структура трансформации 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 Имена выходных полей.

Обычно:

  • первое поле — вероятность (probability);
  • второе — значение квантиля.

Группировка данных (groupby)

Квантильное преобразование часто применяется отдельно для подмножеств данных.

{
  "type": "quantile",
  "field": "value",
  "groupby": ["category"],
  "probs": [0.25, 0.5, 0.75],
  "as": ["prob", "quantile"]
}

Поведение groupby

При наличии groupby:

  • каждый набор групп обрабатывается независимо;
  • квантильные функции вычисляются локально;
  • результат расширяется по количеству групп.

Это позволяет строить:

  • распределения по категориям;
  • сравнительные боксплоты;
  • многосерийные анализы плотности.

Применение в Vega-Lite

В 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"]
    }
  ]
}

Результат:

  • ось X — вероятность;
  • ось Y — значение квантиля.

Такая форма отображает распределение в виде монотонной кривой.


Использование в анализе выбросов

Квантили позволяют формализовать границы выбросов:

  • нижний порог: ( q(0.05) )
  • верхний порог: ( q(0.95) )

При визуализации можно выделять области:

{
  "transform": [
    {
      "quantile": "value",
      "probs": [0.05, 0.95],
      "as": ["p", "q"]
    }
  ]
}

Далее результат используется для построения диапазонов доверия или межквартильного интервала.


Связь с boxplot-аналитикой

Хотя Vega-Lite имеет встроенную поддержку boxplot через boxplot mark, квантильное преобразование позволяет вручную воспроизводить структуру:

  • Q1 — 25%
  • Median — 50%
  • Q3 — 75%

Пример:

{
  "transform": [
    {
      "quantile": "value",
      "probs": [0.25, 0.5, 0.75],
      "as": ["p", "q"]
    }
  ]
}

Полученные значения далее используются для построения визуальных элементов:

  • коробка (Q1–Q3);
  • линия медианы;
  • усы распределения.

Особенности вычисления

Квантильное преобразование в Vega/Vega-Lite опирается на сортировку данных и интерполяцию:

  • при малых выборках используется дискретная выборка;
  • при больших — линейная интерполяция между соседними значениями;
  • порядок данных не влияет на результат.

Комбинация с другими transform

Квантильные вычисления часто комбинируются с:

  • 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 соответствуют классическим методам:

  • descriptive statistics (описательная статистика);
  • robust statistics (устойчивые оценки);
  • non-parametric analysis (непараметрические методы).

Они особенно эффективны при асимметричных распределениях, где среднее значение не отражает структуру данных.