Отфильтрованный вывод оперативных скрытых состояний в данных динамической регрессии с коммутацией Маркова
возвращает вероятности отфильтрованного состояния FS = filter(Mdl,Y)FS от проведения оптимального условного вывода вероятностей оперативных скрытых состояний в данных переключения режимов Y. Модель динамической регрессии с коммутацией Маркова Mdl моделирует данные. filter использует рекурсивное применение правила Байеса, как в Гамильтоне [3].
использует дополнительные параметры, заданные одним или несколькими аргументами пары имя-значение. Например, FS = filter(Mdl,Y,Name,Value)'Y0',Y0 инициализирует динамический компонент каждой подмодели с помощью данных ответа предварительной выборки Y0.
Вычислить вероятности отфильтрованного состояния из модели динамической регрессии с переключением по Маркову с двумя состояниями для процесса 1-D отклика. В этом примере для процесса генерации данных (DGP) используются произвольные значения параметров.
Создание полностью заданной модели для DGP
Создайте двухстатную дискретно-временную модель цепи Маркова для механизма переключения.
P = [0.9 0.1; 0.2 0.8]; mc = dtmc(P);
mc является полностью указанным dtmc объект.
Для каждого состояния создайте модель AR (0) (только константа) для процесса ответа. Сохраните модели в векторе.
mdl1 = arima('Constant',2,'Variance',3); mdl2 = arima('Constant',-2,'Variance',1); mdl = [mdl1; mdl2];
mdl1 и mdl2 полностью указаны arima объекты.
Создание модели динамической регрессии с коммутацией Маркова из механизма коммутации mc и вектор подмоделей mdl.
Mdl = msVAR(mc,mdl);
Mdl является полностью указанным msVAR объект.
Моделирование данных из DGP
filter требует ответов для вычисления вероятности отфильтрованного состояния. Генерируют один случайный отклик и путь состояния, оба длиной 30, из DGP.
rng(1000); % For reproducibility
[y,~,sp] = simulate(Mdl,30);Вероятности вычисленного состояния
Вычислите вероятности отфильтрованного и сглаженного состояния из модели переключения Маркова, учитывая данные смоделированного ответа.
fs = filter(Mdl,y); ss = smooth(Mdl,y);
fs и ss представляют собой матрицы 30 на 2 вероятности отфильтрованного и сглаженного состояния соответственно для каждого периода в горизонте моделирования. Хотя вероятность отфильтрованного состояния в момент времени t (fs(t,:)) основаны на данных ответа в течение времени t (y(1:t)), сглаженные вероятности состояния в момент времени t (ss(t,:)) основаны на всех наблюдениях.
Постройте график моделируемого пути состояния и вероятности отфильтрованного и сглаженного состояния на одном и том же графике.
figure plot(sp,'m') hold on plot(fs(:,2),'r') plot(ss(:,2),'g') yticks([0 1 2]) xlabel("Time") title("Observed States with Estimated State Probabilities") legend({'Simulated states','Filtered probability: state 2',... 'Smoothed probability: state 2'}) hold off

Рассмотрим модель динамической регрессии послевоенного реального роста ВВП США с переключением на два государства. Модель имеет оценки параметров, представленные в [1].
Создание модели динамической регрессии с коммутацией Маркова
Создайте полностью заданную дискретную модель цепи Маркова, описывающую механизм переключения режимов. Маркировать режимы.
P = [0.92 0.08; 0.26 0.74]; mc = dtmc(P,'StateNames',["Expansion" "Recession"]);
Создайте отдельные, полностью определенные модели AR (0) для двух режимов .
sigma = 3.34; % Homoscedastic models across states mdl1 = arima('Constant',4.62,'Variance',sigma^2); mdl2 = arima('Constant',-0.48,'Variance',sigma^2); mdl = [mdl1 mdl2];
Создание модели динамической регрессии с коммутацией Маркова из механизма коммутации mc и подмодели, зависящие от состояния mdl.
Mdl = msVAR(mc,mdl);
Mdl является полностью указанным msVAR объект.
Загрузка и предварительная обработка данных
Загрузите набор данных ВВП США.
load Data_GDPData содержит квартальные измерения реального ВВП США в период 1947: Q1-2005: Q2. Период интереса в [1] - 1947:Q2-2004:Q2. Для получения дополнительной информации о наборе данных введитеDescription в командной строке.
Преобразуйте данные в годовой ряд скоростей, выполнив следующие действия:
Преобразование данных в квартальную ставку в течение расчетного периода
Ежегодное исчисление квартальных ставок
qrate = diff(Data(2:230))./Data(2:229); % Quarterly rate arate = 100*((1 + qrate).^4 - 1); % Annualized rate
Преобразование отбрасывает первое наблюдение.
Вероятности отфильтрованного состояния вычислений
Вычислить вероятности отфильтрованного состояния для данных и модели.
FS = filter(Mdl,arate); FS(end,:)
ans = 1×2
0.9396 0.0604
FS является матрицей вероятности отфильтрованного состояния 228 на 2. Строки соответствуют периодам в данных arate, и столбцы соответствуют режимам.
Постройте график отфильтрованных вероятностей рецессии, как показано на [1], рис. 6.
figure; plot(dates(3:230),FS(:,2),'r') datetick('x') title('Current Filter Probabilities and NBER Recessions') recessionplot

