Вектор авторегрессии (VAR)

Econometrics Toolbox™ имеет класс функций для моделирования многомерных временных рядов с помощью модели VAR. The varm функция создает varm объект, который представляет модель VAR. varm свойства определяют структуру модели VAR, включая количество рядов откликов (размерность), количество авторегрессивных (AR) лагов и наличие коэффициентов постоянного или временного тренда в модели.

A varm объект может служить шаблоном модели для оценки, в этом случае необходимо задать по крайней мере количество рядов откликов и степень полинома AR. Опционально можно задать значения для других параметров (коэффициенты или инновационная ковариационная матрица), чтобы проверить гипотезы или экономическую теорию. estimate функция объекта соответствует неопределенным оценочным параметрам модели заданным данным и возвращает полностью заданное varm объект. Поставка полностью заданной модели в другие varm функции объекта для последующего анализа.

Создайте модель VAR

Можно создать varm объект с использованием одного из двух синтаксисов: shorthand или longhand.

Синтаксис стенограммы подходит для быстрого создания модели, обычно когда модель служит шаблоном для оценки. Необходимыми входами являются размерность ряда откликов (numseries) и степени AR полинома (p). Полином AR полученной модели VAR имеет ненулевые лаги с 1 по p. Для получения примера смотрите Создание и корректировка модели VAR с помощью синтаксиса Shorthand.

Синтаксис longhand позволяет получить большую гибкость в спецификации параметра, чем синтаксис shorthand. Для примера можно задать значения матриц авторегрессионных коэффициентов или какие лаги имеют ненулевые матрицы коэффициентов. В то время как varm функция требует входов numseries и p при использовании синтаксиса shorthand функция должна иметь возможность вывести эти структурные характеристики из значений, которые вы предоставляете, когда вы используете синтаксис longhand. Другими словами, эти структурные характеристики не являются оценочными. Для получения примера смотрите Создание и настройку модели VAR с помощью синтаксиса Longhand.

Независимо от синтаксиса, полученная модель VAR является объектом. Значения свойств объекта полностью определяют структуру модели VAR. После создания модели можно отобразить ее, чтобы проверить ее структуру, и можно изменить значения параметров, скорректировав свойства с помощью записи через точку (см. «Отображение и изменение объектов модели»).

В зависимости от целей анализа, можно использовать один из нескольких методов для создания модели с помощью varm функция.

  • Полностью заданный объект модели - Используйте этот метод, когда вы знаете значения всех параметров вашей модели. То есть вы не планируете подгонять модель к данным.

  • Шаблон модели для неограниченной оценки - Используйте этот метод, когда вы знаете размерность отклика и степень полинома AR, и вы хотите подгонять целую модель к данным, используя estimate.

  • Частично заданный объект модели для ограниченной оценки - Используйте этот метод, когда вы знаете размерность отклика, степень полинома AR, а также некоторые значения параметров. Для примера:

    • Вы знаете значения некоторых матриц коэффициентов AR или хотите проверить гипотезы.

    • Вы хотите исключить некоторые лаги из уравнения.

    • Вы хотите исключить некоторые экзогенные переменные предиктора из уравнения.

    Чтобы оценить любые неизвестные значения параметров, передайте объект модели и данные в estimate, который применяет ограничения равенства ко всем известным параметрам при их заданных значениях во время оптимизации.

  • Моделируйте объекты с регрессионным компонентом для экзогенных переменных:

    • Если вы планируете оценить многомерную модель, содержащую неограниченный регрессионый компонент, задайте структуру модели, кроме регрессионного компонента, когда вы создаете модель. Затем задайте модель и экзогенные данные ('X' Аргумент пары "имя-значение") когда вы звоните estimate. Следовательно, estimate включает матрицу коэффициентов регрессии соответствующих размеров в модель и оценивает ее. estimate включает все экзогенные переменные в регрессионный компонент каждого уравнения отклика по умолчанию.

    • Если вы планируете задать ограничения равенства в матрице коэффициентов регрессии для оценки или хотите полностью задать матрицу, используйте синтаксис longhand и 'Beta' аргумент пары "имя-значение" для задания матрицы при создании модели. Кроме того, после создания модели можно задать Beta моделирования свойства при помощи записи через точку. Для примера, чтобы исключить экзогенную переменную из уравнения, установите элемент коэффициента, относящийся к переменной (столбцу) и уравнению (строке), равными 0.

varm объекты не хранят данные. Вместо этого вы задаете данные, когда работаете с моделью при помощи функции объекта.

