Регрессия
Преобразование 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 модели строятся по группам, а выходные записи также содержат значения полей группировки.