Вычислить вероятности сглаженного состояния
Вычислите сглаженные вероятности состояния, а затем постройте график сглаженных вероятностей рецессии, как показано на [1], рис. 6.
SS = smooth(Mdl,arate); figure plot(dates(3:230),SS(:,2),'r') datetick('x') recessionplot title('Full-Sample Smoothed Probabilities and NBER Recessions')

Вычислите вероятности отфильтрованного состояния из модели динамической регрессии с коммутацией по Маркову с тремя состояниями для 2-D процесса отклика VARX. В этом примере для DGP используются произвольные значения параметров.
Создание полностью заданной модели для DGP
Создайте модель цепи Маркова с тремя состояниями дискретного времени для механизма переключения.
P = [5 1 1; 1 5 1; 1 1 5]; mc = dtmc(P);
mc является полностью указанным dtmc объект. dtmc нормализует строки P чтобы они суммировали 1.
Для каждого состояния создайте полностью заданную модель VARX (0) (только константа и матрица коэффициентов регрессии) для процесса отклика. Укажите различные векторы констант в моделях. Задайте один и тот же коэффициент регрессии для двух регрессоров и укажите одну и ту же ковариационную матрицу. Сохраните модели VARX в векторе.
% Constants C1 = [1;-1]; C2 = [3;-3]; C3 = [5;-5]; % Regression coefficient Beta = [0.2 0.1;0 -0.3]; % Covariance matrix Sigma = [1.8 -0.4; -0.4 1.8]; % VARX submodels mdl1 = varm('Constant',C1,'Beta',Beta,... 'Covariance',Sigma); mdl2 = varm('Constant',C2,'Beta',Beta,... 'Covariance',Sigma); mdl3 = varm('Constant',C3,'Beta',Beta,... 'Covariance',Sigma); mdl = [mdl1; mdl2; mdl3];
mdl содержит три полностью указанных varm объекты модели.
Для DGP создайте полностью заданную модель динамической регрессии с коммутацией Маркова из механизма коммутации mc и подмодели mdl.
Mdl = msVAR(mc,mdl);
Mdl является полностью указанным msVAR модель.
Моделирование данных из DGP
Моделирование данных для двух экзогенных рядов путем генерации 30 наблюдений из стандартного 2-D гауссова распределения.
rng(1) % For reproducibility
X = randn(30,2);Генерируют один случайный отклик и путь состояния, оба длиной 30, из DGP. Укажите смоделированные экзогенные данные для компонентов регрессии подмодели.
[Y,~,SP] = simulate(Mdl,30,'X',X);Y является матрицей 30 на 2 одного моделируемого пути отклика. SP является вектором 30 на 1 одного моделируемого тракта состояния.
Вероятности вычисленного состояния
Вычислить отфильтрованные и сглаженные вероятности состояния из DGP с учетом смоделированных данных ответа.
FS = filter(Mdl,Y,'X',X); SS = smooth(Mdl,Y,'X',X);
FS и SS представляют собой матрицы 30 на 2 вероятности отфильтрованного и сглаженного состояния соответственно для каждого периода в горизонте моделирования.
Постройте график траектории моделируемого состояния и вероятности отфильтрованного и сглаженного состояния на вложенных графиках на том же рисунке.
figure subplot(3,1,1) plot(SP,'m') yticks([1 2 3]) legend({'Simulated states'}) subplot(3,1,2) plot(FS,'--') legend({'Filtered s1','Filtered s2','Filtered s3'}) subplot(3,1,3) plot(SS,'-') legend({'Smoothed s1','Smoothed s2','Smoothed s3'})

