фильтр

Класс: arima

Отфильтруйте воздействия с помощью модели ARIMA или ARIMAX

Синтаксис

[Y,E,V] = filter(Mdl,Z)
[Y,E,V] = filter(Mdl,Z,Name,Value)

Описание

[Y,E,V] = filter(Mdl,Z) воздействия фильтров, Z, чтобы произвести ответы, инновации и условные отклонения одномерного ARIMA (p, D, q) модель.

[Y,E,V] = filter(Mdl,Z,Name,Value) воздействия фильтров с помощью дополнительных опций заданы одним или несколькими аргументами пары Name,Value.

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

Mdl

Модель ARIMA, как создано arima или estimate. Входная модель не может иметь никаких значений NaN.

Z

numObs-by-NumPaths матрица воздействий, zt, который управляет инновационным процессом, εt. Для процесса отклонения σt2, инновационным процессом дают

εt=σtzt.

Как вектор-столбец, Z представляет путь базового ряда воздействия. Как матрица, Z представляет наблюдения numObs за путями NumPaths базового ряда воздействия. filter принимает, что наблюдения через любую строку происходят одновременно. Последняя строка содержит новое наблюдение.

Примечание

NaN s указывает на отсутствующие значения. filter удаляет их из Z с помощью мудрого списком удаления. Таким образом, filter удаляет любую строку Z, содержащего по крайней мере один NaN. Это удаление уменьшает эффективный объем выборки и может вызвать неправильные временные ряды.

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

'V0'

Положительные преддемонстрационные условные отклонения, которые обеспечивают начальные значения для модели. Если V0 является вектор-столбцом, то filter применяет его к каждому выводу path. Если V0 является матрицей, то он требует, по крайней мере, столбцов NumPaths. Если количество столбцов превышает NumPaths, то filter использует первые столбцы NumPaths.

V0 требует, чтобы достаточно строк инициализировало компонент скользящего среднего значения модели ARIMA и любой условной модели отклонения. Необходимым количеством строк является, по крайней мере, Mdl.Q. Если вы включаете условную модель отклонения, то filter может потребовать больше, чем строки Mdl.Q. Если количество строк в V0 превышает необходимый номер, то filter использует новые наблюдения. Последняя строка содержит новое наблюдение.

Значение по умолчанию: filter устанавливает необходимые преддемонстрационные наблюдения на безусловное отклонение условного процесса отклонения.

'X'

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

Значение по умолчанию: filter не включает компонент регрессии в условную среднюю модель независимо от присутствия коэффициентов регрессии в Mdl.

'Y0'

Преддемонстрационные данные об ответе, обеспечивая начальные значения для модели. Если Y0 является вектор-столбцом, то filter применяет его к каждому выводу path. Если Y0 является матрицей, то он требует, по крайней мере, столбцов NumPaths. Если количество столбцов в Y0 превышает NumPaths, то filter использует первые столбцы NumPaths.

Y0 требует, по крайней мере, чтобы строки Mdl.P инициализировали модель. Если количество строк в Y0 превышает Mdl.P, то filter использует новые наблюдения Mdl.P. Последняя строка содержит новое наблюдение.

Значение по умолчанию: filter устанавливает необходимые преддемонстрационные наблюдения на безусловное среднее значение для стационарных процессов, и к 0 для неустановившихся процессов или процессов с компонентом регрессии.

'Z0'

Преддемонстрационные воздействия, обеспечивая начальные значения для входного ряда воздействия, Z. Если Z0 является вектор-столбцом, то filter применяет его к каждому выводу path. Если Z0 является матрицей, то он требует, по крайней мере, столбцов NumPaths. Если количество столбцов превышает NumPaths, то filter использует первые столбцы NumPaths.

Z0 требует, чтобы достаточное число строк инициализировало компонент скользящего среднего значения модели ARIMA и любой условной модели отклонения. Необходимое количество строк является, по крайней мере, Mdl.Q, но может быть больше, если условная модель отклонения включена. Если количество строк в Z0 превышает необходимый номер, то filter использует новые наблюдения. Последняя строка содержит новое наблюдение.

Значение по умолчанию: filter устанавливает необходимые преддемонстрационные наблюдения на 0.

Примечания

  • NaN s в данных указывает на отсутствующие значения, и filter удаляет их. Программное обеспечение объединяет преддемонстрационные данные и основные наборы данных отдельно, затем использует мудрое списком удаление, чтобы удалить любой NaN s. Таким образом, filter устанавливает PreSample = [Y0 Z0 V0] и Data = [Z X], затем это удаляет любую строку в PreSample или Data, который содержит по крайней мере один NaN.

  • Удаление NaN s в основных данных уменьшает эффективный объем выборки. Такое удаление может также создать неправильные временные ряды.

  • filter принимает, что вы синхронизируете преддемонстрационные данные, таким образом, что новое наблюдение за каждым преддемонстрационным рядом происходит одновременно.

  • Все ряды предиктора в X (т.е. столбцы X) применяются к каждому ряду воздействия в Z, чтобы произвести серию Y ответа NumPaths.

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

