фильтр

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

Синтаксис

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

Описание

пример

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-by-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-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^+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] Гамильтон, J. D. Анализ timeseries. Принстон, NJ: Издательство Принстонского университета, 1994.

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

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

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

Введенный в R2017b