Gtld simpleAR1

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

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

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

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

Синтаксис

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

let __ar1 = simpleAR1(data, phi, steps = 3);

Аргументы

data - исходный массив данных;
phi - коэффициент авторегрессии;
forecastSteps - количество точек прогноза;

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

// Протсая ARIMA-модель (авторегрессия — интегрированное скользящее среднее)
/*
Коэффициент авторегрессии Ф подбирается "на глаз"
Ф=0: вибрация почти случайна, мало зависит от предыдущих значений.
0<Ф<1: положительная автокорреляция — рост/падение вибрации имеет инерцию (типично для износа оборудования).
Ф=1: процесс близок к случайному блужданию (возможна нестационарность).
Ф<0: отрицательная автокорреляция (редкий случай для вибрации).

Как влияет на прогноз
Значение Ф напрямую определяет динамику прогноза:
Большие значения (0.8–0.9): прогноз плавно продолжает тренд с умеренным ростом/падением.
Малые значения (0.1–0.3): прогноз быстро «затухает» к среднему уровню.
Отрицательные значения: прогноз будет осциллировать (чередовать рост и падение).
*/
function simpleAR1(data, phi, steps = 3) {
    const n = data.length;
    if (n === 0) return [];

    // Оцениваем среднее значение ряда
    const mean = data.reduce((sum, val) => sum + val, 0) / n;

    const result = [...data];
    // Центрируем последнее значение
    let lastDeviation = data[n - 1] - mean;

    for (let i = 0; i < steps; i++) {
        // Прогноз отклонения
        const nextDeviation = lastDeviation * phi;
        // Возвращаем среднее
        result.push(nextDeviation + mean);
        lastDeviation = nextDeviation;
    }

    return result;
}