Полностью заданный объект модели

Если вы знаете значения всех коэффициентов модели и ковариационной матрицы инноваций, создайте объект модели и задайте значения параметров с помощью синтаксиса longhand. Эта таблица описывает аргументы пары "имя-значение", которые вы можете передать varm функция для известных значений параметров в numseries-мерный VAR (p) модель.

ИмяЗначение
'Constant'

A numseries- вектор модели констант или точек пересечения. По умолчанию это NaN вектор.

'Lags'

Числовой вектор авторегрессионных полиномиальных лагов. Наибольшая задержка определяет p, степень модели VAR. Если вы задаете Lags, тогда каждый элемент соответствует элементам AR. Значение по умолчанию 1:p.

'AR'

Вектор камеры numseries-by- numseries Матрицы коэффициентов AR. Камеры соответствуют элементам Lags. По умолчанию все камеры содержат матрицы, состоящие из NaN значения.

'Trend'

A numseries-D вектор линейных трендов. По умолчанию это нулевой вектор.

'Beta'

A numseries-by- numpreds матрица коэффициентов регрессии. Значение по умолчанию пусто, что означает, что в модели не существует регрессионного компонента.

'Covariance'

A numseries-by- numseries симметричные, положительно определенные инновации ковариации матрица. По умолчанию это матрица, состоящая из NaN значения.

Можно также создать объект модели с помощью синтаксиса shorthand, а затем настроить соответствующие значения свойств (кроме Lags) с использованием записи через точку.

The Lags Аргумент пары "имя-значение" позволяет вам задать, какие лаги вы хотите включить. Для примера, чтобы задать AR-лаги 1 и 3 без задержки 2, установите 'Lags' на [1 3]. Хотя этот синтаксис задал только два лага, p является 3.

В следующем примере показано, как создать объект модели, когда у вас есть известные параметры. Рассмотрим модель VAR (1)

yt=[0.0500.05]+[0.5000.10.10.300.20.3]yt1+εt.

Независимые εt нарушений порядка распределены как стандартные 3-D нормальные случайные переменные.

Этот код показывает, как создать объект модели с помощью varm.

c  = [0.05; 0; -0.05];
AR = {[.5 0 0;.1 .1 .3;0 .2 .3]};
Covariance = eye(3);
Mdl = varm('Constant',c,'AR',AR,'Covariance',Covariance)
Mdl = 

  varm with properties:

     Description: "AR-Stationary 3-Dimensional VAR(1) Model"
     SeriesNames: "Y1"  "Y2"  "Y3" 
       NumSeries: 3
               P: 1
        Constant: [0.05 0 -0.05]'
              AR: {3×3 matrix} at lag [1]
           Trend: [3×1 vector of zeros]
            Beta: [3×0 matrix]
      Covariance: [3×3 diagonal matrix]

На отображении объекта показаны значения свойств. varm функция идентифицирует эту модель как стационарную модель VAR (1) с тремя размерностями, аддитивными константами, без временного тренда и без регрессионного компонента.

Шаблон модели для неограниченной оценки

Самый легкий способ создать многомерный шаблон модели для оценки - это использование краткого синтаксиса. Например, чтобы создать VAR (2) шаблон модели для 3 серия откликов при помощи varm и его краткий синтаксис, введите этот код.

numseries = 3;
p = 2;
Mdl = varm(numseries,p);
Mdl представляет VAR (2) модель, содержащая неизвестные, оценочные параметры, включая вектор константы и 3-by- 3 матрицы коэффициентов задержки от лагов с 1 по 2.

NaN элементы в массивах свойств модели указывают на оцениваемые параметры. The Beta свойство может быть numseriesмассив -by-0 и может быть оценен; estimate выводит размерность его столбца из заданных экзогенных данных. Когда вы используете краткий синтаксис, varm устанавливает вектор константы, все матрицы авторегрессивных коэффициентов и ковариационную матрицу инноваций в массивы NaN соответствующих размеровс.

Отображение VAR (2) шаблон модели Mdl и посмотрите, какие параметры являются оценочными, введите этот код.

Mdl
Mdl = 

  varm with properties:

     Description: "3-Dimensional VAR(2) Model"
     SeriesNames: "Y1"  "Y2"  "Y3" 
       NumSeries: 3
               P: 2
        Constant: [3×1 vector of NaNs]
              AR: {3×3 matrices of NaNs} at lags [1 2]
           Trend: [3×1 vector of zeros]
            Beta: [3×0 matrix]
      Covariance: [3×3 matrix of NaNs]
