filter

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

Описание

пример

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

пример

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

пример

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

Примеры

свернуть все

Рассмотрите модель VEC для следующих семи макроэкономических рядов. Затем подбирайте модель к данным и пропустите воздействия через подобранную модель.

  • Валовой внутренний продукт (ВВП)

  • GDP неявный ценовой дефлятор

  • Заплаченная компенсация сотрудников

  • Несельскохозяйственные часы делового сектора всех людей

  • Эффективная ставка по федеральным фондам

  • Частные потребительские расходы

  • Грубые частные внутренние инвестиции

Предположим, что cointegrating ранг 4 и один термин короткого промежутка времени является соответствующим, то есть, рассмотрите модель VEC(1).

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

load Data_USEconVECModel

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

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

figure;
subplot(2,2,1)
plot(FRED.Time,FRED.GDP);
title('Gross Domestic Product');
ylabel('Index');
xlabel('Date');
subplot(2,2,2)
plot(FRED.Time,FRED.GDPDEF);
title('GDP Deflator');
ylabel('Index');
xlabel('Date');
subplot(2,2,3)
plot(FRED.Time,FRED.COE);
title('Paid Compensation of Employees');
ylabel('Billions of $');
xlabel('Date');
subplot(2,2,4)
plot(FRED.Time,FRED.HOANBS);
title('Nonfarm Business Sector Hours');
ylabel('Index');
xlabel('Date');

Figure contains 4 axes objects. Axes object 1 with title Gross Domestic Product contains an object of type line. Axes object 2 with title GDP Deflator contains an object of type line. Axes object 3 with title Paid Compensation of Employees contains an object of type line. Axes object 4 with title Nonfarm Business Sector Hours contains an object of type line.

figure;
subplot(2,2,1)
plot(FRED.Time,FRED.FEDFUNDS);
title('Federal Funds Rate');
ylabel('Percent');
xlabel('Date');
subplot(2,2,2)
plot(FRED.Time,FRED.PCEC);
title('Consumption Expenditures');
ylabel('Billions of $');
xlabel('Date');
subplot(2,2,3)
plot(FRED.Time,FRED.GPDI);
title('Gross Private Domestic Investment');
ylabel('Billions of $');
xlabel('Date');

Figure contains 3 axes objects. Axes object 1 with title Federal Funds Rate contains an object of type line. Axes object 2 with title Consumption Expenditures contains an object of type line. Axes object 3 with title Gross Private Domestic Investment contains an object of type line.

Стабилизируйте весь ряд, кроме ставки по федеральным фондам, путем применяния логарифмического преобразования. Масштабируйте получившийся ряд 100 так, чтобы все ряды были по той же шкале.

FRED.GDP = 100*log(FRED.GDP);      
FRED.GDPDEF = 100*log(FRED.GDPDEF);
FRED.COE = 100*log(FRED.COE);       
FRED.HOANBS = 100*log(FRED.HOANBS); 
FRED.PCEC = 100*log(FRED.PCEC);     
FRED.GPDI = 100*log(FRED.GPDI);

Создайте модель VEC(1) с помощью краткого синтаксиса. Задайте имена переменных.

Mdl = vecm(7,4,1);
Mdl.SeriesNames = FRED.Properties.VariableNames
Mdl = 
  vecm with properties:

             Description: "7-Dimensional Rank = 4 VEC(1) Model with Linear Time Trend"
             SeriesNames: "GDP"  "GDPDEF"  "COE"  ... and 4 more
               NumSeries: 7
                    Rank: 4
                       P: 2
                Constant: [7×1 vector of NaNs]
              Adjustment: [7×4 matrix of NaNs]
           Cointegration: [7×4 matrix of NaNs]
                  Impact: [7×7 matrix of NaNs]
   CointegrationConstant: [4×1 vector of NaNs]
      CointegrationTrend: [4×1 vector of NaNs]
                ShortRun: {7×7 matrix of NaNs} at lag [1]
                   Trend: [7×1 vector of NaNs]
                    Beta: [7×0 matrix]
              Covariance: [7×7 matrix of NaNs]

