exponenta event banner

фильтр

Фильтрация возмущений с помощью векторной модели авторегрессии (VAR)

Описание

пример

Y = filter(Mdl,Z) возвращает многомерный ряд ответов Y, что является результатом фильтрации лежащего в основе многомерного ряда возмущений Z. Z серии связаны с процессом инноваций модели через полностью определенную модель VAR (p)Mdl.

пример

Y = filter(Mdl,Z,Name,Value) использует дополнительные параметры, заданные одним или несколькими аргументами пары имя-значение. Например, можно указать данные экзогенного предиктора или масштабировать возмущения с помощью нижнего треугольного фактора Холески ковариационной матрицы инноваций модели.

пример

[Y,E] = filter(___) возвращает серию инноваций многомерной модели E с использованием любого из входных аргументов в предыдущих синтаксисах.

Примеры

свернуть все

Соответствие модели VAR (4) индексу потребительских цен (ИПЦ) и данным по уровню безработицы. Затем смоделировать отклики, фильтруя случайную серию гауссовых распределенных возмущений через оценочную модель.

Загрузить Data_USEconModel набор данных.

load Data_USEconModel

Постройте две серии на отдельных графиках.

figure;
plot(DataTable.Time,DataTable.CPIAUCSL);
title('Consumer Price Index');
ylabel('Index');
xlabel('Date');

Figure contains an axes. The axes with title Consumer Price Index contains an object of type line.

figure;
plot(DataTable.Time,DataTable.UNRATE);
title('Unemployment rate');
ylabel('Percent');
xlabel('Date');

Figure contains an axes. The axes with title Unemployment rate contains an object of type line.

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

rcpi = price2ret(DataTable.CPIAUCSL);
unrate = DataTable.UNRATE(2:end);
idx = all(~ismissing([rcpi unrate]),2);
Data = array2timetable([rcpi(idx) unrate(idx)],...
    'RowTimes',DataTable.Time(idx),'VariableNames',{'rcpi','unrate'});

Создайте модель VAR (4) по умолчанию с использованием краткого синтаксиса.

Mdl = varm(2,4);

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

EstMdl = estimate(Mdl,Data.Variables);

EstMdl является полностью указанным, оценочным varm объект модели.

Создать numobs-по-2 серии случайных гауссовых распределенных значений, где numobs - количество наблюдений в данных.

numobs = size(Data,1);
rng(1) % For reproducibility
Z = mvnrnd(zeros(Mdl.NumSeries,1),eye(Mdl.NumSeries),numobs);

Чтобы смоделировать реакции, фильтруйте возмущения по расчетной модели.

Y = filter(EstMdl,Z);

Y является матрицей 245 на 2 смоделированных откликов. В первом и втором столбцах приводятся, соответственно, смоделированные темпы роста ИПЦ и уровень безработицы.

Постройте график смоделированных и истинных ответов.

figure;
plot(Data.Time,Y(:,1));
hold on;
plot(Data.Time,Data.rcpi)
ylabel('Growth rate')
xlabel('Date')
title('CPI Growth Rate');
legend('Simulation','True')

Figure contains an axes. The axes with title CPI Growth Rate contains 2 objects of type line. These objects represent Simulation, True.

figure;
plot(Data.Time,Y(:,2));
hold on;
plot(Data.Time,Data.unrate)
ylabel('Percent');
xlabel('Date')
title('Unemployment Rate');
legend('Simulation','True')

Figure contains an axes. The axes with title Unemployment Rate contains 2 objects of type line. These objects represent Simulation, True.

Оценка модели VAR (4) индекса потребительских цен (ИПЦ), уровня безработицы и валового внутреннего продукта (ВВП). Включить компонент линейной регрессии, содержащий текущий квартал и последние четыре квартала государственных потребительских расходов и инвестиций (GCE). Пропустите несколько многомерных путей гауссовых возмущений через расчетную модель.

Загрузить Data_USEconModel набор данных. Вычислите реальный ВВП.

load Data_USEconModel
DataTable.RGDP = DataTable.GDP./DataTable.GDPDEF*100;

Постройте график всех переменных на отдельных графиках.

figure;
subplot(2,2,1)
plot(DataTable.Time,DataTable.CPIAUCSL);
ylabel('Index');
title('Consumer Price Index');
subplot(2,2,2)
plot(DataTable.Time,DataTable.UNRATE);
ylabel('Percent');
title('Unemployment Rate');
subplot(2,2,3)
plot(DataTable.Time,DataTable.RGDP);
ylabel('Output');
title('Real Gross Domestic Product');
subplot(2,2,4)
plot(DataTable.Time,DataTable.GCE);
ylabel('Billions of $');
title('Government Expenditures');

Figure contains 4 axes. Axes 1 with title Consumer Price Index contains an object of type line. Axes 2 with title Unemployment Rate contains an object of type line. Axes 3 with title Real Gross Domestic Product contains an object of type line. Axes 4 with title Government Expenditures contains an object of type line.