Mdl.Trend является нулевым вектором, что указывает на то, что линейный временной тренд не является параметром модели.

Чтобы задать характеристики модели, которые отличаются от значений по умолчанию, используйте синтаксис longhand или скорректируйте свойства writable существующей модели с помощью записи через точку. Для примера этот код показов, как создать модель, содержащую линейный срок тренда времени с оценочным коэффициентом, с помощью синтаксиса longhand.

AR = cell(p,1);
AR(:) = {nan(numseries)}; % varm can infer response dimension and AR degree from AR
MdlLT = varm('AR',AR,'Trend',nan(numseries,1));
Этот код показывает, как настроить модель Mdl включать оцениваемый линейный срок тренда времени.
Mdl.Trend = nan(numseries,1);

estimate подходит для всех неопределенных параметров, включая вектор константы модели, матрицы авторегрессивных коэффициентов, матрицу коэффициентов регрессии, линейный вектор временного тренда и ковариационную матрицу инноваций.

Частично заданный объект модели для ограниченной оценки

Можно создать объект модели с некоторыми известными параметрами, чтобы протестировать гипотезы об их значениях. estimate рассматривает известные значения как ограничения равенства во время оценки и подгоняет оставшиеся неизвестные параметры к данным. Все коэффициенты модели VAR могут содержать смесь NaN и действительные действительные числа, но ковариационная матрица инноваций должна быть совершенно неизвестной (полностью составленной из NaNs) или полностью известна (положительно определенная матрица).

Этот код показов, как задать модель в Полностью Заданном Объекте Модели, но параметры AR имеют диагональ авторегрессивную структуру и неизвестную матрицу ковариации инноваций. varm выводит размерность переменной отклика из параметров c и AR, и выводит степень модели VAR из AR.

c = [.05; 0; -.05];
AR = {diag(nan(3,1))};
Mdl = varm('Constant',c,'AR',AR)
Mdl.AR{:}
Mdl = 

  varm with properties:

     Description: "3-Dimensional VAR(1) Model"
     SeriesNames: "Y1"  "Y2"  "Y3" 
       NumSeries: 3
               P: 1
        Constant: [0.05 0 -0.05]'
              AR: {3×3 matrix} at lag [1]
           Trend: [3×1 vector of zeros]
            Beta: [3×0 matrix]
      Covariance: [3×3 matrix of NaNs]

ans =

   NaN     0     0
     0   NaN     0
     0     0   NaN

Отображение и изменение объектов модели

Предположим, что имя переменной объекта модели Mdl. После создания Mdl, можно изучить его несколькими способами:

  • Введите Mdl в MATLAB® командная строка.

  • Дважды кликните объект в браузере Рабочего пространства MATLAB.

  • Введите Mdl. PropertyName в командной строке MATLAB, где PropertyName - имя свойства, которое необходимо изучить или переназначить.

Можно изменить любое свойство writable объекта модели с помощью записи через точку:

Mdl.PropertyValue = value;

Отобразите объект модели

Создайте объект модели VAR (2) для трех переменных отклика. Используйте синтаксис стенограммы.

numseries = 3;
p = 2;
Mdl = varm(numseries,p);

Отобразите модель VAR (2).

Mdl
Mdl = 
  varm with properties:

     Description: "3-Dimensional VAR(2) Model"
     SeriesNames: "Y1"  "Y2"  "Y3" 
       NumSeries: 3
               P: 2
        Constant: [3×1 vector of NaNs]
              AR: {3×3 matrices of NaNs} at lags [1 2]
           Trend: [3×1 vector of zeros]
            Beta: [3×0 matrix]
      Covariance: [3×3 matrix of NaNs]

Mdl является varm объект модели. Его свойства (слева) и соответствующие значения (справа) перечислены в командной строке.

Коэффициенты, включенные в модель, являются вектором константы модели Constant и авторегрессионный полином матриц коэффициентов AR при лагах 1 и 2. Их соответствующие значения свойств являются массивами NaNs, что указывает на то, что значения неизвестны, но могут быть оценены. Точно так же ковариационная матрица инноваций Covariance является NaN матрица, поэтому она также неизвестна, но оценивается.

По умолчанию линейный вектор тренда по времени Trend состоит из нулей и матрицы коэффициентов регрессии Beta имеет размер столбца нуля. Если вы поставляете экзогенные данные при оценке Mdl при помощи estimateMATLAB ® выводит размерность столбца Beta из заданных данных устанавливает Beta в матрицу NaNs, и оценивает его. В противном случае MATLAB ® игнорирует регрессионый компонент модели .

