exponenta event banner

гладкий

Сглаженный вывод оперативных скрытых состояний в данных динамической регрессии с коммутацией Маркова

Описание

пример

SS = smooth(Mdl,Y) возвращает сглаженные вероятности состояния SS оперативных скрытых состояний в данных переключения режимов Y. Модель динамической регрессии с коммутацией Маркова Mdl моделирует данные. smooth выполняет прямую рекурсию с использованием filter, а затем выполняет обратную рекурсию Кима [5].

пример

SS = smooth(Mdl,Y,Name,Value) использует дополнительные параметры, заданные одним или несколькими аргументами пары имя-значение. Например, 'Y0',Y0 инициализирует динамический компонент каждой подмодели с помощью данных ответа предварительной выборки Y0.

пример

[SS,logL] = smooth(___) также возвращает предполагаемый источник средств к существованию logL используя любую из комбинаций входных аргументов в предыдущих синтаксисах.

Примеры

свернуть все

Вычислить сглаженные вероятности состояния из модели динамической регрессии с переключением по Маркову с двумя состояниями для процесса 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

smooth требует ответов для вычисления вероятностей сглаженного состояния. Генерируют один случайный отклик и путь состояния, оба длиной 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

Figure contains an axes. The axes with title Observed States with Estimated State Probabilities contains 3 objects of type line. These objects represent Simulated states, Filtered probability: state 2, Smoothed probability: state 2.

Рассмотрим модель динамической регрессии послевоенного реального роста ВВП США с переключением на два государства. Модель имеет оценки параметров, представленные в [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_GDP

Data содержит квартальные измерения реального ВВП США в период 1947: Q1-2005: Q2. Период интереса в [1] - 1947:Q2-2004:Q2. Для получения дополнительной информации о наборе данных введитеDescription в командной строке.

Преобразуйте данные в годовой ряд скоростей, выполнив следующие действия:

  1. Преобразование данных в квартальную ставку в течение расчетного периода

  2. Ежегодное исчисление квартальных ставок

qrate = diff(Data(2:230))./Data(2:229); % Quarterly rate
arate = 100*((1 + qrate).^4 - 1);       % Annualized rate

Преобразование отбрасывает первое наблюдение.

Вычислить вероятности сглаженного состояния

Вычислить сглаженные вероятности состояния для данных и модели. Отображение сглаженного распределения состояний для 1972:Q2.

SS = smooth(Mdl,arate);
SS(end,:)
ans = 1×2

    0.9396    0.0604

SS является матрицей сглаженных вероятностей состояний 228 на 2. Строки соответствуют периодам в данных arate, и столбцы соответствуют режимам.

Постройте график сглаженных вероятностей рецессии, как показано на [1], рис. 6.

figure;
plot(dates(3:230),SS(:,2),'r')
datetick('x')
recessionplot
title("Full-Sample Smoothed Probabilities and NBER Recessions")

Figure contains an axes. The axes with title Full-Sample Smoothed Probabilities and NBER Recessions contains 12 objects of type line, patch.

Вычислить сглаженные вероятности состояния из модели динамической регрессии с переключением по Маркову с тремя состояниями для 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, учитывая смоделированные данные ответа.

SS = smooth(Mdl,Y,'X',X);

SS является матрицей 30 на 2 сглаженных вероятностей состояний для каждого периода в горизонте моделирования.

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

figure
subplot(2,1,1)
plot(SP,'m')
yticks([1 2 3])
legend({'Simulated states'})
subplot(2,1,2)
plot(SS,'-')
legend({'Smoothed s1','Smoothed s2','Smoothed s3'})

Figure contains 2 axes. Axes 1 contains an object of type line. This object represents Simulated states. Axes 2 contains 3 objects of type line. These objects represent 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 объект.

Вычислить вероятности сглаженного состояния

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

SS = smooth(EstMdl,arateEst,'Y0',arate0);

figure;
plot(dates(idxEst),SS(:,2),'r')
title("Full-Sample Smoothed Probabilities and NBER Recessions")
recessionplot

Figure contains an axes. The axes with title Full-Sample Smoothed Probabilities and NBER Recessions contains 8 objects of type line, patch.

Рассмотрим модель и данные в вычислении сглаженных вероятностей рецессии.

Создайте полностью заданную модель переключения Маркова.

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);       

Вычислите сглаженные вероятности состояния и логику для данных и модели.

[SS,logL] = smooth(Mdl,arate);
logL
logL = -640.3016

Входные аргументы

свернуть все

Полностью заданная модель динамической регрессии с коммутацией Маркова, заданная как msVAR объект модели, возвращенный msVAR или estimate. Свойства полностью указанного объекта модели не содержат NaN значения.

Наблюдаемые данные ответа, указанные как 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' и numPreSampleObsоколо-numSeries числовая матрица.

Количество предварительных наблюдений numPreSampleObs должно быть достаточным для инициализации членов AR всех подмоделей. Если numPreSampleObs превышает порядок AR любого состояния, smooth использует последние наблюдения. По умолчанию Y0 - начальный сегмент Y, что снижает эффективный размер выборки.

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

Вероятности начального состояния, указанные как пара, разделенная запятыми, состоящая из 'S0' и неотрицательный числовой вектор длины numStates.

smooth нормализует S0 для создания дистрибутива.

По умолчанию S0 является стационарным распределением, вычисленным asymptotics.

Пример: 'S0',[0.2 0.2 0.6]

Пример: 'S0',[0 1] задает состояние 2 в качестве начального состояния.

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

Данные предиктора, используемые для оценки регрессионных компонентов во всех подмоделях Mdl, указанная как пара, разделенная запятыми, состоящая из 'X' и числовую матрицу или вектор ячейки из цифровых матриц.

Чтобы использовать подмножество одинаковых предикторов в каждом состоянии, укажите X в виде матрицы с numPreds столбцы и по крайней мере numObs строк. Столбцы соответствуют различным переменным предиктора. Подмодели используют начальные столбцы связанной матрицы по порядку вплоть до числа предикторов подмодели. Количество столбцов в Beta имущество Mdl.SubModels(j) определяет количество экзогенных переменных в компоненте регрессии подмодели j. Если число строк превышает numObs, то smooth использует последние наблюдения.

Для использования различных предикторов в каждом состоянии укажите вектор ячейки таких матриц длиной numStates.

По умолчанию smooth игнорирует компоненты регрессии в Mdl.

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

Выходные аргументы

свернуть все

Сглаженные вероятности состояния, возвращенные как numObsоколо-numStates неотрицательная числовая матрица.

Предполагаемый источник данных ответа Y, возвращается в виде числового скаляра.

Алгоритмы

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.

[5] Ким, К.-Ж. «Динамические линейные модели с переключением Маркова». Журнал эконометрики. Том 60, 1994, стр. 1-22.

См. также

Объекты

Функции

Представлен в R2019b