Стабилизировать ИПЦ, ВВП и ГЦЭ путем преобразования каждого из них в ряд темпов роста. Синхронизировать ряды показателей безработицы с другими, удалив свое первое наблюдение.

inputVariables = {'CPIAUCSL' 'RGDP' 'GCE'};
Data = varfun(@price2ret,DataTable,'InputVariables',inputVariables);
Data.Properties.VariableNames = inputVariables;
Data.UNRATE = DataTable.UNRATE(2:end);

Разверните ряд скоростей GCE до матрицы, которая включает текущее значение и до четырех запаздывающих значений. Удалить GCE переменная из Data.

rgcelag4 = lagmatrix(Data.GCE,0:4);
Data.GCE = [];

Создайте модель VAR (4) по умолчанию с использованием краткого синтаксиса.

Mdl = varm(3,4);
Mdl.SeriesNames = {'rcpi' 'unrate' 'rgdpg'};

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

EstMdl = estimate(Mdl,Data.Variables,'X',rgcelag4);

Создать 1000 путей numobs наблюдения из 3-D гауссова распределения. numobs - количество наблюдений в данных без отсутствующих значений.

numpaths = 1000;
numseries = Mdl.NumSeries;
idx = all(~ismissing([Data array2table(rgcelag4)]),2);
numobs = sum(idx);
rng(1);
Z = mvnrnd(zeros(Mdl.NumSeries,1),eye(Mdl.NumSeries),numobs*numpaths);
Z = reshape(Z,[numobs,3,numpaths]);

Фильтрация возмущений по расчетной модели. Введите данные предиктора. Верните нововведения (масштабированные нарушения).

[Y,E] = filter(EstMdl,Z,'X',rgcelag4);

Y и E 244 на 3 на 1000 матриц отфильтрованных откликов и масштабированных возмущений соответственно. Колонки соответствуют темпам роста ИПЦ, уровня безработицы и темпов роста ВВП, соответственно. filter применяет одни и те же данные предиктора ко всем путям.

Для каждого момента времени вычислите средний вектор отфильтрованных откликов среди всех путей.

MeanFilt = mean(Y,3);

MeanFilt представляет собой матрицу 244 на 3, содержащую среднее значение откликов в каждый момент времени.

Постройте график отфильтрованных ответов, их средних значений и данных.

Data = Data(idx,:);

figure;
for j = 1:Mdl.NumSeries
    subplot(2,2,j)
    plot(Data.Time,squeeze(Y(:,j,:)),'Color',[0.8,0.8,0.8])
    title(Mdl.SeriesNames{j});
    hold on
    h1 = plot(Data.Time,Data{:,j});
    h2 = plot(Data.Time,MeanFilt(:,j));
    hold off
end

hl = legend([h1 h2],'Data','Mean');
hl.Location = 'none';
hl.Position = [0.6 0.25 hl.Position(3:4)];

Figure contains 3 axes. Axes 1 with title rcpi contains 1002 objects of type line. Axes 2 with title unrate contains 1002 objects of type line. Axes 3 with title rgdpg contains 1002 objects of type line. These objects represent Data, Mean.

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

свернуть все

Модель VAR, заданная как varm объект модели, созданный varm или estimate. Mdl должен быть полностью указан.

Базовый многомерный ряд возмущений, связанный с процессом инноваций модели, указанный как numobsоколо-numseries числовая матрица или numobsоколо-numseriesоколо-numpaths числовой массив.

numobs - размер выборки. numseries - количество серий возмущений (Mdl.NumSeries). numpaths - количество трактов возмущений.

Строки соответствуют временам выборки, а последняя строка содержит последний набор возмущений.

Столбцы соответствуют отдельным сериям возмущений для переменных ответа.

Страницы соответствуют отдельным независимым путям. Для числовой матрицы: Z является одиночным numseries- размерный путь серии возмущений. Для массива 3-D каждая страница Z представляет собой отдельный numseries-мерный путь. Среди всех страниц нарушения в соответствующих строках происходят одновременно.

'Scale' аргумент пары имя-значение указывает, масштабировать ли возмущения до filter фильтрует их через Mdl. Дополнительные сведения см. в разделе Scale.

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

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

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

Пример: 'Scale',false,'X',X не масштабируется Z по нижнему треугольному коэффициенту Холески модельной ковариационной матрицы перед фильтрацией и использует матрицу X в качестве данных предиктора в компоненте регрессии.

Примеры ответов, которые предоставляют начальные значения для модели Mdl, указанная как пара, разделенная запятыми, состоящая из 'Y0' и numpreobsоколо-numseries числовая матрица или numpreobsоколо-numseriesоколо-numprepaths числовой массив.

numpreobs - количество предварительных наблюдений. numprepaths - количество путей предварительного отбора ответов.

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

Столбцы должны соответствовать ряду ответов в Y.

Страницы соответствуют отдельным независимым путям.

  • Если Y0 является матрицей, то filter применяет его к каждому пути (странице) в Y. Поэтому все пути в Y вытекают из общих исходных условий.

  • В противном случае filter применяется Y0(:,:,j) кому Y(:,:,j). Y0 должен иметь по крайней мере numpaths страницы, и filter использует только первый numpaths страницы.