Y

numObs-by-NumPaths матрица моделируемых ответов. Y является продолжением преддемонстрационной серии Y0.

E

numObs-by-NumPaths матрица моделируемых инноваций с условными отклонениями, V. Каждый столбец является масштабированной серией инноваций (или воздействия) таким образом что E = sqrt(V)*Z.

V

numObs-by-NumPaths матрица условных отклонений инноваций в E, таким образом, что E = sqrt(V)*Z. V является продолжением преддемонстрационной серии V0.

Примеры

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

Задайте среднюю нулевую модель ARIMA (2,0,1).

Mdl = arima('Constant',0,'AR',{0.5,-0.8},'MA',-0.5,...
    'Variance',0.1);

Моделируйте модель с помощью симуляции Монте-Карло. Затем стандартизируйте моделируемые инновации и отфильтруйте их.

rng(1); % For reproducibility
[y,e,v] = simulate(Mdl,100);
Z = e./sqrt(v);
[Y,E,V] = filter(Mdl,Z);

Подтвердите, что выходные параметры simulate и filter идентичны.

isequal(y,Y)
ans = logical
   1

Логическое значение 1 подтверждает эти два выходных параметров, идентично.

Задайте среднюю нулевую модель ARIMA (2,0,1).

Mdl = arima('Constant',0,'AR',{0.5,-0.8},'MA',-0.5,...
    'Variance',0.1);

Моделируйте первые 20 ответов импульсной функции отклика. Сгенерируйте ряд воздействия с одноразовым, модульным импульсом, и затем отфильтруйте его. Установите все преддемонстрационные равные нулю наблюдения. Нормируйте импульсную функцию отклика, чтобы гарантировать, что первый элемент равняется 1.

Z = [1;zeros(19,1)];
Y = filter(Mdl,Z,'Y0',zeros(Mdl.P,1));
Y = Y/Y(1);

Постройте импульсную функцию отклика.

figure;
stem((0:numel(Y)-1)',Y,'filled');
title 'Impulse Response';

Импульсный ответ оценивает динамическое поведение системы к одноразовому, модульному импульсу. Можно также использовать метод impulse, чтобы построить импульсную функцию отклика для процесса ARIMA.

Оцените динамическое поведение системы к персистентному изменению в переменной путем графического вывода переходного процесса.

Задайте средний нулевой ARIMA (2,0,1) процесс.

Mdl = arima('Constant',0,'AR',{0.5,-0.8},'MA',-0.5,...
    'Variance',0.1);

Моделируйте первые 20 ответов на последовательность модульных воздействий. Сгенерируйте серию воздействия единиц, и затем отфильтруйте ее. Установите все преддемонстрационные равные нулю наблюдения.

Z = ones(20,1);
Y = filter(Mdl,Z,'Y0',zeros(Mdl.P,1));
Y = Y/Y(1);

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

Постройте функцию переходного процесса.

figure;
stem((0:numel(Y)-1)',Y,'filled');
title 'Step Response';

Создайте модели для ряда предиктора и ответа. Установите модель ARIMAX(2,1,3) на ответ MdlY и модель AR (1) к MdlX.

MdlY = arima('AR',{0.1 0.2},'D',1,'MA',{-0.1 0.1 0.05},...
'Constant',1,'Variance',0.5, 'Beta',2);
MdlX = arima('AR',0.5,'Constant',0,'Variance',0.1);

Моделируйте длину 100 серий x предиктора и серия iid нормальных воздействий z, имеющий средний нуль и отклонение 1.

rng(1);
z = randn(100,1);
x = simulate(MdlX,100);

Отфильтруйте воздействия z с помощью MdlY, чтобы произвести серию y ответа и построить y.

y = filter(MdlY,z,'X',x);
figure;
plot(y);
title 'Filter to simulate ARIMA(2,1,3)';
xlabel 'Time';
ylabel 'Response';

Альтернативы

  • filter обобщает simulate. Таким образом, оба фильтруют серию воздействий, чтобы произвести выходные ответы, инновации и условные отклонения. Однако simulate автоматически генерирует серию среднего нуля, модульного отклонения, независимых и тождественно распределенных (iid) воздействий согласно распределению в Mdl. Напротив, filter позволяет вам непосредственно задать свои собственные воздействия.

Ссылки

[1] Поле, G. E. P. Г. М. Дженкинс и Г. К. Рейнсель. Анализ timeseries: Предсказывая и Управление 3-й редактор Englewood Cliffs, NJ: Prentice Hall, 1994.

[2] Enders, W. Прикладные эконометрические временные ряды. Хобокен, NJ: John Wiley & Sons, 1995.

[3] Гамильтон, J. D. Анализ timeseries. Принстон, NJ: Издательство Принстонского университета, 1994.