Mdl vecm объект модели. Все свойства, содержащие NaN значения соответствуют параметрам, чтобы быть оцененными определенными данными.

Оцените модель с помощью целого набора данных и опций по умолчанию. По умолчанию, estimate использует первый p = 2 наблюдения как преддемонстрационные данные.

EstMdl = estimate(Mdl,FRED.Variables)
EstMdl = 
  vecm with properties:

             Description: "7-Dimensional Rank = 4 VEC(1) Model"
             SeriesNames: "GDP"  "GDPDEF"  "COE"  ... and 4 more
               NumSeries: 7
                    Rank: 4
                       P: 2
                Constant: [14.1329 8.77841 -7.20359 ... and 4 more]'
              Adjustment: [7×4 matrix]
           Cointegration: [7×4 matrix]
                  Impact: [7×7 matrix]
   CointegrationConstant: [-28.6082 109.555 -77.0912 ... and 1 more]'
      CointegrationTrend: [4×1 vector of zeros]
                ShortRun: {7×7 matrix} at lag [1]
                   Trend: [7×1 vector of zeros]
                    Beta: [7×0 matrix]
              Covariance: [7×7 matrix]

EstMdl предполагаемый vecm объект модели. Это полностью задано, потому что все параметры знали значения. По умолчанию, estimate налагает ограничения формы модели H1 Йохансен VEC путем удаления cointegrating тренда и линейных терминов тренда из модели. Исключение параметра из оценки эквивалентно наложению ограничений равенства, чтобы обнулить.

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

numobs = size(FRED,1) - Mdl.P;
rng(1) % For reproducibility
Z = randn(numobs,Mdl.NumSeries);

Чтобы симулировать ответы, пропустите воздействия через предполагаемую модель. Задайте первый p = 2 наблюдения как преддемонстрационные данные.

Y = filter(EstMdl,Z,'Y0',FRED{1:2,:});

Y 238 7 матрица симулированных откликов. Столбцы соответствуют именам переменных в EstMdl.SeriesNames.

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

figure;
subplot(2,2,1)
plot(FRED.Time(3:end),[FRED.GDP(3:end) Y(:,1)]);
title('Gross Domestic Product');
ylabel('Index (scaled)');
xlabel('Date');
legend('Simulation','True','Location','Best')
subplot(2,2,2)
plot(FRED.Time(3:end),[FRED.GDPDEF(3:end) Y(:,2)]);
title('GDP Deflator');
ylabel('Index (scaled)');
xlabel('Date');
legend('Simulation','True','Location','Best')
subplot(2,2,3)
plot(FRED.Time(3:end),[FRED.COE(3:end) Y(:,3)]);
title('Paid Compensation of Employees');
ylabel('Billions of $ (scaled)');
xlabel('Date');
legend('Simulation','True','Location','Best')
subplot(2,2,4)
plot(FRED.Time(3:end),[FRED.HOANBS(3:end) Y(:,4)]);
title('Nonfarm Business Sector Hours');
ylabel('Index (scaled)');
xlabel('Date');
legend('Simulation','True','Location','Best')

Figure contains 4 axes objects. Axes object 1 with title Gross Domestic Product contains 2 objects of type line. These objects represent Simulation, True. Axes object 2 with title GDP Deflator contains 2 objects of type line. These objects represent Simulation, True. Axes object 3 with title Paid Compensation of Employees contains 2 objects of type line. These objects represent Simulation, True. Axes object 4 with title Nonfarm Business Sector Hours contains 2 objects of type line. These objects represent Simulation, True.

