varm

Создайте векторную модель (VAR) авторегрессии

Описание

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

Ключевые компоненты объекта varm включают количество временных рядов (response-variable dimensionality) и порядок многомерного авторегрессивного полинома, который обозначается p. Таким образом, p является максимальной задержкой с ненулевой матрицей коэффициентов. Другие компоненты модели включают компонент регрессии, чтобы сопоставить те же внешние переменные прогноза к каждому ряду ответа, и постоянный и условия тренда времени.

Все содействующие матрицы являются неизвестными (матрицы значений NaN) и допускающими оценку, если вы не задаете их синтаксис аргумента пары "имя-значение" использования значений. Чтобы оценить модели, содержащие все или частично неизвестные определенные данные значений параметров, используйте estimate. Для абсолютно заданных моделей (модели, в которых известны все значения параметров), моделируйте или предскажите ответы с помощью simulate или forecast, соответственно.

Создание

Синтаксис

Mdl = varm
Mdl = varm(numseries,numlags)
Mdl = varm(Name,Value)

Описание

пример

Mdl = varm создает модель VAR (0), состоявшую из одного ряда ответа.

пример

Mdl = varm(numseries,numlags) создает модель VAR (numlags), состоявшую из ряда ответа numseries. Максимальной ненулевой задержкой является numlags. Все задержки имеют numseries-by-numseries содействующие матрицы, состоявшие из значений NaN.

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

пример

Mdl = varm(Name,Value) свойства наборов или аргументы пары "имя-значение" использования дополнительных опций. Заключите каждое имя в кавычки. Например, 'Lags',[1 4],'AR',AR задает две авторегрессивных содействующих матрицы в AR в задержках 1 и 4.

Этот рукописный синтаксис допускает создание более гибких моделей. varm выводит количество ряда (NumSeries) и авторегрессивная полиномиальная степень (P) из свойств, которые вы устанавливаете. Поэтому значения свойств, которые соответствуют количеству ряда или авторегрессивной полиномиальной степени, должны быть сопоставимы друг с другом.

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

развернуть все

Краткий синтаксис обеспечивает простой способ к вам создать образцовые шаблоны, которые подходят для неограниченной оценки параметра. Например, чтобы создать модель VAR (2), состоявшую из трех рядов ответа, введите:

Mdl = varm(3,2);

Количество временных рядов, заданных как положительное целое число. numseries задает размерность многомерной переменной отклика и инноваций, yt и εt, соответственно.

Типы данных: double

Количество изолированных ответов, чтобы включать в модель, заданную как неотрицательное целое число. Получившаяся модель является моделью VAR (numlags). Все задержки имеют numseries-by-numseries содействующие матрицы, состоявшие из значений NaN.

Типы данных: double

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

Пример: 'Lags',[4 8] задает модель VAR (8) с ненулевыми авторегрессивными содействующими матрицами в задержках 4 и 8.

Чтобы установить значения для перезаписываемых свойств, используйте синтаксис аргумента пары Name,Value. Например, 'Constant',[1; 2],'AR',{[0.1 -0.2; -0.3 0.5]} устанавливает Constant на [1; 2] и AR к {[0.1 -0.2; -0.3 0.5]}.

Авторегрессивные полиномиальные задержки, заданные как пара, разделенная запятой, состоящая из 'Lags' и числового вектора, содержащего в большинстве элементов P уникальных положительных целых чисел.

Длины Lags и AR должны быть равными. Lags(j) является задержкой, соответствующей матрице коэффициентов AR{j}.

Пример: 'Lags',[1 4]

Типы данных: double

Свойства

развернуть все

Можно установить перезаписываемые значения свойств, когда вы создаете объект модели при помощи синтаксиса аргумента пары "имя-значение", или после того, как вы создаете объект модели при помощи записи через точку. Например, чтобы создать модель VAR (1), состоявшую из двух рядов ответа, и затем задать неизвестный тренд времени, называют, введите:

Mdl = varm('AR',{NaN(2)});
Mdl.Trend = NaN;

Это свойство доступно только для чтения.

Количество временных рядов, заданных как положительное целое число. NumSeries задает размерность многомерной переменной отклика и инноваций, yt и εt, соответственно.

Типы данных: double

Это свойство доступно только для чтения.

Многомерный авторегрессивный полиномиальный порядок, заданный как неотрицательное целое число. P является максимальной задержкой, которая имеет ненулевую матрицу коэффициентов. Задержкам, которые являются меньше, чем P, можно было составить содействующие матрицы полностью нулей.

