Симуляция Монте-Карло модели векторного исправления ошибок (VEC)
дополнительные опции использования заданы одним или несколькими аргументами пары "имя-значение". Например, 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
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'Y0',Y0,'X',X
использует матричный Y0
как преддемонстрационные ответы и матричный X
как данные о предикторе в компоненте регрессии.'NumPaths'
— Количество демонстрационных путей, чтобы сгенерировать
(значение по умолчанию) | положительное целое число'Y0'
— Преддемонстрационные ответыПреддемонстрационные ответы, вводящие начальные значения для модели, заданной как разделенная запятой пара, состоящая из 'Y0'
и numpreobs
- numseries
числовая матрица или numpreobs
- numseries
- 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
- numpaths*numseries
матрица.
Удалите любую строку, которая содержит по крайней мере один NaN
из конкатенированных данных.
В случае недостающих наблюдений результаты получены из разнообразных путей Y0
может отличаться от результатов, полученных из каждого пути индивидуально.
Для условной симуляции (см. YF
), если X
содержит любые отсутствующие значения в последнем numobs
наблюдения, затем simulate
выдает ошибку.
Y
— Симулированный многомерный ряд ответаСимулированный многомерный ряд ответа, возвращенный как numobs
- numseries
числовая матрица или numobs
- numseries
- numpaths
числовой массив. Y
представляет продолжение преддемонстрационных ответов в Y0
.
Если вы задаете будущие ответы для условной симуляции с помощью YF
аргумент пары "имя-значение", затем известные значения в YF
появитесь в тех же положениях в Y
. Однако Y
содержит симулированные значения для недостающих наблюдений в YF
.
E
— Симулированный многомерный инновационный ряд моделиСимулированный многомерный инновационный ряд модели, возвращенный как numobs
- numseries
числовая матрица или numobs
- numseries
- 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. Анализ Временных Рядов. Принстон, NJ: Издательство Принстонского университета, 1994.
[2] Йохансен, S. Основанный на вероятности вывод в векторных авторегрессивных моделях Cointegrated. Оксфорд: Издательство Оксфордского университета, 1995.
[3] Juselius, K. Модель VAR Cointegrated. Оксфорд: Издательство Оксфордского университета, 2006.
[4] Lütkepohl, H. Новое введение в несколько анализ временных рядов. Берлин: Спрингер, 2005.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.