Найти в Дзене
Oracle APEX

Визуализация тренда с помощью псевдо-сплайна и Oracle APEX

Зашумленные исходные данные имеют тренд, тренд достаточно сложный. Для его восстановления нужна сплайн-аппроксимация. Можно проще. Исходные данные представляют собой объективно зарегистрированные факты некоторого процесса, испытывающего как (1) закономерные медленные изменения, так и (2) случайные воздействия в каждой точке фиксации факта. Назовем (1) трендом (или трендами), (2) шумом. Задачей аппроксимации является нахождение функции, наилучшим образом отражающей тренд(ы) и максимально подавляющей шум. Следует различать два понятия: Сплайном называется непрерывная гладкая функция, обеспечивающая в узлах сплайна (см. отметки на линии сплайна) равенство (а) значений и (б) минимум первых производных в общем случае независимых кусочных функций слева и справа от узла. Иными словами, сплайн - это составная функция, "гладко и красиво" аппроксимирующая сложный фактический процесс. Строгое решение задачи сплайн-аппроксимации существует, но достаточно сложно. Далее рассматривается упрощенный ва

Зашумленные исходные данные имеют тренд, тренд достаточно сложный. Для его восстановления нужна сплайн-аппроксимация. Можно проще.

Исходные данные представляют собой объективно зарегистрированные факты некоторого процесса, испытывающего как (1) закономерные медленные изменения, так и (2) случайные воздействия в каждой точке фиксации факта. Назовем (1) трендом (или трендами), (2) шумом.

Задачей аппроксимации является нахождение функции, наилучшим образом отражающей тренд(ы) и максимально подавляющей шум.

Исходные данные (что имеем на входе) и результирующий сплайн (то, что хотим получить)
Исходные данные (что имеем на входе) и результирующий сплайн (то, что хотим получить)

Следует различать два понятия:

  • Интерполяция - нахождение функции, проходящей через все фактические точки (см. на иллюстрации линию, соединяющую исходные данные);
  • Аппроксимация - нахождение функции, не обязательно проходящей через фактические точки, но наилучшим образом отображающей тренд(ы) (см. на иллюстрации линию сплайна).

Сплайном называется непрерывная гладкая функция, обеспечивающая в узлах сплайна (см. отметки на линии сплайна) равенство (а) значений и (б) минимум первых производных в общем случае независимых кусочных функций слева и справа от узла. Иными словами, сплайн - это составная функция, "гладко и красиво" аппроксимирующая сложный фактический процесс.

Строгое решение задачи сплайн-аппроксимации существует, но достаточно сложно. Далее рассматривается упрощенный вариант, дающий вполне приемлемые для практических нужд результаты.

Если мы сможем определить узлы аппроксимирующего сплайна (xi, yi), а затем провести через них интерполирующий сплайн (встроен в Oracle APEX), то задача визуализации тренда(ов) будет решена.

Задача определения узлов сплайна (xi, yi) распадается на две неравновесные части:

  1. Определение абсцисс узлов (xi);
  2. Определение ординат узлов (yi).

Первая задача может быть решена декларативно; например, в качестве абсцисс узлов можно взять начало отчетного периода. В данном случае использованы первые дни кварталов (см. иллюстрацию).

Абсциссы узлов сплайна, назначенные декларативно.
Абсциссы узлов сплайна, назначенные декларативно.

Для определения ординат (yi) узлов сплайна выполним полиномиальную аппроксимацию по методу наименьших квадратов по исходным данным вокруг абсцисс (xi) узлов.

Определим скользящее окно аппроксимации как квартал слева + квартал справа от абсциссы узла.

На иллюстрации окна аппроксимации показаны цветом; их ордината специального смысла не несет, окна показаны в виде "лестницы" лишь для наглядности - смысл имеют только абсциссы окон. Маркеры на линиях окон обозначают, слева направо, абсциссы: начала окна, узла сплайна, конца окна.

Скользящее окно аппроксимации.
Скользящее окно аппроксимации.

Выполним в каждом окне полиномиальную аппроксимацию 3-го порядка, т.е. определение методом наименьших квадратов значений коэффициентов a0, a1, a2, a3 полинома

y = a0 + a1x + a2x^2 + a3x^3.

В Oracle DB имеется пара встроенных функций для определения коэффициентов a0, a1 линейной регрессии, но отсутствуют функции для аппроксимации более высоких порядков. Однако, такие функции нами заблаговременно созданы и доступны для практической деятельности.

Оконная полиномиальная аппроксимация.
Оконная полиномиальная аппроксимация.

Вычислим с помощью полученных оконных аппроксимирующих функций значения ординат (yi) узлов сплайна. При этом мы получили аппроксимационные оценки (xi, yi) координат узлов. Проведем через них интерполяционный сплайн, встроенный в Oracle APEX.

Задача решена.

Результирующий сплайн.
Результирующий сплайн.