filter

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

Описание

пример

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

пример

Y = filter(Mdl,Z,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;
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');

Стабилизируйте весь ряд, кроме ставки по федеральным фондам, путем применяния логарифмического преобразования. Масштабируйте получившийся ряд 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;
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');

Рассмотрите эту модель 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

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

свернуть все

Модель 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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фильтр фильтрует 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 использование этот процесс, чтобы определить источник времени 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. Анализ Временных Рядов. Принстон, NJ: Издательство Принстонского университета, 1994.

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

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

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

Введенный в R2017b

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