figure;
subplot(2,2,1)
plot(FRED.Time(3:end),[FRED.FEDFUNDS(3:end) Y(:,5)]);
title('Federal Funds Rate');
ylabel('Percent');
xlabel('Date');
subplot(2,2,2)
plot(FRED.Time(3:end),[FRED.PCEC(3:end) Y(:,6)]);
title('Consumption Expenditures');
ylabel('Billions of $ (scaled)');
xlabel('Date');
subplot(2,2,3)
plot(FRED.Time(3:end),[FRED.GPDI(3:end) Y(:,7)]);
title('Gross Private Domestic Investment');
ylabel('Billions of $ (scaled)');
xlabel('Date');

Figure contains 3 axes objects. Axes object 1 with title Federal Funds Rate contains 2 objects of type line. Axes object 2 with title Consumption Expenditures contains 2 objects of type line. Axes object 3 with title Gross Private Domestic Investment contains 2 objects of type line.

Рассмотрите эту модель VEC(1) для трех гипотетических рядов ответа.

Δyt=c+AByt-1+Φ1Δyt-1+εt==[-1-3-30]+[-0.30.3-0.20.1-10][0.1-0.20.2-0.70.50.2]yt-1+[00.10.20.2-0.200.7-0.20.3]Δyt-1+εt.

Инновации многомерны Гауссов со средним значением 0 и ковариационная матрица

Σ=[1.30.41.60.40.60.71.60.75].

Создайте переменные для значений параметров.

Adjustment = [-0.3 0.3; -0.2 0.1; -1 0];
Cointegration = [0.1 -0.7; -0.2 0.5; 0.2 0.2];
ShortRun = {[0. 0.1 0.2; 0.2 -0.2 0; 0.7 -0.2 0.3]};
Constant = [-1; -3; -30];
Trend = [0; 0; 0];
Covariance = [1.3 0.4 1.6; 0.4 0.6 0.7; 1.6 0.7 5];

Создайте vecm объект модели, представляющий модель VEC(1) с помощью соответствующих аргументов пары "имя-значение".

Mdl = vecm('Adjustment',Adjustment,'Cointegration',Cointegration,...
    'Constant',Constant,'ShortRun',ShortRun,'Trend',Trend,...
    'Covariance',Covariance)
Mdl = 
  vecm with properties:

             Description: "3-Dimensional Rank = 2 VEC(1) Model"
             SeriesNames: "Y1"  "Y2"  "Y3" 
               NumSeries: 3
                    Rank: 2
                       P: 2
                Constant: [-1 -3 -30]'
              Adjustment: [3×2 matrix]
           Cointegration: [3×2 matrix]
                  Impact: [3×3 matrix]
   CointegrationConstant: [2×1 vector of NaNs]
      CointegrationTrend: [2×1 vector of NaNs]
                ShortRun: {3×3 matrix} at lag [1]
                   Trend: [3×1 vector of zeros]
                    Beta: [3×0 matrix]
              Covariance: [3×3 matrix]

Mdl эффективно, полностью заданный vecm объект модели. Таким образом, коинтеграция постоянный и линейный тренд неизвестна. Однако они не нужны для симуляции наблюдений или прогнозирования, учитывая, что полная константа и параметры тренда известны.

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

numobs = 100;
numpaths = 1000;
rng(1);
Z = randn(numobs,Mdl.NumSeries,numpaths);

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

[Y,E] = filter(Mdl,Z);

Y и E 100 3 1 000 матриц отфильтрованных ответов и масштабируемых воздействий, соответственно.

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

MeanFilt = mean(Y,3);

MeanFilt 100 3 матрица, содержащая среднее значение отфильтрованных ответов в каждом моменте времени.

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

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

Figure contains 3 axes objects. Axes object 1 with title Y1 contains 1001 objects of type line. Axes object 2 with title Y2 contains 1001 objects of type line. Axes object 3 with title Y3 contains 1001 objects of type line.

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

свернуть все

Модель VEC в виде vecm объект модели создается vecm или 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^+d^t+A^B^yt1+β^xt+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.

Введенный в R2017b