Рассмотрим данные в Вычислить отфильтрованные вероятности рецессии, но предположим, что период интереса является 1960:Q1-2004:Q2. Также рассмотрите возможность добавления авторегрессионного члена в каждую подмодель.
Создание частично заданной модели для оценки
Создайте частично заданную модель динамической регрессии с коммутацией Маркова для оценки. Укажите подмодели AR (1).
P = NaN(2); mc = dtmc(P,'StateNames',["Expansion" "Recession"]); mdl = arima(1,0,0); Mdl = msVAR(mc,[mdl; mdl]);
Поскольку подмоделями являются AR (1), для каждой из них требуется одно предварительное наблюдение, чтобы инициализировать свой динамический компонент для оценки .
Создание полностью заданной модели, содержащей начальные значения
Создайте модель, содержащую начальные значения параметров для процедуры оценки.
mc0 = dtmc(0.5*ones(2),'StateNames',["Expansion" "Recession"]); submdl01 = arima('Constant',1,'Variance',1,'AR',0.001); submdl02 = arima('Constant',-1,'Variance',1,'AR',0.001); Mdl0 = msVAR(mc0,[submdl01; submdl02]);
Загрузка и предварительная обработка данных
Загрузите данные. Преобразуйте весь набор в годовой ряд скоростей.
load Data_GDP
qrate = diff(Data)./Data(1:(end - 1));
arate = 100*((1 + qrate).^4 - 1);Определите периоды предварительной выборки и оценки с использованием дат, связанных с серией годовых ставок. Поскольку при преобразовании применяется первая разница, необходимо удалить первую дату наблюдения из исходной выборки.
dates = datetime(dates(2:end),'ConvertFrom','datenum',... 'Format','yyyy:QQQ','Locale','en_US'); estPrd = datetime(["1960:Q2" "2004:Q2"],'InputFormat','yyyy:QQQ',... 'Format','yyyy:QQQ','Locale','en_US'); idxEst = isbetween(dates,estPrd(1),estPrd(2)); idxPre = dates < (estPrd(1));
Модель оценки
Подгонка модели к данным выборки оценки. Укажите предварительное измерение.
arate0 = arate(idxPre);
arateEst = arate(idxEst);
EstMdl = estimate(Mdl,Mdl0,arateEst,'Y0',arate0);EstMdl является полностью указанным msVAR объект.
Вероятности вычисленного состояния
Вычисляют отфильтрованные и сглаженные вероятности состояния из оценочной модели и данных в периоде оценки. Укажите предварительное измерение. Постройте график предполагаемых вероятностей рецессии на субплотах на том же рисунке.
FS = filter(EstMdl,arateEst,'Y0',arate0); SS = smooth(EstMdl,arateEst,'Y0',arate0); figure; subplot(2,1,1) plot(dates(idxEst),FS(:,2),'r') title("Current Filter Probabilities and NBER Recessions") recessionplot subplot(2,1,2) plot(dates(idxEst),SS(:,2),'r') title("Full-Sample Smoothed Probabilities and NBER Recessions") recessionplot