P задает количество преддемонстрационных наблюдений, требуемых инициализировать модель.

Типы данных: double

Образцовые прерывания (или константы), заданный как NumSeries-by-1 числовой вектор.

Пример: 'Constant',[1; 2]

Типы данных: double

Авторегрессивные содействующие матрицы сопоставлены с изолированными ответами, заданными как вектор ячейки NumSeries-by-NumSeries числовые матрицы.

Задайте содействующие знаки, соответствующие тем коэффициентам в модели VAR, выраженной в обозначении разностного уравнения.

  • Если вы устанавливаете аргумент пары "имя-значение" Lags Lags, то следующие условия применяются.

    • Длины AR и Lags равны.

    • AR{j} является матрицей коэффициентов задержки Lags(j).

    • По умолчанию AR является numel(Lags)-by-1 вектор ячейки матриц, состоявших из значений NaN.

  • В противном случае следующие условия применяются.

    • Длиной AR является P.

    • AR{j} является матрицей коэффициентов задержки j.

    • По умолчанию AR является P-by-1 вектор ячейки матриц, состоявших из значений NaN.

Пример: 'AR',{[0.5 -0.1; 0.1 0.2]}

Типы данных: cell

Линейный термин тренда времени, заданный как NumSeries-by-1 числовой вектор. Значение по умолчанию не задает линейного тренда времени в модели.

Пример: 'Trend',[0.1; 0.2]

Типы данных: double

Матрица коэффициента регрессии сопоставлена с переменными прогноза, заданными как NumSeries-by-NumPreds числовая матрица. NumPreds является количеством переменных прогноза, то есть, количеством столбцов в данных о предикторе.

Beta(j,:) содержит коэффициенты регрессии для каждого предиктора в уравнении ответа yj,t. Beta(:,k) содержит коэффициент регрессии в каждом уравнении ответа для предиктора xk. По умолчанию все переменные прогноза находятся в компоненте регрессии всех уравнений ответа. Можно исключить определенные предикторы из определенных уравнений путем определения ограничений равенства к 0.

Пример: В модели, которая включает 3 ответа и 4 переменные прогноза, чтобы исключить второй предиктор из третьего уравнения и оставить другие неограниченными, задают [NaN NaN NaN NaN; NaN NaN NaN NaN; NaN 0 NaN NaN].

Значение по умолчанию не задает коэффициента регрессии в модели. Однако, если вы задаете данные о предикторе, когда вы оцениваете модель с помощью estimate, затем MATLAB® устанавливает Beta на соответственно размерную матрицу значений NaN.

Пример: 'Beta',[2 3 -1 2; 0.5 -1 -6 0.1]

Типы данных: double

Инновационная ковариационная матрица инноваций NumSeries в каждый раз t = 1..., T, заданный как NumSeries-by-NumSeries числовая, положительная определенная матрица.

Пример: 'Covariance',eye(2)

Типы данных: double

Образцовое описание, заданное как скаляр строки или вектор символов. По умолчанию это свойство описывает параметрическую форму модели, например, "2-Dimensional VAR(3) Model".

Пример: 'Description','Model 1'

Типы данных: string | char

Серийные имена ответа, заданные как вектор строки длины NumSeries. Значением по умолчанию является ['Y1' 'Y2' ... 'YNumSeries'].

Пример: 'SeriesNames',{'CPI' 'Unemployment'}

Типы данных: string

Функции объекта

estimateПодходящая векторная модель (VAR) авторегрессии к данным
fevdСгенерируйте векторное разложение отклонения ошибки прогноза (FEVD) модели (VAR) авторегрессии
filterПропустите воздействия через векторную модель (VAR) авторегрессии
forecastПредскажите векторные ответы модели (VAR) авторегрессии
inferВыведите векторную модель авторегрессии (VAR) инновации
irfСгенерируйте векторные импульсные ответы модели (VAR) авторегрессии
simulateСимуляция Монте-Карло векторной модели (VAR) авторегрессии
summarizeОтобразите результаты оценки векторной модели (VAR) авторегрессии
vecmПреобразуйте векторную модель (VAR) авторегрессии в модель векторного исправления ошибок (VEC)

Примеры

свернуть все

Создайте модель VAR нулевой степени, состоявшую из одного ряда ответа.

Mdl = varm
Mdl = 
  varm with properties:

     Description: "1-Dimensional VAR(0) Model"
     SeriesNames: "Y" 
       NumSeries: 1
               P: 0
        Constant: NaN
              AR: {}
           Trend: 0
            Beta: [1×0 matrix]
      Covariance: NaN

