exponenta event banner

LagOp

Создать полином оператора задержки

Описание

Создайте p-градус, m-мерный оператор запаздывания многочлен A (L) = A0 + A1L1 + A2L2 +... + ApLp, задав матрицы коэффициентов A0,...,Ap и, необязательно, соответствующие задержки. L - оператор запаздывания (или обратного переключения), так что Ljyt = yt-j.

LagOp объектные функции позволяют работать с указанными многочленами. Например, можно отфильтровать данные временных рядов через многочлен, определить, является ли он стабильным, или объединить несколько многочленов, выполнив алгебру многочленов, включающую сложение, вычитание, умножение и деление.

Чтобы подогнать динамическую модель, содержащую многочлены оператора задержки, к данным, создайте соответствующий объект модели, а затем поместите его в данные. Одномерные модели см. в разделе arima и estimate; для получения информации о многомерных моделях см. varm и estimate. Для дальнейшего анализа можно создать LagOp объект из полученных оценочных коэффициентов.

Создание

Описание

пример

A = LagOp(coefficients) создает полином оператора задержки A с коэффициентами coefficientsи устанавливает свойство «Коэффициенты».

пример

A = LagOp(coefficients,Name,Value) указывает дополнительные параметры, использующие один или несколько аргументов пары имя-значение. Например, LagOp(coefficients,'Lags',[0 4 8],'Tolerance',1e-10) связывает коэффициенты с лагами 0, 4, и 8и устанавливает допуск включения запаздывания равным 1e-10.

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

развернуть все

Коэффициенты полинома оператора запаздывания, заданные как числовой вектор, квадратная числовая матрица m на m или вектор ячейки квадратных цифровых матриц m на m.

СтоимостьПолином, возвращенный LagOp
Числовой вектор длины p + 1Полином оператора p-градуса 1-D запаздывания, где coefficient(j) - коэффициент запаздывания j – 1
квадратная числовая матрица m-by-mМногочлен оператора задержки m-D 0-градуса, где coefficient A0, коэффициент запаздывания 0
Длина p + 1 клеточного вектора квадратных цифровых матриц m на mПолином оператора p-градуса m-D запаздывания, где coefficient(j) - матрица коэффициентов запаздывания j – 1

Пример: LagOp(1:3) создает многочлен A (L) = 1 + 2L1 + 3L2 .

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'Lags',[4 8],'Tolerance',1e-10 связывает коэффициенты с лагами 4 и 8и устанавливает допуск величины коэффициента равным 1e-10.

Задержки, связанные с коэффициентами полинома, заданными как пара, разделенная запятыми, состоящая из 'Lags' и вектор уникальных, неотрицательных целых чисел. Lags должен иметь numcoeff элементы, где numcoeff является одним из следующих:

  • Если coefficients - числовой или клеточный вектор, numcoeff = numel(coefficients). Коэффициент запаздывания Lags(j) является coefficients(j).

  • Если coefficients является матрицей, numcoeff = 1.

Пример: 'Lags',[0 4 8 12]

Допуск включения запаздывания, указанный как разделенная запятыми пара, состоящая из 'Tolerance' и неотрицательный числовой скаляр.

Пусть c - элемент коэффициента j с наибольшей звёздной величиной. Если cTolerance, LagOp удаляет коэффициент j из многочлена. Следовательно, MATLAB ® выполняет следующие действия:

  • Удалите соответствующее отставание из вектора в свойстве Lags.

  • Замените соответствующий коэффициент массива в свойстве Coefficients на zeros(m).

  • Если удаленное отставание является окончательным запаздыванием в многочлене, MATLAB уменьшает степень многочлена до степени следующего наибольшего запаздывания, присутствующего в многочлене. Например, если MATLAB удаляет задержки 3 и 4 из полинома степени 4, потому что их значения коэффициентов ниже Tolerance, полученный многочлен имеет степень 2.

Пример: 'Tolerance',1e-10

Свойства

развернуть все

