Регрессия

Преобразование regression подбирает двумерную модель регрессии для сглаживания и прогнозирования данных. Для каждой группы можно построить отдельную линию тренда. По умолчанию результат — набор точек для такой линии; свойство params переключает вывод на параметры подобранной модели.

Поддерживаются следующие формы функции:

  • линейная (linear): y = a + b * x
  • логарифмическая (log): y = a + b * log(x)
  • экспоненциальная (exp): y = a * e^(b * x)
  • степенная (pow): y = a * x^b
  • квадратичная (quad): y = a + b * x + c * x^2
  • полиномиальная (poly): y = a + b * x + … + k * x^(order)

Все эти модели подбираются методом наименьших квадратов. Для непараметрической локальной регрессии см. преобразование loess.

// Любая спецификация представления
{
  ...,
  "transform": [
    {"regression": ...}, // Регрессия
    ...
  ],
  ...
}

Свойства преобразования

Свойство Тип Описание
regression FieldName Обязательное имя зависимого поля y, значения которого моделируются.
on FieldName Обязательное имя независимого поля x, используемого для прогноза.
groupby FieldName[] Поля группировки. Если не заданы, все объекты данных образуют одну группу.
method string Форма функции модели: "linear", "log", "exp", "pow", "quad" или "poly". По умолчанию "linear".
order number Степень полинома для метода poly; по умолчанию 3.
extent [number, number] Интервал [минимум, максимум] поля x, определяющий начало и конец линии тренда.
params boolean При true возвращает по одному объекту параметров модели на группу вместо точек линии. Объект содержит массив подобранных коэффициентов coef: сначала свободный член, затем коэффициенты при степенях в возрастающем порядке. Значение rSquared показывает долю общей дисперсии, объяснённую моделью. По умолчанию false.
as FieldName[] Имена двух выходных полей для точек линии. По умолчанию совпадают с именами входных полей x и y.

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

{"regression": "y", "on": "x"}

Это линейная регрессия, моделирующая y как функцию x. Выходные данные можно показать линейным примитивом:

[
  {"x": 1, "y": 2.3},
  {"x": 2, "y": 2.7},
  {"x": 3, "y": 3.0},
  ...
]

При заданном groupby модели строятся по группам, а выходные записи также содержат значения полей группировки.

Пример