Econometrics Toolbox™ имеет класс функций для моделирования многомерных временных рядов с помощью модели VAR. The varm
функция создает varm
объект, который представляет модель VAR. varm
свойства определяют структуру модели VAR, включая количество рядов откликов (размерность), количество авторегрессивных (AR) лагов и наличие коэффициентов постоянного или временного тренда в модели.
A varm
объект может служить шаблоном модели для оценки, в этом случае необходимо задать по крайней мере количество рядов откликов и степень полинома AR. Опционально можно задать значения для других параметров (коэффициенты или инновационная ковариационная матрица), чтобы проверить гипотезы или экономическую теорию. estimate
функция объекта соответствует неопределенным оценочным параметрам модели заданным данным и возвращает полностью заданное varm
объект. Поставка полностью заданной модели в другие varm
функции объекта для последующего анализа.
Можно создать 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 |
'Lags' | Числовой вектор авторегрессионных полиномиальных лагов. Наибольшая задержка определяет |
'AR' | Вектор камеры |
'Trend' | A |
'Beta' | A |
'Covariance' | A |
Можно также создать объект модели с помощью синтаксиса shorthand, а затем настроить соответствующие значения свойств (кроме Lags
) с использованием записи через точку.
The Lags
Аргумент пары "имя-значение" позволяет вам задать, какие лаги вы хотите включить. Для примера, чтобы задать AR-лаги 1 и 3 без задержки 2, установите 'Lags'
на [1 3]
. Хотя этот синтаксис задал только два лага, p
является 3
.
В следующем примере показано, как создать объект модели, когда у вас есть известные параметры. Рассмотрим модель VAR (1)
Независимые ε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
и действительные действительные числа, но ковариационная матрица инноваций должна быть совершенно неизвестной (полностью составленной из NaN
s) или полностью известна (положительно определенная матрица).
Этот код показов, как задать модель в Полностью Заданном Объекте Модели, но параметры 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.
в командной строке MATLAB, где PropertyName
- имя свойства, которое необходимо изучить или переназначить.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. Их соответствующие значения свойств являются массивами NaN
s, что указывает на то, что значения неизвестны, но могут быть оценены. Точно так же ковариационная матрица инноваций Covariance
является NaN
матрица, поэтому она также неизвестна, но оценивается.
По умолчанию линейный вектор тренда по времени Trend
состоит из нулей и матрицы коэффициентов регрессии Beta
имеет размер столбца нуля. Если вы поставляете экзогенные данные при оценке Mdl
при помощи estimate
MATLAB ® выводит размерность столбца Beta
из заданных данных устанавливает Beta
в матрицу NaN
s, и оценивает его. В противном случае 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
к данным.
Установите коэффициент регрессии в матрицу NaN
s. Затем установите элементы, соответствующие исключенным экзогенным переменным, в нуль.
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) к данным при применении этих ограничений равенства во время оптимизации:
Цель разработки модели временных рядов состоит в том, чтобы идентифицировать порядок задержки p получая модель, которая хорошо представляет процесс генерации данных и дает надежные прогнозы. Эти функции помогают идентифицировать соответствующий порядок задержки:
lratiotest
выполняет тест коэффициента правдоподобия для сравнения спецификаций вложенных моделей путем оценки значимости ограничений для расширенной модели с неограниченными параметрами. В контексте порядок задержки ограниченной модели меньше, чем порядок задержки неограниченной модели.
aicbic
возвращает информационные критерии, такие как информационные критерии Akaike и Bayesian (AIC и BIC, соответственно) по логарифмическая правдоподобность, счетчики активных параметров подгоняемых моделей кандидата и эффективный размер выборки (требуемый для нормализации BIC или критериев). aicbic
не проводит проверку статистической гипотезы. Модель, которая приводит к статистике минимальной подгонки, имеет лучшую, скупую подгонку среди моделей кандидата.
lratiotest
требует входов логарифмической правдоподобности неограниченной модели, логарифмической правдоподобности ограниченной модели и количества степеней свободы (DoF). Степень свободы - это различие между активными счетчиками параметров неограниченной и ограниченной моделей. Порядок задержки ограниченной модели меньше, чем порядок задержки неограниченной модели.
lratiotest
возвращает логическое значение: 1
означает отклонить ограниченную модель в пользу неограниченной модели, и 0
означает недостаточность доказательств для отклонения ограниченной модели.
Для проведения теста коэффициента вероятности:
Получите логарифмическую правдоподобность ограниченных и неограниченных моделей, когда вы подгоняете их к данным используя estimate
. Логарифмическая правдоподобность является третьим выходом (logL
).
[EstMdl,EstSE,logL,E] = estimate(...)
Получите счет активных параметров каждой оцененной модели (numparams
) из NumEstimatedParameters
поле в структуру output summarize
.
results = summarize(EstMdl); numparams = results.NumEstimatedParameters;
Проведите тест коэффициента правдоподобия с 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.
Оцените модель используя estimate
.
EstMdl = estimate(...);
Получите AIC и BIC предполагаемой модели от AIC
и BIC
поля структуры output results
.
results = summarize(EstMdl); aic = results.AIC; bic = results.BIC;
Использовать aicbic
, что требует логарифмической правдоподобности модели, ее активного количества параметров и эффективного размера выборки для BIC. aicbic
также принимает вектор логарифмическая правдоподобность и вектор соответствующих активных счетчиков параметров, что позволяет вам сравнить несколько моделей подгонки с помощью одного вызова функции, и вы можете опционально нормализовать все критерии по размеру выборки при помощи 'Normalize'
аргумент пары "имя-значение".
Получите логарифмическую правдоподобность каждой модели-кандидата, когда вы подбираете каждую модель к данным, используя estimate
. Логарифмическая правдоподобность является третьим выходом.
[EstMdl,EstSE,logL,E] = estimate(...)
Получите счет активных параметров каждой модели кандидата из 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.