Среди всех страниц наблюдения в конкретной строке происходят одновременно.

По умолчанию filter устанавливает все необходимые предварительные наблюдения.

  • Для стационарных процессов VAR без регрессионных компонентов filter использует безусловное среднее λ = Start− 1 (L) c.

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

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

Данные предиктора для регрессионного компонента в модели, указанной как пара, разделенная запятыми, состоящая из 'X' и числовую матрицу, содержащую numpreds столбцы.

numpreds - количество переменных предиктора (size(Mdl.Beta,2)).

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

Столбцы соответствуют отдельным переменным предиктора. Все переменные предиктора присутствуют в регрессионной составляющей каждого уравнения ответа.

filter применяется X к каждому пути (странице) в Z; то есть X представляет один путь наблюдаемых предикторов.

По умолчанию filter исключает компонент регрессии, независимо от его присутствия в Mdl.

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

Флаг, указывающий, следует ли масштабировать возмущения по нижнему треугольному коэффициенту Холески матрицы ковариации модели, указанной как пара, разделенная запятыми, состоящая из 'Scale' и true или false.

Для каждой страницы j = 1,...,numpaths, filter фильтрует numobsоколо-numseries матрица инноваций E(:,:,j) через модель VAR (p)Mdl, в соответствии с этими условиями.

  • Если Scale является true, то E(:,:,j) = L*Z(:,:,j) и L = chol(Mdl.Covariance,'lower').

  • Если Scale является false, то E(:,:,j) = Z(:,:,j).

Пример: 'Scale',false

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

Примечание

NaN значения в Z, Y0, и X укажите отсутствующие значения. filter удаляет отсутствующие значения из данных путем удаления по списку.

  1. Если Z является массивом 3-D, то filter горизонтально объединяет страницы Z для формирования numobsоколо-numpaths*numseries матрица.

  2. Если компонент регрессии присутствует, то filter горизонтально конкатенаты X кому Z для формирования numobsоколо-(numpaths*numseries + numpreds) матрица. filter предполагает, что последние строки каждой серии встречаются одновременно.

  3. filter удаляет любую строку, содержащую хотя бы одну NaN из объединенных данных.

  4. filter применяет шаги 1 и 3 к путям предварительной выборки в Y0.

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

Этот тип сокращения данных уменьшает эффективный размер выборки.

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

свернуть все

Отфильтрованный многомерный ряд ответов, возвращенный как numobsоколо-numseries числовая матрица или numobsоколо-numseriesоколо-numpaths числовой массив. Y представляет продолжение предварительных ответов в Y0.

Серия инноваций многомерных моделей, возвращенная как numobsоколо-numseries числовая матрица или numobsоколо-numseriesоколо-numpaths числовой массив. Для получения подробной информации о значении E, см. Scale.

Алгоритмы

  • filter вычисляет Y и E использование этого процесса для каждой страницы j в Z.

    1. Если Scale является true, то E(:,:,j) = L*Z(:,:,j), где L = chol(Mdl.Covariance,'lower'). В противном случае E(:,:,j) = Z(:,:,j). Задать et = E(:,:,j).

    2. Y(:,:,j) yt в этой системе уравнений.

      yt = Λ ^ 1 (L) (c ^ + δ ^ t + et).

      Определения переменных см. в разделе Дополнительные сведения.

  • filter делает вывод simulate. Обе функции фильтруют последовательность возмущений через модель для получения ответов и инноваций. Тем не менее, тогда как simulate генерирует ряд средних нулевых, единичных дисперсионных, независимых гауссовых возмущений Z для формирования инноваций E = L*Z, filter позволяет подавать возмущения из любого распределения.

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

    • Если не указать Y0, то t0 = 0.

    • В противном случае filter устанавливает t0 в значение size(Y0,1)Mdl.P. Поэтому время в компоненте тренда равно t = t0 + 1, t0 + 2,..., t0 + numobs, где numobs является эффективным размером выборки (size(Y,1) после filter удаляет отсутствующие значения). Это соглашение согласуется с поведением по умолчанию оценки модели, в которой estimate удаляет первый Mdl.P ответы, уменьшая эффективный размер выборки. Хотя filter явно использует первый Mdl.P предварительный отбор ответов в Y0 для инициализации модели, общее количество наблюдений в Y0 и Y (исключая отсутствующие значения) определяет t0.

Ссылки

[1] Гамильтон, Джеймс Д. Анализ временных рядов. Принстон, Нью-Джерси: Princeton University Press, 1994.

[2] Йохансен, С. Вывод на основе правдоподобия в коинтегрированных векторных авторегрессионных моделях. Oxford: Oxford University Press, 1995.

[3] Джуселиус, К. Коинтегрированная модель VAR. Oxford: Oxford University Press, 2006.

[4] Lütkepohl, H. Новое введение в анализ множественных временных рядов. Берлин: Спрингер, 2005.

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