Gtld exponentialSmoothing

Материал из GTL-wiki
Перейти к навигации Перейти к поиску

Краткое описание

Функция предназначена для формирования трендов для стационарного ряда.

Cодержание функции может дополняться!

Синтаксис

Стандартная конструкция выглядит таким образом:

let __exp = exponentialSmoothing(data, alpha, forecastSteps = 0);

Аргументы

data - исходный массив данных;
alpha - коэффициент сглаживания;
Коэффициент сглаживания alpha
alpha = 0 (близко к нулю):
Новые данные почти не учитываются, сглаженный ряд почти не меняется, повторяет начальное значение.
Подходит для почти стационарных процессов без тренда.

alpha = 1 (близко к единице):
Новые данные имеют максимальный вес, модель мгновенно реагирует на изменения. 
Может усиливать шум вместо сглаживания.

alpha = (0.1-0.3) (типичные значения):
Баланс между учётом новых данных и сглаживанием шума, плавная реакция на изменения тренда.
Стандартный выбор для большинства практических задач.

alpha = (0.3-0.5):
Быстрая реакция на изменения, меньше сглаживания, больше следования за данными;
Подходит для трендов с частыми изменениями.
forecastSteps - количество точек прогноза;

Содержание функции

function exponentialSmoothing(data, alpha, forecastSteps = 0) {
    if (data.length === 0) return [];

    const result = [data[0]];
    let prevForecast = data[0];

    // Сглаживание исторических данных
    for (let i = 1; i < data.length; i++) {
        const currentForecast = alpha * data[i] + (1 - alpha) * prevForecast;
        result.push(currentForecast);
        prevForecast = currentForecast;
    }

    // Прогноз: простое экспоненциальное сглаживание даёт константный прогноз
    const lastSmoothed = prevForecast;
    for (let i = 0; i < forecastSteps; i++) {
        result.push(lastSmoothed);
    }

    return result;
}