Полиномиальные коэффициенты оператора запаздывания, задаваемые как массив ячеек с индексированием запаздывания из числовых скаляров или матриц m на m. Coefficients{j} - коэффициент запаздывания j, где целое число j0. Например, A.Coefficients{0} сохраняет коэффициент запаздывания 0 A.

Lags свойство хранит индексы ненулевых коэффициентов Coefficients.

Это свойство доступно только для чтения.

Степень полинома p, заданная как неотрицательный числовой скаляр. Degree = max(Lags)наибольшее отставание, связанное с ненулевым коэффициентом.

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

Это свойство доступно только для чтения.

Полиномиальная размерность m, заданная как положительный числовой скаляр. Можно применить многочлен A только для переменной временного ряда m-D.

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

Это свойство доступно только для чтения.

Полиномиальные запаздывания, связанные с ненулевыми коэффициентами, заданными как индексированный по запаздыванию вектор неотрицательных целых чисел.

Работа со значением Lagsпреобразуйте его в стандартный вектор MATLAB путем ввода следующего кода.

lags = A.Lags;

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

Функции объекта

filterПрименение многочлена оператора задержки к временному ряду фильтра
isEqLagOpОпределить, два ли LagOp объекты - один и тот же математический многочлен
isNonZeroНайти задержки, связанные с ненулевыми коэффициентами LagOp объекты
isStableОпределение стабильности полинома оператора запаздывания
minusПолиномиальное вычитание оператора запаздывания
mldivideМногочлен оператора запаздывания с левым делением
mrdivideОператор запаздывания многочлена правого деления
mtimesМногочлен оператора запаздывания
plusМногочленовое сложение оператора запаздывания
reflectОтражать полиномиальные коэффициенты оператора запаздывания вокруг нуля запаздывания
toCellArrayПреобразовать полиномиальный объект оператора задержки в массив ячеек

Примеры

свернуть все

Создать LagOp объект, представляющий полином оператора запаздывания

A (L) = 1-0 .6L + 0 .08L2.

A = LagOp([1 -0.6 0.08])
A = 
    1-D Lag Operator Polynomial:
    -----------------------------
        Coefficients: [1 -0.6 0.08]
                Lags: [0 1 2]
              Degree: 2
           Dimension: 1

Отображение коэффициента запаздывания 0.

a0 = A.Coefficients{0}
a0 = 1

Назначьте ненулевой коэффициент третьему запаздыванию:

A.Coefficients{3} = 0.5
A = 
    1-D Lag Operator Polynomial:
    -----------------------------
        Coefficients: [1 -0.6 0.08 0.5]
                Lags: [0 1 2 3]
              Degree: 3
           Dimension: 1

Степень полинома увеличивается до 3.

Создать LagOp объект, представляющий полином оператора запаздывания

A (L) = 1 + 0 25L4 + 0 .1L8 + 0 05L12.

nonzeroCoeffs = [1 0.25 0.1 0.05];
lags = [0 4 8 12];
A = LagOp(nonzeroCoeffs,'Lags',lags)
A = 
    1-D Lag Operator Polynomial:
    -----------------------------
        Coefficients: [1 0.25 0.1 0.05]
                Lags: [0 4 8 12]
              Degree: 12
           Dimension: 1

Извлеките коэффициенты из полинома оператора запаздывания и отобразите все коэффициенты из запаздываний от 0 до 12.