Настройте свойство существующей модели

Этот пример показывает, как исключить первую задержку из полинома AR модели VAR (2 ).

Создайте шаблон модели VAR (2), который представляет три переменные отклика. Используйте синтаксис стенограммы.

numseries = 3;
p = 2;
Mdl = varm(numseries,p)
Mdl = 
  varm with properties:

     Description: "3-Dimensional VAR(2) Model"
     SeriesNames: "Y1"  "Y2"  "Y3" 
       NumSeries: 3
               P: 2
        Constant: [3×1 vector of NaNs]
              AR: {3×3 matrices of NaNs} at lags [1 2]
           Trend: [3×1 vector of zeros]
            Beta: [3×0 matrix]
      Covariance: [3×3 matrix of NaNs]

The AR свойство Mdl сохраняет матрицы полиномиальных коэффициентов AR в массиве ячеек. Первая камера содержит матрицу коэффициентов задержки 1, а вторая камера - матрицу коэффициентов задержки 2.

Установите коэффициент AR задержки 1 в матрицу нулей при помощи записи через точку. Отобразите обновленную модель.

Mdl.AR{1} = zeros(numseries);
Mdl
Mdl = 
  varm with properties:

     Description: "3-Dimensional VAR(2) Model"
     SeriesNames: "Y1"  "Y2"  "Y3" 
       NumSeries: 3
               P: 2
        Constant: [3×1 vector of NaNs]
              AR: {3×3 matrix} at lag [2]
           Trend: [3×1 vector of zeros]
            Beta: [3×0 matrix]
      Covariance: [3×3 matrix of NaNs]

Коэффициент задержки 1 удаляется из AR- полинома модели.

Выберите экзогенные переменные для уравнений отклика

В этом примере показано, как выбрать, какие экзогенные переменные происходят в регрессионом компоненте модели VARX (4).

Создайте шаблон модели VAR (4), который представляет три переменные отклика. Используйте синтаксис стенограммы .

numseries = 3;
p = 4;
Mdl = varm(numseries,p)
Mdl = 
  varm with properties:

     Description: "3-Dimensional VAR(4) Model"
     SeriesNames: "Y1"  "Y2"  "Y3" 
       NumSeries: 3
               P: 4
        Constant: [3×1 vector of NaNs]
              AR: {3×3 matrices of NaNs} at lags [1 2 3 ... and 1 more]
           Trend: [3×1 vector of zeros]
            Beta: [3×0 matrix]
      Covariance: [3×3 matrix of NaNs]

The Beta свойство содержит матрицу коэффициента регрессии модели, 3-by- 0 матрица. Потому что у него есть 0 столбцы, Mdl не имеет регрессионного компонента.

Предположим следующее:

  • Вы планируете включить две экзогенные переменные в регрессионный компонент Mdl сделать его моделью VARX (4).

  • Ваши экзогенные данные находятся в матрице X, который не загружен в память.

  • Вы хотите включить экзогенную переменную 1 (сохраненную в X(:,1)) во всех уравнениях отклика и исключить экзогенную переменную 2 (сохраненную в X(:,2)) из уравнений переменной отклика 2 и 3.

  • Ты планируешь подтянуться Mdl к данным.

Установите коэффициент регрессии в матрицу NaNs. Затем установите элементы, соответствующие исключенным экзогенным переменным, в нуль.

numpreds = 2;
Mdl.Beta = nan(numseries,numpreds);
Mdl.Beta(2:3,2) = 0;

Mdl.Beta
ans = 3×2

   NaN   NaN
   NaN     0
   NaN     0

Во время оценки, estimate подбирает все оцениваемые параметры (элементы с NaN) к данным при применении этих ограничений равенства во время оптимизации:

  • β22=0.

  • β32=0.

Выберите соответствующий порядок задержки

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

  • lratiotest выполняет тест коэффициента правдоподобия для сравнения спецификаций вложенных моделей путем оценки значимости ограничений для расширенной модели с неограниченными параметрами. В контексте порядок задержки ограниченной модели меньше, чем порядок задержки неограниченной модели.

  • aicbic возвращает информационные критерии, такие как информационные критерии Akaike и Bayesian (AIC и BIC, соответственно) по логарифмическая правдоподобность, счетчики активных параметров подгоняемых моделей кандидата и эффективный размер выборки (требуемый для нормализации BIC или критериев). aicbic не проводит проверку статистической гипотезы. Модель, которая приводит к статистике минимальной подгонки, имеет лучшую, скупую подгонку среди моделей кандидата.