Mdl является объектом модели varm. Это содержит один ряд ответа, неизвестную константу, и неизвестное инновационное отклонение. Свойства модели появляются в командной строке.

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

Mdl.AR = {NaN}
Mdl = 
  varm with properties:

     Description: "1-Dimensional VAR(1) Model"
     SeriesNames: "Y" 
       NumSeries: 1
               P: 1
        Constant: NaN
              AR: {NaN} at lag [1]
           Trend: 0
            Beta: [1×0 matrix]
      Covariance: NaN

Если ваша проблема содержит ряд множественного ответа, то используйте различный синтаксис varm для образцового создания.

Создайте модель VAR (4) для индекса потребительских цен (CPI) и уровня безработицы.

Загрузите набор данных Data_USEconModel. Объявите переменные для CPI (CPI) и серия (UNRATE) уровня безработицы.

load Data_USEconModel
cpi = DataTable.CPIAUCSL;
unrate = DataTable.UNRATE;

Создайте модель VAR (4) по умолчанию с помощью краткого синтаксиса.

Mdl = varm(2,4)
Mdl = 
  varm with properties:

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

Mdl является объектом модели varm. Это служит шаблоном для образцовой оценки. MATLAB® полагает, что любые значения NaN как неизвестные значения параметров оцениваются. Например, свойство Constant 2 1 вектор значений NaN. Поэтому образцовые константы являются активными параметрами модели, которые будут оценены.

Включайте неизвестный линейный термин тренда времени путем установки свойства Trend на NaN с помощью записи через точку.

Mdl.Trend = NaN
Mdl = 
  varm with properties:

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

MATLAB расширяет NaN до соответствующей длины, то есть, 2 1 вектор значений NaN.

Создайте модель VAR для трех произвольных рядов ответа. Задайте значения параметров в этой системе уравнений.

y1,t=1+0.2y1,t-1-0.1y2,t-1+0.5y3,t-1+1.5t+ε1,ty2,t=1-0.4y1,t-1+0.5y2,t-1+2t+ε2,ty3,t=-0.1y1,t-1+0.2y2,t-1+0.3y3,t-1+ε3,t.

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

Σ=[0.10.010.30.010.500.301].

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

c = [1; 1; 0];
Phi1 = {[0.2 -0.1 0.5; -0.4 0.2 0; -0.1 0.2 0.3]}; 
delta = [1.5; 2; 0];
Sigma = [0.1 0.01 0.3; 0.01 0.5 0; 0.3 0 1];

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

Mdl = varm('Constant',c,'AR',Phi1,'Trend',delta,'Covariance',Sigma)
Mdl = 
  varm with properties:

     Description: "AR-Stationary 3-Dimensional VAR(1) Model with Linear Time Trend"
     SeriesNames: "Y1"  "Y2"  "Y3" 
       NumSeries: 3
               P: 1
        Constant: [1 1 0]'
              AR: {3×3 matrix} at lag [1]
           Trend: [1.5 2 0]'
            Beta: [3×0 matrix]
      Covariance: [3×3 matrix]

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

Можно настроить образцовые свойства с помощью записи через точку. Например, рассмотрите другую модель VAR, которая приписывает авторегрессивную матрицу коэффициентов Phi1 второму термину задержки, задает матрицу нулей для первого коэффициента задержки и обрабатывает все остальное как являющееся равным Mdl. Создайте эту модель VAR (2).

Mdl2 = Mdl;
Phi = [zeros(3,3) Phi1];
Mdl2.AR = Phi
Mdl2 = 
  varm with properties:

     Description: "AR-Stationary 3-Dimensional VAR(2) Model with Linear Time Trend"
     SeriesNames: "Y1"  "Y2"  "Y3" 
       NumSeries: 3
               P: 2
        Constant: [1 1 0]'
              AR: {3×3 matrix} at lag [2]
           Trend: [1.5 2 0]'
            Beta: [3×0 matrix]
      Covariance: [3×3 matrix]

Также можно создать другой объект модели с помощью varm и того же синтаксиса что касается Mdl, но дополнительно задать 'Lags',2.

Соответствуйте модели VAR (4) к данным об уровне безработицы и индексу потребительских цен (CPI).

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

load Data_USEconModel

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

figure;
plot(DataTable.Time,DataTable.CPIAUCSL);
title('Consumer Price Index');
ylabel('Index');
xlabel('Date');

figure;
plot(DataTable.Time,DataTable.UNRATE);
title('Unemployment Rate');
ylabel('Percent');
xlabel('Date');

