trenddecomp

Найдите тренды в данных

    Описание

    пример

    LT = trenddecomp(A) находит тренды в векторе из данных с помощью сингулярного анализа спектра (SSA), который принимает аддитивное разложение данных, таким образом что A = LT+ST+R. В этом разложении, LT долгосрочный тренд в данных, ST сезонный, или колебательный, тренд (или тренды), и R остаток. LT вектор с той же длиной как A.

    SSA является полезным алгоритмом, когда периоды сезонных трендов неизвестны. Алгоритм SSA принимает, что входные данные расположены равными интервалами.

    LT = trenddecomp(A,"ssa",lag) также использует алгоритм SSA, чтобы найти тренды в A и дополнительно задает значение задержки, которое определяет размер матрицы, на которой сингулярное разложение вычисляется, как описано в [1]. Большие значения lag обычно приводите к большему количеству разделения трендов.

    Значение lag должен быть скаляр в интервале [3, N/2], где N является длиной A. Если период сезонного тренда известен, то задайте lag как кратное периоду.

    LT = trenddecomp(___,NumSeasonal=n) задает количество сезонных трендов, чтобы возвратиться, с помощью любой из комбинаций входных аргументов в предыдущих синтаксисах.

    LT = trenddecomp(A,"stl",period) находит тренды в A использование алгоритма STL, который является аддитивным разложением на основе локально взвешенной регрессии, как описано в [2]. STL требует периода для сезонного тренда. Когда данные будут иметь только один сезонный тренд, задайте period как скалярное значение. Для нескольких сезонных трендов задайте period как вектор, элементами которого являются периоды для каждого сезонного тренда.

    Алгоритм STL принимает, что входные данные расположены равными интервалами.

    пример

    [LT,ST,R] = trenddecomp(___) также возвращает сезонные тренды и остаток от разложения. Длины ST и R совпадайте с длиной входного вектора A. Когда A содержит несколько сезонных трендов, ST матрица, столбцы которой содержат каждый сезонный тренд.

    D = trenddecomp(T) находит тренды в таблице или расписании данных с помощью SSA. trenddecomp работает с каждой табличной переменной отдельно. D таблица или расписание, переменные которого содержат долгосрочный тренд, сезонные тренды и остаток для каждой переменной. trenddecomp возвращает несколько сезонных трендов как одну переменную в D, чьи столбцы содержат каждый сезонный тренд.

    D = trenddecomp(T,"ssa",lag) задает значение задержки SSA для входа таблицы или расписания и применяет задержку ко всем табличным переменным.

    D = trenddecomp(T,___,NumSeasonal=n) задает количество сезонных трендов, когда вы используете SSA на данных о таблице или расписании, и применяет номер к каждой табличной переменной.

    пример

    D = trenddecomp(T,"stl",period) находит тренды с помощью STL с заданными сезонными периодами тренда. trenddecomp применяет периоды к каждой табличной переменной.

    Примеры

    свернуть все

    Вычислите долгосрочный тренд в векторе из данных с помощью сингулярного анализа спектра.

    Создайте вектор из данных A это содержит долгосрочный тренд, сезонный тренд и шумовой компонент.

    t = (0:20)';
    A = 3*sin(t) + t + 0.1*rand(21,1);

    Вычислите долгосрочный тренд. Отобразите на графике данные и долгосрочный тренд.

    LT = trenddecomp(A);
    plot(t,A,t,LT)
    legend("Data","Long-term")

    Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Data, Long-term.

    Анализируйте вектор из данных в его долгосрочный тренд, два сезонных тренда и остаток с помощью сингулярного анализа спектра.

    Создайте вектор из данных A это содержит долгосрочный тренд, два сезонных тренда с различными периодами и шумовой компонент.

    t = (1:200)';
    trend = 0.001*(t-100).^2;
    period1 = 20;
    period2 = 30;
    seasonal1 = 2*sin(2*pi*t/period1);
    seasonal2 = 0.75*sin(2*pi*t/period2);
    noise = 2*(rand(200,1) - 0.5);
    A = trend + seasonal1 + seasonal2 + noise;

    Анализируйте данные с помощью алгоритма SSA. Отобразите на графике данные, тренды и остаток.

    [LT,ST,R] = trenddecomp(A);
    plot([A LT ST R]);
    legend("Data","Long-term","Seasonal1","Seasonal2","Remainder")

    Figure contains an axes object. The axes object contains 5 objects of type line. These objects represent Data, Long-term, Seasonal1, Seasonal2, Remainder.

    Анализируйте данные в таблице в ее долгосрочный тренд, два сезонных тренда и остаток с помощью алгоритма STL.

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

    t = (1:200)';
    trend = 0.001*(t-100).^2;
    period1 = 20;
    period2 = 30;
    seasonal1 = 2*sin(2*pi*t/period1);
    seasonal2 = 0.75*sin(2*pi*t/period2);
    noise = 2*(rand(200,1) - 0.5);
    data = trend + seasonal1 + seasonal2 + noise;
    T = table(data)
    T=200×1 table
         data 
        ______
    
        11.204
        11.896
        10.722
        12.502
        11.939
        10.646
         10.57
        10.479
        10.527
        9.6793
        7.1756
        7.9505
        7.1704
        5.6206
        5.8256
        4.2817
          ⋮
    
    

    Анализируйте данные с помощью алгоритма STL. Отобразите на графике данные, тренды и остаток.

    D = trenddecomp(T,"stl",[20 30]);
    D = addvars(D,data);
    stackedplot(D)
    xlabel("t")

    Figure contains an object of type stackedplot.

    Входные параметры

    свернуть все

    Входной массив в виде числового вектора.

    Типы данных: single | double

    Изолируйте значение для SSA в виде числового скаляра в интервале [3, N/2], где N является длиной входных данных. Большие значения lag обычно обеспечивайте больше разделения трендов. Если период известен, то задайте lag как кратное периоду.

    Количество сезонных трендов для SSA в виде целочисленного скаляра, больше, чем 0.

    Период для STL в виде числового скаляра, числового вектора, duration скаляр или duration вектор. Когда данные будут иметь один сезонный тренд, задайте period как скаляр. Когда данные будут иметь несколько сезонных трендов, задайте period как вектор, элементами которого являются периоды для каждого сезонного тренда. period может иметь вводят duration для входных данных расписания только.

    Табличные входные данные в виде таблицы или расписания. trenddecomp работает с каждой табличной переменной отдельно. Расписания должны быть расположены равными интервалами.

    Выходные аргументы

    свернуть все

    Долгосрочный тренд, возвращенный как вектор с той же длиной как входной вектор.

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

    Остаток, возвращенный как вектор с той же длиной как входной вектор.

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

    Ссылки

    [1] Golyandina, Нина и Анатолий Жиглявский. Сингулярный Анализ Спектра для Временных рядов. SpringerBriefs в Статистике. Берлин, Гейдельберг: Спрингер Берлин Гейдельберг, 2013. https://doi.org/10.1007/978-3-642-34913-3.

    [2] Кливленд, R.B., В.С. Кливленд, Дж. Макрей и я. Terpenning. “STL: процедура разложения Сезонного Тренда на основе лесса”. Журнал официальной статистики 6 (1990): 3–73.

    Смотрите также

    |

    Введенный в R2021b