filter

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

Описание

пример

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

пример

Y = filter(Mdl,Z,Name,Value) дополнительные опции использования заданы одними или несколькими аргументами 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 contains an axes object. The axes object 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 object. The axes object with title Unemployment rate contains an object of type line.

Стабилизируйте 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- 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 contains an axes object. The axes object 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 object. The axes object with title Unemployment Rate contains 2 objects of type line. These objects represent 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');

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

Стабилизируйте 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)];

Figure contains 3 axes objects. Axes object 1 with title rcpi contains 1002 objects of type line. Axes object 2 with title unrate contains 1002 objects of type line. Axes object 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- размерный путь ряда воздействия. Для трехмерного массива, каждой страницы Z представляет отдельный numseries- размерный путь. Среди всех страниц воздействия в соответствующих строках происходят одновременно.

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

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

Аргументы name-value

Задайте дополнительные разделенные запятой пары 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 использует безусловное среднее значение μ=Φ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

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

Примечание

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

  1. Если Z трехмерный массив, затем 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 использование этот процесс, чтобы определить источник времени 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] Гамильтон, анализ временных рядов Джеймса Д. Принстон, NJ: Издательство Принстонского университета, 1994.

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

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

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

Введенный в R2017a