фильтр

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

Синтаксис

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

Описание

пример

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

пример

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

пример

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

Примеры

свернуть все

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

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

load Data_USEconModel

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

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

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

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

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-by-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 матрица моделируемых ответов. Первые и вторые столбцы содержат моделируемый темп роста CPI и уровень безработицы, соответственно.

Постройте моделируемые и истинные ответы.

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;
plot(Data.Time,Y(:,2));
hold on;
plot(Data.Time,Data.unrate)
ylabel('Percent');
xlabel('Date')
title('Unemployment Rate');
legend('Simulation','True')

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

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

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');

Стабилизируйте CPI, GDP и GCE путем преобразования каждого в серию темпов роста. Синхронизируйте ряд уровня безработицы с другими путем удаления его первого наблюдения.

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);

Сгенерируйте 1 000 путей наблюдений 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 1 000 матриц отфильтрованных ответов и масштабируемых воздействий, соответственно. Столбцы соответствуют темпу роста CPI, уровню безработицы и темпу роста GDP, соответственно. 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)];

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

свернуть все

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

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

numobs является объемом выборки. numseries является количеством ряда воздействия (Mdl.NumSeries). numpaths является количеством путей к воздействию.

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

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

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

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

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

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

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

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

Преддемонстрационные ответы, которые обеспечивают начальные значения для модели Mdl, заданной как пара, разделенная запятой, состоящая из 'Y0' и numpreobs-by-numseries числовая матрица или numpreobs-by-numseries-by-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 использует безусловное среднее значение μ=Φ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-by-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

Типы данных: логический

Примечание

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

  1. Если Z является трехмерным массивом, то filter горизонтально конкатенирует страницы Z, чтобы сформировать numobs-by-numpaths*numseries матрица.

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

  3. filter удаляет любую строку, которая содержит по крайней мере один NaN от конкатенированных данных.

  4. filter применяет шаги 1 и 3 к преддемонстрационным путям в Y0.

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

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

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

свернуть все

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

Многомерный образцовый инновационный ряд, возвращенный как numobs-by-numseries числовая матрица или numobs-by-numseries-by-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 использует этот процесс, чтобы определить источник времени t 0 из моделей, которые включают линейные тренды времени.

    • Если вы не задаете Y0, то t 0 = 0.

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

Ссылки

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

[2] Йохансен, S. Основанный на вероятности вывод в векторных авторегрессивных моделях Cointegrated. Оксфорд: Издательство Оксфордского университета, 1995.

[3] Juselius, K. Модель VAR Cointegrated. Оксфорд: Издательство Оксфордского университета, 2006.

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

Введенный в R2017a