allCoeffs = toCellArray(A);         % Extract coefficients
allCoeffs = cell2mat(allCoeffs');
allLags = 0:A.Degree;               % Prepare lags for display

table(allCoeffs,'RowNames',"Lag " + string(allLags))
ans=13×1 table
              allCoeffs
              _________

    Lag 0          1   
    Lag 1          0   
    Lag 2          0   
    Lag 3          0   
    Lag 4       0.25   
    Lag 5          0   
    Lag 6          0   
    Lag 7          0   
    Lag 8        0.1   
    Lag 9          0   
    Lag 10         0   
    Lag 11         0   
    Lag 12      0.05   

Создать LagOp объект, представляющий полином оператора запаздывания

A (L) = [0,50001000-0,5] + [10,250,1-0,51-0,50,15-0,21] L4.

Phi0 = [0.5 0   0;... 
        0   1   0;...
        0   0   -0.5];

Phi4 = [1       0.25    0.1;...
        -0.5    1       -0.5;...
        0.15    -0.2    1];

Phi = {Phi0 Phi4};
lags = [0 4];

A = LagOp(Phi,'Lags',lags)
A = 
    3-D Lag Operator Polynomial:
    -----------------------------
        Coefficients: [Lag-Indexed Cell Array with 2 Non-Zero Coefficients]
                Lags: [0 4]
              Degree: 4
           Dimension: 3

Создание многочлена многомерного оператора задержки

Создание многочлена оператора 2-D с отставанием степени 3

A (L) = [1001] + [0,50,25-0,10,4] L + [0,050,025-0,010,04] L3.

m = 2;
A0 = eye(m);
A1 = [0.5 0.25; -0.1 0.4];
A3 = 0.1*A1;
Coeffs = {A0 A1 A3};
lags = [0 1 3];

A = LagOp(Coeffs,'Lags',lags)
A = 
    2-D Lag Operator Polynomial:
    -----------------------------
        Coefficients: [Lag-Indexed Cell Array with 3 Non-Zero Coefficients]
                Lags: [0 1 3]
              Degree: 3
           Dimension: 2

Определение полиномиальной стабильности

Полином оператора запаздывания стабилен, если величины всех собственных значений его характеристического многочлена меньше 1.

Определите, является ли многочлен стабильным, и верните собственные значения его характеристического многочлена.

[tf,evals] = isStable(A)
tf = logical
   1

evals = 6×1 complex

  -0.5820 + 0.1330i
  -0.5820 - 0.1330i
   0.0821 + 0.2824i
   0.0821 - 0.2824i
   0.0499 + 0.2655i
   0.0499 - 0.2655i

Инвертировать многочлен

Вычислите инверсию (L) правом, делящим матрицу идентичности 2 на 2 на (L).

Ainv = mrdivide(eye(A.Dimension),A)
Ainv = 
    2-D Lag Operator Polynomial:
    -----------------------------
        Coefficients: [Lag-Indexed Cell Array with 10 Non-Zero Coefficients]
                Lags: [0 1 2 3 4 5 6 7 8 9]
              Degree: 9
           Dimension: 2

Ainv является LagOp объект, представляющий обратную A (L), многочлен оператора запаздывания степени 9. Теоретически, обратное многочлен оператора запаздывания имеет бесконечную степень, но mrdivide допуски на величину коэффициента усекают многочлен.

Умножьте A (L) и его обратное значение.

checkinv = Ainv*A
checkinv = 
    2-D Lag Operator Polynomial:
    -----------------------------
        Coefficients: [Lag-Indexed Cell Array with 4 Non-Zero Coefficients]
                Lags: [0 10 11 12]
              Degree: 12
           Dimension: 2

Поскольку обратное вычисление возвращает усеченное теоретическое обратное, произведение checkinv содержит задержки, представляющие остаток. Вы можете уменьшить mrdivide допуски на величину коэффициента для получения обратного многочлена, который является более точным.

Фильтровать временные ряды

Создайте 2-D временной ряд yt = A (L) et = A0et + A1et-1 + A2et-2 + A3et-3 путем фильтрации 2-D серии 100 случайных стандартных гауссовых отклонений et через многочлен.

T = 100;
e = randn(T,m);
y = filter(A,e);
plot((A.Degree + 1):T,y)
title('Filtered Series')

Figure contains an axes. The axes with title Filtered Series contains 2 objects of type line.

y представляет собой матрицу 97 на 2, представляющую yt. y имеет p меньше наблюдений, чем e потому что filter требуется первый p наблюдения e для инициализации динамического ряда при создании y(1:4,:).

Представлен в R2010a