Симуляция Монте-Карло модели векторного исправления ошибок (VEC)
Y = simulate(Mdl,numobs)
Y = simulate(Mdl,numobs,Name,Value)
[Y,E] =
simulate(___)
дополнительные опции использования заданы одним или несколькими аргументами пары "имя-значение". Например, Y
= simulate(Mdl
,numobs
,Name,Value
)'NumPaths',1000,'X',X
задает симуляцию 1 000 путей и X
как внешние данные о предикторе для компонента регрессии.
Рассмотрите модель 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);
Создайте модель VECM(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
, соответствуют параметрам, чтобы быть оцененными определенными данными.
Оцените модель с помощью целого набора данных и опций по умолчанию.
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 тренда и линейных условий тренда из модели. Исключение параметра из оценки эквивалентно внушительным ограничениям равенства, чтобы обнулить.
Моделируйте ряд path ответа из предполагаемой модели с длиной, равной пути в данных.
rng(1); % For reproducibility
numobs = size(FRED,1);
Y = simulate(EstMdl,numobs);
Y
240 7 матрица моделируемых ответов. Столбцы соответствуют именам переменных в EstMdl.SeriesNames
.
Проиллюстрируйте отношение между simulate
и filter
путем оценки 4-D модели VEC(1) четырех рядов ответа в датском наборе данных Йохансена. Моделируйте один путь ответов с помощью подобранной модели и исторических данных как начальные значения, и затем пропустите случайный набор Гауссовых воздействий через предполагаемую модель с помощью тех же преддемонстрационных ответов.
Загрузите датские экономические данные Йохансена.
load Data_JDanish
Для получения дополнительной информации на переменных, введите Description
.
Создайте значение по умолчанию 4-D модель VEC(1). Примите, что cointegrating ранг 1 является соответствующим.
Mdl = vecm(4,1,1); Mdl.SeriesNames = DataTable.Properties.VariableNames
Mdl = vecm with properties: Description: "4-Dimensional Rank = 1 VEC(1) Model with Linear Time Trend" SeriesNames: "M2" "Y" "IB" ... and 1 more NumSeries: 4 Rank: 1 P: 2 Constant: [4×1 vector of NaNs] Adjustment: [4×1 matrix of NaNs] Cointegration: [4×1 matrix of NaNs] Impact: [4×4 matrix of NaNs] CointegrationConstant: NaN CointegrationTrend: NaN ShortRun: {4×4 matrix of NaNs} at lag [1] Trend: [4×1 vector of NaNs] Beta: [4×0 matrix] Covariance: [4×4 matrix of NaNs]
Оцените модель VEC(1) с помощью целого набора данных. Задайте H1* форма модели Йохансена.
EstMdl = estimate(Mdl,Data,'Model','H1*');
При репродуцировании результатов simulate
и filter
, важно принять эти меры.
Установите тот же seed случайных чисел с помощью rng
.
Задайте те же преддемонстрационные данные об ответе с помощью аргумента пары "имя-значение" 'Y0'
.
Установите случайный seed по умолчанию. Моделируйте 100 наблюдений путем передачи предполагаемой модели simulate
. Задайте целый набор данных как предварительную выборку.
rng default; YSim = simulate(EstMdl,100,'Y0',Data);
YSim
100 4 матрица моделируемых ответов. Столбцы соответствуют столбцам переменных в EstMdl.SeriesNames
.
Установите случайный seed по умолчанию. Моделируйте 4 ряда 100 наблюдений от стандартного Распределения Гаусса.
rng default;
Z = randn(100,4);
Пропустите Гауссовы значения через предполагаемую модель. Задайте целый набор данных как предварительную выборку.
YFilter = filter(EstMdl,Z,'Y0',Data);
YFilter
100 4 матрица моделируемых ответов. Столбцы соответствуют столбцам переменных в EstMdl.SeriesNames
. Прежде, чем отфильтровать воздействия, filter
масштабирует Z
нижним треугольным Фактором Холесского образцовой ковариации в EstMdl.Covariance
.
Сравните получившиеся ответы между filter
и simulate
.
(YSim - YFilter)'*(YSim - YFilter)
ans = 4×4
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
Результаты идентичны.
Рассмотрите эту модель VEC(1) для трех гипотетических рядов ответа.
Инновации многомерны Гауссов со средним значением 0 и ковариационная матрица
Создайте переменные для значений параметров.
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
. Таким образом, коинтеграция постоянный и линейный тренд неизвестен, но не нужен для симуляции наблюдений или прогнозирования, учитывая, что полная константа и параметры тренда известны.
Моделируйте 1 000 путей 100 наблюдений. Возвратите инновации (масштабируемые воздействия).
numpaths = 1000; numobs = 100; rng(1); % For reproducibility [Y,E] = simulate(Mdl,numobs,'NumPaths',numpaths);
Y
является 100 3 1 000 матриц моделируемых ответов. E
является матрицей, размерности которой соответствуют размерностям Y
, но представляет моделируемые, масштабированные воздействия. Столбцы соответствуют именам переменной отклика Mdl.SeriesNames
.
Для каждого момента времени вычислите средний вектор моделируемых ответов среди всех путей.
MeanSim = mean(Y,3);
MeanSim
100 7 матрица, содержащая среднее значение моделируемых ответов в каждом моменте времени.
Постройте моделируемые ответы и их средние значения.
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(MeanSim(:,j)); xlabel('Time index') hold off end
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'Y0',Y0,'X',X
использует матричный Y0
в качестве преддемонстрационных ответов и матричного X
как данные о предикторе в компоненте регрессии.'NumPaths'
— Количество демонстрационных путей, чтобы сгенерировать1
(значение по умолчанию) | положительное целое числоy0
Преддемонстрационные ответыПреддемонстрационные ответы, обеспечивающие начальные значения для модели, заданной как пара, разделенная запятой, состоящая из 'Y0'
и numpreobs
-by-numseries
числовая матрица или numpreobs
-by-numseries-by-
numprepaths
числовой массив.
numpreobs
является количеством преддемонстрационных наблюдений. numseries
является количеством ряда ответа (Mdl.NumSeries
). numprepaths
является количеством преддемонстрационных путей к ответу.
Строки соответствуют преддемонстрационным наблюдениям, и последняя строка содержит последнее преддемонстрационное наблюдение. Y0
должен иметь, по крайней мере, строки Mdl.P
. Если вы предоставляете больше строк, чем необходимый, simulate
использует последние наблюдения Mdl.P
только.
Столбцы должны соответствовать серийным именам ответа в Mdl.SeriesNames
.
Страницы соответствуют отдельным, независимым контурам.
Если Y0
является матрицей, то simulate
применяет его, чтобы моделировать каждый демонстрационный путь (страница). Поэтому все пути в выходном аргументе Y
выводят от общих начальных условий.
В противном случае simulate
применяет
, чтобы инициализировать путь к симуляции Y0(:,:,j)
j
. Y0
должен иметь, по крайней мере, страницы numpaths
(см. NumPaths
), и simulate
использует только первые страницы numpaths
.
По умолчанию simulate
устанавливает любые необходимые преддемонстрационные наблюдения.
Для стационарных процессов VAR без компонентов регрессии simulate
устанавливает преддемонстрационные наблюдения на безусловное среднее значение
Для неустановившихся процессов или моделей, которые содержат компонент регрессии, simulate
обнуляет преддемонстрационные наблюдения.
Типы данных: double
X
Данные о предиктореДанные о предикторе для компонента регрессии в модели, заданной как пара, разделенная запятой, состоящая из 'X'
и числовой матрицы, содержащей столбцы numpreds
.
numpreds
является количеством переменных прогноза (size(Mdl.Beta,2)
).
Строки соответствуют наблюдениям, и последняя строка содержит последнее наблюдение. X
должен иметь, по крайней мере, строки numobs
. Если вы предоставляете больше строк, чем необходимый, simulate
использует только последние наблюдения numobs
. simulate
не использует компонент регрессии в преддемонстрационный период.
Столбцы соответствуют отдельным переменным прогноза. Все переменные прогноза присутствуют в компоненте регрессии каждого уравнения ответа.
simulate
применяет X
к каждому пути (страница); то есть, X
представляет один путь наблюдаемых предикторов.
По умолчанию simulate
исключает компонент регрессии, независимо от его присутствия в Mdl
.
Типы данных: double
'YF'
— Будущий многомерный ряд ответаБудущий многомерный ряд ответа для условной симуляции, заданной как пара, разделенная запятой, состоящая из 'YF'
и числовой матрицы или массива, содержащего столбцы numseries
.
Строки соответствуют наблюдениям в горизонте симуляции, и первая строка является самым ранним наблюдением. А именно, строка j
в демонстрационном пути k
(
) содержит ответы периоды YF(j,:,k)
j
в будущее. YF
должен иметь, по крайней мере, строки numobs
, чтобы покрыть горизонт симуляции. Если вы предоставляете больше строк, чем необходимый, simulate
использует только первые строки numobs
.
Столбцы должны соответствовать именам переменной отклика в Mdl.SeriesNames
.
Страницы соответствуют демонстрационным путям. А именно, путь, k
(
) получает состояние или знание, ряда ответа, когда они развиваются из предварительной выборки мимо (YF(:,:,k)
Y0
) в будущее.
Если YF
является матрицей, то simulate
применяет YF
к каждому numpaths
пути вывода (см. NumPaths
).
В противном случае YF
должен иметь, по крайней мере, страницы numpaths
. Если вы предоставляете больше страниц, чем необходимый, simulate
использует только первые страницы numpaths
.
Элементы YF
могут быть числовыми скалярами или отсутствующими значениями (обозначенный значениями NaN
). simulate
обрабатывает числовые скаляры как детерминированные будущие ответы, которые известны заранее, например, установлены политикой. simulate
моделирует ответы для соответствующего условного выражения значений NaN
на известных значениях.
По умолчанию YF
является массивом, состоявшим из значений NaN
, указывающих на полное отсутствие знания будущего состояние всех моделируемых ответов. Поэтому simulate
получает выходные ответы Y
из обычной, безусловной симуляции Монте-Карло.
Для получения дополнительной информации см. Алгоритмы.
Пример: Считайте симуляцию одного пути модели VEC состоявшей из четырех рядов ответа тремя периодами в будущее. Предположим, что у вас есть предварительные знания о некоторых будущих значениях ответов, и вы хотите моделировать неизвестное условное выражение ответов на своем знании. Задайте YF
как матрицу, содержащую значения, которые вы знаете и используете NaN
для значений, которые вы не знаете, но хотите моделировать. Например, 'YF',[NaN 2 5 NaN; NaN NaN 0.1 NaN; NaN NaN NaN NaN]
указывает, что вы не знаете о будущих значениях первого и четвертого ряда ответа; вы знаете значение в течение периода 1 во втором ряду ответа, но никаком другом значении; и вы знаете значения в течение периодов 1 и 2 в третьем ряду ответа, но не значении в течение периода 3.
Типы данных: double
Значения NaN
в Y0
и X
указывают на отсутствующие значения. simulate
удаляет отсутствующие значения из данных мудрым списком удалением. Если Y0
является трехмерным массивом, то simulate
выполняет эти шаги.
Горизонтально конкатенируйте страницы, чтобы сформировать numpreobs
-by-numpaths*numseries
матрица.
Удалите любую строку, которая содержит по крайней мере один NaN
от конкатенированных данных.
В случае недостающих наблюдений результаты, полученные из разнообразных путей Y0
, могут отличаться от результатов, полученных из каждого пути индивидуально.
Для условной симуляции (см. YF
), если X
содержит какие-либо отсутствующие значения в последних наблюдениях numobs
, то simulate
выдает ошибку.
Y
Моделируемый многомерный ряд ответаМоделируемый многомерный ряд ответа, возвращенный как numobs
-by-numseries
числовая матрица или numobs
-by-numseries-by-
numpaths
числовой массив. Y
представляет продолжение преддемонстрационных ответов в Y0
.
Если вы задаете будущие ответы для условной симуляции с помощью аргумента пары "имя-значение" YF
, то известные значения в YF
появляются в тех же положениях в Y
. Однако Y
содержит моделируемые значения для недостающих наблюдений в YF
.
E
Моделируемый многомерный образцовый инновационный рядМоделируемый многомерный образцовый инновационный ряд, возвращенный как numobs
-by-numseries
числовая матрица или numobs
-by-numseries-by-
numpaths
числовой массив.
Если вы задаете будущие ответы для условной симуляции (см. аргумент пары "имя-значение" YF
), то simulate
выводит инновации из известных значений в YF
и помещает выведенные инновации в соответствующие положения в E
. Для недостающих наблюдений в YF
simulate
чертит от условного выражения Распределения Гаусса на любых известных значениях и помещает ничьи в соответствующие положения в E
.
simulate
выполняет условную симуляцию с помощью этого процесса для всех страниц k
= 1..., numpaths
и в течение каждого раза t
= 1..., numobs
.
simulate
выводит (или обратные фильтры) инновации
от известных будущих ответов E(t,:,k)
. Для YF(t,:,k)
E(t,:,k)
simulate
подражает шаблону значений NaN
, который появляется в
.YF(t,:,k)
Для недостающих элементов E(t,:,k)
simulate
выполняет эти шаги.
Чертите Z1
, случайное, стандартное условное выражение воздействий Распределения Гаусса на известных элементах
.E(t,:,k)
Масштабируйте Z1
нижним треугольным Фактором Холесского условной ковариационной матрицы. Таким образом, Z2
= L*Z1
, где L
= chol(C,'lower')
и C
являются ковариацией условного Распределения Гаусса.
Припишите Z2
вместо соответствующих отсутствующих значений в
.E(t,:,k)
Для отсутствующих значений в YF(t,:,k)
simulate
пропускает соответствующие случайные инновации через модель Mdl
.
simulate
использует этот процесс, чтобы определить источник времени t 0 из моделей, которые включают линейные тренды времени.
Если вы не задаете Y0
, то t 0 = 0.
В противном случае simulate
устанавливает t 0 на size(Y0,1)
– Mdl.P
. Поэтому временами в компоненте тренда является t = t 0 + 1, t 0 + 2..., t 0 + numobs
. Это соглашение сопоставимо с поведением по умолчанию образцовой оценки, по которой estimate
удаляет первые ответы Mdl.P
, уменьшая эффективный объем выборки. Несмотря на то, что simulate
явным образом использует первые преддемонстрационные ответы Mdl.P
в Y0
, чтобы инициализировать модель, общее количество наблюдений в Y0
(исключая любые отсутствующие значения) определяет t 0.
[1] Гамильтон, J. D. Анализ timeseries. Принстон, NJ: Издательство Принстонского университета, 1994.
[2] Йохансен, S. Основанный на вероятности вывод в векторных авторегрессивных моделях Cointegrated. Оксфорд: Издательство Оксфордского университета, 1995.
[3] Juselius, K. Модель VAR Cointegrated. Оксфорд: Издательство Оксфордского университета, 2006.
[4] Lütkepohl, H. Новое введение в несколько анализ временных рядов. Берлин: Спрингер, 2005.
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.