Стабилизируйте CPI путем преобразования его в серию темпов роста. Синхронизируйте два ряда путем удаления первого наблюдения из ряда уровня безработицы.

rcpi = price2ret(DataTable.CPIAUCSL);
unrate = DataTable.UNRATE(2:end);

Создайте модель VAR (4) по умолчанию с помощью краткого синтаксиса.

Mdl = varm(2,4)
Mdl = 
  varm with properties:

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

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

Оцените модель с помощью целого набора данных.

EstMdl = estimate(Mdl,[rcpi unrate])
EstMdl = 
  varm with properties:

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

EstMdl является предполагаемым объектом модели varm. Это полностью задано, потому что все параметры знали значения. Описание указывает, что авторегрессивный полином является стационарным.

Отобразите итоговую статистику от оценки.

summarize(EstMdl)
 
   AR-Stationary 2-Dimensional VAR(4) Model
 
    Effective Sample Size: 241
    Number of Estimated Parameters: 18
    LogLikelihood: 811.361
    AIC: -1586.72
    BIC: -1524
 
                      Value       StandardError    TStatistic      PValue  
                   ___________    _____________    __________    __________

    Constant(1)      0.0017164      0.0015988         1.0735        0.28303
    Constant(2)        0.31626       0.091961          3.439      0.0005838
    AR{1}(1,1)         0.30899       0.063356          4.877     1.0772e-06
    AR{1}(2,1)         -4.4834         3.6441        -1.2303        0.21857
    AR{1}(1,2)      -0.0031796      0.0011306        -2.8122       0.004921
    AR{1}(2,2)          1.3433       0.065032         20.656      8.546e-95
    AR{2}(1,1)         0.22433       0.069631         3.2217      0.0012741
    AR{2}(2,1)          7.1896          4.005         1.7951       0.072631
    AR{2}(1,2)       0.0012375      0.0018631         0.6642        0.50656
    AR{2}(2,2)        -0.26817        0.10716        -2.5025       0.012331
    AR{3}(1,1)         0.35333       0.068287         5.1742     2.2887e-07
    AR{3}(2,1)           1.487         3.9277        0.37858          0.705
    AR{3}(1,2)       0.0028594      0.0018621         1.5355        0.12465
    AR{3}(2,2)        -0.22709         0.1071        -2.1202       0.033986
    AR{4}(1,1)       -0.047563       0.069026       -0.68906        0.49079
    AR{4}(2,1)          8.6379         3.9702         2.1757       0.029579
    AR{4}(1,2)     -0.00096323      0.0011142       -0.86448        0.38733
    AR{4}(2,2)        0.076725       0.064088         1.1972        0.23123

 
   Innovations Covariance Matrix:
    0.0000   -0.0002
   -0.0002    0.1167

 
   Innovations Correlation Matrix:
    1.0000   -0.0925
   -0.0925    1.0000

Этот пример следует из Оценочного VAR (4) Модель.

Создайте и оцените модель VAR (4) для темпа роста CPI и показателей безработицы. Обработайте последние десять периодов как горизонт прогноза.

load Data_USEconModel
cpi = DataTable.CPIAUCSL;
unrate = DataTable.UNRATE;

rcpi = price2ret(cpi);
unrate = unrate(2:end);
Y = [rcpi unrate];

Mdl = varm(2,4);
EstMdl = estimate(Mdl,Y(1:(end-10),:));

Предскажите 10 ответов с помощью предполагаемой модели и в выборочных данных как преддемонстрационных наблюдений.

YF = forecast(EstMdl,10,Y(1:(end-10),:));

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

figure;
plot(DataTable.Time(end - 50:end),rcpi(end - 50:end));
hold on
plot(DataTable.Time((end - 9):end),YF(:,1))
h = gca;
fill(DataTable.Time([end - 9 end end end - 9]),h.YLim([1,1,2,2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend('True CPI growth rate','Forecasted CPI growth rate',...
    'Location','NW')
title('Quarterly CPI Growth Rate: 1947 - 2009');
ylabel('CPI growth rate');
xlabel('Year');
hold off

figure;
plot(DataTable.Time(end - 50:end),unrate(end - 50:end));
hold on
plot(DataTable.Time((end - 9):end),YF(:,2))
h = gca;
fill(DataTable.Time([end - 9 end end end - 9]),h.YLim([1,1,2,2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend('True unemployment rate','Forecasted unemployment rate',...
    'Location','NW')
title('Quarterly Unemployment Rate: 1947 - 2009');
ylabel('Unemployment rate');
xlabel('Year');
hold off

Больше о

развернуть все

Введенный в R2017a