smooth

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

Описание

пример

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-by- 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' и a numPreSampleObs-by- 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-by- numStates неотрицательная числовая матрица.

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

Алгоритмы

smooth уточняет текущие оценки распределения состояний, filter формирует путем итерации назад из полной истории выборок Y.

Ссылки

[1] Шове, М. и Дж. Д. Гамильтон. «Поворотные точки делового цикла знакомств». В нелинейном анализе бизнес-циклов (вклад в экономический анализ, том 276). (C. Milas, P. Rothman, and D. van Dijk, eds.). Амстердам: Emerald Group Publishing Limited, 2006.

[2] Гамильтон, Дж. Д. Новый подход к экономическому анализу нестационарных временных рядов и бизнес-цикла. Эконометрика. Том 57, 1989, стр. 357-384.

[3] Гамильтон, Дж. Д. «Анализ временных рядов, подверженных изменениям в режиме». Журнал эконометрики. Том 45, 1990, стр. 39-70.

[4] Гамильтон, Джеймс Д. Анализ временных рядов. Princeton, NJ: Princeton University Press, 1994.

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

См. также

Объекты

Функции

Введенный в R2019b