Определите минимальное количество лагов, используя тест коэффициента правдоподобия

lratiotest требует входов логарифмической правдоподобности неограниченной модели, логарифмической правдоподобности ограниченной модели и количества степеней свободы (DoF). Степень свободы - это различие между активными счетчиками параметров неограниченной и ограниченной моделей. Порядок задержки ограниченной модели меньше, чем порядок задержки неограниченной модели.

lratiotest возвращает логическое значение: 1 означает отклонить ограниченную модель в пользу неограниченной модели, и 0 означает недостаточность доказательств для отклонения ограниченной модели.

Для проведения теста коэффициента вероятности:

  1. Получите логарифмическую правдоподобность ограниченных и неограниченных моделей, когда вы подгоняете их к данным используя estimate. Логарифмическая правдоподобность является третьим выходом (logL).

    [EstMdl,EstSE,logL,E] = estimate(...)
  2. Получите счет активных параметров каждой оцененной модели (numparams) из NumEstimatedParameters поле в структуру output summarize.

    results = summarize(EstMdl);
    numparams = results.NumEstimatedParameters;
  3. Проведите тест коэффициента правдоподобия с 5% -ным уровнем значимости, передав следующее lratiotest- логарифмическая правдоподобность неограниченной модели logLU, логарифмическая правдоподобность ограниченной модели logLR, и Степень свободы (dof).

    h = lratiotest(logLU,logLR,dof)

Например, предположим, что вы подбираете четыре модели: модель 1 имеет порядок задержки 1, модель 2 - порядок задержки 2 и так далее. Модели имеют логарифмическую правдоподобность logL1, logL2, logL3, и logL4, и счетчики активных параметров numparams1, numparams2, numparams3, и numparams4. Проведите тесты коэффициента правдоподобия моделей 1, 2 и 3 по сравнению с моделью 4 следующим образом:

h1 = lratiotest(logL4,logL1,(numparams4 - numparams1))
h2 = lratiotest(logL4,logL2,(numparams4 - numparams2))
h3 = lratiotest(logL4,logL3,(numparams4 - numparams3))

Если h1 = 1, отклонить модель 1; продолжайте тем же способом для моделей 2 и 3. Если lratiotest возвращает 0, недостаточно доказательств, чтобы отклонить модель с порядком задержки ниже 4.

Определите минимальное количество лагов, используя информационный критерий

Информационные критерии, такие как AIC или BIC, можно получить двумя способами:

  • Передайте предполагаемую модель, summarize, и извлечь соответствующую статистику подгонки из структуры output.

    1. Оцените модель используя estimate.

      EstMdl = estimate(...);
    2. Получите AIC и BIC предполагаемой модели от AIC и BIC поля структуры output results.

      results = summarize(EstMdl);
      aic = results.AIC;
      bic = results.BIC;
  • Использовать aicbic, что требует логарифмической правдоподобности модели, ее активного количества параметров и эффективного размера выборки для BIC. aicbic также принимает вектор логарифмическая правдоподобность и вектор соответствующих активных счетчиков параметров, что позволяет вам сравнить несколько моделей подгонки с помощью одного вызова функции, и вы можете опционально нормализовать все критерии по размеру выборки при помощи 'Normalize' аргумент пары "имя-значение".

    1. Получите логарифмическую правдоподобность каждой модели-кандидата, когда вы подбираете каждую модель к данным, используя estimate. Логарифмическая правдоподобность является третьим выходом.

      [EstMdl,EstSE,logL,E] = estimate(...)
    2. Получите счет активных параметров каждой модели кандидата из NumEstimatedParameters поле в структуру output summarize.

      results = summarize(EstMdl);
      numparams = results.NumEstimatedParameters;

Например, предположим, что вы подбираете четыре модели: модель 1 имеет порядок задержки 1, модель 2 - порядок задержки 2 и так далее. Модели имеют логарифмическую правдоподобность logL1, logL2, logL3, и logL4, и счетчики активных параметров numparams1, numparams2, numparams3, и numparams4. Вычислите AIC каждой модели.

AIC = aicbic([logL1 logL2 logL3 logL4],...
             [numparams1 numparams2 numparams3 numparams4])

Наиболее подходящая модель минимизирует AIC.

См. также

Объекты

Функции

Похожие темы