Рассмотрим модель и данные в разделе Вычислить отфильтрованные вероятности рецессии.
Создайте полностью заданную модель переключения Маркова.
P = [0.92 0.08; 0.26 0.74]; mc = dtmc(P,'StateNames',["Expansion" "Recession"]); sigma = 3.34; mdl1 = arima('Constant',4.62,'Variance',sigma^2); mdl2 = arima('Constant',-0.48,'Variance',sigma^2); mdl = [mdl1; mdl2]; Mdl = msVAR(mc,mdl);
Загрузка и предварительная обработка данных.
load Data_GDP
qrate = diff(Data(2:230))./Data(2:229);
arate = 100*((1 + qrate).^4 - 1); Вычислите вероятности отфильтрованного состояния и логику для данных и модели.
[FS,logL] = filter(Mdl,arate); logL
logL = -640.3016
Mdl - Полностью заданная модель динамической регрессии с коммутацией МарковаmsVAR объект моделиY - Наблюдаемые данные ответаНаблюдаемые данные ответа, указанные как numObsоколо-numSeries числовая матрица.
numObs - размер выборки. numSeries - количество переменных ответа (Mdl.NumSeries).
Строки соответствуют наблюдениям, а последняя строка содержит последнее наблюдение. Столбцы соответствуют отдельным переменным ответа.
Y представляет продолжение последовательности ответов предварительной выборки в Y0.
Типы данных: double
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'Y0',Y0,'X',X инициализирует динамический компонент каждой подмодели в Mdl с использованием данных предварительного примера ответа Y0и включает компонент линейной регрессии в каждой подмодели, состоящей из данных предиктора в X и заданные коэффициенты регрессии.'Y0' - Предварительные данные ответаПредварительные данные ответа, указанные как пара, разделенная запятыми, состоящая из 'Y0' и numPreSampleObsоколо-numSeries числовая матрица.
Количество предварительных наблюдений numPreSampleObs должно быть достаточным для инициализации членов AR всех подмоделей. Если numPreSampleObs превышает порядок AR любого состояния, filter использует последние наблюдения. По умолчанию Y0 - начальный сегмент Y, что снижает эффективный размер выборки.
Типы данных: double
'S0' - Вероятности начального состоянияВероятности начального состояния, указанные как пара, разделенная запятыми, состоящая из 'S0' и неотрицательный числовой вектор длины numStates.
filter нормализует S0 для создания дистрибутива.
По умолчанию S0 является стационарным распределением, вычисленным asymptotics.
Пример: 'S0',[0.2 0.2 0.6]
Пример: 'S0',[0 1] задает состояние 2 в качестве начального состояния.
Типы данных: double
'X' - Данные предиктораДанные предиктора, используемые для оценки регрессионных компонентов во всех подмоделях Mdl, указанная как пара, разделенная запятыми, состоящая из 'X' и числовую матрицу или вектор ячейки из цифровых матриц.
Чтобы использовать подмножество одинаковых предикторов в каждом состоянии, укажите X в виде матрицы с numPreds столбцы и по крайней мере numObs строк. Столбцы соответствуют различным переменным предиктора. Подмодели используют начальные столбцы связанной матрицы по порядку вплоть до числа предикторов подмодели. Количество столбцов в Beta имущество Mdl.SubModels( определяет количество экзогенных переменных в компоненте регрессии подмодели j). Если число строк превышает jnumObs, то filter использует последние наблюдения.
Для использования различных предикторов в каждом состоянии укажите вектор ячейки таких матриц длиной numStates.
По умолчанию filter игнорирует компоненты регрессии в Mdl.
Типы данных: double
FS - Вероятности отфильтрованного состоянияВероятности отфильтрованного состояния, возвращенные как numObsоколо-numStates неотрицательная числовая матрица.
logL - Предполагаемый источник средств к существованиюПредполагаемый источник данных ответа Y, возвращается в виде числового скаляра.
filter итеративно исходит из начальной оценки распределения состояний S0 к оценкам в FS используя прогнозы из текущей истории данных на каждом временном шаге. smooth уточнение текущих оценок распределения состояний, которые filter создается путем итерации назад из полной истории образца Y.
[1] Chauvet, M. и Дж. Д. Гамильтон. «Переломные моменты бизнес-цикла знакомств». В нелинейном анализе бизнес-циклов (вклад в экономический анализ, том 276). (К. Милас, П. Ротман и Д. ван Дийк, ред.). Амстердам: Emerald Group Publishing Limited, 2006.
[2] Гамильтон, Дж. Д. «Новый подход к экономическому анализу нестационарных временных рядов и бизнес-цикла». Эконометрика. Том 57, 1989, стр. 357-384.
[3] Гамильтон, Дж. Д. «Анализ временных рядов, подверженных изменениям в режиме». Журнал эконометрики. Том 45, 1990, стр. 39-70.
[4] Гамильтон, Джеймс Д. Анализ временных рядов. Принстон, Нью-Джерси: Princeton University Press, 1994.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.